[Mlir-commits] [mlir] ea82af2 - [mlir][SPIR-V] Add Volatile function parameter round-trip tests (#232195)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Oct 21 02:24:33 PDT 2026


Author: Alexander Shaposhnikov
Date: 2026-10-21T02:24:28-07:00
New Revision: ea82af272aa8ac9f3a223be1e5ef2f418e99f3ec

URL: https://github.com/llvm/llvm-project/commit/ea82af272aa8ac9f3a223be1e5ef2f418e99f3ec
DIFF: https://github.com/llvm/llvm-project/commit/ea82af272aa8ac9f3a223be1e5ef2f418e99f3ec.diff

LOG: [mlir][SPIR-V] Add Volatile function parameter round-trip tests (#232195)

The deserializer accepts Volatile function parameter decorations since
 #230611 made it keep every unit decoration. Add round-trip tests for
 function definitions and imported declarations, including Volatile
 combined with Alignment and FuncParamAttr decorations, so the Volatile
 path is covered explicitly.

Added: 
    

Modified: 
    mlir/test/Target/SPIRV/function-parameter-attributes.mlir

Removed: 
    


################################################################################
diff  --git a/mlir/test/Target/SPIRV/function-parameter-attributes.mlir b/mlir/test/Target/SPIRV/function-parameter-attributes.mlir
index 3559aef561601..31b89fd29aed3 100644
--- a/mlir/test/Target/SPIRV/function-parameter-attributes.mlir
+++ b/mlir/test/Target/SPIRV/function-parameter-attributes.mlir
@@ -103,3 +103,33 @@ spirv.module Physical64 OpenCL requires #spirv.vce<v1.0, [Addresses, Kernel, Lin
     linkage_attributes = #spirv.linkage_attributes<linkage_name = "external", linkage_type = <Import>>
   }
 }
+
+// -----
+
+// `volatile` pointer parameters are decorated with Volatile; it may be combined
+// with Alignment and FuncParamAttr decorations.
+spirv.module Physical64 OpenCL requires #spirv.vce<v1.0, [Addresses, Kernel, Linkage], []> {
+  // CHECK-LABEL: spirv.func @volatile(
+  // CHECK-SAME: !spirv.ptr<i32, CrossWorkgroup> {spirv.decoration = #spirv.decoration<Volatile>}
+  // CHECK-SAME: !spirv.ptr<i32, CrossWorkgroup> {spirv.alignment = 4 : i32, spirv.decoration = #spirv.decoration<Volatile>, spirv.func_param_attr = [#spirv.function_parameter_attribute<NoCapture>]}
+  spirv.func @volatile(
+      %a: !spirv.ptr<i32, CrossWorkgroup> {spirv.decoration = #spirv.decoration<Volatile>},
+      %b: !spirv.ptr<i32, CrossWorkgroup> {
+        spirv.alignment = 4 : i32,
+        spirv.decoration = #spirv.decoration<Volatile>,
+        spirv.func_param_attr = [#spirv.function_parameter_attribute<NoCapture>]}
+  ) "None" {
+    spirv.Return
+  }
+
+}
+
+// -----
+
+spirv.module Physical64 OpenCL requires #spirv.vce<v1.0, [Addresses, Kernel, Linkage], []> {
+  // CHECK-LABEL: spirv.func @volatile_declaration(
+  // CHECK-SAME: !spirv.ptr<i32, CrossWorkgroup> {spirv.decoration = #spirv.decoration<Volatile>}
+  spirv.func @volatile_declaration(%arg: !spirv.ptr<i32, CrossWorkgroup> {spirv.decoration = #spirv.decoration<Volatile>}) "None" attributes {
+    linkage_attributes = #spirv.linkage_attributes<linkage_name = "volatile_declaration", linkage_type = <Import>>
+  }
+}


        


More information about the Mlir-commits mailing list