[Mlir-commits] [mlir] Folding extract_strided_metadata input into reinterpret_cast on constant layout (PR #134845)
Matthias Springer
llvmlistbot at llvm.org
Wed Apr 9 04:49:54 PDT 2025
================
@@ -2045,44 +2050,65 @@ struct ReinterpretCastOpExtractStridedMetadataFolder
op.getSource().getDefiningOp<ExtractStridedMetadataOp>();
if (!extractStridedMetadata)
return failure();
+
// Check if the reinterpret cast reconstructs a memref with the exact same
// properties as the extract strided metadata.
-
- // First, check that the strides are the same.
SmallVector<OpFoldResult> extractStridesOfr =
extractStridedMetadata.getConstifiedMixedStrides();
SmallVector<OpFoldResult> reinterpretStridesOfr =
op.getConstifiedMixedStrides();
- if (extractStridesOfr.size() != reinterpretStridesOfr.size())
- return failure();
+ auto isReinterpretCastNoop = [&]() -> bool {
+ // First, check that the strides are the same.
+ if (extractStridesOfr.size() != reinterpretStridesOfr.size())
+ return false;
- unsigned rank = op.getType().getRank();
- for (unsigned i = 0; i < rank; ++i) {
- if (extractStridesOfr[i] != reinterpretStridesOfr[i])
- return failure();
- }
+ unsigned rank = op.getType().getRank();
+ for (unsigned i = 0; i < rank; ++i) {
+ if (extractStridesOfr[i] != reinterpretStridesOfr[i])
+ return false;
+ }
- // Second, check the sizes.
- assert(extractStridedMetadata.getSizes().size() ==
- op.getMixedSizes().size() &&
- "Strides and sizes rank must match");
- SmallVector<OpFoldResult> extractSizesOfr =
- extractStridedMetadata.getConstifiedMixedSizes();
- SmallVector<OpFoldResult> reinterpretSizesOfr =
- op.getConstifiedMixedSizes();
- for (unsigned i = 0; i < rank; ++i) {
- if (extractSizesOfr[i] != reinterpretSizesOfr[i])
- return failure();
+ // Second, check the sizes.
----------------
matthias-springer wrote:
I don't see the change yet, can you push the branch?
https://github.com/llvm/llvm-project/pull/134845
More information about the Mlir-commits
mailing list