Try to fold operations in DialectConversion when trying to legalize.
authorRiver Riddle <riverriddle@google.com>
Fri, 13 Dec 2019 20:21:42 +0000 (12:21 -0800)
committerA. Unique TensorFlower <gardener@tensorflow.org>
Sat, 14 Dec 2019 00:47:26 +0000 (16:47 -0800)
commitb030e4a4ec5ef47549377cc0af71a95abcf28a98
treefa7dab40faf97bc094d1e9426d0f17e44afa0f44
parent7b19d736172789ce8e5ca10ae6276302004533f0
Try to fold operations in DialectConversion when trying to legalize.

This change allows for DialectConversion to attempt folding as a mechanism to legalize illegal operations. This also expands folding support in OpBuilder::createOrFold to generate new constants when folding, and also enables it to work in the context of a PatternRewriter.

PiperOrigin-RevId: 285448440
13 files changed:
mlir/include/mlir/Dialect/AffineOps/AffineOps.h
mlir/include/mlir/Dialect/StandardOps/Ops.h
mlir/include/mlir/Dialect/VectorOps/VectorOps.h
mlir/include/mlir/IR/Builders.h
mlir/lib/Dialect/AffineOps/AffineOps.cpp
mlir/lib/Dialect/StandardOps/Ops.cpp
mlir/lib/Dialect/VectorOps/VectorOps.cpp
mlir/lib/IR/Builders.cpp
mlir/lib/Transforms/DialectConversion.cpp
mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir
mlir/test/Transforms/lower-affine.mlir
mlir/test/Transforms/test-legalizer.mlir
mlir/test/lib/TestDialect/TestPatterns.cpp