|
1 | 1 | // RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip %s | FileCheck %s
|
2 | 2 |
|
3 |
| -spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], []> { |
4 |
| - spirv.GlobalVariable @var1 : !spirv.ptr<!spirv.array<4xf32>, Input> |
| 3 | +// RUN: %if spirv-tools %{ rm -rf %t %} |
| 4 | +// RUN: %if spirv-tools %{ mkdir %t %} |
| 5 | +// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv --split-input-file --spirv-save-validation-files-with-prefix=%t/module %s %} |
| 6 | +// RUN: %if spirv-tools %{ spirv-val %t %} |
| 7 | + |
| 8 | +spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader, VariablePointers, Linkage], [SPV_KHR_storage_buffer_storage_class, SPV_KHR_variable_pointers]> { |
| 9 | + spirv.GlobalVariable @var1 : !spirv.ptr<!spirv.array<4xf32>, StorageBuffer> |
5 | 10 | spirv.func @fmain() -> i32 "None" {
|
6 | 11 | %0 = spirv.Constant 16 : i32
|
7 |
| - %1 = spirv.mlir.addressof @var1 : !spirv.ptr<!spirv.array<4xf32>, Input> |
| 12 | + %1 = spirv.mlir.addressof @var1 : !spirv.ptr<!spirv.array<4xf32>, StorageBuffer> |
8 | 13 | // CHECK: {{%.*}} = spirv.FunctionCall @f_0({{%.*}}) : (i32) -> i32
|
9 | 14 | %3 = spirv.FunctionCall @f_0(%0) : (i32) -> i32
|
10 |
| - // CHECK: spirv.FunctionCall @f_1({{%.*}}, {{%.*}}) : (i32, !spirv.ptr<!spirv.array<4 x f32>, Input>) -> () |
11 |
| - spirv.FunctionCall @f_1(%3, %1) : (i32, !spirv.ptr<!spirv.array<4xf32>, Input>) -> () |
12 |
| - // CHECK: {{%.*}} = spirv.FunctionCall @f_2({{%.*}}) : (!spirv.ptr<!spirv.array<4 x f32>, Input>) -> !spirv.ptr<!spirv.array<4 x f32>, Input> |
13 |
| - %4 = spirv.FunctionCall @f_2(%1) : (!spirv.ptr<!spirv.array<4xf32>, Input>) -> !spirv.ptr<!spirv.array<4xf32>, Input> |
| 15 | + // CHECK: spirv.FunctionCall @f_1({{%.*}}, {{%.*}}) : (i32, !spirv.ptr<!spirv.array<4 x f32>, StorageBuffer>) -> () |
| 16 | + spirv.FunctionCall @f_1(%3, %1) : (i32, !spirv.ptr<!spirv.array<4xf32>, StorageBuffer>) -> () |
| 17 | + // CHECK: {{%.*}} = spirv.FunctionCall @f_2({{%.*}}) : (!spirv.ptr<!spirv.array<4 x f32>, StorageBuffer>) -> !spirv.ptr<!spirv.array<4 x f32>, StorageBuffer> |
| 18 | + %4 = spirv.FunctionCall @f_2(%1) : (!spirv.ptr<!spirv.array<4xf32>, StorageBuffer>) -> !spirv.ptr<!spirv.array<4xf32>, StorageBuffer> |
14 | 19 | spirv.ReturnValue %3 : i32
|
15 | 20 | }
|
16 | 21 | spirv.func @f_0(%arg0 : i32) -> i32 "None" {
|
17 | 22 | spirv.ReturnValue %arg0 : i32
|
18 | 23 | }
|
19 |
| - spirv.func @f_1(%arg0 : i32, %arg1 : !spirv.ptr<!spirv.array<4xf32>, Input>) -> () "None" { |
| 24 | + spirv.func @f_1(%arg0 : i32, %arg1 : !spirv.ptr<!spirv.array<4xf32>, StorageBuffer>) -> () "None" { |
20 | 25 | spirv.Return
|
21 | 26 | }
|
22 |
| - spirv.func @f_2(%arg0 : !spirv.ptr<!spirv.array<4xf32>, Input>) -> !spirv.ptr<!spirv.array<4xf32>, Input> "None" { |
23 |
| - spirv.ReturnValue %arg0 : !spirv.ptr<!spirv.array<4xf32>, Input> |
| 27 | + spirv.func @f_2(%arg0 : !spirv.ptr<!spirv.array<4xf32>, StorageBuffer>) -> !spirv.ptr<!spirv.array<4xf32>, StorageBuffer> "None" { |
| 28 | + spirv.ReturnValue %arg0 : !spirv.ptr<!spirv.array<4xf32>, StorageBuffer> |
24 | 29 | }
|
25 | 30 |
|
26 | 31 | spirv.func @f_loop_with_function_call(%count : i32) -> () "None" {
|
|
0 commit comments