[Mlir-commits] [mlir] Add `alignment` attribute to MemRef/Vector memory access ops (PR #144344)

Krzysztof Drewniak llvmlistbot at llvm.org
Mon Jun 16 09:05:06 PDT 2025


================
@@ -1227,7 +1227,45 @@ def LoadOp : MemRef_Op<"load",
   let arguments = (ins Arg<AnyMemRef, "the reference to load from",
                            [MemRead]>:$memref,
                        Variadic<Index>:$indices,
-                       DefaultValuedOptionalAttr<BoolAttr, "false">:$nontemporal);
+                       DefaultValuedOptionalAttr<BoolAttr, "false">:$nontemporal,
+                       ConfinedAttr<OptionalAttr<I32Attr>,
+                                    [IntPositive]>:$alignment);
+
+  let builders = [
+    OpBuilder<(ins "Value":$memref,
+                   "ValueRange":$indices,
+                   CArg<"IntegerAttr", "IntegerAttr()">:$alignment), [{
+      return build($_builder, $_state, memref, indices, false, alignment);
+    }]>,
+    OpBuilder<(ins "Value":$memref,
+                   "ValueRange":$indices,
+                   "bool":$nontemporal), [{
+      return build($_builder, $_state, memref, indices, nontemporal,
+                   IntegerAttr());
+    }]>,
+    OpBuilder<(ins "Type":$resultType,
+                   "Value":$memref,
+                   "ValueRange":$indices,
+                   CArg<"IntegerAttr", "IntegerAttr()">:$alignment), [{
+      return build($_builder, $_state, resultType, memref, indices, false,
+                   alignment);
+    }]>,
+    OpBuilder<(ins "Type":$resultType,
+                   "Value":$memref,
+                   "ValueRange":$indices,
+                   "bool":$nontemporal), [{
+      return build($_builder, $_state, resultType, memref, indices, nontemporal,
+                   IntegerAttr());
+    }]>,
+    OpBuilder<(ins "TypeRange":$resultTypes,
+                   "Value":$memref,
+                   "ValueRange":$indices,
+                   CArg<"IntegerAttr", "IntegerAttr()">:$alignment), [{
----------------
krzysz00 wrote:

A lot of these builders could also/instead take a `std::optional<uint32_t>`

https://github.com/llvm/llvm-project/pull/144344


More information about the Mlir-commits mailing list