Skip to content

Commit ea7b39a

Browse files
jiang1997amd-eochoalo
authored andcommitted
[MLIR][MemRef] Change builders with int alignment params to llvm::MaybeAlign (llvm#159449)
Change remaining OpBuilder methods to use `llvm::MaybeAlign` instead of `uint64_t` for alignment parameters. --------- Co-authored-by: Erick Ochoa Lopez <[email protected]>
1 parent 0caec4b commit ea7b39a

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,28 +1241,28 @@ def LoadOp : MemRef_Op<"load",
12411241
OpBuilder<(ins "Value":$memref,
12421242
"ValueRange":$indices,
12431243
CArg<"bool", "false">:$nontemporal,
1244-
CArg<"uint64_t", "0">:$alignment), [{
1244+
CArg<"llvm::MaybeAlign", "llvm::MaybeAlign()">:$alignment), [{
12451245
return build($_builder, $_state, memref, indices, nontemporal,
1246-
alignment != 0 ? $_builder.getI64IntegerAttr(alignment) :
1247-
nullptr);
1246+
alignment ? $_builder.getI64IntegerAttr(alignment->value()) :
1247+
nullptr);
12481248
}]>,
12491249
OpBuilder<(ins "Type":$resultType,
12501250
"Value":$memref,
12511251
"ValueRange":$indices,
12521252
CArg<"bool", "false">:$nontemporal,
1253-
CArg<"uint64_t", "0">:$alignment), [{
1253+
CArg<"llvm::MaybeAlign", "llvm::MaybeAlign()">:$alignment), [{
12541254
return build($_builder, $_state, resultType, memref, indices, nontemporal,
1255-
alignment != 0 ? $_builder.getI64IntegerAttr(alignment) :
1256-
nullptr);
1255+
alignment ? $_builder.getI64IntegerAttr(alignment->value()) :
1256+
nullptr);
12571257
}]>,
12581258
OpBuilder<(ins "TypeRange":$resultTypes,
12591259
"Value":$memref,
12601260
"ValueRange":$indices,
12611261
CArg<"bool", "false">:$nontemporal,
1262-
CArg<"uint64_t", "0">:$alignment), [{
1262+
CArg<"llvm::MaybeAlign", "llvm::MaybeAlign()">:$alignment), [{
12631263
return build($_builder, $_state, resultTypes, memref, indices, nontemporal,
1264-
alignment != 0 ? $_builder.getI64IntegerAttr(alignment) :
1265-
nullptr);
1264+
alignment ? $_builder.getI64IntegerAttr(alignment->value()) :
1265+
nullptr);
12661266
}]>
12671267
];
12681268

@@ -2007,10 +2007,10 @@ def MemRef_StoreOp : MemRef_Op<"store",
20072007
"Value":$memref,
20082008
"ValueRange":$indices,
20092009
CArg<"bool", "false">:$nontemporal,
2010-
CArg<"uint64_t", "0">:$alignment), [{
2010+
CArg<"llvm::MaybeAlign", "llvm::MaybeAlign()">:$alignment), [{
20112011
return build($_builder, $_state, valueToStore, memref, indices, nontemporal,
2012-
alignment != 0 ? $_builder.getI64IntegerAttr(alignment) :
2013-
nullptr);
2012+
alignment ? $_builder.getI64IntegerAttr(alignment->value()) :
2013+
nullptr);
20142014
}]>,
20152015
OpBuilder<(ins "Value":$valueToStore, "Value":$memref), [{
20162016
$_state.addOperands(valueToStore);

mlir/lib/Dialect/Vector/Transforms/VectorEmulateMaskedLoadStore.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ struct VectorMaskedLoadOpConverter final
6464
Value mask = maskedLoadOp.getMask();
6565
Value base = maskedLoadOp.getBase();
6666
Value iValue = maskedLoadOp.getPassThru();
67-
std::optional<uint64_t> alignment = maskedLoadOp.getAlignment();
6867
auto indices = llvm::to_vector_of<Value>(maskedLoadOp.getIndices());
6968
Value one = arith::ConstantOp::create(rewriter, loc, indexType,
7069
IntegerAttr::get(indexType, 1));
@@ -76,7 +75,7 @@ struct VectorMaskedLoadOpConverter final
7675
[&](OpBuilder &builder, Location loc) {
7776
auto loadedValue = memref::LoadOp::create(
7877
builder, loc, base, indices, /*nontemporal=*/false,
79-
alignment.value_or(0));
78+
llvm::MaybeAlign(maskedLoadOp.getAlignment().value_or(0)));
8079
auto combinedValue =
8180
vector::InsertOp::create(builder, loc, loadedValue, iValue, i);
8281
scf::YieldOp::create(builder, loc, combinedValue.getResult());
@@ -135,7 +134,6 @@ struct VectorMaskedStoreOpConverter final
135134
Value base = maskedStoreOp.getBase();
136135
Value value = maskedStoreOp.getValueToStore();
137136
bool nontemporal = false;
138-
std::optional<uint64_t> alignment = maskedStoreOp.getAlignment();
139137
auto indices = llvm::to_vector_of<Value>(maskedStoreOp.getIndices());
140138
Value one = arith::ConstantOp::create(rewriter, loc, indexType,
141139
IntegerAttr::get(indexType, 1));
@@ -145,8 +143,9 @@ struct VectorMaskedStoreOpConverter final
145143
auto ifOp = scf::IfOp::create(rewriter, loc, maskBit, /*else=*/false);
146144
rewriter.setInsertionPointToStart(&ifOp.getThenRegion().front());
147145
auto extractedValue = vector::ExtractOp::create(rewriter, loc, value, i);
148-
memref::StoreOp::create(rewriter, loc, extractedValue, base, indices,
149-
nontemporal, alignment.value_or(0));
146+
memref::StoreOp::create(
147+
rewriter, loc, extractedValue, base, indices, nontemporal,
148+
llvm::MaybeAlign(maskedStoreOp.getAlignment().value_or(0)));
150149

151150
rewriter.setInsertionPointAfter(ifOp);
152151
indices.back() =

0 commit comments

Comments
 (0)