Commit ae3be767 by John Kessenich

Testing: Add infrastructure for testing targets of Vulkan 1.0 versus 1.1.

Note the tests do not yet generate the correct code regarding what extensions they declare.
parent 66bdc47f
......@@ -2297,7 +2297,7 @@ local_size = (32, 16, 1)
0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 359
......
......@@ -2321,7 +2321,7 @@ local_size = (32, 16, 1)
0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 369
......
......@@ -8025,7 +8025,7 @@ local_size = (32, 16, 1)
0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 1120
......
......@@ -59,7 +59,7 @@ local_size = (32, 16, 1)
0:? Linker Objects
0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 28
......
......@@ -71,7 +71,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 30
......
......@@ -6185,7 +6185,7 @@ local_size = (32, 16, 1)
0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 901
......
......@@ -203,7 +203,7 @@ local_size = (32, 16, 1)
0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 75
......
spv.deviceGroup.frag
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 17
......
spv.drawParams.vert
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 29
......
spv.explicittypes.frag
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 576
Capability Shader
Capability Float16
Capability Float64
Capability Int64
Capability Int16
Capability Int8
Capability StorageUniform16
Extension "SPV_KHR_16bit_storage"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
Name 4 "main"
Name 6 "literal("
Name 8 "typeCast8("
Name 10 "typeCast16("
Name 12 "typeCast32("
Name 14 "typeCast64("
Name 18 "i64"
Name 26 "Uniforms"
MemberName 26(Uniforms) 0 "index"
Name 28 ""
Name 35 "indexable"
Name 40 "u64"
Name 49 "indexable"
Name 53 "i32"
Name 62 "indexable"
Name 66 "u32"
Name 74 "indexable"
Name 79 "i16"
Name 88 "indexable"
Name 93 "u16"
Name 101 "indexable"
Name 106 "i8"
Name 115 "indexable"
Name 120 "u8"
Name 128 "indexable"
Name 133 "u8v"
Name 136 "i8v"
Name 141 "i16v"
Name 149 "i32v"
Name 157 "u32v"
Name 163 "i64v"
Name 168 "u64v"
Name 182 "f16v"
Name 188 "f32v"
Name 194 "f64v"
Name 222 "u16v"
Name 252 "bv"
Name 268 "i32v"
Name 269 "i16v"
Name 272 "u16v"
Name 278 "u32v"
Name 282 "i64v"
Name 285 "u64v"
Name 296 "f16v"
Name 299 "f32v"
Name 302 "f64v"
Name 347 "i8v"
Name 353 "u8v"
Name 363 "bv"
Name 380 "u32v"
Name 381 "i32v"
Name 384 "i64v"
Name 387 "u64v"
Name 396 "f32v"
Name 399 "f64v"
Name 406 "i8v"
Name 412 "i16v"
Name 429 "u8v"
Name 435 "u16v"
Name 452 "f16v"
Name 465 "bv"
Name 481 "u64v"
Name 482 "i64v"
Name 485 "f64v"
Name 490 "i8v"
Name 496 "i16v"
Name 502 "i32v"
Name 510 "u8v"
Name 516 "u16v"
Name 522 "u32v"
Name 534 "f16v"
Name 537 "f32v"
Name 548 "bv"
Name 573 "Block"
MemberName 573(Block) 0 "i16"
MemberName 573(Block) 1 "i16v2"
MemberName 573(Block) 2 "i16v3"
MemberName 573(Block) 3 "i16v4"
MemberName 573(Block) 4 "u16"
MemberName 573(Block) 5 "u16v2"
MemberName 573(Block) 6 "u16v3"
MemberName 573(Block) 7 "u16v4"
MemberName 573(Block) 8 "i32"
MemberName 573(Block) 9 "i32v2"
MemberName 573(Block) 10 "i32v3"
MemberName 573(Block) 11 "i32v4"
MemberName 573(Block) 12 "u32"
MemberName 573(Block) 13 "u32v2"
MemberName 573(Block) 14 "u32v3"
MemberName 573(Block) 15 "u32v4"
Name 575 "block"
MemberDecorate 26(Uniforms) 0 Offset 0
Decorate 26(Uniforms) Block
Decorate 28 DescriptorSet 0
Decorate 28 Binding 0
MemberDecorate 573(Block) 0 Offset 0
MemberDecorate 573(Block) 1 Offset 4
MemberDecorate 573(Block) 2 Offset 8
MemberDecorate 573(Block) 3 Offset 16
MemberDecorate 573(Block) 4 Offset 24
MemberDecorate 573(Block) 5 Offset 28
MemberDecorate 573(Block) 6 Offset 32
MemberDecorate 573(Block) 7 Offset 40
MemberDecorate 573(Block) 8 Offset 48
MemberDecorate 573(Block) 9 Offset 56
MemberDecorate 573(Block) 10 Offset 64
MemberDecorate 573(Block) 11 Offset 80
MemberDecorate 573(Block) 12 Offset 96
MemberDecorate 573(Block) 13 Offset 104
MemberDecorate 573(Block) 14 Offset 112
MemberDecorate 573(Block) 15 Offset 128
Decorate 573(Block) Block
Decorate 575(block) DescriptorSet 0
Decorate 575(block) Binding 1
2: TypeVoid
3: TypeFunction 2
16: TypeInt 64 1
17: TypePointer Function 16(int)
19: TypeInt 32 0
20: 19(int) Constant 3
21: TypeArray 16(int) 20
22: 16(int) Constant 4008636143 4008636142
23: 16(int) Constant 4294967295 4294967295
24: 16(int) Constant 0 1
25: 21 ConstantComposite 22 23 24
26(Uniforms): TypeStruct 19(int)
27: TypePointer Uniform 26(Uniforms)
28: 27(ptr) Variable Uniform
29: TypeInt 32 1
30: 29(int) Constant 0
31: TypePointer Uniform 19(int)
34: TypePointer Function 21
38: TypeInt 64 0
39: TypePointer Function 38(int)
41: TypeArray 38(int) 20
42: 38(int) Constant 4294967295 4294967295
43: 38(int) Constant 0 1
44: 38(int) Constant 4294967295 1
45: 41 ConstantComposite 42 43 44
48: TypePointer Function 41
52: TypePointer Function 29(int)
54: TypeArray 29(int) 20
55: 29(int) Constant 4008636143
56: 29(int) Constant 4294967295
57: 29(int) Constant 536870912
58: 54 ConstantComposite 55 56 57
61: TypePointer Function 54
65: TypePointer Function 19(int)
67: TypeArray 19(int) 20
68: 19(int) Constant 4294967295
69: 19(int) Constant 2147483647
70: 67 ConstantComposite 68 68 69
73: TypePointer Function 67
77: TypeInt 16 1
78: TypePointer Function 77(int)
80: TypeArray 77(int) 20
81: 77(int) Constant 4294962927
82: 77(int) Constant 4294967295
83: 77(int) Constant 16384
84: 80 ConstantComposite 81 82 83
87: TypePointer Function 80
91: TypeInt 16 0
92: TypePointer Function 91(int)
94: TypeArray 91(int) 20
95: 91(int) Constant 65535
96: 91(int) Constant 32767
97: 94 ConstantComposite 95 95 96
100: TypePointer Function 94
104: TypeInt 8 1
105: TypePointer Function 104(int)
107: TypeArray 104(int) 20
108: 104(int) Constant 4294967279
109: 104(int) Constant 4294967295
110: 104(int) Constant 0
111: 107 ConstantComposite 108 109 110
114: TypePointer Function 107
118: TypeInt 8 0
119: TypePointer Function 118(int)
121: TypeArray 118(int) 20
122: 118(int) Constant 255
123: 118(int) Constant 127
124: 121 ConstantComposite 122 122 123
127: TypePointer Function 121
131: TypeVector 118(int) 2
132: TypePointer Function 131(ivec2)
134: TypeVector 104(int) 2
135: TypePointer Function 134(ivec2)
139: TypeVector 77(int) 2
140: TypePointer Function 139(ivec2)
147: TypeVector 29(int) 2
148: TypePointer Function 147(ivec2)
155: TypeVector 19(int) 2
156: TypePointer Function 155(ivec2)
161: TypeVector 16(int) 2
162: TypePointer Function 161(ivec2)
166: TypeVector 38(int) 2
167: TypePointer Function 166(ivec2)
179: TypeFloat 16
180: TypeVector 179(float) 2
181: TypePointer Function 180(fvec2)
185: TypeFloat 32
186: TypeVector 185(float) 2
187: TypePointer Function 186(fvec2)
191: TypeFloat 64
192: TypeVector 191(float) 2
193: TypePointer Function 192(fvec2)
220: TypeVector 91(int) 2
221: TypePointer Function 220(ivec2)
249: TypeBool
250: TypeVector 249(bool) 2
251: TypePointer Function 250(bvec2)
254: 104(int) Constant 1
255: 134(ivec2) ConstantComposite 110 110
256: 134(ivec2) ConstantComposite 254 254
259: 118(int) Constant 0
260: 118(int) Constant 1
261: 131(ivec2) ConstantComposite 259 259
262: 131(ivec2) ConstantComposite 260 260
365: 77(int) Constant 0
366: 77(int) Constant 1
367: 139(ivec2) ConstantComposite 365 365
368: 139(ivec2) ConstantComposite 366 366
371: 91(int) Constant 0
372: 91(int) Constant 1
373: 220(ivec2) ConstantComposite 371 371
374: 220(ivec2) ConstantComposite 372 372
467: 29(int) Constant 1
468: 147(ivec2) ConstantComposite 30 30
469: 147(ivec2) ConstantComposite 467 467
472: 19(int) Constant 0
473: 19(int) Constant 1
474: 155(ivec2) ConstantComposite 472 472
475: 155(ivec2) ConstantComposite 473 473
550: 16(int) Constant 0 0
551: 16(int) Constant 1 0
552: 161(ivec2) ConstantComposite 550 550
553: 161(ivec2) ConstantComposite 551 551
556: 38(int) Constant 0 0
557: 38(int) Constant 1 0
558: 166(ivec2) ConstantComposite 556 556
559: 166(ivec2) ConstantComposite 557 557
565: TypeVector 77(int) 3
566: TypeVector 77(int) 4
567: TypeVector 91(int) 3
568: TypeVector 91(int) 4
569: TypeVector 29(int) 3
570: TypeVector 29(int) 4
571: TypeVector 19(int) 3
572: TypeVector 19(int) 4
573(Block): TypeStruct 77(int) 139(ivec2) 565(ivec3) 566(ivec4) 91(int) 220(ivec2) 567(ivec3) 568(ivec4) 29(int) 147(ivec2) 569(ivec3) 570(ivec4) 19(int) 155(ivec2) 571(ivec3) 572(ivec4)
574: TypePointer Uniform 573(Block)
575(block): 574(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
Return
FunctionEnd
6(literal(): 2 Function None 3
7: Label
18(i64): 17(ptr) Variable Function
35(indexable): 34(ptr) Variable Function
40(u64): 39(ptr) Variable Function
49(indexable): 48(ptr) Variable Function
53(i32): 52(ptr) Variable Function
62(indexable): 61(ptr) Variable Function
66(u32): 65(ptr) Variable Function
74(indexable): 73(ptr) Variable Function
79(i16): 78(ptr) Variable Function
88(indexable): 87(ptr) Variable Function
93(u16): 92(ptr) Variable Function
101(indexable): 100(ptr) Variable Function
106(i8): 105(ptr) Variable Function
115(indexable): 114(ptr) Variable Function
120(u8): 119(ptr) Variable Function
128(indexable): 127(ptr) Variable Function
32: 31(ptr) AccessChain 28 30
33: 19(int) Load 32
Store 35(indexable) 25
36: 17(ptr) AccessChain 35(indexable) 33
37: 16(int) Load 36
Store 18(i64) 37
46: 31(ptr) AccessChain 28 30
47: 19(int) Load 46
Store 49(indexable) 45
50: 39(ptr) AccessChain 49(indexable) 47
51: 38(int) Load 50
Store 40(u64) 51
59: 31(ptr) AccessChain 28 30
60: 19(int) Load 59
Store 62(indexable) 58
63: 52(ptr) AccessChain 62(indexable) 60
64: 29(int) Load 63
Store 53(i32) 64
71: 31(ptr) AccessChain 28 30
72: 19(int) Load 71
Store 74(indexable) 70
75: 65(ptr) AccessChain 74(indexable) 72
76: 19(int) Load 75
Store 66(u32) 76
85: 31(ptr) AccessChain 28 30
86: 19(int) Load 85
Store 88(indexable) 84
89: 78(ptr) AccessChain 88(indexable) 86
90: 77(int) Load 89
Store 79(i16) 90
98: 31(ptr) AccessChain 28 30
99: 19(int) Load 98
Store 101(indexable) 97
102: 92(ptr) AccessChain 101(indexable) 99
103: 91(int) Load 102
Store 93(u16) 103
112: 31(ptr) AccessChain 28 30
113: 19(int) Load 112
Store 115(indexable) 111
116: 105(ptr) AccessChain 115(indexable) 113
117: 104(int) Load 116
Store 106(i8) 117
125: 31(ptr) AccessChain 28 30
126: 19(int) Load 125
Store 128(indexable) 124
129: 119(ptr) AccessChain 128(indexable) 126
130: 118(int) Load 129
Store 120(u8) 130
Return
FunctionEnd
8(typeCast8(): 2 Function None 3
9: Label
133(u8v): 132(ptr) Variable Function
136(i8v): 135(ptr) Variable Function
141(i16v): 140(ptr) Variable Function
149(i32v): 148(ptr) Variable Function
157(u32v): 156(ptr) Variable Function
163(i64v): 162(ptr) Variable Function
168(u64v): 167(ptr) Variable Function
182(f16v): 181(ptr) Variable Function
188(f32v): 187(ptr) Variable Function
194(f64v): 193(ptr) Variable Function
222(u16v): 221(ptr) Variable Function
252(bv): 251(ptr) Variable Function
137: 134(ivec2) Load 136(i8v)
138: 131(ivec2) Bitcast 137
Store 133(u8v) 138
142: 134(ivec2) Load 136(i8v)
143: 139(ivec2) SConvert 142
Store 141(i16v) 143
144: 131(ivec2) Load 133(u8v)
145: 139(ivec2) UConvert 144
146: 139(ivec2) Bitcast 145
Store 141(i16v) 146
150: 134(ivec2) Load 136(i8v)
151: 147(ivec2) SConvert 150
Store 149(i32v) 151
152: 131(ivec2) Load 133(u8v)
153: 147(ivec2) UConvert 152
154: 147(ivec2) Bitcast 153
Store 149(i32v) 154
158: 134(ivec2) Load 136(i8v)
159: 147(ivec2) SConvert 158
160: 155(ivec2) Bitcast 159
Store 157(u32v) 160
164: 134(ivec2) Load 136(i8v)
165: 161(ivec2) SConvert 164
Store 163(i64v) 165
169: 134(ivec2) Load 136(i8v)
170: 161(ivec2) SConvert 169
171: 166(ivec2) Bitcast 170
Store 168(u64v) 171
172: 131(ivec2) Load 133(u8v)
173: 155(ivec2) UConvert 172
Store 157(u32v) 173
174: 131(ivec2) Load 133(u8v)
175: 161(ivec2) UConvert 174
176: 161(ivec2) Bitcast 175
Store 163(i64v) 176
177: 131(ivec2) Load 133(u8v)
178: 166(ivec2) UConvert 177
Store 168(u64v) 178
183: 134(ivec2) Load 136(i8v)
184: 180(fvec2) ConvertSToF 183
Store 182(f16v) 184
189: 134(ivec2) Load 136(i8v)
190: 186(fvec2) ConvertSToF 189
Store 188(f32v) 190
195: 134(ivec2) Load 136(i8v)
196: 192(fvec2) ConvertSToF 195
Store 194(f64v) 196
197: 131(ivec2) Load 133(u8v)
198: 180(fvec2) ConvertUToF 197
Store 182(f16v) 198
199: 131(ivec2) Load 133(u8v)
200: 186(fvec2) ConvertUToF 199
Store 188(f32v) 200
201: 131(ivec2) Load 133(u8v)
202: 192(fvec2) ConvertUToF 201
Store 194(f64v) 202
203: 131(ivec2) Load 133(u8v)
204: 134(ivec2) Bitcast 203
Store 136(i8v) 204
205: 134(ivec2) Load 136(i8v)
206: 139(ivec2) SConvert 205
Store 141(i16v) 206
207: 131(ivec2) Load 133(u8v)
208: 139(ivec2) UConvert 207
209: 139(ivec2) Bitcast 208
Store 141(i16v) 209
210: 134(ivec2) Load 136(i8v)
211: 147(ivec2) SConvert 210
Store 149(i32v) 211
212: 131(ivec2) Load 133(u8v)
213: 147(ivec2) UConvert 212
214: 147(ivec2) Bitcast 213
Store 149(i32v) 214
215: 134(ivec2) Load 136(i8v)
216: 161(ivec2) SConvert 215
Store 163(i64v) 216
217: 134(ivec2) Load 136(i8v)
218: 161(ivec2) SConvert 217
219: 166(ivec2) Bitcast 218
Store 168(u64v) 219
223: 134(ivec2) Load 136(i8v)
224: 139(ivec2) SConvert 223
225: 220(ivec2) Bitcast 224
Store 222(u16v) 225
226: 131(ivec2) Load 133(u8v)
227: 220(ivec2) UConvert 226
Store 222(u16v) 227
228: 131(ivec2) Load 133(u8v)
229: 155(ivec2) UConvert 228
Store 157(u32v) 229
230: 131(ivec2) Load 133(u8v)
231: 161(ivec2) UConvert 230
232: 161(ivec2) Bitcast 231
Store 163(i64v) 232
233: 131(ivec2) Load 133(u8v)
234: 161(ivec2) UConvert 233
235: 161(ivec2) Bitcast 234
236: 166(ivec2) Bitcast 235
Store 168(u64v) 236
237: 134(ivec2) Load 136(i8v)
238: 180(fvec2) ConvertSToF 237
Store 182(f16v) 238
239: 134(ivec2) Load 136(i8v)
240: 186(fvec2) ConvertSToF 239
Store 188(f32v) 240
241: 134(ivec2) Load 136(i8v)
242: 192(fvec2) ConvertSToF 241
Store 194(f64v) 242
243: 131(ivec2) Load 133(u8v)
244: 180(fvec2) ConvertUToF 243
Store 182(f16v) 244
245: 131(ivec2) Load 133(u8v)
246: 186(fvec2) ConvertUToF 245
Store 188(f32v) 246
247: 131(ivec2) Load 133(u8v)
248: 192(fvec2) ConvertUToF 247
Store 194(f64v) 248
253: 250(bvec2) Load 252(bv)
257: 134(ivec2) Select 253 256 255
Store 136(i8v) 257
258: 250(bvec2) Load 252(bv)
263: 131(ivec2) Select 258 262 261
Store 133(u8v) 263
264: 134(ivec2) Load 136(i8v)
265: 250(bvec2) INotEqual 264 261
Store 252(bv) 265
266: 131(ivec2) Load 133(u8v)
267: 250(bvec2) INotEqual 266 261
Store 252(bv) 267
Return
FunctionEnd
10(typeCast16(): 2 Function None 3
11: Label
268(i32v): 148(ptr) Variable Function
269(i16v): 140(ptr) Variable Function
272(u16v): 221(ptr) Variable Function
278(u32v): 156(ptr) Variable Function
282(i64v): 162(ptr) Variable Function
285(u64v): 167(ptr) Variable Function
296(f16v): 181(ptr) Variable Function
299(f32v): 187(ptr) Variable Function
302(f64v): 193(ptr) Variable Function
347(i8v): 135(ptr) Variable Function
353(u8v): 132(ptr) Variable Function
363(bv): 251(ptr) Variable Function
270: 139(ivec2) Load 269(i16v)
271: 147(ivec2) SConvert 270
Store 268(i32v) 271
273: 220(ivec2) Load 272(u16v)
274: 147(ivec2) UConvert 273
275: 147(ivec2) Bitcast 274
Store 268(i32v) 275
276: 139(ivec2) Load 269(i16v)
277: 220(ivec2) Bitcast 276
Store 272(u16v) 277
279: 139(ivec2) Load 269(i16v)
280: 147(ivec2) SConvert 279
281: 155(ivec2) Bitcast 280
Store 278(u32v) 281
283: 139(ivec2) Load 269(i16v)
284: 161(ivec2) SConvert 283
Store 282(i64v) 284
286: 139(ivec2) Load 269(i16v)
287: 161(ivec2) SConvert 286
288: 166(ivec2) Bitcast 287
Store 285(u64v) 288
289: 220(ivec2) Load 272(u16v)
290: 155(ivec2) UConvert 289
Store 278(u32v) 290
291: 220(ivec2) Load 272(u16v)
292: 161(ivec2) UConvert 291
293: 161(ivec2) Bitcast 292
Store 282(i64v) 293
294: 220(ivec2) Load 272(u16v)
295: 166(ivec2) UConvert 294
Store 285(u64v) 295
297: 139(ivec2) Load 269(i16v)
298: 180(fvec2) ConvertSToF 297
Store 296(f16v) 298
300: 139(ivec2) Load 269(i16v)
301: 186(fvec2) ConvertSToF 300
Store 299(f32v) 301
303: 139(ivec2) Load 269(i16v)
304: 192(fvec2) ConvertSToF 303
Store 302(f64v) 304
305: 220(ivec2) Load 272(u16v)
306: 180(fvec2) ConvertUToF 305
Store 296(f16v) 306
307: 220(ivec2) Load 272(u16v)
308: 186(fvec2) ConvertUToF 307
Store 299(f32v) 308
309: 220(ivec2) Load 272(u16v)
310: 192(fvec2) ConvertUToF 309
Store 302(f64v) 310
311: 139(ivec2) Load 269(i16v)
312: 147(ivec2) SConvert 311
Store 268(i32v) 312
313: 220(ivec2) Load 272(u16v)
314: 147(ivec2) UConvert 313
315: 147(ivec2) Bitcast 314
Store 268(i32v) 315
316: 139(ivec2) Load 269(i16v)
317: 220(ivec2) Bitcast 316
Store 272(u16v) 317
318: 139(ivec2) Load 269(i16v)
319: 147(ivec2) SConvert 318
320: 155(ivec2) Bitcast 319
Store 278(u32v) 320
321: 139(ivec2) Load 269(i16v)
322: 161(ivec2) SConvert 321
Store 282(i64v) 322
323: 139(ivec2) Load 269(i16v)
324: 161(ivec2) SConvert 323
325: 166(ivec2) Bitcast 324
Store 285(u64v) 325
326: 220(ivec2) Load 272(u16v)
327: 155(ivec2) UConvert 326
Store 278(u32v) 327
328: 220(ivec2) Load 272(u16v)
329: 161(ivec2) UConvert 328
330: 161(ivec2) Bitcast 329
Store 282(i64v) 330
331: 220(ivec2) Load 272(u16v)
332: 161(ivec2) UConvert 331
333: 161(ivec2) Bitcast 332
334: 166(ivec2) Bitcast 333
Store 285(u64v) 334
335: 139(ivec2) Load 269(i16v)
336: 180(fvec2) ConvertSToF 335
Store 296(f16v) 336
337: 139(ivec2) Load 269(i16v)
338: 186(fvec2) ConvertSToF 337
Store 299(f32v) 338
339: 139(ivec2) Load 269(i16v)
340: 192(fvec2) ConvertSToF 339
Store 302(f64v) 340
341: 220(ivec2) Load 272(u16v)
342: 180(fvec2) ConvertUToF 341
Store 296(f16v) 342
343: 220(ivec2) Load 272(u16v)
344: 186(fvec2) ConvertUToF 343
Store 299(f32v) 344
345: 220(ivec2) Load 272(u16v)
346: 192(fvec2) ConvertUToF 345
Store 302(f64v) 346
348: 139(ivec2) Load 269(i16v)
349: 134(ivec2) SConvert 348
Store 347(i8v) 349
350: 220(ivec2) Load 272(u16v)
351: 134(ivec2) UConvert 350
352: 134(ivec2) Bitcast 351
Store 347(i8v) 352
354: 139(ivec2) Load 269(i16v)
355: 134(ivec2) SConvert 354
356: 131(ivec2) Bitcast 355
Store 353(u8v) 356
357: 220(ivec2) Load 272(u16v)
358: 131(ivec2) UConvert 357
Store 353(u8v) 358
359: 220(ivec2) Load 272(u16v)
360: 131(ivec2) UConvert 359
361: 139(ivec2) UConvert 360
362: 139(ivec2) Bitcast 361
Store 269(i16v) 362
364: 250(bvec2) Load 363(bv)
369: 139(ivec2) Select 364 368 367
Store 269(i16v) 369
370: 250(bvec2) Load 363(bv)
375: 220(ivec2) Select 370 374 373
Store 272(u16v) 375
376: 139(ivec2) Load 269(i16v)
377: 250(bvec2) INotEqual 376 373
Store 363(bv) 377
378: 220(ivec2) Load 272(u16v)
379: 250(bvec2) INotEqual 378 373
Store 363(bv) 379
Return
FunctionEnd
12(typeCast32(): 2 Function None 3
13: Label
380(u32v): 156(ptr) Variable Function
381(i32v): 148(ptr) Variable Function
384(i64v): 162(ptr) Variable Function
387(u64v): 167(ptr) Variable Function
396(f32v): 187(ptr) Variable Function
399(f64v): 193(ptr) Variable Function
406(i8v): 135(ptr) Variable Function
412(i16v): 140(ptr) Variable Function
429(u8v): 132(ptr) Variable Function
435(u16v): 221(ptr) Variable Function
452(f16v): 181(ptr) Variable Function
465(bv): 251(ptr) Variable Function
382: 147(ivec2) Load 381(i32v)
383: 155(ivec2) Bitcast 382
Store 380(u32v) 383
385: 147(ivec2) Load 381(i32v)
386: 161(ivec2) SConvert 385
Store 384(i64v) 386
388: 147(ivec2) Load 381(i32v)
389: 161(ivec2) SConvert 388
390: 166(ivec2) Bitcast 389
Store 387(u64v) 390
391: 155(ivec2) Load 380(u32v)
392: 161(ivec2) UConvert 391
393: 161(ivec2) Bitcast 392
Store 384(i64v) 393
394: 155(ivec2) Load 380(u32v)
395: 166(ivec2) UConvert 394
Store 387(u64v) 395
397: 147(ivec2) Load 381(i32v)
398: 186(fvec2) ConvertSToF 397
Store 396(f32v) 398
400: 147(ivec2) Load 381(i32v)
401: 192(fvec2) ConvertSToF 400
Store 399(f64v) 401
402: 155(ivec2) Load 380(u32v)
403: 186(fvec2) ConvertUToF 402
Store 396(f32v) 403
404: 155(ivec2) Load 380(u32v)
405: 192(fvec2) ConvertUToF 404
Store 399(f64v) 405
407: 147(ivec2) Load 381(i32v)
408: 134(ivec2) SConvert 407
Store 406(i8v) 408
409: 155(ivec2) Load 380(u32v)
410: 134(ivec2) UConvert 409
411: 134(ivec2) Bitcast 410
Store 406(i8v) 411
413: 147(ivec2) Load 381(i32v)
414: 139(ivec2) SConvert 413
Store 412(i16v) 414
415: 155(ivec2) Load 380(u32v)
416: 139(ivec2) UConvert 415
417: 139(ivec2) Bitcast 416
Store 412(i16v) 417
418: 147(ivec2) Load 381(i32v)
419: 29(int) CompositeExtract 418 0
420: 29(int) CompositeExtract 418 1
421: 147(ivec2) CompositeConstruct 419 420
Store 381(i32v) 421
422: 155(ivec2) Load 380(u32v)
423: 147(ivec2) Bitcast 422
Store 381(i32v) 423
424: 147(ivec2) Load 381(i32v)
425: 161(ivec2) SConvert 424
Store 384(i64v) 425
426: 155(ivec2) Load 380(u32v)
427: 161(ivec2) UConvert 426
428: 161(ivec2) Bitcast 427
Store 384(i64v) 428
430: 147(ivec2) Load 381(i32v)
431: 134(ivec2) SConvert 430
432: 131(ivec2) Bitcast 431
Store 429(u8v) 432
433: 155(ivec2) Load 380(u32v)
434: 131(ivec2) UConvert 433
Store 429(u8v) 434
436: 147(ivec2) Load 381(i32v)
437: 139(ivec2) SConvert 436
438: 220(ivec2) Bitcast 437
Store 435(u16v) 438
439: 155(ivec2) Load 380(u32v)
440: 220(ivec2) UConvert 439
Store 435(u16v) 440
441: 147(ivec2) Load 381(i32v)
442: 155(ivec2) Bitcast 441
Store 380(u32v) 442
443: 155(ivec2) Load 380(u32v)
444: 19(int) CompositeExtract 443 0
445: 19(int) CompositeExtract 443 1
446: 155(ivec2) CompositeConstruct 444 445
Store 380(u32v) 446
447: 147(ivec2) Load 381(i32v)
448: 161(ivec2) SConvert 447
449: 166(ivec2) Bitcast 448
Store 387(u64v) 449
450: 155(ivec2) Load 380(u32v)
451: 166(ivec2) UConvert 450
Store 387(u64v) 451
453: 147(ivec2) Load 381(i32v)
454: 180(fvec2) ConvertSToF 453
Store 452(f16v) 454
455: 147(ivec2) Load 381(i32v)
456: 186(fvec2) ConvertSToF 455
Store 396(f32v) 456
457: 147(ivec2) Load 381(i32v)
458: 192(fvec2) ConvertSToF 457
Store 399(f64v) 458
459: 155(ivec2) Load 380(u32v)
460: 180(fvec2) ConvertUToF 459
Store 452(f16v) 460
461: 155(ivec2) Load 380(u32v)
462: 186(fvec2) ConvertUToF 461
Store 396(f32v) 462
463: 155(ivec2) Load 380(u32v)
464: 192(fvec2) ConvertUToF 463
Store 399(f64v) 464
466: 250(bvec2) Load 465(bv)
470: 147(ivec2) Select 466 469 468
Store 381(i32v) 470
471: 250(bvec2) Load 465(bv)
476: 155(ivec2) Select 471 475 474
Store 380(u32v) 476
477: 147(ivec2) Load 381(i32v)
478: 250(bvec2) INotEqual 477 474
Store 465(bv) 478
479: 155(ivec2) Load 380(u32v)
480: 250(bvec2) INotEqual 479 474
Store 465(bv) 480
Return
FunctionEnd
14(typeCast64(): 2 Function None 3
15: Label
481(u64v): 167(ptr) Variable Function
482(i64v): 162(ptr) Variable Function
485(f64v): 193(ptr) Variable Function
490(i8v): 135(ptr) Variable Function
496(i16v): 140(ptr) Variable Function
502(i32v): 148(ptr) Variable Function
510(u8v): 132(ptr) Variable Function
516(u16v): 221(ptr) Variable Function
522(u32v): 156(ptr) Variable Function
534(f16v): 181(ptr) Variable Function
537(f32v): 187(ptr) Variable Function
548(bv): 251(ptr) Variable Function
483: 161(ivec2) Load 482(i64v)
484: 166(ivec2) Bitcast 483
Store 481(u64v) 484
486: 161(ivec2) Load 482(i64v)
487: 192(fvec2) ConvertSToF 486
Store 485(f64v) 487
488: 166(ivec2) Load 481(u64v)
489: 192(fvec2) ConvertUToF 488
Store 485(f64v) 489
491: 161(ivec2) Load 482(i64v)
492: 134(ivec2) SConvert 491
Store 490(i8v) 492
493: 166(ivec2) Load 481(u64v)
494: 134(ivec2) UConvert 493
495: 134(ivec2) Bitcast 494
Store 490(i8v) 495
497: 161(ivec2) Load 482(i64v)
498: 139(ivec2) SConvert 497
Store 496(i16v) 498
499: 166(ivec2) Load 481(u64v)
500: 139(ivec2) UConvert 499
501: 139(ivec2) Bitcast 500
Store 496(i16v) 501
503: 161(ivec2) Load 482(i64v)
504: 147(ivec2) SConvert 503
Store 502(i32v) 504
505: 166(ivec2) Load 481(u64v)
506: 147(ivec2) UConvert 505
507: 147(ivec2) Bitcast 506
Store 502(i32v) 507
508: 166(ivec2) Load 481(u64v)
509: 161(ivec2) Bitcast 508
Store 482(i64v) 509
511: 161(ivec2) Load 482(i64v)
512: 134(ivec2) SConvert 511
513: 131(ivec2) Bitcast 512
Store 510(u8v) 513
514: 166(ivec2) Load 481(u64v)
515: 131(ivec2) UConvert 514
Store 510(u8v) 515
517: 161(ivec2) Load 482(i64v)
518: 139(ivec2) SConvert 517
519: 220(ivec2) Bitcast 518
Store 516(u16v) 519
520: 166(ivec2) Load 481(u64v)
521: 220(ivec2) UConvert 520
Store 516(u16v) 521
523: 161(ivec2) Load 482(i64v)
524: 147(ivec2) SConvert 523
525: 155(ivec2) Bitcast 524
Store 522(u32v) 525
526: 166(ivec2) Load 481(u64v)
527: 155(ivec2) UConvert 526
Store 522(u32v) 527
528: 161(ivec2) Load 482(i64v)
529: 166(ivec2) Bitcast 528
Store 481(u64v) 529
530: 166(ivec2) Load 481(u64v)
531: 38(int) CompositeExtract 530 0
532: 38(int) CompositeExtract 530 1
533: 166(ivec2) CompositeConstruct 531 532
Store 481(u64v) 533
535: 161(ivec2) Load 482(i64v)
536: 180(fvec2) ConvertSToF 535
Store 534(f16v) 536
538: 161(ivec2) Load 482(i64v)
539: 186(fvec2) ConvertSToF 538
Store 537(f32v) 539
540: 161(ivec2) Load 482(i64v)
541: 192(fvec2) ConvertSToF 540
Store 485(f64v) 541
542: 166(ivec2) Load 481(u64v)
543: 180(fvec2) ConvertUToF 542
Store 534(f16v) 543
544: 166(ivec2) Load 481(u64v)
545: 186(fvec2) ConvertUToF 544
Store 537(f32v) 545
546: 166(ivec2) Load 481(u64v)
547: 192(fvec2) ConvertUToF 546
Store 485(f64v) 547
549: 250(bvec2) Load 548(bv)
554: 161(ivec2) Select 549 553 552
Store 482(i64v) 554
555: 250(bvec2) Load 548(bv)
560: 166(ivec2) Select 555 559 558
Store 481(u64v) 560
561: 161(ivec2) Load 482(i64v)
562: 250(bvec2) INotEqual 561 558
Store 548(bv) 562
563: 166(ivec2) Load 481(u64v)
564: 250(bvec2) INotEqual 563 558
Store 548(bv) 564
Return
FunctionEnd
spv.float32.frag
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 530
......@@ -11,8 +11,6 @@ spv.float32.frag
Capability Int8
Capability DerivativeControl
Capability InterpolationFunction
Extension "SPV_AMD_gpu_shader_half_float"
Extension "SPV_AMD_gpu_shader_int16"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 468
......
spv.float64.frag
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 521
......@@ -11,8 +11,6 @@ spv.float64.frag
Capability Int8
Capability DerivativeControl
Capability InterpolationFunction
Extension "SPV_AMD_gpu_shader_half_float"
Extension "SPV_AMD_gpu_shader_int16"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 458
......
spv.int32.frag
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 495
......@@ -9,8 +9,6 @@ spv.int32.frag
Capability Int64
Capability Int16
Capability Int8
Extension "SPV_AMD_gpu_shader_half_float"
Extension "SPV_AMD_gpu_shader_int16"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
......
spv.int8.frag
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 531
......@@ -9,8 +9,6 @@ spv.int8.frag
Capability Int64
Capability Int16
Capability Int8
Extension "SPV_AMD_gpu_shader_half_float"
Extension "SPV_AMD_gpu_shader_int16"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
......
spv.multiView.frag
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 17
......
spv.subgroup.frag
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 17
......
spv.subgroup.geom
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 26
......
spv.subgroup.tesc
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 26
......
spv.subgroup.tese
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 26
......
spv.subgroup.vert
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 26
......
spv.subgroupArithmetic.comp
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 2085
......
spv.subgroupBallot.comp
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 417
......
spv.subgroupBasic.comp
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 40
......
spv.subgroupClustered.comp
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 737
......
spv.subgroupQuad.comp
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 616
......
spv.subgroupShuffle.comp
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 379
......
spv.subgroupShuffleRelative.comp
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 379
......
spv.subgroupVote.comp
// Module Version 10000
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 216
......
spv.vulkan110.int16.frag
// Module Version 10300
// Generated by (magic number): 80004
// Id's are bound by 525
Capability Shader
Capability Float16
Capability Float64
Capability Int64
Capability Int16
Capability Int8
Capability StorageUniform16
Extension "SPV_KHR_16bit_storage"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
Name 4 "main"
Name 6 "literal("
Name 8 "typeCast16("
Name 10 "operators("
Name 12 "builtinFuncs("
Name 16 "i16"
Name 24 "Uniforms"
MemberName 24(Uniforms) 0 "index"
Name 26 ""
Name 33 "indexable"
Name 38 "u16"
Name 46 "indexable"
Name 51 "i32v"
Name 54 "i16v"
Name 59 "u16v"
Name 67 "u32v"
Name 74 "i64v"
Name 80 "u64v"
Name 94 "f16v"
Name 100 "f32v"
Name 106 "f64v"
Name 154 "i8v"
Name 163 "u8v"
Name 176 "bv"
Name 195 "u16v"
Name 200 "i16"
Name 220 "i"
Name 227 "uv"
Name 243 "i64"
Name 283 "b"
Name 345 "i16v"
Name 348 "i16"
Name 358 "u16v"
Name 360 "u16"
Name 430 "i32"
Name 433 "i64"
Name 436 "i16v4"
Name 439 "u32"
Name 440 "u16v2"
Name 444 "u64"
Name 447 "u16v4"
Name 459 "bv"
Name 520 "Block"
MemberName 520(Block) 0 "i16"
MemberName 520(Block) 1 "i16v2"
MemberName 520(Block) 2 "i16v3"
MemberName 520(Block) 3 "i16v4"
MemberName 520(Block) 4 "u16"
MemberName 520(Block) 5 "u16v2"
MemberName 520(Block) 6 "u16v3"
MemberName 520(Block) 7 "u16v4"
Name 522 "block"
Name 523 "si16"
Name 524 "su16"
MemberDecorate 24(Uniforms) 0 Offset 0
Decorate 24(Uniforms) Block
Decorate 26 DescriptorSet 0
Decorate 26 Binding 0
MemberDecorate 520(Block) 0 Offset 0
MemberDecorate 520(Block) 1 Offset 4
MemberDecorate 520(Block) 2 Offset 8
MemberDecorate 520(Block) 3 Offset 16
MemberDecorate 520(Block) 4 Offset 24
MemberDecorate 520(Block) 5 Offset 28
MemberDecorate 520(Block) 6 Offset 32
MemberDecorate 520(Block) 7 Offset 40
Decorate 520(Block) Block
Decorate 522(block) DescriptorSet 0
Decorate 522(block) Binding 1
Decorate 523(si16) SpecId 100
Decorate 524(su16) SpecId 101
2: TypeVoid
3: TypeFunction 2
14: TypeInt 16 1
15: TypePointer Function 14(int)
17: TypeInt 32 0
18: 17(int) Constant 3
19: TypeArray 14(int) 18
20: 14(int) Constant 4294962927
21: 14(int) Constant 4294967295
22: 14(int) Constant 16384
23: 19 ConstantComposite 20 21 22
24(Uniforms): TypeStruct 17(int)
25: TypePointer Uniform 24(Uniforms)
26: 25(ptr) Variable Uniform
27: TypeInt 32 1
28: 27(int) Constant 0
29: TypePointer Uniform 17(int)
32: TypePointer Function 19
36: TypeInt 16 0
37: TypePointer Function 36(int)
39: TypeArray 36(int) 18
40: 36(int) Constant 65535
41: 36(int) Constant 32767
42: 39 ConstantComposite 40 40 41
45: TypePointer Function 39
49: TypeVector 27(int) 2
50: TypePointer Function 49(ivec2)
52: TypeVector 14(int) 2
53: TypePointer Function 52(ivec2)
57: TypeVector 36(int) 2
58: TypePointer Function 57(ivec2)
65: TypeVector 17(int) 2
66: TypePointer Function 65(ivec2)
71: TypeInt 64 1
72: TypeVector 71(int) 2
73: TypePointer Function 72(ivec2)
77: TypeInt 64 0
78: TypeVector 77(int) 2
79: TypePointer Function 78(ivec2)
91: TypeFloat 16
92: TypeVector 91(float) 2
93: TypePointer Function 92(fvec2)
97: TypeFloat 32
98: TypeVector 97(float) 2
99: TypePointer Function 98(fvec2)
103: TypeFloat 64
104: TypeVector 103(float) 2
105: TypePointer Function 104(fvec2)
151: TypeInt 8 1
152: TypeVector 151(int) 2
153: TypePointer Function 152(ivec2)
160: TypeInt 8 0
161: TypeVector 160(int) 2
162: TypePointer Function 161(ivec2)
173: TypeBool
174: TypeVector 173(bool) 2
175: TypePointer Function 174(bvec2)
178: 14(int) Constant 0
179: 14(int) Constant 1
180: 52(ivec2) ConstantComposite 178 178
181: 52(ivec2) ConstantComposite 179 179
184: 36(int) Constant 0
185: 36(int) Constant 1
186: 57(ivec2) ConstantComposite 184 184
187: 57(ivec2) ConstantComposite 185 185
193: TypeVector 36(int) 3
194: TypePointer Function 193(ivec3)
197: TypeVector 14(int) 3
219: TypePointer Function 27(int)
225: TypeVector 17(int) 3
226: TypePointer Function 225(ivec3)
242: TypePointer Function 71(int)
264: 17(int) Constant 1
270: 17(int) Constant 2
275: TypeVector 27(int) 3
282: TypePointer Function 173(bool)
284: 17(int) Constant 0
298: TypePointer Function 17(int)
356: 52(ivec2) ConstantComposite 21 21
365: 193(ivec3) ConstantComposite 184 184 184
407: 173(bool) ConstantTrue
414: 173(bool) ConstantFalse
415: 174(bvec2) ConstantComposite 414 414
427: TypeVector 173(bool) 3
428: 427(bvec3) ConstantComposite 414 414 414
434: TypeVector 14(int) 4
435: TypePointer Function 434(ivec4)
443: TypePointer Function 77(int)
445: TypeVector 36(int) 4
446: TypePointer Function 445(ivec4)
458: TypePointer Function 427(bvec3)
520(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445(ivec4)
521: TypePointer Uniform 520(Block)
522(block): 521(ptr) Variable Uniform
523(si16): 14(int) SpecConstant 4294967286
524(su16): 36(int) SpecConstant 20
4(main): 2 Function None 3
5: Label
Return
FunctionEnd
6(literal(): 2 Function None 3
7: Label
16(i16): 15(ptr) Variable Function
33(indexable): 32(ptr) Variable Function
38(u16): 37(ptr) Variable Function
46(indexable): 45(ptr) Variable Function
30: 29(ptr) AccessChain 26 28
31: 17(int) Load 30
Store 33(indexable) 23
34: 15(ptr) AccessChain 33(indexable) 31
35: 14(int) Load 34
Store 16(i16) 35
43: 29(ptr) AccessChain 26 28
44: 17(int) Load 43
Store 46(indexable) 42
47: 37(ptr) AccessChain 46(indexable) 44
48: 36(int) Load 47
Store 38(u16) 48
Return
FunctionEnd
8(typeCast16(): 2 Function None 3
9: Label
51(i32v): 50(ptr) Variable Function
54(i16v): 53(ptr) Variable Function
59(u16v): 58(ptr) Variable Function
67(u32v): 66(ptr) Variable Function
74(i64v): 73(ptr) Variable Function
80(u64v): 79(ptr) Variable Function
94(f16v): 93(ptr) Variable Function
100(f32v): 99(ptr) Variable Function
106(f64v): 105(ptr) Variable Function
154(i8v): 153(ptr) Variable Function
163(u8v): 162(ptr) Variable Function
176(bv): 175(ptr) Variable Function
55: 52(ivec2) Load 54(i16v)
56: 49(ivec2) SConvert 55
Store 51(i32v) 56
60: 57(ivec2) Load 59(u16v)
61: 49(ivec2) UConvert 60
62: 49(ivec2) Bitcast 61
Store 51(i32v) 62
63: 52(ivec2) Load 54(i16v)
64: 57(ivec2) Bitcast 63
Store 59(u16v) 64
68: 52(ivec2) Load 54(i16v)
69: 49(ivec2) SConvert 68
70: 65(ivec2) Bitcast 69
Store 67(u32v) 70
75: 52(ivec2) Load 54(i16v)
76: 72(ivec2) SConvert 75
Store 74(i64v) 76
81: 52(ivec2) Load 54(i16v)
82: 72(ivec2) SConvert 81
83: 78(ivec2) Bitcast 82
Store 80(u64v) 83
84: 57(ivec2) Load 59(u16v)
85: 65(ivec2) UConvert 84
Store 67(u32v) 85
86: 57(ivec2) Load 59(u16v)
87: 72(ivec2) UConvert 86
88: 72(ivec2) Bitcast 87
Store 74(i64v) 88
89: 57(ivec2) Load 59(u16v)
90: 78(ivec2) UConvert 89
Store 80(u64v) 90
95: 52(ivec2) Load 54(i16v)
96: 92(fvec2) ConvertSToF 95
Store 94(f16v) 96
101: 52(ivec2) Load 54(i16v)
102: 98(fvec2) ConvertSToF 101
Store 100(f32v) 102
107: 52(ivec2) Load 54(i16v)
108: 104(fvec2) ConvertSToF 107
Store 106(f64v) 108
109: 57(ivec2) Load 59(u16v)
110: 92(fvec2) ConvertUToF 109
Store 94(f16v) 110
111: 57(ivec2) Load 59(u16v)
112: 98(fvec2) ConvertUToF 111
Store 100(f32v) 112
113: 57(ivec2) Load 59(u16v)
114: 104(fvec2) ConvertUToF 113
Store 106(f64v) 114
115: 52(ivec2) Load 54(i16v)
116: 49(ivec2) SConvert 115
Store 51(i32v) 116
117: 57(ivec2) Load 59(u16v)
118: 49(ivec2) UConvert 117
119: 49(ivec2) Bitcast 118
Store 51(i32v) 119
120: 52(ivec2) Load 54(i16v)
121: 57(ivec2) Bitcast 120
Store 59(u16v) 121
122: 52(ivec2) Load 54(i16v)
123: 49(ivec2) SConvert 122
124: 65(ivec2) Bitcast 123
Store 67(u32v) 124
125: 52(ivec2) Load 54(i16v)
126: 72(ivec2) SConvert 125
Store 74(i64v) 126
127: 52(ivec2) Load 54(i16v)
128: 72(ivec2) SConvert 127
129: 78(ivec2) Bitcast 128
Store 80(u64v) 129
130: 57(ivec2) Load 59(u16v)
131: 65(ivec2) UConvert 130
Store 67(u32v) 131
132: 57(ivec2) Load 59(u16v)
133: 72(ivec2) UConvert 132
134: 72(ivec2) Bitcast 133
Store 74(i64v) 134
135: 57(ivec2) Load 59(u16v)
136: 72(ivec2) UConvert 135
137: 72(ivec2) Bitcast 136
138: 78(ivec2) Bitcast 137
Store 80(u64v) 138
139: 52(ivec2) Load 54(i16v)
140: 92(fvec2) ConvertSToF 139
Store 94(f16v) 140
141: 52(ivec2) Load 54(i16v)
142: 98(fvec2) ConvertSToF 141
Store 100(f32v) 142
143: 52(ivec2) Load 54(i16v)
144: 104(fvec2) ConvertSToF 143
Store 106(f64v) 144
145: 57(ivec2) Load 59(u16v)
146: 92(fvec2) ConvertUToF 145
Store 94(f16v) 146
147: 57(ivec2) Load 59(u16v)
148: 98(fvec2) ConvertUToF 147
Store 100(f32v) 148
149: 57(ivec2) Load 59(u16v)
150: 104(fvec2) ConvertUToF 149
Store 106(f64v) 150
155: 52(ivec2) Load 54(i16v)
156: 152(ivec2) SConvert 155
Store 154(i8v) 156
157: 57(ivec2) Load 59(u16v)
158: 152(ivec2) UConvert 157
159: 152(ivec2) Bitcast 158
Store 154(i8v) 159
164: 52(ivec2) Load 54(i16v)
165: 152(ivec2) SConvert 164
166: 161(ivec2) Bitcast 165
Store 163(u8v) 166
167: 57(ivec2) Load 59(u16v)
168: 161(ivec2) UConvert 167
Store 163(u8v) 168
169: 57(ivec2) Load 59(u16v)
170: 161(ivec2) UConvert 169
171: 52(ivec2) UConvert 170
172: 52(ivec2) Bitcast 171
Store 54(i16v) 172
177: 174(bvec2) Load 176(bv)
182: 52(ivec2) Select 177 181 180
Store 54(i16v) 182
183: 174(bvec2) Load 176(bv)
188: 57(ivec2) Select 183 187 186
Store 59(u16v) 188
189: 52(ivec2) Load 54(i16v)
190: 174(bvec2) INotEqual 189 186
Store 176(bv) 190
191: 57(ivec2) Load 59(u16v)
192: 174(bvec2) INotEqual 191 186
Store 176(bv) 192
Return
FunctionEnd
10(operators(): 2 Function None 3
11: Label
195(u16v): 194(ptr) Variable Function
200(i16): 15(ptr) Variable Function
220(i): 219(ptr) Variable Function
227(uv): 226(ptr) Variable Function
243(i64): 242(ptr) Variable Function
283(b): 282(ptr) Variable Function
196: 193(ivec3) Load 195(u16v)
198: 197(ivec3) CompositeConstruct 179 179 179
199: 193(ivec3) IAdd 196 198
Store 195(u16v) 199
201: 14(int) Load 200(i16)
202: 14(int) ISub 201 179
Store 200(i16) 202
203: 14(int) Load 200(i16)
204: 14(int) IAdd 203 179
Store 200(i16) 204
205: 193(ivec3) Load 195(u16v)
206: 197(ivec3) CompositeConstruct 179 179 179
207: 193(ivec3) ISub 205 206
Store 195(u16v) 207
208: 193(ivec3) Load 195(u16v)
209: 193(ivec3) Not 208
Store 195(u16v) 209
210: 14(int) Load 200(i16)
Store 200(i16) 210
211: 193(ivec3) Load 195(u16v)
212: 193(ivec3) SNegate 211
Store 195(u16v) 212
213: 14(int) Load 200(i16)
214: 14(int) Load 200(i16)
215: 14(int) IAdd 214 213
Store 200(i16) 215
216: 193(ivec3) Load 195(u16v)
217: 193(ivec3) Load 195(u16v)
218: 193(ivec3) ISub 217 216
Store 195(u16v) 218
221: 14(int) Load 200(i16)
222: 27(int) SConvert 221
223: 27(int) Load 220(i)
224: 27(int) IMul 223 222
Store 220(i) 224
228: 193(ivec3) Load 195(u16v)
229: 225(ivec3) UConvert 228
230: 225(ivec3) Load 227(uv)
231: 225(ivec3) UDiv 230 229
Store 227(uv) 231
232: 14(int) Load 200(i16)
233: 27(int) SConvert 232
234: 17(int) Bitcast 233
235: 225(ivec3) Load 227(uv)
236: 225(ivec3) CompositeConstruct 234 234 234
237: 225(ivec3) UMod 235 236
Store 227(uv) 237
238: 193(ivec3) Load 195(u16v)
239: 225(ivec3) UConvert 238
240: 225(ivec3) Load 227(uv)
241: 225(ivec3) IAdd 239 240
Store 227(uv) 241
244: 14(int) Load 200(i16)
245: 71(int) SConvert 244
246: 71(int) Load 243(i64)
247: 71(int) ISub 245 246
Store 243(i64) 247
248: 193(ivec3) Load 195(u16v)
249: 225(ivec3) UConvert 248
250: 225(ivec3) Load 227(uv)
251: 225(ivec3) IMul 249 250
Store 227(uv) 251
252: 14(int) Load 200(i16)
253: 71(int) SConvert 252
254: 71(int) Load 243(i64)
255: 71(int) IMul 253 254
Store 243(i64) 255
256: 14(int) Load 200(i16)
257: 27(int) SConvert 256
258: 27(int) Load 220(i)
259: 27(int) SMod 257 258
Store 220(i) 259
260: 14(int) Load 200(i16)
261: 193(ivec3) Load 195(u16v)
262: 197(ivec3) CompositeConstruct 260 260 260
263: 193(ivec3) ShiftLeftLogical 261 262
Store 195(u16v) 263
265: 37(ptr) AccessChain 195(u16v) 264
266: 36(int) Load 265
267: 14(int) Load 200(i16)
268: 14(int) ShiftRightArithmetic 267 266
Store 200(i16) 268
269: 14(int) Load 200(i16)
271: 37(ptr) AccessChain 195(u16v) 270
272: 36(int) Load 271
273: 14(int) ShiftLeftLogical 269 272
Store 200(i16) 273
274: 193(ivec3) Load 195(u16v)
276: 275(ivec3) UConvert 274
277: 275(ivec3) Bitcast 276
278: 27(int) Load 220(i)
279: 275(ivec3) CompositeConstruct 278 278 278
280: 275(ivec3) ShiftLeftLogical 277 279
281: 225(ivec3) Bitcast 280
Store 227(uv) 281
285: 37(ptr) AccessChain 195(u16v) 284
286: 36(int) Load 285
287: 14(int) Load 200(i16)
288: 36(int) Bitcast 287
289: 173(bool) INotEqual 286 288
Store 283(b) 289
290: 14(int) Load 200(i16)
291: 36(int) Bitcast 290
292: 37(ptr) AccessChain 195(u16v) 284
293: 36(int) Load 292
294: 173(bool) IEqual 291 293
Store 283(b) 294
295: 37(ptr) AccessChain 195(u16v) 284
296: 36(int) Load 295
297: 17(int) UConvert 296
299: 298(ptr) AccessChain 227(uv) 264
300: 17(int) Load 299
301: 173(bool) UGreaterThan 297 300
Store 283(b) 301
302: 14(int) Load 200(i16)
303: 27(int) SConvert 302
304: 27(int) Load 220(i)
305: 173(bool) SLessThan 303 304
Store 283(b) 305
306: 37(ptr) AccessChain 195(u16v) 264
307: 36(int) Load 306
308: 17(int) UConvert 307
309: 298(ptr) AccessChain 227(uv) 284
310: 17(int) Load 309
311: 173(bool) UGreaterThanEqual 308 310
Store 283(b) 311
312: 14(int) Load 200(i16)
313: 27(int) SConvert 312
314: 27(int) Load 220(i)
315: 173(bool) SLessThanEqual 313 314
Store 283(b) 315
316: 14(int) Load 200(i16)
317: 27(int) SConvert 316
318: 17(int) Bitcast 317
319: 225(ivec3) Load 227(uv)
320: 225(ivec3) CompositeConstruct 318 318 318
321: 225(ivec3) BitwiseOr 319 320
Store 227(uv) 321
322: 14(int) Load 200(i16)
323: 27(int) SConvert 322
324: 27(int) Load 220(i)
325: 27(int) BitwiseOr 323 324
Store 220(i) 325
326: 14(int) Load 200(i16)
327: 71(int) SConvert 326
328: 71(int) Load 243(i64)
329: 71(int) BitwiseAnd 328 327
Store 243(i64) 329
330: 193(ivec3) Load 195(u16v)
331: 225(ivec3) UConvert 330
332: 225(ivec3) Load 227(uv)
333: 225(ivec3) BitwiseAnd 331 332
Store 227(uv) 333
334: 14(int) Load 200(i16)
335: 27(int) SConvert 334
336: 17(int) Bitcast 335
337: 225(ivec3) Load 227(uv)
338: 225(ivec3) CompositeConstruct 336 336 336
339: 225(ivec3) BitwiseXor 337 338
Store 227(uv) 339
340: 193(ivec3) Load 195(u16v)
341: 14(int) Load 200(i16)
342: 36(int) Bitcast 341
343: 193(ivec3) CompositeConstruct 342 342 342
344: 193(ivec3) BitwiseXor 340 343
Store 195(u16v) 344
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
345(i16v): 53(ptr) Variable Function
348(i16): 15(ptr) Variable Function
358(u16v): 194(ptr) Variable Function
360(u16): 37(ptr) Variable Function
430(i32): 219(ptr) Variable Function
433(i64): 242(ptr) Variable Function
436(i16v4): 435(ptr) Variable Function
439(u32): 298(ptr) Variable Function
440(u16v2): 58(ptr) Variable Function
444(u64): 443(ptr) Variable Function
447(u16v4): 446(ptr) Variable Function
459(bv): 458(ptr) Variable Function
346: 52(ivec2) Load 345(i16v)
347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346
Store 345(i16v) 347
349: 14(int) Load 348(i16)
350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349
Store 348(i16) 350
351: 52(ivec2) Load 345(i16v)
352: 14(int) Load 348(i16)
353: 52(ivec2) CompositeConstruct 352 352
354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353
Store 345(i16v) 354
355: 52(ivec2) Load 345(i16v)
357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356
Store 345(i16v) 357
359: 193(ivec3) Load 358(u16v)
361: 36(int) Load 360(u16)
362: 193(ivec3) CompositeConstruct 361 361 361
363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362
Store 358(u16v) 363
364: 193(ivec3) Load 358(u16v)
366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365
Store 358(u16v) 366
367: 52(ivec2) Load 345(i16v)
368: 14(int) Load 348(i16)
369: 52(ivec2) CompositeConstruct 368 368
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369
Store 345(i16v) 370
371: 52(ivec2) Load 345(i16v)
372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356
Store 345(i16v) 372
373: 193(ivec3) Load 358(u16v)
374: 36(int) Load 360(u16)
375: 193(ivec3) CompositeConstruct 374 374 374
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375
Store 358(u16v) 376
377: 193(ivec3) Load 358(u16v)
378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365
Store 358(u16v) 378
379: 52(ivec2) Load 345(i16v)
380: 14(int) Load 348(i16)
381: 14(int) SNegate 380
382: 14(int) Load 348(i16)
383: 52(ivec2) CompositeConstruct 381 381
384: 52(ivec2) CompositeConstruct 382 382
385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384
Store 345(i16v) 385
386: 52(ivec2) Load 345(i16v)
387: 52(ivec2) Load 345(i16v)
388: 52(ivec2) SNegate 387
389: 52(ivec2) Load 345(i16v)
390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389
Store 345(i16v) 390
391: 193(ivec3) Load 358(u16v)
392: 36(int) Load 360(u16)
393: 36(int) SNegate 392
394: 36(int) Load 360(u16)
395: 193(ivec3) CompositeConstruct 393 393 393
396: 193(ivec3) CompositeConstruct 394 394 394
397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396
Store 358(u16v) 397
398: 193(ivec3) Load 358(u16v)
399: 193(ivec3) Load 358(u16v)
400: 193(ivec3) SNegate 399
401: 193(ivec3) Load 358(u16v)
402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401
Store 358(u16v) 402
403: 15(ptr) AccessChain 345(i16v) 284
404: 14(int) Load 403
405: 15(ptr) AccessChain 345(i16v) 264
406: 14(int) Load 405
408: 14(int) Select 407 406 404
Store 348(i16) 408
409: 14(int) Load 348(i16)
410: 52(ivec2) CompositeConstruct 409 409
411: 14(int) Load 348(i16)
412: 14(int) SNegate 411
413: 52(ivec2) CompositeConstruct 412 412
416: 52(ivec2) Select 415 413 410
Store 345(i16v) 416
417: 37(ptr) AccessChain 358(u16v) 284
418: 36(int) Load 417
419: 37(ptr) AccessChain 358(u16v) 264
420: 36(int) Load 419
421: 36(int) Select 407 420 418
Store 360(u16) 421
422: 36(int) Load 360(u16)
423: 193(ivec3) CompositeConstruct 422 422 422
424: 36(int) Load 360(u16)
425: 36(int) SNegate 424
426: 193(ivec3) CompositeConstruct 425 425 425
429: 193(ivec3) Select 428 426 423
Store 358(u16v) 429
431: 52(ivec2) Load 345(i16v)
432: 27(int) Bitcast 431
Store 430(i32) 432
437: 434(ivec4) Load 436(i16v4)
438: 71(int) Bitcast 437
Store 433(i64) 438
441: 57(ivec2) Load 440(u16v2)
442: 17(int) Bitcast 441
Store 439(u32) 442
448: 445(ivec4) Load 447(u16v4)
449: 77(int) Bitcast 448
Store 444(u64) 449
450: 27(int) Load 430(i32)
451: 52(ivec2) Bitcast 450
Store 345(i16v) 451
452: 71(int) Load 433(i64)
453: 434(ivec4) Bitcast 452
Store 436(i16v4) 453
454: 17(int) Load 439(u32)
455: 57(ivec2) Bitcast 454
Store 440(u16v2) 455
456: 77(int) Load 444(u64)
457: 445(ivec4) Bitcast 456
Store 447(u16v4) 457
460: 193(ivec3) Load 358(u16v)
461: 36(int) Load 360(u16)
462: 193(ivec3) CompositeConstruct 461 461 461
463: 427(bvec3) ULessThan 460 462
Store 459(bv) 463
464: 52(ivec2) Load 345(i16v)
465: 14(int) Load 348(i16)
466: 52(ivec2) CompositeConstruct 465 465
467: 174(bvec2) SLessThan 464 466
468: 427(bvec3) Load 459(bv)
469: 427(bvec3) VectorShuffle 468 467 3 4 2
Store 459(bv) 469
470: 193(ivec3) Load 358(u16v)
471: 36(int) Load 360(u16)
472: 193(ivec3) CompositeConstruct 471 471 471
473: 427(bvec3) ULessThanEqual 470 472
Store 459(bv) 473
474: 52(ivec2) Load 345(i16v)
475: 14(int) Load 348(i16)
476: 52(ivec2) CompositeConstruct 475 475
477: 174(bvec2) SLessThanEqual 474 476
478: 427(bvec3) Load 459(bv)
479: 427(bvec3) VectorShuffle 478 477 3 4 2
Store 459(bv) 479
480: 193(ivec3) Load 358(u16v)
481: 36(int) Load 360(u16)
482: 193(ivec3) CompositeConstruct 481 481 481
483: 427(bvec3) UGreaterThan 480 482
Store 459(bv) 483
484: 52(ivec2) Load 345(i16v)
485: 14(int) Load 348(i16)
486: 52(ivec2) CompositeConstruct 485 485
487: 174(bvec2) SGreaterThan 484 486
488: 427(bvec3) Load 459(bv)
489: 427(bvec3) VectorShuffle 488 487 3 4 2
Store 459(bv) 489
490: 193(ivec3) Load 358(u16v)
491: 36(int) Load 360(u16)
492: 193(ivec3) CompositeConstruct 491 491 491
493: 427(bvec3) UGreaterThanEqual 490 492
Store 459(bv) 493
494: 52(ivec2) Load 345(i16v)
495: 14(int) Load 348(i16)
496: 52(ivec2) CompositeConstruct 495 495
497: 174(bvec2) SGreaterThanEqual 494 496
498: 427(bvec3) Load 459(bv)
499: 427(bvec3) VectorShuffle 498 497 3 4 2
Store 459(bv) 499
500: 193(ivec3) Load 358(u16v)
501: 36(int) Load 360(u16)
502: 193(ivec3) CompositeConstruct 501 501 501
503: 427(bvec3) IEqual 500 502
Store 459(bv) 503
504: 52(ivec2) Load 345(i16v)
505: 14(int) Load 348(i16)
506: 52(ivec2) CompositeConstruct 505 505
507: 174(bvec2) IEqual 504 506
508: 427(bvec3) Load 459(bv)
509: 427(bvec3) VectorShuffle 508 507 3 4 2
Store 459(bv) 509
510: 193(ivec3) Load 358(u16v)
511: 36(int) Load 360(u16)
512: 193(ivec3) CompositeConstruct 511 511 511
513: 427(bvec3) INotEqual 510 512
Store 459(bv) 513
514: 52(ivec2) Load 345(i16v)
515: 14(int) Load 348(i16)
516: 52(ivec2) CompositeConstruct 515 515
517: 174(bvec2) INotEqual 514 516
518: 427(bvec3) Load 459(bv)
519: 427(bvec3) VectorShuffle 518 517 3 4 2
Store 459(bv) 519
Return
FunctionEnd
#version 450
#extension GL_KHX_shader_explicit_arithmetic_types: enable
#extension GL_KHX_shader_explicit_arithmetic_types_int8: require
#extension GL_KHX_shader_explicit_arithmetic_types_int16: require
#extension GL_KHX_shader_explicit_arithmetic_types_int32: require
#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
#extension GL_KHX_shader_explicit_arithmetic_types_float16: require
#extension GL_KHX_shader_explicit_arithmetic_types_float32: require
#extension GL_KHX_shader_explicit_arithmetic_types_float64: require
layout(binding = 0) uniform Uniforms
{
uint index;
};
layout(std140, binding = 1) uniform Block
{
int16_t i16;
i16vec2 i16v2;
i16vec3 i16v3;
i16vec4 i16v4;
uint16_t u16;
u16vec2 u16v2;
u16vec3 u16v3;
u16vec4 u16v4;
} block;
void main()
{
}
void literal()
{
const int16_t i16Const[3] =
{
int16_t(-0x1111), // Hex
int16_t(-1), // Dec
int16_t(040000), // Oct
};
int16_t i16 = i16Const[index];
const uint16_t u16Const[] =
{
uint16_t(0xFFFF), // Hex
uint16_t(65535), // Dec
uint16_t(077777), // Oct
};
uint16_t u16 = u16Const[index];
}
void typeCast16()
{
i8vec2 i8v;
u8vec2 u8v;
i16vec2 i16v;
u16vec2 u16v;
i32vec2 i32v;
u32vec2 u32v;
i64vec2 i64v;
u64vec2 u64v;
f16vec2 f16v;
f32vec2 f32v;
f64vec2 f64v;
bvec2 bv;
i32v = i16v; // int16_t -> int32_t
i32v = u16v; // uint16_t -> int32_t
u16v = i16v; // int16_t -> uint16_t
u32v = i16v; // int16_t -> uint32_t
i64v = i16v; // int16_t -> int64_t
u64v = i16v; // int16_t -> uint64_t
u32v = u16v; // uint16_t -> uint32_t
i64v = u16v; // uint16_t -> int64_t
u64v = u16v; // uint16_t -> uint64_t
f16v = i16v; // int16_t -> float16_t
f32v = i16v; // int16_t -> float32_t
f64v = i16v; // int16_t -> float64_t
f16v = u16v; // uint16_t -> float16_t
f32v = u16v; // uint16_t -> float32_t
f64v = u16v; // uint16_t -> float64_t
i32v = i32vec2(i16v); // int16_t -> int32_t
i32v = i32vec2(u16v); // uint16_t -> int32_t
u16v = u16vec2(i16v); // int16_t -> uint16_t
u32v = u32vec2(i16v); // int16_t -> uint32_t
i64v = i64vec2(i16v); // int16_t -> int64_t
u64v = i64vec2(i16v); // int16_t -> uint64_t
u32v = u32vec2(u16v); // uint16_t -> uint32_t
i64v = i64vec2(u16v); // uint16_t -> int64_t
u64v = i64vec2(u16v); // uint16_t -> uint64_t
f16v = f16vec2(i16v); // int16_t -> float16_t
f32v = f32vec2(i16v); // int16_t -> float32_t
f64v = f64vec2(i16v); // int16_t -> float64_t
f16v = f16vec2(u16v); // uint16_t -> float16_t
f32v = f32vec2(u16v); // uint16_t -> float32_t
f64v = f64vec2(u16v); // uint16_t -> float64_t
i8v = i8vec2(i16v); // int16_t -> int8_t
i8v = i8vec2(u16v); // uint16_t -> int8_t
u8v = u8vec2(i16v); // int16_t -> uint8_t
u8v = u8vec2(u16v); // uint16_t -> uint8_t
i16v = u8vec2(u16v); // uint16_t -> int16_t
i16v = i16vec2(bv); // bool -> int16
u16v = u16vec2(bv); // bool -> uint16
bv = bvec2(i16v); // int16 -> bool
bv = bvec2(u16v); // uint16 -> bool
}
void operators()
{
u16vec3 u16v;
int16_t i16;
uvec3 uv;
int32_t i;
int64_t i64;
bool b;
// Unary
u16v++;
i16--;
++i16;
--u16v;
u16v = ~u16v;
i16 = +i16;
u16v = -u16v;
// Arithmetic
i16 += i16;
u16v -= u16v;
i *= i16;
uv /= u16v;
uv %= i16;
uv = u16v + uv;
i64 = i16 - i64;
uv = u16v * uv;
i64 = i16 * i64;
i = i16 % i;
// Shift
u16v <<= i16;
i16 >>= u16v.y;
i16 = i16 << u16v.z;
uv = u16v << i;
// Relational
b = (u16v.x != i16);
b = (i16 == u16v.x);
b = (u16v.x > uv.y);
b = (i16 < i);
b = (u16v.y >= uv.x);
b = (i16 <= i);
// Bitwise
uv |= i16;
i = i16 | i;
i64 &= i16;
uv = u16v & uv;
uv ^= i16;
u16v = u16v ^ i16;
}
void builtinFuncs()
{
i16vec2 i16v;
i16vec4 i16v4;
u16vec3 u16v;
u16vec2 u16v2;
u16vec4 u16v4;
bvec3 bv;
int16_t i16;
uint16_t u16;
int32_t i32;
uint32_t u32;
int64_t i64;
uint64_t u64;
// abs()
i16v = abs(i16v);
// sign()
i16 = sign(i16);
// min()
i16v = min(i16v, i16);
i16v = min(i16v, i16vec2(-1));
u16v = min(u16v, u16);
u16v = min(u16v, u16vec3(0));
// max()
i16v = max(i16v, i16);
i16v = max(i16v, i16vec2(-1));
u16v = max(u16v, u16);
u16v = max(u16v, u16vec3(0));
// clamp()
i16v = clamp(i16v, -i16, i16);
i16v = clamp(i16v, -i16v, i16v);
u16v = clamp(u16v, -u16, u16);
u16v = clamp(u16v, -u16v, u16v);
// mix()
i16 = mix(i16v.x, i16v.y, true);
i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false));
u16 = mix(u16v.x, u16v.y, true);
u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false));
//pack
i32 = pack32(i16v);
i64 = pack64(i16v4);
u32 = pack32(u16v2);
u64 = pack64(u16v4);
i16v = unpack16(i32);
i16v4 = unpack16(i64);
u16v2 = unpack16(u32);
u16v4 = unpack16(u64);
// lessThan()
bv = lessThan(u16v, u16vec3(u16));
bv.xy = lessThan(i16v, i16vec2(i16));
// lessThanEqual()
bv = lessThanEqual(u16v, u16vec3(u16));
bv.xy = lessThanEqual(i16v, i16vec2(i16));
// greaterThan()
bv = greaterThan(u16v, u16vec3(u16));
bv.xy = greaterThan(i16v, i16vec2(i16));
// greaterThanEqual()
bv = greaterThanEqual(u16v, u16vec3(u16));
bv.xy = greaterThanEqual(i16v, i16vec2(i16));
// equal()
bv = equal(u16v, u16vec3(u16));
bv.xy = equal(i16v, i16vec2(i16));
// notEqual()
bv = notEqual(u16v, u16vec3(u16));
bv.xy = notEqual(i16v, i16vec2(i16));
}
// Type conversion for specialization constant
layout(constant_id = 100) const int16_t si16 = int16_t(-10);
layout(constant_id = 101) const uint16_t su16 = uint16_t(20);
......@@ -44,7 +44,7 @@ using CompileToAstTest = GlslangTest<::testing::TestWithParam<std::string>>;
TEST_P(CompileToAstTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::OpenGL,
Source::GLSL, Semantics::OpenGL, 100,
Target::AST);
}
......
......@@ -58,6 +58,7 @@ std::string FileNameAsCustomTestSuffix(
}
using HlslCompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslVulkan110CompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslLegalizeTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
......@@ -66,7 +67,14 @@ using HlslLegalizeTest = GlslangTest<::testing::TestWithParam<FileNameEntryPoint
TEST_P(HlslCompileTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
Source::HLSL, Semantics::Vulkan,
Source::HLSL, Semantics::Vulkan, 100,
Target::BothASTAndSpv, true, GetParam().entryPoint);
}
TEST_P(HlslVulkan110CompileTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
Source::HLSL, Semantics::Vulkan, 110,
Target::BothASTAndSpv, true, GetParam().entryPoint);
}
......@@ -82,7 +90,7 @@ TEST_P(HlslCompileAndFlattenTest, FromFile)
TEST_P(HlslLegalizeTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
Source::HLSL, Semantics::Vulkan,
Source::HLSL, Semantics::Vulkan, 100,
Target::Spv, true, GetParam().entryPoint,
"/baseLegalResults/", false);
}
......@@ -368,6 +376,17 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.type.identifier.frag", "main"},
{"hlsl.typeGraphCopy.vert", "main"},
{"hlsl.typedef.frag", "PixelShaderFunction"},
{"hlsl.whileLoop.frag", "PixelShaderFunction"},
{"hlsl.void.frag", "PixelShaderFunction"}
}),
FileNameAsCustomTestSuffix
);
// clang-format on
// clang-format off
INSTANTIATE_TEST_CASE_P(
ToSpirv, HlslVulkan110CompileTest,
::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
{"hlsl.wavebroadcast.comp", "CSMain"},
{"hlsl.waveprefix.comp", "CSMain"},
{"hlsl.wavequad.comp", "CSMain"},
......@@ -375,8 +394,6 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.wavequery.frag", "PixelShaderFunction"},
{"hlsl.wavereduction.comp", "CSMain"},
{"hlsl.wavevote.comp", "CSMain"},
{"hlsl.whileLoop.frag", "PixelShaderFunction"},
{"hlsl.void.frag", "PixelShaderFunction"}
}),
FileNameAsCustomTestSuffix
);
......
......@@ -63,6 +63,7 @@ std::string FileNameAsCustomTestSuffixIoMap(
}
using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileVulkan110ToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
......@@ -82,7 +83,14 @@ using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::t
TEST_P(CompileVulkanToSpirvTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::Vulkan,
Source::GLSL, Semantics::Vulkan, 100,
Target::Spv);
}
TEST_P(CompileVulkan110ToSpirvTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::Vulkan, 110,
Target::Spv);
}
......@@ -91,7 +99,7 @@ TEST_P(CompileVulkanToSpirvTest, FromFile)
TEST_P(CompileOpenGLToSpirvTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::OpenGL,
Source::GLSL, Semantics::OpenGL, 100,
Target::Spv);
}
......@@ -100,7 +108,7 @@ TEST_P(CompileOpenGLToSpirvTest, FromFile)
TEST_P(VulkanSemantics, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::Vulkan,
Source::GLSL, Semantics::Vulkan, 100,
Target::Spv, false);
}
......@@ -109,7 +117,7 @@ TEST_P(VulkanSemantics, FromFile)
TEST_P(OpenGLSemantics, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::OpenGL,
Source::GLSL, Semantics::OpenGL, 100,
Target::Spv, false);
}
......@@ -117,7 +125,7 @@ TEST_P(OpenGLSemantics, FromFile)
TEST_P(VulkanAstSemantics, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::Vulkan,
Source::GLSL, Semantics::Vulkan, 100,
Target::AST);
}
......@@ -157,7 +165,7 @@ TEST_P(GlslIoMap, FromFile)
TEST_P(CompileVulkanToSpirvTestAMD, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::Vulkan,
Source::GLSL, Semantics::Vulkan, 100,
Target::Spv);
}
#endif
......@@ -168,7 +176,7 @@ TEST_P(CompileVulkanToSpirvTestAMD, FromFile)
TEST_P(CompileVulkanToSpirvTestNV, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::Vulkan,
Source::GLSL, Semantics::Vulkan, 100,
Target::Spv);
}
#endif
......@@ -242,9 +250,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.dataOutIndirect.vert",
"spv.deepRvalue.frag",
"spv.depthOut.frag",
"spv.deviceGroup.frag",
"spv.discard-dce.frag",
"spv.drawParams.vert",
"spv.doWhileLoop.frag",
"spv.earlyReturnDiscard.frag",
"spv.extPostDepthCoverage.frag",
......@@ -272,7 +278,6 @@ INSTANTIATE_TEST_CASE_P(
"spv.merge-unreachable.frag",
"spv.multiStruct.comp",
"spv.multiStructFuncall.frag",
"spv.multiView.frag",
"spv.newTexture.frag",
"spv.noDeadDecorations.vert",
"spv.nonSquare.vert",
......@@ -331,28 +336,40 @@ INSTANTIATE_TEST_CASE_P(
"spv.storageBuffer.vert",
"spv.precise.tese",
"spv.precise.tesc",
"spv.xfb.vert",
"spv.xfb2.vert",
"spv.xfb3.vert",
})),
FileNameAsCustomTestSuffix
);
// clang-format off
INSTANTIATE_TEST_CASE_P(
Glsl, CompileVulkan110ToSpirvTest,
::testing::ValuesIn(std::vector<std::string>({
"spv.deviceGroup.frag",
"spv.drawParams.vert",
"spv.int8.frag",
"spv.vulkan110.int16.frag",
"spv.int32.frag",
"spv.explicittypes.frag",
"spv.float32.frag",
"spv.float64.frag",
"spv.multiView.frag",
"spv.subgroup.frag",
"spv.subgroup.geom",
"spv.subgroup.tesc",
"spv.subgroup.tese",
"spv.subgroup.vert",
"spv.subgroupArithmetic.comp",
"spv.subgroupBasic.comp",
"spv.subgroupVote.comp",
"spv.subgroupBallot.comp",
"spv.subgroupShuffle.comp",
"spv.subgroupShuffleRelative.comp",
"spv.subgroupArithmetic.comp",
"spv.subgroupClustered.comp",
"spv.subgroupClusteredNeg.comp",
"spv.subgroupShuffle.comp",
"spv.subgroupShuffleRelative.comp",
"spv.subgroupQuad.comp",
"spv.int8.frag",
"spv.int16.frag",
"spv.int32.frag",
"spv.float32.frag",
"spv.float64.frag",
"spv.xfb.vert",
"spv.xfb2.vert",
"spv.xfb3.vert",
"spv.subgroupVote.comp",
})),
FileNameAsCustomTestSuffix
);
......
......@@ -70,7 +70,7 @@ enum class Source {
// Enum for shader compilation semantics.
enum class Semantics {
OpenGL,
Vulkan,
Vulkan
};
// Enum for compilation target.
......@@ -196,15 +196,15 @@ public:
// the result and returns disassembly text.
GlslangResult compileAndLink(
const std::string shaderName, const std::string& code,
const std::string& entryPointName, EShMessages controls,
const std::string& entryPointName, EShMessages controls, int clientTargetVersion,
bool flattenUniformArrays = false,
EShTextureSamplerTransformMode texSampTransMode = EShTexSampTransKeep,
bool disableOptimizer = true,
bool automap = true)
{
const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
glslang::TShader shader(kind);
glslang::TShader shader(stage);
if (automap) {
shader.setAutoMapLocations(true);
shader.setAutoMapBindings(true);
......@@ -212,6 +212,22 @@ public:
shader.setTextureSamplerTransformMode(texSampTransMode);
shader.setFlattenUniformArrays(flattenUniformArrays);
if (controls & EShMsgSpvRules) {
if (controls & EShMsgVulkanRules) {
shader.setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl
: glslang::EShSourceGlsl,
stage, glslang::EShClientVulkan, 100);
shader.setEnvClient(glslang::EShClientVulkan, clientTargetVersion);
shader.setEnvTarget(glslang::EShTargetSpv, clientTargetVersion == 110 ? 0x00010300 : 0x00010000);
} else {
shader.setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl
: glslang::EShSourceGlsl,
stage, glslang::EShClientOpenGL, 100);
shader.setEnvClient(glslang::EShClientOpenGL, clientTargetVersion);
shader.setEnvTarget(glslang::EshTargetSpv, 0x00010000);
}
}
bool success = compile(&shader, code, entryPointName, controls);
glslang::TProgram program;
......@@ -224,7 +240,7 @@ public:
std::vector<uint32_t> spirv_binary;
glslang::SpvOptions options;
options.disableOptimizer = disableOptimizer;
glslang::GlslangToSpv(*program.getIntermediate(kind),
glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger, &options);
std::ostringstream disassembly_stream;
......@@ -255,9 +271,9 @@ public:
bool autoMapBindings,
bool flattenUniformArrays)
{
const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
glslang::TShader shader(kind);
glslang::TShader shader(stage);
shader.setShiftSamplerBinding(baseSamplerBinding);
shader.setShiftTextureBinding(baseTextureBinding);
shader.setShiftImageBinding(baseImageBinding);
......@@ -279,7 +295,7 @@ public:
if (success && (controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary;
glslang::GlslangToSpv(*program.getIntermediate(kind),
glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger);
std::ostringstream disassembly_stream;
......@@ -303,9 +319,9 @@ public:
const std::string& entryPointName, EShMessages controls,
const unsigned int remapOptions = spv::spirvbin_t::NONE)
{
const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
glslang::TShader shader(kind);
glslang::TShader shader(stage);
shader.setAutoMapBindings(true);
shader.setAutoMapLocations(true);
......@@ -319,7 +335,7 @@ public:
if (success && (controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary;
glslang::GlslangToSpv(*program.getIntermediate(kind),
glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger);
spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
......@@ -388,6 +404,7 @@ public:
const std::string& testName,
Source source,
Semantics semantics,
int clientTargetVersion,
Target target,
bool automap = true,
const std::string& entryPointName="",
......@@ -403,8 +420,8 @@ public:
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
const EShMessages controls = DeriveOptions(source, semantics, target);
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, false, EShTexSampTransKeep,
disableOptimizer, automap);
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion, false,
EShTexSampTransKeep, disableOptimizer, automap);
// Generate the hybrid output in the way of glslangValidator.
std::ostringstream stream;
......@@ -430,7 +447,7 @@ public:
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
const EShMessages controls = DeriveOptions(source, semantics, target);
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, true);
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, 100, true);
// Generate the hybrid output in the way of glslangValidator.
std::ostringstream stream;
......@@ -599,7 +616,7 @@ public:
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
const EShMessages controls = DeriveOptions(source, semantics, target);
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, false,
GlslangResult result = compileAndLink(testName, input, entryPointName, controls, 100, false,
EShTexSampTransUpgradeTextureRemoveSampler);
// Generate the hybrid output in the way of glslangValidator.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment