forked from OSchip/llvm-project
![]() Recently, EDSC introduced an eager mode for building IR in different contexts. Introduce Python bindings support for loop and loop nest contexts of EDSC builders. The eager mode is built around the notion of ValueHandle, which is convenience class for delayed initialization and operator overloads. Expose this class and overloads directly. The model of insertion contexts maps naturally to Python context manager mechanism, therefore new bindings are defined bypassing the C APIs. The bindings now provide three new context manager classes: FunctionContext, LoopContext and LoopNestContext. The last two can be used with the `with`-construct in Python to create loop (nests) and obtain handles to the loop induction variables seamlessly: with LoopContext(lhs, rhs, 1) as i: lhs + rhs + i with LoopContext(rhs, rhs + rhs, 2) as j: x = i + j Any statement within the Python context will trigger immediate emission of the corresponding IR constructs into the context owned by the nearest context manager. PiperOrigin-RevId: 237447732 |
||
---|---|---|
.. | ||
test | ||
pybind.cpp |