1
1
// RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip-debug -mlir-print-debuginfo -mlir-print-local-scope %s | FileCheck %s
2
+ // RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv %s | spirv-val %}
2
3
3
- spirv.module Logical GLSL450 requires #spirv.vce <v1.0 , [Shader ], []> {
4
- // CHECK: loc({{".*debug.mlir"}}:5 :3)
4
+ spirv.module Logical GLSL450 requires #spirv.vce <v1.3 , [Shader , GroupNonUniformArithmetic ], [SPV_KHR_non_semantic_info , SPV_KHR_storage_buffer_storage_class ]> attributes { spirv.target_env = #spirv.target_env < #spirv.vce < v1.3 , [ Shader , GroupNonUniformArithmetic ], [ SPV_KHR_non_semantic_info , SPV_KHR_storage_buffer_storage_class ]>, #spirv.resource_limits <>>} {
5
+ // CHECK: loc({{".*debug.mlir"}}:6 :3)
5
6
spirv.GlobalVariable @var0 bind (0 , 1 ) : !spirv.ptr <f32 , Input >
6
7
spirv.func @arithmetic (%arg0 : vector <4 xf32 >, %arg1 : vector <4 xf32 >) " None" {
7
- // CHECK: loc({{".*debug.mlir"}}:8 :10)
8
+ // CHECK: loc({{".*debug.mlir"}}:9 :10)
8
9
%0 = spirv.FAdd %arg0 , %arg1 : vector <4 xf32 >
9
- // CHECK: loc({{".*debug.mlir"}}:10 :10)
10
+ // CHECK: loc({{".*debug.mlir"}}:11 :10)
10
11
%1 = spirv.FNegate %arg0 : vector <4 xf32 >
11
12
spirv.Return
12
13
}
13
14
14
15
spirv.func @atomic (%ptr: !spirv.ptr <i32 , Workgroup >, %value: i32 , %comparator: i32 ) " None" {
15
- // CHECK: loc({{".*debug.mlir"}}:16 :10)
16
+ // CHECK: loc({{".*debug.mlir"}}:17 :10)
16
17
%1 = spirv.AtomicAnd <Device > <None > %ptr , %value : !spirv.ptr <i32 , Workgroup >
17
18
spirv.Return
18
19
}
19
20
20
21
spirv.func @bitwiser (%arg0 : i32 , %arg1 : i32 ) " None" {
21
- // CHECK: loc({{".*debug.mlir"}}:22 :10)
22
+ // CHECK: loc({{".*debug.mlir"}}:23 :10)
22
23
%0 = spirv.BitwiseAnd %arg0 , %arg1 : i32
23
24
spirv.Return
24
25
}
25
26
26
27
spirv.func @convert (%arg0 : f32 ) " None" {
27
- // CHECK: loc({{".*debug.mlir"}}:28 :10)
28
+ // CHECK: loc({{".*debug.mlir"}}:29 :10)
28
29
%0 = spirv.ConvertFToU %arg0 : f32 to i32
29
30
spirv.Return
30
31
}
31
32
32
33
spirv.func @composite (%arg0 : !spirv.struct <(f32 , !spirv.struct <(!spirv.array <4 xf32 >, f32 )>)>, %arg1: !spirv.array <4 xf32 >, %arg2 : f32 , %arg3 : f32 ) " None" {
33
- // CHECK: loc({{".*debug.mlir"}}:34 :10)
34
+ // CHECK: loc({{".*debug.mlir"}}:35 :10)
34
35
%0 = spirv.CompositeInsert %arg1 , %arg0 [1 : i32 , 0 : i32 ] : !spirv.array <4 xf32 > into !spirv.struct <(f32 , !spirv.struct <(!spirv.array <4 xf32 >, f32 )>)>
35
- // CHECK: loc({{".*debug.mlir"}}:36 :10)
36
+ // CHECK: loc({{".*debug.mlir"}}:37 :10)
36
37
%1 = spirv.CompositeConstruct %arg2 , %arg3 : (f32 , f32 ) -> vector <2 xf32 >
37
38
spirv.Return
38
39
}
39
40
40
41
spirv.func @group_non_uniform (%val: f32 ) " None" {
41
- // CHECK: loc({{".*debug.mlir"}}:42 :10)
42
+ // CHECK: loc({{".*debug.mlir"}}:43 :10)
42
43
%0 = spirv.GroupNonUniformFAdd <Workgroup > <Reduce > %val : f32 -> f32
43
44
spirv.Return
44
45
}
45
46
46
47
spirv.func @local_var () " None" {
47
48
%zero = spirv.Constant 0 : i32
48
- // CHECK: loc({{".*debug.mlir"}}:49 :12)
49
+ // CHECK: loc({{".*debug.mlir"}}:50 :12)
49
50
%var = spirv.Variable init (%zero ) : !spirv.ptr <i32 , Function >
50
51
spirv.Return
51
52
}
52
53
53
54
spirv.func @logical (%arg0: i32 , %arg1: i32 ) " None" {
54
- // CHECK: loc({{".*debug.mlir"}}:55 :10)
55
+ // CHECK: loc({{".*debug.mlir"}}:56 :10)
55
56
%0 = spirv.IEqual %arg0 , %arg1 : i32
56
57
spirv.Return
57
58
}
58
59
59
60
spirv.func @memory_accesses (%arg0 : !spirv.ptr <!spirv.array <4 x!spirv.array <4 xf32 >>, StorageBuffer >, %arg1 : i32 , %arg2 : i32 ) " None" {
60
- // CHECK: loc({{".*debug.mlir"}}:61 :10)
61
+ // CHECK: loc({{".*debug.mlir"}}:62 :10)
61
62
%2 = spirv.AccessChain %arg0 [%arg1 , %arg2 ] : !spirv.ptr <!spirv.array <4 x!spirv.array <4 xf32 >>, StorageBuffer >, i32 , i32 -> !spirv.ptr <f32 , StorageBuffer >
62
- // CHECK: loc({{".*debug.mlir"}}:63 :10)
63
+ // CHECK: loc({{".*debug.mlir"}}:64 :10)
63
64
%3 = spirv.Load " StorageBuffer" %2 : f32
64
- // CHECK: loc({{.*debug.mlir"}}:65 :5)
65
+ // CHECK: loc({{.*debug.mlir"}}:66 :5)
65
66
spirv.Store " StorageBuffer" %2 , %3 : f32
66
- // CHECK: loc({{".*debug.mlir"}}:67 :5)
67
+ // CHECK: loc({{".*debug.mlir"}}:68 :5)
67
68
spirv.Return
68
69
}
69
70
@@ -73,49 +74,49 @@ spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], []> {
73
74
%ivar = spirv.Variable init (%zero ) : !spirv.ptr <i32 , Function >
74
75
%jvar = spirv.Variable init (%zero ) : !spirv.ptr <i32 , Function >
75
76
spirv.mlir.loop {
76
- // CHECK: loc({{".*debug.mlir"}}:75 :5)
77
+ // CHECK: loc({{".*debug.mlir"}}:76 :5)
77
78
spirv.Branch ^header
78
79
^header :
79
80
%ival0 = spirv.Load " Function" %ivar : i32
80
81
%icmp = spirv.SLessThan %ival0 , %count : i32
81
- // CHECK: loc({{".*debug.mlir"}}:75 :5)
82
+ // CHECK: loc({{".*debug.mlir"}}:76 :5)
82
83
spirv.BranchConditional %icmp , ^body , ^merge
83
84
^body :
84
85
spirv.Store " Function" %jvar , %zero : i32
85
86
spirv.mlir.loop {
86
- // CHECK: loc({{".*debug.mlir"}}:85 :7)
87
+ // CHECK: loc({{".*debug.mlir"}}:86 :7)
87
88
spirv.Branch ^header
88
89
^header :
89
90
%jval0 = spirv.Load " Function" %jvar : i32
90
91
%jcmp = spirv.SLessThan %jval0 , %count : i32
91
- // CHECK: loc({{".*debug.mlir"}}:85 :7)
92
+ // CHECK: loc({{".*debug.mlir"}}:86 :7)
92
93
spirv.BranchConditional %jcmp , ^body , ^merge
93
94
^body :
94
- // CHECK: loc({{".*debug.mlir"}}:95 :9)
95
+ // CHECK: loc({{".*debug.mlir"}}:96 :9)
95
96
spirv.Branch ^continue
96
97
^continue :
97
98
%jval1 = spirv.Load " Function" %jvar : i32
98
99
%add = spirv.IAdd %jval1 , %one : i32
99
100
spirv.Store " Function" %jvar , %add : i32
100
- // CHECK: loc({{".*debug.mlir"}}:101 :9)
101
+ // CHECK: loc({{".*debug.mlir"}}:102 :9)
101
102
spirv.Branch ^header
102
103
^merge :
103
- // CHECK: loc({{".*debug.mlir"}}:85 :7)
104
+ // CHECK: loc({{".*debug.mlir"}}:86 :7)
104
105
spirv.mlir.merge
105
- // CHECK: loc({{".*debug.mlir"}}:85 :7)
106
+ // CHECK: loc({{".*debug.mlir"}}:86 :7)
106
107
}
107
- // CHECK: loc({{".*debug.mlir"}}:108 :7)
108
+ // CHECK: loc({{".*debug.mlir"}}:109 :7)
108
109
spirv.Branch ^continue
109
110
^continue :
110
111
%ival1 = spirv.Load " Function" %ivar : i32
111
112
%add = spirv.IAdd %ival1 , %one : i32
112
113
spirv.Store " Function" %ivar , %add : i32
113
- // CHECK: loc({{".*debug.mlir"}}:114 :7)
114
+ // CHECK: loc({{".*debug.mlir"}}:115 :7)
114
115
spirv.Branch ^header
115
116
^merge :
116
- // CHECK: loc({{".*debug.mlir"}}:75 :5)
117
+ // CHECK: loc({{".*debug.mlir"}}:76 :5)
117
118
spirv.mlir.merge
118
- // CHECK: loc({{".*debug.mlir"}}:75 :5)
119
+ // CHECK: loc({{".*debug.mlir"}}:76 :5)
119
120
}
120
121
spirv.Return
121
122
}
@@ -126,21 +127,23 @@ spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], []> {
126
127
%two = spirv.Constant 2 : i32
127
128
%var = spirv.Variable init (%zero ) : !spirv.ptr <i32 , Function >
128
129
spirv.mlir.selection {
129
- // CHECK: loc({{".*debug.mlir"}}:128 :5)
130
+ // CHECK: loc({{".*debug.mlir"}}:129 :5)
130
131
spirv.BranchConditional %cond [5 , 10 ], ^then , ^else
131
132
^then :
132
133
spirv.Store " Function" %var , %one : i32
133
- // CHECK: loc({{".*debug.mlir"}}:134 :7)
134
+ // CHECK: loc({{".*debug.mlir"}}:135 :7)
134
135
spirv.Branch ^merge
135
136
^else :
136
137
spirv.Store " Function" %var , %two : i32
137
- // CHECK: loc({{".*debug.mlir"}}:138 :7)
138
+ // CHECK: loc({{".*debug.mlir"}}:139 :7)
138
139
spirv.Branch ^merge
139
140
^merge :
140
- // CHECK: loc({{".*debug.mlir"}}:128 :5)
141
+ // CHECK: loc({{".*debug.mlir"}}:129 :5)
141
142
spirv.mlir.merge
142
- // CHECK: loc({{".*debug.mlir"}}:128 :5)
143
+ // CHECK: loc({{".*debug.mlir"}}:129 :5)
143
144
}
144
145
spirv.Return
145
146
}
147
+
148
+ spirv.EntryPoint " GLCompute" @local_var
146
149
}
0 commit comments