[Mlir-commits] [mlir] [mlir][spirv] Print storage class in spirv.INTEL.SubgroupBlockWrite (PR #235549)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Sun Oct 25 18:32:53 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-mlir-spirv

Author: Oskar Guzik (osguzik)

<details>
<summary>Changes</summary>

This prints the storage class which the parser requires, so the op round-trips. Updated the tests as well.

fixes #<!-- -->226050

---
Full diff: https://github.com/llvm/llvm-project/pull/235549.diff


3 Files Affected:

- (modified) mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp (+3-1) 
- (modified) mlir/test/Dialect/SPIRV/IR/group-ops.mlir (+2-2) 
- (modified) mlir/test/Target/SPIRV/subgroup-block-intel.mlir (+2-2) 


``````````diff
diff --git a/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp b/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
index 35cb37a67f530a..9f445fdcba0a85 100644
--- a/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
+++ b/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
@@ -1580,7 +1580,9 @@ ParseResult spirv::INTELSubgroupBlockWriteOp::parse(OpAsmParser &parser,
 }
 
 void spirv::INTELSubgroupBlockWriteOp::print(OpAsmPrinter &printer) {
-  printer << " " << getPtr() << ", " << getValue() << " : "
+  StringRef sc = stringifyStorageClass(
+      cast<spirv::PointerType>(getPtr().getType()).getStorageClass());
+  printer << " \"" << sc << "\" " << getPtr() << ", " << getValue() << " : "
           << getValue().getType();
 }
 
diff --git a/mlir/test/Dialect/SPIRV/IR/group-ops.mlir b/mlir/test/Dialect/SPIRV/IR/group-ops.mlir
index 7ecc57c315c4f7..df56f06339b752 100644
--- a/mlir/test/Dialect/SPIRV/IR/group-ops.mlir
+++ b/mlir/test/Dialect/SPIRV/IR/group-ops.mlir
@@ -116,7 +116,7 @@ func.func @subgroup_block_read_intel_vector(%ptr : !spirv.ptr<i32, StorageBuffer
 //===----------------------------------------------------------------------===//
 
 func.func @subgroup_block_write_intel(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: i32) -> () {
-  // CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : i32
+  // CHECK: spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %{{.*}}, %{{.*}} : i32
   spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : i32
   return
 }
@@ -124,7 +124,7 @@ func.func @subgroup_block_write_intel(%ptr : !spirv.ptr<i32, StorageBuffer>, %va
 // -----
 
 func.func @subgroup_block_write_intel_vector(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: vector<3xi32>) -> () {
-  // CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : vector<3xi32>
+  // CHECK: spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %{{.*}}, %{{.*}} : vector<3xi32>
   spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : vector<3xi32>
   return
 }
diff --git a/mlir/test/Target/SPIRV/subgroup-block-intel.mlir b/mlir/test/Target/SPIRV/subgroup-block-intel.mlir
index 14060e632fffd5..5c1079f49e4c9a 100644
--- a/mlir/test/Target/SPIRV/subgroup-block-intel.mlir
+++ b/mlir/test/Target/SPIRV/subgroup-block-intel.mlir
@@ -21,13 +21,13 @@ spirv.module Physical64 GLSL450 requires #spirv.vce<v1.3, [Addresses, Shader, Li
   }
   // CHECK-LABEL: @subgroup_block_write_intel
   spirv.func @subgroup_block_write_intel(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: i32) -> () "None" {
-    // CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : i32
+    // CHECK: spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %{{.*}}, %{{.*}} : i32
     spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : i32
     spirv.Return
   }
   // CHECK-LABEL: @subgroup_block_write_intel_vector
   spirv.func @subgroup_block_write_intel_vector(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: vector<3xi32>) -> () "None" {
-    // CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : vector<3xi32>
+    // CHECK: spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %{{.*}}, %{{.*}} : vector<3xi32>
     spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : vector<3xi32>
     spirv.Return
   }

``````````

</details>


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


More information about the Mlir-commits mailing list