[Mlir-commits] [mlir] [mlir][LLVM][MemRef] Lower assume_alignment with operand bundles (PR #117800)
Quentin Colombet
llvmlistbot at llvm.org
Tue Nov 26 14:45:22 PST 2024
================
@@ -192,22 +192,16 @@ struct AssumeAlignmentOpLowering
Value ptr = getStridedElementPtr(loc, srcMemRefType, memref, /*indices=*/{},
rewriter);
- // Emit llvm.assume(memref & (alignment - 1) == 0).
- //
- // This relies on LLVM's CSE optimization (potentially after SROA), since
- // after CSE all memref instances should get de-duplicated into the same
- // pointer SSA value.
- MemRefDescriptor memRefDescriptor(memref);
- auto intPtrType =
- getIntPtrType(memRefDescriptor.getElementPtrType().getAddressSpace());
- Value zero = createIndexAttrConstant(rewriter, loc, intPtrType, 0);
- Value mask =
- createIndexAttrConstant(rewriter, loc, intPtrType, alignment - 1);
- Value ptrValue = rewriter.create<LLVM::PtrToIntOp>(loc, intPtrType, ptr);
- rewriter.create<LLVM::AssumeOp>(
- loc, rewriter.create<LLVM::ICmpOp>(
- loc, LLVM::ICmpPredicate::eq,
- rewriter.create<LLVM::AndOp>(loc, ptrValue, mask), zero));
+ // Emit llvm.assume(true) "align"(memref, alignment).
----------------
qcolombet wrote:
Nit: The parentheses on assume looks wrong
https://github.com/llvm/llvm-project/pull/117800
More information about the Mlir-commits
mailing list