llvm-project/mlir/lib
Alex Zinenko d7e6b33e93 Convert MemRefCastOp to the LLVM IR dialect
Add support for converting `memref_cast` operations into the LLVM IR dialect.
This goes beyond want is currently implemented in the MLIR standard ops to LLVM
IR translation, but follows the general principles of the memref descriptors.
A memref cast creates a new descriptor containing the same buffer pointer but a
potentially different number of dynamic sizes (as many as dynamic dimensions in
the target memref type).  The lowering copies the buffer pointer to the new
descriptor and inserts dynamic sizes to it.  If the size is static in the
source type, a constant value is inserted as the dynamic size, otherwise a
dynamic value is copied from the source descriptor, taking into account the
difference in dynamic size positions in the descriptor.

PiperOrigin-RevId: 233082035
2019-03-29 16:22:38 -07:00
..
AffineOps Remove the restriction that only registered terminator operations may terminate a block and have block operands. This allows for any operation to hold block operands. It also introduces the notion that unregistered operations may terminate a block. As such, the 'isTerminator' api on Instruction has been split into 'isKnownTerminator' and 'isKnownNonTerminator'. 2019-03-29 16:22:23 -07:00
Analysis Remove the restriction that only registered terminator operations may terminate a block and have block operands. This allows for any operation to hold block operands. It also introduces the notion that unregistered operations may terminate a block. As such, the 'isTerminator' api on Instruction has been split into 'isKnownTerminator' and 'isKnownNonTerminator'. 2019-03-29 16:22:23 -07:00
Dialect Handle dynamic shapes in Broadcastable op trait 2019-03-29 16:21:23 -07:00
EDSC Implemented __eq__ and __ne__ in EDSC Python bindings 2019-03-29 16:13:34 -07:00
ExecutionEngine Cleanups in ExecutionEngine. 2019-03-29 16:22:08 -07:00
IR Remove the restriction that only registered terminator operations may terminate a block and have block operands. This allows for any operation to hold block operands. It also introduces the notion that unregistered operations may terminate a block. As such, the 'isTerminator' api on Instruction has been split into 'isKnownTerminator' and 'isKnownNonTerminator'. 2019-03-29 16:22:23 -07:00
LLVMIR Convert MemRefCastOp to the LLVM IR dialect 2019-03-29 16:22:38 -07:00
Parser Remove the restriction that only registered terminator operations may terminate a block and have block operands. This allows for any operation to hold block operands. It also introduces the notion that unregistered operations may terminate a block. As such, the 'isTerminator' api on Instruction has been split into 'isKnownTerminator' and 'isKnownNonTerminator'. 2019-03-29 16:22:23 -07:00
StandardOps Modify the canonicalizations of select and muli to use the fold hook. 2019-03-29 16:20:06 -07:00
SuperVectorOps Remove remaining references to OperationInst in all directories except for lib/Transforms. 2019-03-29 16:10:38 -07:00
Support Extract openInputFile() into Support/FileUtilities 2019-03-29 15:09:11 -07:00
TableGen [TableGen] Model variadic operands using Variadic<Type> 2019-03-29 16:16:28 -07:00
Target/LLVMIR Remove remaining references to OperationInst in all directories except for lib/Transforms. 2019-03-29 16:10:38 -07:00
Transforms Remove the restriction that only registered terminator operations may terminate a block and have block operands. This allows for any operation to hold block operands. It also introduces the notion that unregistered operations may terminate a block. As such, the 'isTerminator' api on Instruction has been split into 'isKnownTerminator' and 'isKnownNonTerminator'. 2019-03-29 16:22:23 -07:00
Translation Separate translators into "from MLIR" and "to MLIR". 2019-03-29 14:06:33 -07:00