[Mlir-commits] [mlir] [WIP][MLIR] Use IntValidAlignment for alignment attributes (PR #158137)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Sep 12 16:22:18 PDT 2025
https://github.com/jiang1997 updated https://github.com/llvm/llvm-project/pull/158137
>From ec73999f59d4c095c7356bc779768018447f05b7 Mon Sep 17 00:00:00 2001
From: jiang1997 <jieke at live.cn>
Date: Fri, 12 Sep 2025 03:01:00 +0800
Subject: [PATCH 1/2] [MLIR] Use IntValidAlignment for alignment attributes
---
mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td | 8 +++-----
.../mlir/Dialect/SPIRV/IR/SPIRVCooperativeMatrixOps.td | 4 ++--
mlir/include/mlir/Dialect/SPIRV/IR/SPIRVMemoryOps.td | 4 ++--
3 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td b/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
index 513a9a18198a3..671cc05e963b4 100644
--- a/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
+++ b/mlir/include/mlir/Dialect/MemRef/IR/MemRefOps.td
@@ -1163,7 +1163,7 @@ def MemRef_GlobalOp : MemRef_Op<"global", [Symbol]> {
MemRefTypeAttr:$type,
OptionalAttr<AnyAttr>:$initial_value,
UnitAttr:$constant,
- OptionalAttr<I64Attr>:$alignment);
+ OptionalAttr<IntValidAlignment<I64Attr>>:$alignment);
let assemblyFormat = [{
($sym_visibility^)?
@@ -1231,8 +1231,7 @@ def LoadOp : MemRef_Op<"load",
[MemRead]>:$memref,
Variadic<Index>:$indices,
DefaultValuedOptionalAttr<BoolAttr, "false">:$nontemporal,
- ConfinedAttr<OptionalAttr<I64Attr>,
- [AllAttrOf<[IntPositive, IntPowerOf2]>]>:$alignment);
+ OptionalAttr<IntValidAlignment<I64Attr>>:$alignment);
let builders = [
OpBuilder<(ins "Value":$memref,
@@ -1965,8 +1964,7 @@ def MemRef_StoreOp : MemRef_Op<"store",
[MemWrite]>:$memref,
Variadic<Index>:$indices,
DefaultValuedOptionalAttr<BoolAttr, "false">:$nontemporal,
- ConfinedAttr<OptionalAttr<I64Attr>,
- [AllAttrOf<[IntPositive, IntPowerOf2]>]>:$alignment);
+ OptionalAttr<IntValidAlignment<I64Attr>>:$alignment);
let builders = [
OpBuilder<(ins "Value":$valueToStore,
diff --git a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCooperativeMatrixOps.td b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCooperativeMatrixOps.td
index fd75532ae3d70..827ac901d22de 100644
--- a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCooperativeMatrixOps.td
+++ b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCooperativeMatrixOps.td
@@ -129,7 +129,7 @@ def SPIRV_KHRCooperativeMatrixLoadOp : SPIRV_KhrVendorOp<"CooperativeMatrixLoad"
SPIRV_KHR_CooperativeMatrixLayoutAttr:$matrix_layout,
SPIRV_Integer:$stride,
OptionalAttr<SPIRV_MemoryAccessAttr>:$memory_operand,
- OptionalAttr<I32Attr>:$alignment
+ OptionalAttr<IntValidAlignment<I32Attr>>:$alignment
);
let results = (outs
@@ -214,7 +214,7 @@ def SPIRV_KHRCooperativeMatrixStoreOp : SPIRV_KhrVendorOp<"CooperativeMatrixStor
SPIRV_KHR_CooperativeMatrixLayoutAttr:$matrix_layout,
SPIRV_Integer:$stride,
OptionalAttr<SPIRV_MemoryAccessAttr>:$memory_operand,
- OptionalAttr<I32Attr>:$alignment
+ OptionalAttr<IntValidAlignment<I32Attr>>:$alignment
);
let results = (outs);
diff --git a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVMemoryOps.td b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVMemoryOps.td
index 6253601a7c2b2..6108decdb9706 100644
--- a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVMemoryOps.td
+++ b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVMemoryOps.td
@@ -121,9 +121,9 @@ def SPIRV_CopyMemoryOp : SPIRV_Op<"CopyMemory", []> {
SPIRV_AnyPtr:$target,
SPIRV_AnyPtr:$source,
OptionalAttr<SPIRV_MemoryAccessAttr>:$memory_access,
- OptionalAttr<I32Attr>:$alignment,
+ OptionalAttr<IntValidAlignment<I32Attr>>:$alignment,
OptionalAttr<SPIRV_MemoryAccessAttr>:$source_memory_access,
- OptionalAttr<I32Attr>:$source_alignment
+ OptionalAttr<IntValidAlignment<I32Attr>>:$source_alignment
);
let results = (outs);
>From d894a992485c6fec674742fc4352f2fde68ff540 Mon Sep 17 00:00:00 2001
From: jiang1997 <jieke at live.cn>
Date: Sat, 13 Sep 2025 07:11:36 +0800
Subject: [PATCH 2/2] [MLIR][MemRef] Update alignment validation error message
in test
---
mlir/test/Dialect/MemRef/invalid.mlir | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mlir/test/Dialect/MemRef/invalid.mlir b/mlir/test/Dialect/MemRef/invalid.mlir
index b4476036d6513..3f96d907632b7 100644
--- a/mlir/test/Dialect/MemRef/invalid.mlir
+++ b/mlir/test/Dialect/MemRef/invalid.mlir
@@ -380,7 +380,7 @@ func.func @mismatched_types() {
// -----
-// expected-error @+1 {{alignment attribute value 63 is not a power of 2}}
+// expected-error @+1 {{'memref.global' op attribute 'alignment' failed to satisfy constraint: 64-bit signless integer attribute whose value is positive and whose value is a power of two > 0}}
memref.global "private" @gv : memref<4xf32> = dense<1.0> { alignment = 63 }
// -----
More information about the Mlir-commits
mailing list