diff options
author | River Riddle <riddleriver@gmail.com> | 2021-10-27 02:00:10 +0000 |
---|---|---|
committer | River Riddle <riddleriver@gmail.com> | 2021-10-27 02:09:04 +0000 |
commit | 015192c63415ae828c3a9bc8b56d0667abcca8ae (patch) | |
tree | b48e0408e5a5174a71738420cd5815725f31917f /mlir/lib/Conversion/VectorToLLVM | |
parent | 01b55f163a40073914bf92f5b710319e7cae2e02 (diff) |
[mlir:DialectConversion] Restructure how argument/target materializations get invoked
The current implementation invokes materializations
whenever an input operand does not have a mapping for the
desired type, i.e. it requires materialization at the earliest possible
point. This conflicts with goal of dialect conversion (and also the
current documentation) which states that a materialization is only
required if the materialization is supposed to persist after the
conversion process has finished.
This revision refactors this such that whenever a target
materialization "might" be necessary, we insert an
unrealized_conversion_cast to act as a temporary materialization.
This allows for deferring the invocation of the user
materialization hooks until the end of the conversion process,
where we actually have a better sense if it's actually
necessary. This has several benefits:
* In some cases a target materialization hook is no longer
necessary
When performing a full conversion, there are some situations
where a temporary materialization is necessary. Moving forward,
these users won't need to provide any target materializations,
as the temporary materializations do not require the user to
provide materialization hooks.
* getRemappedValue can now handle values that haven't been
converted yet
Before this commit, it wasn't well supported to get the remapped
value of a value that hadn't been converted yet (making it
difficult/impossible to convert multiple operations in many
situations). This commit updates getRemappedValue to properly
handle this case by inserting temporary materializations when
necessary.
Another code-health related benefit is that with this change we
can move a majority of the complexity related to materializations
to the end of the conversion process, instead of handling adhoc
while conversion is happening.
Differential Revision: https://reviews.llvm.org/D111620
Diffstat (limited to 'mlir/lib/Conversion/VectorToLLVM')
-rw-r--r-- | mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp b/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp index 1046c37588f6..966d3f3b8fce 100644 --- a/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp +++ b/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp @@ -503,7 +503,6 @@ public: // For all other cases, insert the individual values individually. Type eltType; - llvm::errs() << llvmType << "\n"; if (auto arrayType = llvmType.dyn_cast<LLVM::LLVMArrayType>()) eltType = arrayType.getElementType(); else |