summaryrefslogtreecommitdiffstats
path: root/mlir/test/Dialect/SPIRV/Serialization
diff options
context:
space:
mode:
authorMahesh Ravishankar <ravishankarm@google.com>2019-08-19 11:38:53 -0700
committerA. Unique TensorFlower <gardener@tensorflow.org>2019-08-19 11:39:25 -0700
commit377bfb3a142a83a8ecee5de5a6b5d571881fc2b6 (patch)
tree8d9165735b6a6f18dfaa7d15b93465ff91228ad8 /mlir/test/Dialect/SPIRV/Serialization
parentba0fa92524ce0aea2385858016bdb08bd941a10d (diff)
downloadbcm5719-llvm-377bfb3a142a83a8ecee5de5a6b5d571881fc2b6.tar.gz
bcm5719-llvm-377bfb3a142a83a8ecee5de5a6b5d571881fc2b6.zip
Fix parsing/printing of spv.globalVariable and spv._address_of
Change the prining/parsing of spv.globalVariable to print the type of the variable after the ':' to be consistent with MLIR convention. The spv._address_of should print the variable type after the ':'. It was mistakenly printing the address of the return value. Add a (missing) test that should have caught that. Also move spv.globalVariable and spv._address_of tests to structure-ops.mlir. PiperOrigin-RevId: 264204686
Diffstat (limited to 'mlir/test/Dialect/SPIRV/Serialization')
-rw-r--r--mlir/test/Dialect/SPIRV/Serialization/entry_interface.mlir8
-rw-r--r--mlir/test/Dialect/SPIRV/Serialization/variable_reference.mlir18
-rw-r--r--mlir/test/Dialect/SPIRV/Serialization/variables.mlir16
-rw-r--r--mlir/test/Dialect/SPIRV/Serialization/variables_init.mlir8
4 files changed, 34 insertions, 16 deletions
diff --git a/mlir/test/Dialect/SPIRV/Serialization/entry_interface.mlir b/mlir/test/Dialect/SPIRV/Serialization/entry_interface.mlir
index 8c22b39c81b..d22b4e4ceb2 100644
--- a/mlir/test/Dialect/SPIRV/Serialization/entry_interface.mlir
+++ b/mlir/test/Dialect/SPIRV/Serialization/entry_interface.mlir
@@ -2,12 +2,12 @@
func @spirv_loadstore() -> () {
spv.module "Logical" "VulkanKHR" {
- // CHECK: spv.globalVariable !spv.ptr<f32, Input> @var2
- // CHECK-NEXT: spv.globalVariable !spv.ptr<f32, Output> @var3
+ // CHECK: spv.globalVariable @var2 : !spv.ptr<f32, Input>
+ // CHECK-NEXT: spv.globalVariable @var3 : !spv.ptr<f32, Output>
// CHECK-NEXT: func @noop({{%.*}}: !spv.ptr<f32, Input>, {{%.*}}: !spv.ptr<f32, Output>)
// CHECK: spv.EntryPoint "GLCompute" @noop, @var2, @var3
- spv.globalVariable !spv.ptr<f32, Input> @var2
- spv.globalVariable !spv.ptr<f32, Output> @var3
+ spv.globalVariable @var2 : !spv.ptr<f32, Input>
+ spv.globalVariable @var3 : !spv.ptr<f32, Output>
func @noop(%arg0 : !spv.ptr<f32, Input>, %arg1 : !spv.ptr<f32, Output>) -> () {
spv.Return
}
diff --git a/mlir/test/Dialect/SPIRV/Serialization/variable_reference.mlir b/mlir/test/Dialect/SPIRV/Serialization/variable_reference.mlir
new file mode 100644
index 00000000000..00497eac46f
--- /dev/null
+++ b/mlir/test/Dialect/SPIRV/Serialization/variable_reference.mlir
@@ -0,0 +1,18 @@
+// RUN: mlir-translate -serialize-spirv %s
+
+// TODO: This example doesn't work on deserialization since constants
+// are always added to module scope and need to be materialized into
+// function scope. So for now just run the serialization.
+
+func @spirv_global_vars() -> () {
+ spv.module "Logical" "VulkanKHR" {
+ spv.globalVariable @globalInvocationID built_in("GlobalInvocationId") : !spv.ptr<vector<3xi32>, Input>
+ func @foo() {
+ %0 = spv._address_of @globalInvocationID : !spv.ptr<vector<3xi32>, Input>
+ %1 = spv.constant 0: i32
+ %2 = spv.AccessChain %0[%1] : !spv.ptr<vector<3xi32>, Input>
+ spv.Return
+ }
+ }
+ return
+} \ No newline at end of file
diff --git a/mlir/test/Dialect/SPIRV/Serialization/variables.mlir b/mlir/test/Dialect/SPIRV/Serialization/variables.mlir
index 3fbd0a94b81..f9c572d9be7 100644
--- a/mlir/test/Dialect/SPIRV/Serialization/variables.mlir
+++ b/mlir/test/Dialect/SPIRV/Serialization/variables.mlir
@@ -1,15 +1,15 @@
// RUN: mlir-translate -serialize-spirv %s | mlir-translate -deserialize-spirv | FileCheck %s
-// CHECK: spv.globalVariable !spv.ptr<f32, Input> @var0 bind(1, 0)
-// CHECK-NEXT: spv.globalVariable !spv.ptr<f32, Output> @var1 bind(0, 1)
-// CHECK-NEXT: spv.globalVariable !spv.ptr<vector<3xi32>, Input> @var2 built_in("GlobalInvocationId")
-// CHECK-NEXT: spv.globalVariable !spv.ptr<vector<3xi32>, Input> @var3 built_in("GlobalInvocationId")
+// CHECK: spv.globalVariable @var0 bind(1, 0) : !spv.ptr<f32, Input>
+// CHECK-NEXT: spv.globalVariable @var1 bind(0, 1) : !spv.ptr<f32, Output>
+// CHECK-NEXT: spv.globalVariable @var2 built_in("GlobalInvocationId") : !spv.ptr<vector<3xi32>, Input>
+// CHECK-NEXT: spv.globalVariable @var3 built_in("GlobalInvocationId") : !spv.ptr<vector<3xi32>, Input>
func @spirv_variables() -> () {
spv.module "Logical" "VulkanKHR" {
- spv.globalVariable !spv.ptr<f32, Input> @var0 bind(1, 0)
- spv.globalVariable !spv.ptr<f32, Output> @var1 bind(0, 1)
- spv.globalVariable !spv.ptr<vector<3xi32>, Input> @var2 {built_in = "GlobalInvocationId"}
- spv.globalVariable !spv.ptr<vector<3xi32>, Input> @var3 built_in("GlobalInvocationId")
+ spv.globalVariable @var0 bind(1, 0) : !spv.ptr<f32, Input>
+ spv.globalVariable @var1 bind(0, 1) : !spv.ptr<f32, Output>
+ spv.globalVariable @var2 {built_in = "GlobalInvocationId"} : !spv.ptr<vector<3xi32>, Input>
+ spv.globalVariable @var3 built_in("GlobalInvocationId") : !spv.ptr<vector<3xi32>, Input>
}
return
} \ No newline at end of file
diff --git a/mlir/test/Dialect/SPIRV/Serialization/variables_init.mlir b/mlir/test/Dialect/SPIRV/Serialization/variables_init.mlir
index d6dd83ed45f..b08d46e1b0d 100644
--- a/mlir/test/Dialect/SPIRV/Serialization/variables_init.mlir
+++ b/mlir/test/Dialect/SPIRV/Serialization/variables_init.mlir
@@ -2,10 +2,10 @@
func @spirv_variables() -> () {
spv.module "Logical" "VulkanKHR" {
- // CHECK: spv.globalVariable !spv.ptr<f32, Input> @var1
- // CHECK-NEXT: spv.globalVariable !spv.ptr<f32, Input> @var2 initializer(@var1) bind(1, 0)
- spv.globalVariable !spv.ptr<f32, Input> @var1
- spv.globalVariable !spv.ptr<f32, Input> @var2 initializer(@var1) bind(1, 0)
+ // CHECK: spv.globalVariable @var1 : !spv.ptr<f32, Input>
+ // CHECK-NEXT: spv.globalVariable @var2 initializer(@var1) bind(1, 0) : !spv.ptr<f32, Input>
+ spv.globalVariable @var1 : !spv.ptr<f32, Input>
+ spv.globalVariable @var2 initializer(@var1) bind(1, 0) : !spv.ptr<f32, Input>
}
return
} \ No newline at end of file
OpenPOWER on IntegriCloud