[Mlir-commits] [mlir] d8a8d1f - [MLIR][MemRef] Change builders with `int` alignment params to `llvm::MaybeAlign` (#159449)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Sep 29 06:25:53 PDT 2025
Author: jiang1997
Date: 2025-09-29T09:25:49-04:00
New Revision: d8a8d1fc56a6d8ad71157f087548bef31864cb45
URL: https://github.com/llvm/llvm-project/commit/d8a8d1fc56a6d8ad71157f087548bef31864cb45
DIFF: https://github.com/llvm/llvm-project/commit/d8a8d1fc56a6d8ad71157f087548bef31864cb45.diff
LOG: [MLIR][MemRef] Change builders with `int` alignment params to `llvm::MaybeAlign` (#159449)
Change remaining OpBuilder methods to use `llvm::MaybeAlign` instead of
`uint64_t` for alignment parameters.
---------
Co-authored-by: Erick Ochoa Lopez <erick.ochoalopez at amd.com>
Added:
Modified:
mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
mlir/lib/Dialect/Vector/Transforms/VectorEmulateMaskedLoadStore.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td b/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
index cd92ca98b2530..2bf953e32ccce 100644
--- a/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
+++ b/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
@@ -1241,28 +1241,28 @@ def LoadOp : MemRef_Op<"load",
OpBuilder<(ins "Value":$memref,
"ValueRange":$indices,
CArg<"bool", "false">:$nontemporal,
- CArg<"uint64_t", "0">:$alignment), [{
+ CArg<"llvm::MaybeAlign", "llvm::MaybeAlign()">:$alignment), [{
return build($_builder, $_state, memref, indices, nontemporal,
- alignment != 0 ? $_builder.getI64IntegerAttr(alignment) :
- nullptr);
+ alignment ? $_builder.getI64IntegerAttr(alignment->value()) :
+ nullptr);
}]>,
OpBuilder<(ins "Type":$resultType,
"Value":$memref,
"ValueRange":$indices,
CArg<"bool", "false">:$nontemporal,
- CArg<"uint64_t", "0">:$alignment), [{
+ CArg<"llvm::MaybeAlign", "llvm::MaybeAlign()">:$alignment), [{
return build($_builder, $_state, resultType, memref, indices, nontemporal,
- alignment != 0 ? $_builder.getI64IntegerAttr(alignment) :
- nullptr);
+ alignment ? $_builder.getI64IntegerAttr(alignment->value()) :
+ nullptr);
}]>,
OpBuilder<(ins "TypeRange":$resultTypes,
"Value":$memref,
"ValueRange":$indices,
CArg<"bool", "false">:$nontemporal,
- CArg<"uint64_t", "0">:$alignment), [{
+ CArg<"llvm::MaybeAlign", "llvm::MaybeAlign()">:$alignment), [{
return build($_builder, $_state, resultTypes, memref, indices, nontemporal,
- alignment != 0 ? $_builder.getI64IntegerAttr(alignment) :
- nullptr);
+ alignment ? $_builder.getI64IntegerAttr(alignment->value()) :
+ nullptr);
}]>
];
@@ -2007,10 +2007,10 @@ def MemRef_StoreOp : MemRef_Op<"store",
"Value":$memref,
"ValueRange":$indices,
CArg<"bool", "false">:$nontemporal,
- CArg<"uint64_t", "0">:$alignment), [{
+ CArg<"llvm::MaybeAlign", "llvm::MaybeAlign()">:$alignment), [{
return build($_builder, $_state, valueToStore, memref, indices, nontemporal,
- alignment != 0 ? $_builder.getI64IntegerAttr(alignment) :
- nullptr);
+ alignment ? $_builder.getI64IntegerAttr(alignment->value()) :
+ nullptr);
}]>,
OpBuilder<(ins "Value":$valueToStore, "Value":$memref), [{
$_state.addOperands(valueToStore);
diff --git a/mlir/lib/Dialect/Vector/Transforms/VectorEmulateMaskedLoadStore.cpp b/mlir/lib/Dialect/Vector/Transforms/VectorEmulateMaskedLoadStore.cpp
index 78f74eef7bee3..bdbb792041e3d 100644
--- a/mlir/lib/Dialect/Vector/Transforms/VectorEmulateMaskedLoadStore.cpp
+++ b/mlir/lib/Dialect/Vector/Transforms/VectorEmulateMaskedLoadStore.cpp
@@ -64,7 +64,6 @@ struct VectorMaskedLoadOpConverter final
Value mask = maskedLoadOp.getMask();
Value base = maskedLoadOp.getBase();
Value iValue = maskedLoadOp.getPassThru();
- std::optional<uint64_t> alignment = maskedLoadOp.getAlignment();
auto indices = llvm::to_vector_of<Value>(maskedLoadOp.getIndices());
Value one = arith::ConstantOp::create(rewriter, loc, indexType,
IntegerAttr::get(indexType, 1));
@@ -76,7 +75,7 @@ struct VectorMaskedLoadOpConverter final
[&](OpBuilder &builder, Location loc) {
auto loadedValue = memref::LoadOp::create(
builder, loc, base, indices, /*nontemporal=*/false,
- alignment.value_or(0));
+ llvm::MaybeAlign(maskedLoadOp.getAlignment().value_or(0)));
auto combinedValue =
vector::InsertOp::create(builder, loc, loadedValue, iValue, i);
scf::YieldOp::create(builder, loc, combinedValue.getResult());
@@ -135,7 +134,6 @@ struct VectorMaskedStoreOpConverter final
Value base = maskedStoreOp.getBase();
Value value = maskedStoreOp.getValueToStore();
bool nontemporal = false;
- std::optional<uint64_t> alignment = maskedStoreOp.getAlignment();
auto indices = llvm::to_vector_of<Value>(maskedStoreOp.getIndices());
Value one = arith::ConstantOp::create(rewriter, loc, indexType,
IntegerAttr::get(indexType, 1));
@@ -145,8 +143,9 @@ struct VectorMaskedStoreOpConverter final
auto ifOp = scf::IfOp::create(rewriter, loc, maskBit, /*else=*/false);
rewriter.setInsertionPointToStart(&ifOp.getThenRegion().front());
auto extractedValue = vector::ExtractOp::create(rewriter, loc, value, i);
- memref::StoreOp::create(rewriter, loc, extractedValue, base, indices,
- nontemporal, alignment.value_or(0));
+ memref::StoreOp::create(
+ rewriter, loc, extractedValue, base, indices, nontemporal,
+ llvm::MaybeAlign(maskedStoreOp.getAlignment().value_or(0)));
rewriter.setInsertionPointAfter(ifOp);
indices.back() =
More information about the Mlir-commits
mailing list