diff options
| author | Mahesh Ravishankar <ravishankarm@google.com> | 2019-08-19 11:38:53 -0700 |
|---|---|---|
| committer | A. Unique TensorFlower <gardener@tensorflow.org> | 2019-08-19 11:39:25 -0700 |
| commit | 377bfb3a142a83a8ecee5de5a6b5d571881fc2b6 (patch) | |
| tree | 8d9165735b6a6f18dfaa7d15b93465ff91228ad8 /mlir/test/Dialect/SPIRV/Serialization | |
| parent | ba0fa92524ce0aea2385858016bdb08bd941a10d (diff) | |
| download | bcm5719-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')
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 |

