@@ -21,6 +21,9 @@ const unsigned short ushort_const = 10;
21
21
[[vk::constant_id (6 )]]
22
22
const unsigned int uint_const = 12 ;
23
23
24
+ [[vk::constant_id (6 )]]
25
+ const uint uint_const_2 = 12 ;
26
+
24
27
[[vk::constant_id (7 )]]
25
28
const unsigned long long ulong_const = 25 ;
26
29
@@ -50,6 +53,7 @@ void main() {
50
53
long long l = long_const;
51
54
unsigned short us = ushort_const;
52
55
unsigned int ui = uint_const;
56
+ uint ui2 = uint_const_2;
53
57
unsigned long long ul = ulong_const;
54
58
half h = half_const;
55
59
float f = float_const;
@@ -63,6 +67,7 @@ void main() {
63
67
// CHECK: @_ZL10long_const = internal addrspace(10) global i64 0, align 8
64
68
// CHECK: @_ZL12ushort_const = internal addrspace(10) global i16 0, align 2
65
69
// CHECK: @_ZL10uint_const = internal addrspace(10) global i32 0, align 4
70
+ // CHECK: @_ZL12uint_const_2 = internal addrspace(10) global i32 0, align 4
66
71
// CHECK: @_ZL11ulong_const = internal addrspace(10) global i64 0, align 8
67
72
// CHECK: @_ZL10half_const = internal addrspace(10) global float 0.000000e+00, align 4
68
73
// CHECK: @_ZL11float_const = internal addrspace(10) global float 0.000000e+00, align 4
@@ -79,6 +84,7 @@ void main() {
79
84
// CHECK-NEXT: [[L:%.*]] = alloca i64, align 8
80
85
// CHECK-NEXT: [[US:%.*]] = alloca i16, align 2
81
86
// CHECK-NEXT: [[UI:%.*]] = alloca i32, align 4
87
+ // CHECK-NEXT: [[UI2:%.*]] = alloca i32, align 4
82
88
// CHECK-NEXT: [[UL:%.*]] = alloca i64, align 8
83
89
// CHECK-NEXT: [[H:%.*]] = alloca float, align 4
84
90
// CHECK-NEXT: [[F:%.*]] = alloca float, align 4
@@ -98,16 +104,18 @@ void main() {
98
104
// CHECK-NEXT: store i16 [[TMP5]], ptr [[US]], align 2
99
105
// CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr addrspace(10) @_ZL10uint_const, align 4
100
106
// CHECK-NEXT: store i32 [[TMP6]], ptr [[UI]], align 4
101
- // CHECK-NEXT: [[TMP7:%.*]] = load i64, ptr addrspace(10) @_ZL11ulong_const, align 8
102
- // CHECK-NEXT: store i64 [[TMP7]], ptr [[UL]], align 8
103
- // CHECK-NEXT: [[TMP8:%.*]] = load float, ptr addrspace(10) @_ZL10half_const, align 4
104
- // CHECK-NEXT: store float [[TMP8]], ptr [[H]], align 4
105
- // CHECK-NEXT: [[TMP9:%.*]] = load float, ptr addrspace(10) @_ZL11float_const, align 4
106
- // CHECK-NEXT: store float [[TMP9]], ptr [[F]], align 4
107
- // CHECK-NEXT: [[TMP10:%.*]] = load double, ptr addrspace(10) @_ZL12double_const, align 8
108
- // CHECK-NEXT: store double [[TMP10]], ptr [[D]], align 8
109
- // CHECK-NEXT: [[TMP11:%.*]] = load i32, ptr addrspace(10) @_ZL10enum_const, align 4
110
- // CHECK-NEXT: store i32 [[TMP11]], ptr [[E]], align 4
107
+ // CHECK-NEXT: [[TMP7:%.*]] = load i32, ptr addrspace(10) @_ZL12uint_const_2, align 4
108
+ // CHECK-NEXT: store i32 [[TMP7]], ptr [[UI2]], align 4
109
+ // CHECK-NEXT: [[TMP8:%.*]] = load i64, ptr addrspace(10) @_ZL11ulong_const, align 8
110
+ // CHECK-NEXT: store i64 [[TMP8]], ptr [[UL]], align 8
111
+ // CHECK-NEXT: [[TMP9:%.*]] = load float, ptr addrspace(10) @_ZL10half_const, align 4
112
+ // CHECK-NEXT: store float [[TMP9]], ptr [[H]], align 4
113
+ // CHECK-NEXT: [[TMP10:%.*]] = load float, ptr addrspace(10) @_ZL11float_const, align 4
114
+ // CHECK-NEXT: store float [[TMP10]], ptr [[F]], align 4
115
+ // CHECK-NEXT: [[TMP11:%.*]] = load double, ptr addrspace(10) @_ZL12double_const, align 8
116
+ // CHECK-NEXT: store double [[TMP11]], ptr [[D]], align 8
117
+ // CHECK-NEXT: [[TMP12:%.*]] = load i32, ptr addrspace(10) @_ZL10enum_const, align 4
118
+ // CHECK-NEXT: store i32 [[TMP12]], ptr [[E]], align 4
111
119
// CHECK-NEXT: ret void
112
120
//
113
121
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init(
@@ -169,12 +177,21 @@ void main() {
169
177
// CHECK-SAME: ) #[[ATTR3]] {
170
178
// CHECK-NEXT: [[ENTRY:.*:]]
171
179
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
180
+ // CHECK-NEXT: [[TMP1:%.*]] = call i32 @_Z20__spirv_SpecConstantij(i32 6, i32 12)
181
+ // CHECK-NEXT: store i32 [[TMP1]], ptr addrspace(10) @_ZL12uint_const_2, align 4
182
+ // CHECK-NEXT: ret void
183
+ //
184
+ //
185
+ // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.7(
186
+ // CHECK-SAME: ) #[[ATTR3]] {
187
+ // CHECK-NEXT: [[ENTRY:.*:]]
188
+ // CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
172
189
// CHECK-NEXT: [[TMP1:%.*]] = call i64 @_Z20__spirv_SpecConstantiy(i32 7, i64 25)
173
190
// CHECK-NEXT: store i64 [[TMP1]], ptr addrspace(10) @_ZL11ulong_const, align 8
174
191
// CHECK-NEXT: ret void
175
192
//
176
193
//
177
- // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.7 (
194
+ // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.8 (
178
195
// CHECK-SAME: ) #[[ATTR3]] {
179
196
// CHECK-NEXT: [[ENTRY:.*:]]
180
197
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
@@ -183,7 +200,7 @@ void main() {
183
200
// CHECK-NEXT: ret void
184
201
//
185
202
//
186
- // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.8 (
203
+ // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.9 (
187
204
// CHECK-SAME: ) #[[ATTR3]] {
188
205
// CHECK-NEXT: [[ENTRY:.*:]]
189
206
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
@@ -192,7 +209,7 @@ void main() {
192
209
// CHECK-NEXT: ret void
193
210
//
194
211
//
195
- // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.9 (
212
+ // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.10 (
196
213
// CHECK-SAME: ) #[[ATTR3]] {
197
214
// CHECK-NEXT: [[ENTRY:.*:]]
198
215
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
@@ -201,7 +218,7 @@ void main() {
201
218
// CHECK-NEXT: ret void
202
219
//
203
220
//
204
- // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.10 (
221
+ // CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.11 (
205
222
// CHECK-SAME: ) #[[ATTR3]] {
206
223
// CHECK-NEXT: [[ENTRY:.*:]]
207
224
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
0 commit comments