llvm-project/mlir/lib/Conversion
River Riddle 4589dd924d [mlir][DialectConversion] Enable deeper integration of type conversions
This revision adds support for much deeper type conversion integration into the conversion process, and enables auto-generating cast operations when necessary. Type conversions are now largely automatically managed by the conversion infra when using a ConversionPattern with a provided TypeConverter. This removes the need for patterns to do type cast wrapping themselves and moves the burden to the infra. This makes it much easier to perform partial lowerings when type conversions are involved, as any lingering type conversions will be automatically resolved/legalized by the conversion infra.

To support this new integration, a few changes have been made to the type materialization API on TypeConverter. Materialization has been split into three separate categories:
* Argument Materialization: This type of materialization is used when converting the type of block arguments when calling `convertRegionTypes`. This is useful for contextually inserting additional conversion operations when converting a block argument type, such as when converting the types of a function signature.
* Source Materialization: This type of materialization is used to convert a legal type of the converter into a non-legal type, generally a source type. This may be called when uses of a non-legal type persist after the conversion process has finished.
* Target Materialization: This type of materialization is used to convert a non-legal, or source, type into a legal, or target, type. This type of materialization is used when applying a pattern on an operation, but the types of the operands have not yet been converted.

Differential Revision: https://reviews.llvm.org/D82831
2020-07-23 19:40:31 -07:00
..
AVX512ToLLVM [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
AffineToStandard [MLIR] Add lowering for affine.parallel to scf.parallel 2020-07-18 13:13:49 +05:30
GPUCommon [mlir] Fix case in MLIRGPUtoGPURuntimeTransforms 2020-06-30 20:48:47 +02:00
GPUToNVVM [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
GPUToROCDL [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
GPUToSPIRV [mlir][spirv] Add support for lowering scf.for scf/if with return value 2020-07-01 17:08:08 -07:00
GPUToVulkan [mlir]: NFC: Fix trivial typo in documents and comments 2020-07-23 23:40:57 +09:00
LinalgToLLVM [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
LinalgToSPIRV [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
LinalgToStandard [MLIR] Combine the 2 overloads of FuncOp::build() into one. 2020-07-07 18:22:22 -07:00
SCFToGPU [MLIR] Add argument related API to Region 2020-07-14 09:28:29 -07:00
SCFToSPIRV [mlir][spirv] Add support for lowering scf.for scf/if with return value 2020-07-01 17:08:08 -07:00
SCFToStandard [mlir] SCFToStandard: support any ops in and around the control flow ops 2020-05-20 16:12:05 +02:00
SPIRVToLLVM [MLIR][LLVMDialect] SelectionOp conversion pattern 2020-07-21 17:11:46 +03:00
ShapeToSCF [MLIR][Shape] Lower `shape.shape_eq` to `scf` 2020-07-16 14:44:29 +00:00
ShapeToStandard [MLIR][Shape] Lower `shape.any` 2020-07-13 08:30:05 +00:00
StandardToLLVM [mlir][DialectConversion] Enable deeper integration of type conversions 2020-07-23 19:40:31 -07:00
StandardToSPIRV [MLIR] Change ODS collective params build method to provide an empty default value for named attributes 2020-07-13 13:35:44 -07:00
VectorToLLVM [mlir] [VectorOps] Improve scatter/gather CPU performance 2020-07-22 23:47:36 -07:00
VectorToROCDL [mlir][Vector] Add folding for vector.transfer ops 2020-07-10 16:49:12 -04:00
VectorToSCF [mlir][Vector] NFC - Improve VectorInterfaces 2020-07-20 08:24:22 -04:00
CMakeLists.txt [mlir][NFC] Move conversion of scf to spir-v ops in their own file 2020-07-01 17:06:50 -07:00
PassDetail.h [mlir][Pass] Update the PassGen to generate base classes instead of utilities 2020-04-07 14:08:52 -07:00