Allow 8/16-bit integer as array index

Also enable 8/16 bit int capability in SPIR-V in such cases.

Also enable 64 bit capabilities when used in operations.

Fixes #2779
This commit is contained in:
Greg Fischer 2021-10-18 18:28:01 -06:00
parent 6351fcef28
commit 82b2668d58
6 changed files with 988 additions and 924 deletions

View File

@ -111,8 +111,6 @@ void Builder::postProcessType(const Instruction& inst, Id typeId)
}
}
break;
case OpAccessChain:
case OpPtrAccessChain:
case OpCopyObject:
break;
case OpFConvert:
@ -172,13 +170,30 @@ void Builder::postProcessType(const Instruction& inst, Id typeId)
break;
}
break;
default:
if (basicTypeOp == OpTypeFloat && width == 16)
addCapability(CapabilityFloat16);
if (basicTypeOp == OpTypeInt && width == 16)
case OpAccessChain:
case OpPtrAccessChain:
if (isPointerType(typeId))
break;
if (basicTypeOp == OpTypeInt) {
if (width == 16)
addCapability(CapabilityInt16);
if (basicTypeOp == OpTypeInt && width == 8)
else if (width == 8)
addCapability(CapabilityInt8);
}
default:
if (basicTypeOp == OpTypeInt) {
if (width == 16)
addCapability(CapabilityInt16);
else if (width == 8)
addCapability(CapabilityInt8);
else if (width == 64)
addCapability(CapabilityInt64);
} else if (basicTypeOp == OpTypeFloat) {
if (width == 16)
addCapability(CapabilityFloat16);
else if (width == 64)
addCapability(CapabilityFloat64);
}
break;
}
}

View File

@ -1,7 +1,7 @@
spv.int16.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 535
// Id's are bound by 549
Capability Shader
Capability Float16
@ -48,53 +48,55 @@ spv.int16.frag
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 281 "b"
Name 343 "i16v"
Name 346 "i16"
Name 356 "u16v"
Name 358 "u16"
Name 428 "i32"
Name 431 "i64"
Name 434 "i16v4"
Name 437 "u32"
Name 438 "u16v2"
Name 442 "u64"
Name 445 "u16v4"
Name 457 "bv"
Name 530 "Block"
MemberName 530(Block) 0 "i16"
MemberName 530(Block) 1 "i16v2"
MemberName 530(Block) 2 "i16v3"
MemberName 530(Block) 3 "i16v4"
MemberName 530(Block) 4 "u16"
MemberName 530(Block) 5 "u16v2"
MemberName 530(Block) 6 "u16v3"
MemberName 530(Block) 7 "u16v4"
Name 532 "block"
Name 533 "si16"
Name 534 "su16"
Name 196 "arr"
Name 204 "u16v"
Name 209 "i16"
Name 229 "i"
Name 236 "uv"
Name 252 "i64"
Name 290 "b"
Name 353 "f"
Name 357 "i16v"
Name 360 "i16"
Name 370 "u16v"
Name 372 "u16"
Name 442 "i32"
Name 445 "i64"
Name 448 "i16v4"
Name 451 "u32"
Name 452 "u16v2"
Name 456 "u64"
Name 459 "u16v4"
Name 471 "bv"
Name 544 "Block"
MemberName 544(Block) 0 "i16"
MemberName 544(Block) 1 "i16v2"
MemberName 544(Block) 2 "i16v3"
MemberName 544(Block) 3 "i16v4"
MemberName 544(Block) 4 "u16"
MemberName 544(Block) 5 "u16v2"
MemberName 544(Block) 6 "u16v3"
MemberName 544(Block) 7 "u16v4"
Name 546 "block"
Name 547 "si16"
Name 548 "su16"
MemberDecorate 24(Uniforms) 0 Offset 0
Decorate 24(Uniforms) Block
Decorate 26 DescriptorSet 0
Decorate 26 Binding 0
MemberDecorate 530(Block) 0 Offset 0
MemberDecorate 530(Block) 1 Offset 4
MemberDecorate 530(Block) 2 Offset 8
MemberDecorate 530(Block) 3 Offset 16
MemberDecorate 530(Block) 4 Offset 24
MemberDecorate 530(Block) 5 Offset 28
MemberDecorate 530(Block) 6 Offset 32
MemberDecorate 530(Block) 7 Offset 40
Decorate 530(Block) Block
Decorate 532(block) DescriptorSet 0
Decorate 532(block) Binding 1
Decorate 533(si16) SpecId 100
Decorate 534(su16) SpecId 101
MemberDecorate 544(Block) 0 Offset 0
MemberDecorate 544(Block) 1 Offset 4
MemberDecorate 544(Block) 2 Offset 8
MemberDecorate 544(Block) 3 Offset 16
MemberDecorate 544(Block) 4 Offset 24
MemberDecorate 544(Block) 5 Offset 28
MemberDecorate 544(Block) 6 Offset 32
MemberDecorate 544(Block) 7 Offset 40
Decorate 544(Block) Block
Decorate 546(block) DescriptorSet 0
Decorate 546(block) Binding 1
Decorate 547(si16) SpecId 100
Decorate 548(su16) SpecId 101
2: TypeVoid
3: TypeFunction 2
14: TypeInt 16 1
@ -160,37 +162,46 @@ spv.int16.frag
185: 36(int16_t) Constant 1
186: 57(i16vec2) ConstantComposite 184 184
187: 57(i16vec2) ConstantComposite 185 185
193: TypeVector 36(int16_t) 3
194: TypePointer Function 193(i16vec3)
197: TypeVector 14(int16_t) 3
219: TypePointer Function 27(int)
225: TypeVector 17(int) 3
226: TypePointer Function 225(ivec3)
242: TypePointer Function 71(int64_t)
264: 17(int) Constant 1
270: 17(int) Constant 2
276: TypeVector 27(int) 3
280: TypePointer Function 173(bool)
282: 17(int) Constant 0
296: TypePointer Function 17(int)
354: 52(i16vec2) ConstantComposite 21 21
363:193(i16vec3) ConstantComposite 184 184 184
405: 173(bool) ConstantTrue
412: 173(bool) ConstantFalse
413: 174(bvec2) ConstantComposite 412 412
425: TypeVector 173(bool) 3
426: 425(bvec3) ConstantComposite 412 412 412
432: TypeVector 14(int16_t) 4
433: TypePointer Function 432(i16vec4)
441: TypePointer Function 77(int64_t)
443: TypeVector 36(int16_t) 4
444: TypePointer Function 443(i16vec4)
456: TypePointer Function 425(bvec3)
530(Block): TypeStruct 14(int16_t) 52(i16vec2) 197(i16vec3) 432(i16vec4) 36(int16_t) 57(i16vec2) 193(i16vec3) 443(i16vec4)
531: TypePointer Uniform 530(Block)
532(block): 531(ptr) Variable Uniform
533(si16): 14(int16_t) SpecConstant 4294967286
534(su16): 36(int16_t) SpecConstant 20
193: 17(int) Constant 4
194: TypeArray 97(float) 193
195: TypePointer Function 194
197: 97(float) Constant 1065353216
198: 97(float) Constant 1073741824
199: 97(float) Constant 1077936128
200: 97(float) Constant 1082130432
201: 194 ConstantComposite 197 198 199 200
202: TypeVector 36(int16_t) 3
203: TypePointer Function 202(i16vec3)
206: TypeVector 14(int16_t) 3
228: TypePointer Function 27(int)
234: TypeVector 17(int) 3
235: TypePointer Function 234(ivec3)
251: TypePointer Function 71(int64_t)
273: 17(int) Constant 1
279: 17(int) Constant 2
285: TypeVector 27(int) 3
289: TypePointer Function 173(bool)
291: 17(int) Constant 0
305: TypePointer Function 17(int)
352: TypePointer Function 97(float)
368: 52(i16vec2) ConstantComposite 21 21
377:202(i16vec3) ConstantComposite 184 184 184
419: 173(bool) ConstantTrue
426: 173(bool) ConstantFalse
427: 174(bvec2) ConstantComposite 426 426
439: TypeVector 173(bool) 3
440: 439(bvec3) ConstantComposite 426 426 426
446: TypeVector 14(int16_t) 4
447: TypePointer Function 446(i16vec4)
455: TypePointer Function 77(int64_t)
457: TypeVector 36(int16_t) 4
458: TypePointer Function 457(i16vec4)
470: TypePointer Function 439(bvec3)
544(Block): TypeStruct 14(int16_t) 52(i16vec2) 206(i16vec3) 446(i16vec4) 36(int16_t) 57(i16vec2) 202(i16vec3) 457(i16vec4)
545: TypePointer Uniform 544(Block)
546(block): 545(ptr) Variable Uniform
547(si16): 14(int16_t) SpecConstant 4294967286
548(su16): 36(int16_t) SpecConstant 20
4(main): 2 Function None 3
5: Label
Return
@ -364,397 +375,404 @@ spv.int16.frag
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
281(b): 280(ptr) Variable Function
196:193(i16vec3) Load 195(u16v)
198:197(i16vec3) CompositeConstruct 179 179 179
199:193(i16vec3) IAdd 196 198
Store 195(u16v) 199
201: 14(int16_t) Load 200(i16)
202: 14(int16_t) ISub 201 179
Store 200(i16) 202
203: 14(int16_t) Load 200(i16)
204: 14(int16_t) IAdd 203 179
Store 200(i16) 204
205:193(i16vec3) Load 195(u16v)
206:197(i16vec3) CompositeConstruct 179 179 179
207:193(i16vec3) ISub 205 206
Store 195(u16v) 207
208:193(i16vec3) Load 195(u16v)
209:193(i16vec3) Not 208
Store 195(u16v) 209
210: 14(int16_t) Load 200(i16)
Store 200(i16) 210
211:193(i16vec3) Load 195(u16v)
212:193(i16vec3) SNegate 211
Store 195(u16v) 212
213: 14(int16_t) Load 200(i16)
214: 14(int16_t) Load 200(i16)
215: 14(int16_t) IAdd 214 213
Store 200(i16) 215
216:193(i16vec3) Load 195(u16v)
217:193(i16vec3) Load 195(u16v)
218:193(i16vec3) ISub 217 216
Store 195(u16v) 218
221: 14(int16_t) 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(i16vec3) 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(int16_t) 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(i16vec3) 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(int16_t) Load 200(i16)
245: 71(int64_t) SConvert 244
246: 71(int64_t) Load 243(i64)
247: 71(int64_t) ISub 245 246
Store 243(i64) 247
248:193(i16vec3) 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(int16_t) Load 200(i16)
253: 71(int64_t) SConvert 252
254: 71(int64_t) Load 243(i64)
255: 71(int64_t) IMul 253 254
Store 243(i64) 255
256: 14(int16_t) 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(int16_t) Load 200(i16)
261:193(i16vec3) Load 195(u16v)
262:197(i16vec3) CompositeConstruct 260 260 260
263:193(i16vec3) ShiftLeftLogical 261 262
Store 195(u16v) 263
265: 37(ptr) AccessChain 195(u16v) 264
266: 36(int16_t) Load 265
267: 14(int16_t) Load 200(i16)
268: 14(int16_t) ShiftRightArithmetic 267 266
Store 200(i16) 268
269: 14(int16_t) Load 200(i16)
271: 37(ptr) AccessChain 195(u16v) 270
272: 36(int16_t) Load 271
273: 14(int16_t) ShiftLeftLogical 269 272
Store 200(i16) 273
274:193(i16vec3) Load 195(u16v)
275: 27(int) Load 220(i)
277: 276(ivec3) CompositeConstruct 275 275 275
278:193(i16vec3) ShiftLeftLogical 274 277
279: 225(ivec3) UConvert 278
Store 227(uv) 279
283: 37(ptr) AccessChain 195(u16v) 282
284: 36(int16_t) Load 283
285: 14(int16_t) Load 200(i16)
286: 36(int16_t) Bitcast 285
287: 173(bool) INotEqual 284 286
Store 281(b) 287
288: 14(int16_t) Load 200(i16)
289: 36(int16_t) Bitcast 288
290: 37(ptr) AccessChain 195(u16v) 282
291: 36(int16_t) Load 290
292: 173(bool) IEqual 289 291
Store 281(b) 292
293: 37(ptr) AccessChain 195(u16v) 282
294: 36(int16_t) Load 293
295: 17(int) UConvert 294
297: 296(ptr) AccessChain 227(uv) 264
298: 17(int) Load 297
299: 173(bool) UGreaterThan 295 298
Store 281(b) 299
300: 14(int16_t) Load 200(i16)
301: 27(int) SConvert 300
302: 27(int) Load 220(i)
303: 173(bool) SLessThan 301 302
Store 281(b) 303
304: 37(ptr) AccessChain 195(u16v) 264
305: 36(int16_t) Load 304
306: 17(int) UConvert 305
307: 296(ptr) AccessChain 227(uv) 282
308: 17(int) Load 307
309: 173(bool) UGreaterThanEqual 306 308
Store 281(b) 309
310: 14(int16_t) Load 200(i16)
311: 27(int) SConvert 310
312: 27(int) Load 220(i)
313: 173(bool) SLessThanEqual 311 312
Store 281(b) 313
314: 14(int16_t) Load 200(i16)
315: 27(int) SConvert 314
316: 17(int) Bitcast 315
317: 225(ivec3) Load 227(uv)
318: 225(ivec3) CompositeConstruct 316 316 316
319: 225(ivec3) BitwiseOr 317 318
Store 227(uv) 319
320: 14(int16_t) Load 200(i16)
321: 27(int) SConvert 320
322: 27(int) Load 220(i)
323: 27(int) BitwiseOr 321 322
Store 220(i) 323
324: 14(int16_t) Load 200(i16)
325: 71(int64_t) SConvert 324
326: 71(int64_t) Load 243(i64)
327: 71(int64_t) BitwiseAnd 326 325
Store 243(i64) 327
328:193(i16vec3) Load 195(u16v)
329: 225(ivec3) UConvert 328
330: 225(ivec3) Load 227(uv)
331: 225(ivec3) BitwiseAnd 329 330
Store 227(uv) 331
332: 14(int16_t) Load 200(i16)
333: 27(int) SConvert 332
334: 17(int) Bitcast 333
335: 225(ivec3) Load 227(uv)
336: 225(ivec3) CompositeConstruct 334 334 334
337: 225(ivec3) BitwiseXor 335 336
Store 227(uv) 337
338:193(i16vec3) Load 195(u16v)
339: 14(int16_t) Load 200(i16)
340: 36(int16_t) Bitcast 339
341:193(i16vec3) CompositeConstruct 340 340 340
342:193(i16vec3) BitwiseXor 338 341
Store 195(u16v) 342
196(arr): 195(ptr) Variable Function
204(u16v): 203(ptr) Variable Function
209(i16): 15(ptr) Variable Function
229(i): 228(ptr) Variable Function
236(uv): 235(ptr) Variable Function
252(i64): 251(ptr) Variable Function
290(b): 289(ptr) Variable Function
353(f): 352(ptr) Variable Function
Store 196(arr) 201
205:202(i16vec3) Load 204(u16v)
207:206(i16vec3) CompositeConstruct 179 179 179
208:202(i16vec3) IAdd 205 207
Store 204(u16v) 208
210: 14(int16_t) Load 209(i16)
211: 14(int16_t) ISub 210 179
Store 209(i16) 211
212: 14(int16_t) Load 209(i16)
213: 14(int16_t) IAdd 212 179
Store 209(i16) 213
214:202(i16vec3) Load 204(u16v)
215:206(i16vec3) CompositeConstruct 179 179 179
216:202(i16vec3) ISub 214 215
Store 204(u16v) 216
217:202(i16vec3) Load 204(u16v)
218:202(i16vec3) Not 217
Store 204(u16v) 218
219: 14(int16_t) Load 209(i16)
Store 209(i16) 219
220:202(i16vec3) Load 204(u16v)
221:202(i16vec3) SNegate 220
Store 204(u16v) 221
222: 14(int16_t) Load 209(i16)
223: 14(int16_t) Load 209(i16)
224: 14(int16_t) IAdd 223 222
Store 209(i16) 224
225:202(i16vec3) Load 204(u16v)
226:202(i16vec3) Load 204(u16v)
227:202(i16vec3) ISub 226 225
Store 204(u16v) 227
230: 14(int16_t) Load 209(i16)
231: 27(int) SConvert 230
232: 27(int) Load 229(i)
233: 27(int) IMul 232 231
Store 229(i) 233
237:202(i16vec3) Load 204(u16v)
238: 234(ivec3) UConvert 237
239: 234(ivec3) Load 236(uv)
240: 234(ivec3) UDiv 239 238
Store 236(uv) 240
241: 14(int16_t) Load 209(i16)
242: 27(int) SConvert 241
243: 17(int) Bitcast 242
244: 234(ivec3) Load 236(uv)
245: 234(ivec3) CompositeConstruct 243 243 243
246: 234(ivec3) UMod 244 245
Store 236(uv) 246
247:202(i16vec3) Load 204(u16v)
248: 234(ivec3) UConvert 247
249: 234(ivec3) Load 236(uv)
250: 234(ivec3) IAdd 248 249
Store 236(uv) 250
253: 14(int16_t) Load 209(i16)
254: 71(int64_t) SConvert 253
255: 71(int64_t) Load 252(i64)
256: 71(int64_t) ISub 254 255
Store 252(i64) 256
257:202(i16vec3) Load 204(u16v)
258: 234(ivec3) UConvert 257
259: 234(ivec3) Load 236(uv)
260: 234(ivec3) IMul 258 259
Store 236(uv) 260
261: 14(int16_t) Load 209(i16)
262: 71(int64_t) SConvert 261
263: 71(int64_t) Load 252(i64)
264: 71(int64_t) IMul 262 263
Store 252(i64) 264
265: 14(int16_t) Load 209(i16)
266: 27(int) SConvert 265
267: 27(int) Load 229(i)
268: 27(int) SMod 266 267
Store 229(i) 268
269: 14(int16_t) Load 209(i16)
270:202(i16vec3) Load 204(u16v)
271:206(i16vec3) CompositeConstruct 269 269 269
272:202(i16vec3) ShiftLeftLogical 270 271
Store 204(u16v) 272
274: 37(ptr) AccessChain 204(u16v) 273
275: 36(int16_t) Load 274
276: 14(int16_t) Load 209(i16)
277: 14(int16_t) ShiftRightArithmetic 276 275
Store 209(i16) 277
278: 14(int16_t) Load 209(i16)
280: 37(ptr) AccessChain 204(u16v) 279
281: 36(int16_t) Load 280
282: 14(int16_t) ShiftLeftLogical 278 281
Store 209(i16) 282
283:202(i16vec3) Load 204(u16v)
284: 27(int) Load 229(i)
286: 285(ivec3) CompositeConstruct 284 284 284
287:202(i16vec3) ShiftLeftLogical 283 286
288: 234(ivec3) UConvert 287
Store 236(uv) 288
292: 37(ptr) AccessChain 204(u16v) 291
293: 36(int16_t) Load 292
294: 14(int16_t) Load 209(i16)
295: 36(int16_t) Bitcast 294
296: 173(bool) INotEqual 293 295
Store 290(b) 296
297: 14(int16_t) Load 209(i16)
298: 36(int16_t) Bitcast 297
299: 37(ptr) AccessChain 204(u16v) 291
300: 36(int16_t) Load 299
301: 173(bool) IEqual 298 300
Store 290(b) 301
302: 37(ptr) AccessChain 204(u16v) 291
303: 36(int16_t) Load 302
304: 17(int) UConvert 303
306: 305(ptr) AccessChain 236(uv) 273
307: 17(int) Load 306
308: 173(bool) UGreaterThan 304 307
Store 290(b) 308
309: 14(int16_t) Load 209(i16)
310: 27(int) SConvert 309
311: 27(int) Load 229(i)
312: 173(bool) SLessThan 310 311
Store 290(b) 312
313: 37(ptr) AccessChain 204(u16v) 273
314: 36(int16_t) Load 313
315: 17(int) UConvert 314
316: 305(ptr) AccessChain 236(uv) 291
317: 17(int) Load 316
318: 173(bool) UGreaterThanEqual 315 317
Store 290(b) 318
319: 14(int16_t) Load 209(i16)
320: 27(int) SConvert 319
321: 27(int) Load 229(i)
322: 173(bool) SLessThanEqual 320 321
Store 290(b) 322
323: 14(int16_t) Load 209(i16)
324: 27(int) SConvert 323
325: 17(int) Bitcast 324
326: 234(ivec3) Load 236(uv)
327: 234(ivec3) CompositeConstruct 325 325 325
328: 234(ivec3) BitwiseOr 326 327
Store 236(uv) 328
329: 14(int16_t) Load 209(i16)
330: 27(int) SConvert 329
331: 27(int) Load 229(i)
332: 27(int) BitwiseOr 330 331
Store 229(i) 332
333: 14(int16_t) Load 209(i16)
334: 71(int64_t) SConvert 333
335: 71(int64_t) Load 252(i64)
336: 71(int64_t) BitwiseAnd 335 334
Store 252(i64) 336
337:202(i16vec3) Load 204(u16v)
338: 234(ivec3) UConvert 337
339: 234(ivec3) Load 236(uv)
340: 234(ivec3) BitwiseAnd 338 339
Store 236(uv) 340
341: 14(int16_t) Load 209(i16)
342: 27(int) SConvert 341
343: 17(int) Bitcast 342
344: 234(ivec3) Load 236(uv)
345: 234(ivec3) CompositeConstruct 343 343 343
346: 234(ivec3) BitwiseXor 344 345
Store 236(uv) 346
347:202(i16vec3) Load 204(u16v)
348: 14(int16_t) Load 209(i16)
349: 36(int16_t) Bitcast 348
350:202(i16vec3) CompositeConstruct 349 349 349
351:202(i16vec3) BitwiseXor 347 350
Store 204(u16v) 351
354: 14(int16_t) Load 209(i16)
355: 352(ptr) AccessChain 196(arr) 354
356: 97(float) Load 355
Store 353(f) 356
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
343(i16v): 53(ptr) Variable Function
346(i16): 15(ptr) Variable Function
356(u16v): 194(ptr) Variable Function
358(u16): 37(ptr) Variable Function
428(i32): 219(ptr) Variable Function
431(i64): 242(ptr) Variable Function
434(i16v4): 433(ptr) Variable Function
437(u32): 296(ptr) Variable Function
438(u16v2): 58(ptr) Variable Function
442(u64): 441(ptr) Variable Function
445(u16v4): 444(ptr) Variable Function
457(bv): 456(ptr) Variable Function
344: 52(i16vec2) Load 343(i16v)
345: 52(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344
Store 343(i16v) 345
347: 14(int16_t) Load 346(i16)
348: 14(int16_t) ExtInst 1(GLSL.std.450) 7(SSign) 347
Store 346(i16) 348
349: 52(i16vec2) Load 343(i16v)
350: 14(int16_t) Load 346(i16)
351: 52(i16vec2) CompositeConstruct 350 350
352: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351
Store 343(i16v) 352
353: 52(i16vec2) Load 343(i16v)
355: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354
Store 343(i16v) 355
357:193(i16vec3) Load 356(u16v)
359: 36(int16_t) Load 358(u16)
360:193(i16vec3) CompositeConstruct 359 359 359
361:193(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360
Store 356(u16v) 361
362:193(i16vec3) Load 356(u16v)
364:193(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363
Store 356(u16v) 364
365: 52(i16vec2) Load 343(i16v)
366: 14(int16_t) Load 346(i16)
367: 52(i16vec2) CompositeConstruct 366 366
368: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367
Store 343(i16v) 368
369: 52(i16vec2) Load 343(i16v)
370: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354
Store 343(i16v) 370
371:193(i16vec3) Load 356(u16v)
372: 36(int16_t) Load 358(u16)
373:193(i16vec3) CompositeConstruct 372 372 372
374:193(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373
Store 356(u16v) 374
375:193(i16vec3) Load 356(u16v)
376:193(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363
Store 356(u16v) 376
377: 52(i16vec2) Load 343(i16v)
378: 14(int16_t) Load 346(i16)
379: 14(int16_t) SNegate 378
380: 14(int16_t) Load 346(i16)
381: 52(i16vec2) CompositeConstruct 379 379
382: 52(i16vec2) CompositeConstruct 380 380
383: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382
Store 343(i16v) 383
384: 52(i16vec2) Load 343(i16v)
385: 52(i16vec2) Load 343(i16v)
386: 52(i16vec2) SNegate 385
387: 52(i16vec2) Load 343(i16v)
388: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387
Store 343(i16v) 388
389:193(i16vec3) Load 356(u16v)
390: 36(int16_t) Load 358(u16)
391: 36(int16_t) SNegate 390
392: 36(int16_t) Load 358(u16)
393:193(i16vec3) CompositeConstruct 391 391 391
394:193(i16vec3) CompositeConstruct 392 392 392
395:193(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394
Store 356(u16v) 395
396:193(i16vec3) Load 356(u16v)
397:193(i16vec3) Load 356(u16v)
398:193(i16vec3) SNegate 397
399:193(i16vec3) Load 356(u16v)
400:193(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399
Store 356(u16v) 400
401: 15(ptr) AccessChain 343(i16v) 282
402: 14(int16_t) Load 401
403: 15(ptr) AccessChain 343(i16v) 264
404: 14(int16_t) Load 403
406: 14(int16_t) Select 405 404 402
Store 346(i16) 406
407: 14(int16_t) Load 346(i16)
408: 52(i16vec2) CompositeConstruct 407 407
409: 14(int16_t) Load 346(i16)
410: 14(int16_t) SNegate 409
411: 52(i16vec2) CompositeConstruct 410 410
414: 52(i16vec2) Select 413 411 408
Store 343(i16v) 414
415: 37(ptr) AccessChain 356(u16v) 282
416: 36(int16_t) Load 415
417: 37(ptr) AccessChain 356(u16v) 264
418: 36(int16_t) Load 417
419: 36(int16_t) Select 405 418 416
Store 358(u16) 419
420: 36(int16_t) Load 358(u16)
421:193(i16vec3) CompositeConstruct 420 420 420
422: 36(int16_t) Load 358(u16)
423: 36(int16_t) SNegate 422
424:193(i16vec3) CompositeConstruct 423 423 423
427:193(i16vec3) Select 426 424 421
Store 356(u16v) 427
429: 52(i16vec2) Load 343(i16v)
430: 27(int) Bitcast 429
Store 428(i32) 430
435:432(i16vec4) Load 434(i16v4)
436: 71(int64_t) Bitcast 435
Store 431(i64) 436
439: 57(i16vec2) Load 438(u16v2)
440: 17(int) Bitcast 439
Store 437(u32) 440
446:443(i16vec4) Load 445(u16v4)
447: 77(int64_t) Bitcast 446
Store 442(u64) 447
448: 27(int) Load 428(i32)
449: 52(i16vec2) Bitcast 448
Store 343(i16v) 449
450: 71(int64_t) Load 431(i64)
451:432(i16vec4) Bitcast 450
Store 434(i16v4) 451
452: 17(int) Load 437(u32)
453: 57(i16vec2) Bitcast 452
Store 438(u16v2) 453
454: 77(int64_t) Load 442(u64)
455:443(i16vec4) Bitcast 454
Store 445(u16v4) 455
458:193(i16vec3) Load 356(u16v)
459: 36(int16_t) Load 358(u16)
460:193(i16vec3) CompositeConstruct 459 459 459
461: 425(bvec3) ULessThan 458 460
Store 457(bv) 461
462: 52(i16vec2) Load 343(i16v)
463: 14(int16_t) Load 346(i16)
464: 52(i16vec2) CompositeConstruct 463 463
465: 174(bvec2) SLessThan 462 464
466: 280(ptr) AccessChain 457(bv) 282
467: 173(bool) CompositeExtract 465 0
Store 466 467
468: 280(ptr) AccessChain 457(bv) 264
469: 173(bool) CompositeExtract 465 1
Store 468 469
470:193(i16vec3) Load 356(u16v)
471: 36(int16_t) Load 358(u16)
472:193(i16vec3) CompositeConstruct 471 471 471
473: 425(bvec3) ULessThanEqual 470 472
Store 457(bv) 473
474: 52(i16vec2) Load 343(i16v)
475: 14(int16_t) Load 346(i16)
476: 52(i16vec2) CompositeConstruct 475 475
477: 174(bvec2) SLessThanEqual 474 476
478: 280(ptr) AccessChain 457(bv) 282
479: 173(bool) CompositeExtract 477 0
Store 478 479
480: 280(ptr) AccessChain 457(bv) 264
481: 173(bool) CompositeExtract 477 1
357(i16v): 53(ptr) Variable Function
360(i16): 15(ptr) Variable Function
370(u16v): 203(ptr) Variable Function
372(u16): 37(ptr) Variable Function
442(i32): 228(ptr) Variable Function
445(i64): 251(ptr) Variable Function
448(i16v4): 447(ptr) Variable Function
451(u32): 305(ptr) Variable Function
452(u16v2): 58(ptr) Variable Function
456(u64): 455(ptr) Variable Function
459(u16v4): 458(ptr) Variable Function
471(bv): 470(ptr) Variable Function
358: 52(i16vec2) Load 357(i16v)
359: 52(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 358
Store 357(i16v) 359
361: 14(int16_t) Load 360(i16)
362: 14(int16_t) ExtInst 1(GLSL.std.450) 7(SSign) 361
Store 360(i16) 362
363: 52(i16vec2) Load 357(i16v)
364: 14(int16_t) Load 360(i16)
365: 52(i16vec2) CompositeConstruct 364 364
366: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 363 365
Store 357(i16v) 366
367: 52(i16vec2) Load 357(i16v)
369: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 367 368
Store 357(i16v) 369
371:202(i16vec3) Load 370(u16v)
373: 36(int16_t) Load 372(u16)
374:202(i16vec3) CompositeConstruct 373 373 373
375:202(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 374
Store 370(u16v) 375
376:202(i16vec3) Load 370(u16v)
378:202(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 376 377
Store 370(u16v) 378
379: 52(i16vec2) Load 357(i16v)
380: 14(int16_t) Load 360(i16)
381: 52(i16vec2) CompositeConstruct 380 380
382: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 379 381
Store 357(i16v) 382
383: 52(i16vec2) Load 357(i16v)
384: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 383 368
Store 357(i16v) 384
385:202(i16vec3) Load 370(u16v)
386: 36(int16_t) Load 372(u16)
387:202(i16vec3) CompositeConstruct 386 386 386
388:202(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 385 387
Store 370(u16v) 388
389:202(i16vec3) Load 370(u16v)
390:202(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 389 377
Store 370(u16v) 390
391: 52(i16vec2) Load 357(i16v)
392: 14(int16_t) Load 360(i16)
393: 14(int16_t) SNegate 392
394: 14(int16_t) Load 360(i16)
395: 52(i16vec2) CompositeConstruct 393 393
396: 52(i16vec2) CompositeConstruct 394 394
397: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 391 395 396
Store 357(i16v) 397
398: 52(i16vec2) Load 357(i16v)
399: 52(i16vec2) Load 357(i16v)
400: 52(i16vec2) SNegate 399
401: 52(i16vec2) Load 357(i16v)
402: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 398 400 401
Store 357(i16v) 402
403:202(i16vec3) Load 370(u16v)
404: 36(int16_t) Load 372(u16)
405: 36(int16_t) SNegate 404
406: 36(int16_t) Load 372(u16)
407:202(i16vec3) CompositeConstruct 405 405 405
408:202(i16vec3) CompositeConstruct 406 406 406
409:202(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 403 407 408
Store 370(u16v) 409
410:202(i16vec3) Load 370(u16v)
411:202(i16vec3) Load 370(u16v)
412:202(i16vec3) SNegate 411
413:202(i16vec3) Load 370(u16v)
414:202(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 410 412 413
Store 370(u16v) 414
415: 15(ptr) AccessChain 357(i16v) 291
416: 14(int16_t) Load 415
417: 15(ptr) AccessChain 357(i16v) 273
418: 14(int16_t) Load 417
420: 14(int16_t) Select 419 418 416
Store 360(i16) 420
421: 14(int16_t) Load 360(i16)
422: 52(i16vec2) CompositeConstruct 421 421
423: 14(int16_t) Load 360(i16)
424: 14(int16_t) SNegate 423
425: 52(i16vec2) CompositeConstruct 424 424
428: 52(i16vec2) Select 427 425 422
Store 357(i16v) 428
429: 37(ptr) AccessChain 370(u16v) 291
430: 36(int16_t) Load 429
431: 37(ptr) AccessChain 370(u16v) 273
432: 36(int16_t) Load 431
433: 36(int16_t) Select 419 432 430
Store 372(u16) 433
434: 36(int16_t) Load 372(u16)
435:202(i16vec3) CompositeConstruct 434 434 434
436: 36(int16_t) Load 372(u16)
437: 36(int16_t) SNegate 436
438:202(i16vec3) CompositeConstruct 437 437 437
441:202(i16vec3) Select 440 438 435
Store 370(u16v) 441
443: 52(i16vec2) Load 357(i16v)
444: 27(int) Bitcast 443
Store 442(i32) 444
449:446(i16vec4) Load 448(i16v4)
450: 71(int64_t) Bitcast 449
Store 445(i64) 450
453: 57(i16vec2) Load 452(u16v2)
454: 17(int) Bitcast 453
Store 451(u32) 454
460:457(i16vec4) Load 459(u16v4)
461: 77(int64_t) Bitcast 460
Store 456(u64) 461
462: 27(int) Load 442(i32)
463: 52(i16vec2) Bitcast 462
Store 357(i16v) 463
464: 71(int64_t) Load 445(i64)
465:446(i16vec4) Bitcast 464
Store 448(i16v4) 465
466: 17(int) Load 451(u32)
467: 57(i16vec2) Bitcast 466
Store 452(u16v2) 467
468: 77(int64_t) Load 456(u64)
469:457(i16vec4) Bitcast 468
Store 459(u16v4) 469
472:202(i16vec3) Load 370(u16v)
473: 36(int16_t) Load 372(u16)
474:202(i16vec3) CompositeConstruct 473 473 473
475: 439(bvec3) ULessThan 472 474
Store 471(bv) 475
476: 52(i16vec2) Load 357(i16v)
477: 14(int16_t) Load 360(i16)
478: 52(i16vec2) CompositeConstruct 477 477
479: 174(bvec2) SLessThan 476 478
480: 289(ptr) AccessChain 471(bv) 291
481: 173(bool) CompositeExtract 479 0
Store 480 481
482:193(i16vec3) Load 356(u16v)
483: 36(int16_t) Load 358(u16)
484:193(i16vec3) CompositeConstruct 483 483 483
485: 425(bvec3) UGreaterThan 482 484
Store 457(bv) 485
486: 52(i16vec2) Load 343(i16v)
487: 14(int16_t) Load 346(i16)
488: 52(i16vec2) CompositeConstruct 487 487
489: 174(bvec2) SGreaterThan 486 488
490: 280(ptr) AccessChain 457(bv) 282
491: 173(bool) CompositeExtract 489 0
Store 490 491
492: 280(ptr) AccessChain 457(bv) 264
493: 173(bool) CompositeExtract 489 1
482: 289(ptr) AccessChain 471(bv) 273
483: 173(bool) CompositeExtract 479 1
Store 482 483
484:202(i16vec3) Load 370(u16v)
485: 36(int16_t) Load 372(u16)
486:202(i16vec3) CompositeConstruct 485 485 485
487: 439(bvec3) ULessThanEqual 484 486
Store 471(bv) 487
488: 52(i16vec2) Load 357(i16v)
489: 14(int16_t) Load 360(i16)
490: 52(i16vec2) CompositeConstruct 489 489
491: 174(bvec2) SLessThanEqual 488 490
492: 289(ptr) AccessChain 471(bv) 291
493: 173(bool) CompositeExtract 491 0
Store 492 493
494:193(i16vec3) Load 356(u16v)
495: 36(int16_t) Load 358(u16)
496:193(i16vec3) CompositeConstruct 495 495 495
497: 425(bvec3) UGreaterThanEqual 494 496
Store 457(bv) 497
498: 52(i16vec2) Load 343(i16v)
499: 14(int16_t) Load 346(i16)
500: 52(i16vec2) CompositeConstruct 499 499
501: 174(bvec2) SGreaterThanEqual 498 500
502: 280(ptr) AccessChain 457(bv) 282
503: 173(bool) CompositeExtract 501 0
Store 502 503
504: 280(ptr) AccessChain 457(bv) 264
505: 173(bool) CompositeExtract 501 1
494: 289(ptr) AccessChain 471(bv) 273
495: 173(bool) CompositeExtract 491 1
Store 494 495
496:202(i16vec3) Load 370(u16v)
497: 36(int16_t) Load 372(u16)
498:202(i16vec3) CompositeConstruct 497 497 497
499: 439(bvec3) UGreaterThan 496 498
Store 471(bv) 499
500: 52(i16vec2) Load 357(i16v)
501: 14(int16_t) Load 360(i16)
502: 52(i16vec2) CompositeConstruct 501 501
503: 174(bvec2) SGreaterThan 500 502
504: 289(ptr) AccessChain 471(bv) 291
505: 173(bool) CompositeExtract 503 0
Store 504 505
506:193(i16vec3) Load 356(u16v)
507: 36(int16_t) Load 358(u16)
508:193(i16vec3) CompositeConstruct 507 507 507
509: 425(bvec3) IEqual 506 508
Store 457(bv) 509
510: 52(i16vec2) Load 343(i16v)
511: 14(int16_t) Load 346(i16)
512: 52(i16vec2) CompositeConstruct 511 511
513: 174(bvec2) IEqual 510 512
514: 280(ptr) AccessChain 457(bv) 282
515: 173(bool) CompositeExtract 513 0
Store 514 515
516: 280(ptr) AccessChain 457(bv) 264
517: 173(bool) CompositeExtract 513 1
506: 289(ptr) AccessChain 471(bv) 273
507: 173(bool) CompositeExtract 503 1
Store 506 507
508:202(i16vec3) Load 370(u16v)
509: 36(int16_t) Load 372(u16)
510:202(i16vec3) CompositeConstruct 509 509 509
511: 439(bvec3) UGreaterThanEqual 508 510
Store 471(bv) 511
512: 52(i16vec2) Load 357(i16v)
513: 14(int16_t) Load 360(i16)
514: 52(i16vec2) CompositeConstruct 513 513
515: 174(bvec2) SGreaterThanEqual 512 514
516: 289(ptr) AccessChain 471(bv) 291
517: 173(bool) CompositeExtract 515 0
Store 516 517
518:193(i16vec3) Load 356(u16v)
519: 36(int16_t) Load 358(u16)
520:193(i16vec3) CompositeConstruct 519 519 519
521: 425(bvec3) INotEqual 518 520
Store 457(bv) 521
522: 52(i16vec2) Load 343(i16v)
523: 14(int16_t) Load 346(i16)
524: 52(i16vec2) CompositeConstruct 523 523
525: 174(bvec2) INotEqual 522 524
526: 280(ptr) AccessChain 457(bv) 282
527: 173(bool) CompositeExtract 525 0
Store 526 527
528: 280(ptr) AccessChain 457(bv) 264
529: 173(bool) CompositeExtract 525 1
518: 289(ptr) AccessChain 471(bv) 273
519: 173(bool) CompositeExtract 515 1
Store 518 519
520:202(i16vec3) Load 370(u16v)
521: 36(int16_t) Load 372(u16)
522:202(i16vec3) CompositeConstruct 521 521 521
523: 439(bvec3) IEqual 520 522
Store 471(bv) 523
524: 52(i16vec2) Load 357(i16v)
525: 14(int16_t) Load 360(i16)
526: 52(i16vec2) CompositeConstruct 525 525
527: 174(bvec2) IEqual 524 526
528: 289(ptr) AccessChain 471(bv) 291
529: 173(bool) CompositeExtract 527 0
Store 528 529
530: 289(ptr) AccessChain 471(bv) 273
531: 173(bool) CompositeExtract 527 1
Store 530 531
532:202(i16vec3) Load 370(u16v)
533: 36(int16_t) Load 372(u16)
534:202(i16vec3) CompositeConstruct 533 533 533
535: 439(bvec3) INotEqual 532 534
Store 471(bv) 535
536: 52(i16vec2) Load 357(i16v)
537: 14(int16_t) Load 360(i16)
538: 52(i16vec2) CompositeConstruct 537 537
539: 174(bvec2) INotEqual 536 538
540: 289(ptr) AccessChain 471(bv) 291
541: 173(bool) CompositeExtract 539 0
Store 540 541
542: 289(ptr) AccessChain 471(bv) 273
543: 173(bool) CompositeExtract 539 1
Store 542 543
Return
FunctionEnd

View File

@ -1,7 +1,7 @@
spv.int8.frag
// Module Version 10300
// Generated by (magic number): 8000a
// Id's are bound by 530
// Id's are bound by 544
Capability Shader
Capability Float16
@ -48,53 +48,55 @@ spv.int8.frag
Name 117 "f64v"
Name 144 "u16v"
Name 174 "bv"
Name 192 "u8v"
Name 197 "i8"
Name 217 "i"
Name 224 "uv"
Name 240 "i16"
Name 276 "b"
Name 338 "i8v"
Name 341 "i8"
Name 351 "u8v"
Name 353 "u8"
Name 423 "i16"
Name 426 "i32"
Name 429 "i8v4"
Name 433 "u16"
Name 434 "u8v2"
Name 437 "u32"
Name 440 "u8v4"
Name 452 "bv"
Name 525 "Block"
MemberName 525(Block) 0 "i8"
MemberName 525(Block) 1 "i8v2"
MemberName 525(Block) 2 "i8v3"
MemberName 525(Block) 3 "i8v4"
MemberName 525(Block) 4 "u8"
MemberName 525(Block) 5 "u8v2"
MemberName 525(Block) 6 "u8v3"
MemberName 525(Block) 7 "u8v4"
Name 527 "block"
Name 528 "si8"
Name 529 "su8"
Name 193 "arr"
Name 201 "u8v"
Name 206 "i8"
Name 226 "i"
Name 233 "uv"
Name 249 "i16"
Name 285 "b"
Name 348 "f"
Name 352 "i8v"
Name 355 "i8"
Name 365 "u8v"
Name 367 "u8"
Name 437 "i16"
Name 440 "i32"
Name 443 "i8v4"
Name 447 "u16"
Name 448 "u8v2"
Name 451 "u32"
Name 454 "u8v4"
Name 466 "bv"
Name 539 "Block"
MemberName 539(Block) 0 "i8"
MemberName 539(Block) 1 "i8v2"
MemberName 539(Block) 2 "i8v3"
MemberName 539(Block) 3 "i8v4"
MemberName 539(Block) 4 "u8"
MemberName 539(Block) 5 "u8v2"
MemberName 539(Block) 6 "u8v3"
MemberName 539(Block) 7 "u8v4"
Name 541 "block"
Name 542 "si8"
Name 543 "su8"
MemberDecorate 24(Uniforms) 0 Offset 0
Decorate 24(Uniforms) Block
Decorate 26 DescriptorSet 0
Decorate 26 Binding 0
MemberDecorate 525(Block) 0 Offset 0
MemberDecorate 525(Block) 1 Offset 2
MemberDecorate 525(Block) 2 Offset 4
MemberDecorate 525(Block) 3 Offset 8
MemberDecorate 525(Block) 4 Offset 12
MemberDecorate 525(Block) 5 Offset 14
MemberDecorate 525(Block) 6 Offset 16
MemberDecorate 525(Block) 7 Offset 20
Decorate 525(Block) Block
Decorate 527(block) DescriptorSet 0
Decorate 527(block) Binding 1
Decorate 528(si8) SpecId 100
Decorate 529(su8) SpecId 101
MemberDecorate 539(Block) 0 Offset 0
MemberDecorate 539(Block) 1 Offset 2
MemberDecorate 539(Block) 2 Offset 4
MemberDecorate 539(Block) 3 Offset 8
MemberDecorate 539(Block) 4 Offset 12
MemberDecorate 539(Block) 5 Offset 14
MemberDecorate 539(Block) 6 Offset 16
MemberDecorate 539(Block) 7 Offset 20
Decorate 539(Block) Block
Decorate 541(block) DescriptorSet 0
Decorate 541(block) Binding 1
Decorate 542(si8) SpecId 100
Decorate 543(su8) SpecId 101
2: TypeVoid
3: TypeFunction 2
14: TypeInt 8 1
@ -159,36 +161,45 @@ spv.int8.frag
182: 36(int8_t) Constant 1
183: 49(i8vec2) ConstantComposite 181 181
184: 49(i8vec2) ConstantComposite 182 182
190: TypeVector 36(int8_t) 3
191: TypePointer Function 190(i8vec3)
194: TypeVector 14(int8_t) 3
216: TypePointer Function 27(int)
222: TypeVector 17(int) 3
223: TypePointer Function 222(ivec3)
239: TypePointer Function 57(int16_t)
261: 17(int) Constant 1
267: 17(int) Constant 2
275: TypePointer Function 171(bool)
277: 17(int) Constant 0
291: TypePointer Function 17(int)
349: 52(i8vec2) ConstantComposite 21 21
358: 190(i8vec3) ConstantComposite 181 181 181
400: 171(bool) ConstantTrue
407: 171(bool) ConstantFalse
408: 172(bvec2) ConstantComposite 407 407
420: TypeVector 171(bool) 3
421: 420(bvec3) ConstantComposite 407 407 407
427: TypeVector 14(int8_t) 4
428: TypePointer Function 427(i8vec4)
432: TypePointer Function 64(int16_t)
438: TypeVector 36(int8_t) 4
439: TypePointer Function 438(i8vec4)
451: TypePointer Function 420(bvec3)
525(Block): TypeStruct 14(int8_t) 52(i8vec2) 194(i8vec3) 427(i8vec4) 36(int8_t) 49(i8vec2) 190(i8vec3) 438(i8vec4)
526: TypePointer Uniform 525(Block)
527(block): 526(ptr) Variable Uniform
528(si8): 14(int8_t) SpecConstant 4294967286
529(su8): 36(int8_t) SpecConstant 20
190: 17(int) Constant 4
191: TypeArray 108(float) 190
192: TypePointer Function 191
194: 108(float) Constant 1065353216
195: 108(float) Constant 1073741824
196: 108(float) Constant 1077936128
197: 108(float) Constant 1082130432
198: 191 ConstantComposite 194 195 196 197
199: TypeVector 36(int8_t) 3
200: TypePointer Function 199(i8vec3)
203: TypeVector 14(int8_t) 3
225: TypePointer Function 27(int)
231: TypeVector 17(int) 3
232: TypePointer Function 231(ivec3)
248: TypePointer Function 57(int16_t)
270: 17(int) Constant 1
276: 17(int) Constant 2
284: TypePointer Function 171(bool)
286: 17(int) Constant 0
300: TypePointer Function 17(int)
347: TypePointer Function 108(float)
363: 52(i8vec2) ConstantComposite 21 21
372: 199(i8vec3) ConstantComposite 181 181 181
414: 171(bool) ConstantTrue
421: 171(bool) ConstantFalse
422: 172(bvec2) ConstantComposite 421 421
434: TypeVector 171(bool) 3
435: 434(bvec3) ConstantComposite 421 421 421
441: TypeVector 14(int8_t) 4
442: TypePointer Function 441(i8vec4)
446: TypePointer Function 64(int16_t)
452: TypeVector 36(int8_t) 4
453: TypePointer Function 452(i8vec4)
465: TypePointer Function 434(bvec3)
539(Block): TypeStruct 14(int8_t) 52(i8vec2) 203(i8vec3) 441(i8vec4) 36(int8_t) 49(i8vec2) 199(i8vec3) 452(i8vec4)
540: TypePointer Uniform 539(Block)
541(block): 540(ptr) Variable Uniform
542(si8): 14(int8_t) SpecConstant 4294967286
543(su8): 36(int8_t) SpecConstant 20
4(main): 2 Function None 3
5: Label
Return
@ -360,396 +371,403 @@ spv.int8.frag
FunctionEnd
10(operators(): 2 Function None 3
11: Label
192(u8v): 191(ptr) Variable Function
197(i8): 15(ptr) Variable Function
217(i): 216(ptr) Variable Function
224(uv): 223(ptr) Variable Function
240(i16): 239(ptr) Variable Function
276(b): 275(ptr) Variable Function
193: 190(i8vec3) Load 192(u8v)
195: 194(i8vec3) CompositeConstruct 176 176 176
196: 190(i8vec3) IAdd 193 195
Store 192(u8v) 196
198: 14(int8_t) Load 197(i8)
199: 14(int8_t) ISub 198 176
Store 197(i8) 199
200: 14(int8_t) Load 197(i8)
201: 14(int8_t) IAdd 200 176
Store 197(i8) 201
202: 190(i8vec3) Load 192(u8v)
203: 194(i8vec3) CompositeConstruct 176 176 176
204: 190(i8vec3) ISub 202 203
Store 192(u8v) 204
205: 190(i8vec3) Load 192(u8v)
206: 190(i8vec3) Not 205
Store 192(u8v) 206
207: 14(int8_t) Load 197(i8)
Store 197(i8) 207
208: 190(i8vec3) Load 192(u8v)
209: 190(i8vec3) SNegate 208
Store 192(u8v) 209
210: 14(int8_t) Load 197(i8)
211: 14(int8_t) Load 197(i8)
212: 14(int8_t) IAdd 211 210
Store 197(i8) 212
213: 190(i8vec3) Load 192(u8v)
214: 190(i8vec3) Load 192(u8v)
215: 190(i8vec3) ISub 214 213
Store 192(u8v) 215
218: 14(int8_t) Load 197(i8)
219: 27(int) SConvert 218
220: 27(int) Load 217(i)
221: 27(int) IMul 220 219
Store 217(i) 221
225: 190(i8vec3) Load 192(u8v)
226: 222(ivec3) UConvert 225
227: 222(ivec3) Load 224(uv)
228: 222(ivec3) UDiv 227 226
Store 224(uv) 228
229: 14(int8_t) Load 197(i8)
230: 27(int) SConvert 229
231: 17(int) Bitcast 230
232: 222(ivec3) Load 224(uv)
233: 222(ivec3) CompositeConstruct 231 231 231
234: 222(ivec3) UMod 232 233
Store 224(uv) 234
235: 190(i8vec3) Load 192(u8v)
236: 222(ivec3) UConvert 235
237: 222(ivec3) Load 224(uv)
238: 222(ivec3) IAdd 236 237
Store 224(uv) 238
241: 14(int8_t) Load 197(i8)
242: 57(int16_t) SConvert 241
243: 57(int16_t) Load 240(i16)
244: 57(int16_t) ISub 242 243
Store 240(i16) 244
245: 190(i8vec3) Load 192(u8v)
246: 222(ivec3) UConvert 245
247: 222(ivec3) Load 224(uv)
248: 222(ivec3) IMul 246 247
Store 224(uv) 248
249: 14(int8_t) Load 197(i8)
250: 57(int16_t) SConvert 249
251: 57(int16_t) Load 240(i16)
252: 57(int16_t) IMul 250 251
Store 240(i16) 252
253: 14(int8_t) Load 197(i8)
254: 27(int) SConvert 253
255: 27(int) Load 217(i)
256: 27(int) SMod 254 255
Store 217(i) 256
257: 14(int8_t) Load 197(i8)
258: 190(i8vec3) Load 192(u8v)
259: 194(i8vec3) CompositeConstruct 257 257 257
260: 190(i8vec3) ShiftLeftLogical 258 259
Store 192(u8v) 260
262: 37(ptr) AccessChain 192(u8v) 261
263: 36(int8_t) Load 262
264: 14(int8_t) Load 197(i8)
265: 14(int8_t) ShiftRightArithmetic 264 263
Store 197(i8) 265
266: 14(int8_t) Load 197(i8)
268: 37(ptr) AccessChain 192(u8v) 267
269: 36(int8_t) Load 268
270: 14(int8_t) ShiftLeftLogical 266 269
Store 197(i8) 270
271: 190(i8vec3) Load 192(u8v)
272: 14(int8_t) Load 197(i8)
273: 194(i8vec3) CompositeConstruct 272 272 272
274: 190(i8vec3) ShiftLeftLogical 271 273
Store 192(u8v) 274
278: 37(ptr) AccessChain 192(u8v) 277
279: 36(int8_t) Load 278
280: 14(int8_t) Load 197(i8)
281: 36(int8_t) Bitcast 280
282: 171(bool) INotEqual 279 281
Store 276(b) 282
283: 14(int8_t) Load 197(i8)
284: 36(int8_t) Bitcast 283
285: 37(ptr) AccessChain 192(u8v) 277
286: 36(int8_t) Load 285
287: 171(bool) IEqual 284 286
Store 276(b) 287
288: 37(ptr) AccessChain 192(u8v) 277
289: 36(int8_t) Load 288
290: 17(int) UConvert 289
292: 291(ptr) AccessChain 224(uv) 261
293: 17(int) Load 292
294: 171(bool) UGreaterThan 290 293
Store 276(b) 294
295: 14(int8_t) Load 197(i8)
296: 27(int) SConvert 295
297: 27(int) Load 217(i)
298: 171(bool) SLessThan 296 297
Store 276(b) 298
299: 37(ptr) AccessChain 192(u8v) 261
300: 36(int8_t) Load 299
301: 17(int) UConvert 300
302: 291(ptr) AccessChain 224(uv) 277
303: 17(int) Load 302
304: 171(bool) UGreaterThanEqual 301 303
Store 276(b) 304
305: 14(int8_t) Load 197(i8)
306: 27(int) SConvert 305
307: 27(int) Load 217(i)
308: 171(bool) SLessThanEqual 306 307
Store 276(b) 308
309: 14(int8_t) Load 197(i8)
310: 27(int) SConvert 309
311: 17(int) Bitcast 310
312: 222(ivec3) Load 224(uv)
313: 222(ivec3) CompositeConstruct 311 311 311
314: 222(ivec3) BitwiseOr 312 313
Store 224(uv) 314
315: 14(int8_t) Load 197(i8)
316: 27(int) SConvert 315
317: 27(int) Load 217(i)
318: 27(int) BitwiseOr 316 317
Store 217(i) 318
319: 14(int8_t) Load 197(i8)
320: 57(int16_t) SConvert 319
321: 57(int16_t) Load 240(i16)
322: 57(int16_t) BitwiseAnd 321 320
Store 240(i16) 322
323: 190(i8vec3) Load 192(u8v)
324: 222(ivec3) UConvert 323
325: 222(ivec3) Load 224(uv)
326: 222(ivec3) BitwiseAnd 324 325
Store 224(uv) 326
327: 14(int8_t) Load 197(i8)
328: 27(int) SConvert 327
329: 17(int) Bitcast 328
330: 222(ivec3) Load 224(uv)
331: 222(ivec3) CompositeConstruct 329 329 329
332: 222(ivec3) BitwiseXor 330 331
Store 224(uv) 332
333: 190(i8vec3) Load 192(u8v)
334: 14(int8_t) Load 197(i8)
335: 36(int8_t) Bitcast 334
336: 190(i8vec3) CompositeConstruct 335 335 335
337: 190(i8vec3) BitwiseXor 333 336
Store 192(u8v) 337
193(arr): 192(ptr) Variable Function
201(u8v): 200(ptr) Variable Function
206(i8): 15(ptr) Variable Function
226(i): 225(ptr) Variable Function
233(uv): 232(ptr) Variable Function
249(i16): 248(ptr) Variable Function
285(b): 284(ptr) Variable Function
348(f): 347(ptr) Variable Function
Store 193(arr) 198
202: 199(i8vec3) Load 201(u8v)
204: 203(i8vec3) CompositeConstruct 176 176 176
205: 199(i8vec3) IAdd 202 204
Store 201(u8v) 205
207: 14(int8_t) Load 206(i8)
208: 14(int8_t) ISub 207 176
Store 206(i8) 208
209: 14(int8_t) Load 206(i8)
210: 14(int8_t) IAdd 209 176
Store 206(i8) 210
211: 199(i8vec3) Load 201(u8v)
212: 203(i8vec3) CompositeConstruct 176 176 176
213: 199(i8vec3) ISub 211 212
Store 201(u8v) 213
214: 199(i8vec3) Load 201(u8v)
215: 199(i8vec3) Not 214
Store 201(u8v) 215
216: 14(int8_t) Load 206(i8)
Store 206(i8) 216
217: 199(i8vec3) Load 201(u8v)
218: 199(i8vec3) SNegate 217
Store 201(u8v) 218
219: 14(int8_t) Load 206(i8)
220: 14(int8_t) Load 206(i8)
221: 14(int8_t) IAdd 220 219
Store 206(i8) 221
222: 199(i8vec3) Load 201(u8v)
223: 199(i8vec3) Load 201(u8v)
224: 199(i8vec3) ISub 223 222
Store 201(u8v) 224
227: 14(int8_t) Load 206(i8)
228: 27(int) SConvert 227
229: 27(int) Load 226(i)
230: 27(int) IMul 229 228
Store 226(i) 230
234: 199(i8vec3) Load 201(u8v)
235: 231(ivec3) UConvert 234
236: 231(ivec3) Load 233(uv)
237: 231(ivec3) UDiv 236 235
Store 233(uv) 237
238: 14(int8_t) Load 206(i8)
239: 27(int) SConvert 238
240: 17(int) Bitcast 239
241: 231(ivec3) Load 233(uv)
242: 231(ivec3) CompositeConstruct 240 240 240
243: 231(ivec3) UMod 241 242
Store 233(uv) 243
244: 199(i8vec3) Load 201(u8v)
245: 231(ivec3) UConvert 244
246: 231(ivec3) Load 233(uv)
247: 231(ivec3) IAdd 245 246
Store 233(uv) 247
250: 14(int8_t) Load 206(i8)
251: 57(int16_t) SConvert 250
252: 57(int16_t) Load 249(i16)
253: 57(int16_t) ISub 251 252
Store 249(i16) 253
254: 199(i8vec3) Load 201(u8v)
255: 231(ivec3) UConvert 254
256: 231(ivec3) Load 233(uv)
257: 231(ivec3) IMul 255 256
Store 233(uv) 257
258: 14(int8_t) Load 206(i8)
259: 57(int16_t) SConvert 258
260: 57(int16_t) Load 249(i16)
261: 57(int16_t) IMul 259 260
Store 249(i16) 261
262: 14(int8_t) Load 206(i8)
263: 27(int) SConvert 262
264: 27(int) Load 226(i)
265: 27(int) SMod 263 264
Store 226(i) 265
266: 14(int8_t) Load 206(i8)
267: 199(i8vec3) Load 201(u8v)
268: 203(i8vec3) CompositeConstruct 266 266 266
269: 199(i8vec3) ShiftLeftLogical 267 268
Store 201(u8v) 269
271: 37(ptr) AccessChain 201(u8v) 270
272: 36(int8_t) Load 271
273: 14(int8_t) Load 206(i8)
274: 14(int8_t) ShiftRightArithmetic 273 272
Store 206(i8) 274
275: 14(int8_t) Load 206(i8)
277: 37(ptr) AccessChain 201(u8v) 276
278: 36(int8_t) Load 277
279: 14(int8_t) ShiftLeftLogical 275 278
Store 206(i8) 279
280: 199(i8vec3) Load 201(u8v)
281: 14(int8_t) Load 206(i8)
282: 203(i8vec3) CompositeConstruct 281 281 281
283: 199(i8vec3) ShiftLeftLogical 280 282
Store 201(u8v) 283
287: 37(ptr) AccessChain 201(u8v) 286
288: 36(int8_t) Load 287
289: 14(int8_t) Load 206(i8)
290: 36(int8_t) Bitcast 289
291: 171(bool) INotEqual 288 290
Store 285(b) 291
292: 14(int8_t) Load 206(i8)
293: 36(int8_t) Bitcast 292
294: 37(ptr) AccessChain 201(u8v) 286
295: 36(int8_t) Load 294
296: 171(bool) IEqual 293 295
Store 285(b) 296
297: 37(ptr) AccessChain 201(u8v) 286
298: 36(int8_t) Load 297
299: 17(int) UConvert 298
301: 300(ptr) AccessChain 233(uv) 270
302: 17(int) Load 301
303: 171(bool) UGreaterThan 299 302
Store 285(b) 303
304: 14(int8_t) Load 206(i8)
305: 27(int) SConvert 304
306: 27(int) Load 226(i)
307: 171(bool) SLessThan 305 306
Store 285(b) 307
308: 37(ptr) AccessChain 201(u8v) 270
309: 36(int8_t) Load 308
310: 17(int) UConvert 309
311: 300(ptr) AccessChain 233(uv) 286
312: 17(int) Load 311
313: 171(bool) UGreaterThanEqual 310 312
Store 285(b) 313
314: 14(int8_t) Load 206(i8)
315: 27(int) SConvert 314
316: 27(int) Load 226(i)
317: 171(bool) SLessThanEqual 315 316
Store 285(b) 317
318: 14(int8_t) Load 206(i8)
319: 27(int) SConvert 318
320: 17(int) Bitcast 319
321: 231(ivec3) Load 233(uv)
322: 231(ivec3) CompositeConstruct 320 320 320
323: 231(ivec3) BitwiseOr 321 322
Store 233(uv) 323
324: 14(int8_t) Load 206(i8)
325: 27(int) SConvert 324
326: 27(int) Load 226(i)
327: 27(int) BitwiseOr 325 326
Store 226(i) 327
328: 14(int8_t) Load 206(i8)
329: 57(int16_t) SConvert 328
330: 57(int16_t) Load 249(i16)
331: 57(int16_t) BitwiseAnd 330 329
Store 249(i16) 331
332: 199(i8vec3) Load 201(u8v)
333: 231(ivec3) UConvert 332
334: 231(ivec3) Load 233(uv)
335: 231(ivec3) BitwiseAnd 333 334
Store 233(uv) 335
336: 14(int8_t) Load 206(i8)
337: 27(int) SConvert 336
338: 17(int) Bitcast 337
339: 231(ivec3) Load 233(uv)
340: 231(ivec3) CompositeConstruct 338 338 338
341: 231(ivec3) BitwiseXor 339 340
Store 233(uv) 341
342: 199(i8vec3) Load 201(u8v)
343: 14(int8_t) Load 206(i8)
344: 36(int8_t) Bitcast 343
345: 199(i8vec3) CompositeConstruct 344 344 344
346: 199(i8vec3) BitwiseXor 342 345
Store 201(u8v) 346
349: 14(int8_t) Load 206(i8)
350: 347(ptr) AccessChain 193(arr) 349
351: 108(float) Load 350
Store 348(f) 351
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
338(i8v): 53(ptr) Variable Function
341(i8): 15(ptr) Variable Function
351(u8v): 191(ptr) Variable Function
353(u8): 37(ptr) Variable Function
423(i16): 239(ptr) Variable Function
426(i32): 216(ptr) Variable Function
429(i8v4): 428(ptr) Variable Function
433(u16): 432(ptr) Variable Function
434(u8v2): 50(ptr) Variable Function
437(u32): 291(ptr) Variable Function
440(u8v4): 439(ptr) Variable Function
452(bv): 451(ptr) Variable Function
339: 52(i8vec2) Load 338(i8v)
340: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 339
Store 338(i8v) 340
342: 14(int8_t) Load 341(i8)
343: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 342
Store 341(i8) 343
344: 52(i8vec2) Load 338(i8v)
345: 14(int8_t) Load 341(i8)
346: 52(i8vec2) CompositeConstruct 345 345
347: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 344 346
Store 338(i8v) 347
348: 52(i8vec2) Load 338(i8v)
350: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 348 349
Store 338(i8v) 350
352: 190(i8vec3) Load 351(u8v)
354: 36(int8_t) Load 353(u8)
355: 190(i8vec3) CompositeConstruct 354 354 354
356: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 352 355
Store 351(u8v) 356
357: 190(i8vec3) Load 351(u8v)
359: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 358
Store 351(u8v) 359
360: 52(i8vec2) Load 338(i8v)
361: 14(int8_t) Load 341(i8)
362: 52(i8vec2) CompositeConstruct 361 361
363: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 360 362
Store 338(i8v) 363
364: 52(i8vec2) Load 338(i8v)
365: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 364 349
Store 338(i8v) 365
366: 190(i8vec3) Load 351(u8v)
367: 36(int8_t) Load 353(u8)
368: 190(i8vec3) CompositeConstruct 367 367 367
369: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 366 368
Store 351(u8v) 369
370: 190(i8vec3) Load 351(u8v)
371: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 370 358
Store 351(u8v) 371
372: 52(i8vec2) Load 338(i8v)
373: 14(int8_t) Load 341(i8)
374: 14(int8_t) SNegate 373
375: 14(int8_t) Load 341(i8)
376: 52(i8vec2) CompositeConstruct 374 374
377: 52(i8vec2) CompositeConstruct 375 375
378: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 372 376 377
Store 338(i8v) 378
379: 52(i8vec2) Load 338(i8v)
380: 52(i8vec2) Load 338(i8v)
381: 52(i8vec2) SNegate 380
382: 52(i8vec2) Load 338(i8v)
383: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 381 382
Store 338(i8v) 383
384: 190(i8vec3) Load 351(u8v)
385: 36(int8_t) Load 353(u8)
386: 36(int8_t) SNegate 385
387: 36(int8_t) Load 353(u8)
388: 190(i8vec3) CompositeConstruct 386 386 386
389: 190(i8vec3) CompositeConstruct 387 387 387
390: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 384 388 389
Store 351(u8v) 390
391: 190(i8vec3) Load 351(u8v)
392: 190(i8vec3) Load 351(u8v)
393: 190(i8vec3) SNegate 392
394: 190(i8vec3) Load 351(u8v)
395: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 393 394
Store 351(u8v) 395
396: 15(ptr) AccessChain 338(i8v) 277
397: 14(int8_t) Load 396
398: 15(ptr) AccessChain 338(i8v) 261
399: 14(int8_t) Load 398
401: 14(int8_t) Select 400 399 397
Store 341(i8) 401
402: 14(int8_t) Load 341(i8)
403: 52(i8vec2) CompositeConstruct 402 402
404: 14(int8_t) Load 341(i8)
405: 14(int8_t) SNegate 404
406: 52(i8vec2) CompositeConstruct 405 405
409: 52(i8vec2) Select 408 406 403
Store 338(i8v) 409
410: 37(ptr) AccessChain 351(u8v) 277
411: 36(int8_t) Load 410
412: 37(ptr) AccessChain 351(u8v) 261
413: 36(int8_t) Load 412
414: 36(int8_t) Select 400 413 411
Store 353(u8) 414
415: 36(int8_t) Load 353(u8)
416: 190(i8vec3) CompositeConstruct 415 415 415
417: 36(int8_t) Load 353(u8)
418: 36(int8_t) SNegate 417
419: 190(i8vec3) CompositeConstruct 418 418 418
422: 190(i8vec3) Select 421 419 416
Store 351(u8v) 422
424: 52(i8vec2) Load 338(i8v)
425: 57(int16_t) Bitcast 424
Store 423(i16) 425
430: 427(i8vec4) Load 429(i8v4)
431: 27(int) Bitcast 430
Store 426(i32) 431
435: 49(i8vec2) Load 434(u8v2)
436: 64(int16_t) Bitcast 435
Store 433(u16) 436
441: 438(i8vec4) Load 440(u8v4)
442: 17(int) Bitcast 441
Store 437(u32) 442
443: 57(int16_t) Load 423(i16)
444: 52(i8vec2) Bitcast 443
Store 338(i8v) 444
445: 27(int) Load 426(i32)
446: 427(i8vec4) Bitcast 445
Store 429(i8v4) 446
447: 64(int16_t) Load 433(u16)
448: 49(i8vec2) Bitcast 447
Store 434(u8v2) 448
449: 17(int) Load 437(u32)
450: 438(i8vec4) Bitcast 449
Store 440(u8v4) 450
453: 190(i8vec3) Load 351(u8v)
454: 36(int8_t) Load 353(u8)
455: 190(i8vec3) CompositeConstruct 454 454 454
456: 420(bvec3) ULessThan 453 455
Store 452(bv) 456
457: 52(i8vec2) Load 338(i8v)
458: 14(int8_t) Load 341(i8)
459: 52(i8vec2) CompositeConstruct 458 458
460: 172(bvec2) SLessThan 457 459
461: 275(ptr) AccessChain 452(bv) 277
462: 171(bool) CompositeExtract 460 0
Store 461 462
463: 275(ptr) AccessChain 452(bv) 261
464: 171(bool) CompositeExtract 460 1
Store 463 464
465: 190(i8vec3) Load 351(u8v)
466: 36(int8_t) Load 353(u8)
467: 190(i8vec3) CompositeConstruct 466 466 466
468: 420(bvec3) ULessThanEqual 465 467
Store 452(bv) 468
469: 52(i8vec2) Load 338(i8v)
470: 14(int8_t) Load 341(i8)
471: 52(i8vec2) CompositeConstruct 470 470
472: 172(bvec2) SLessThanEqual 469 471
473: 275(ptr) AccessChain 452(bv) 277
474: 171(bool) CompositeExtract 472 0
Store 473 474
475: 275(ptr) AccessChain 452(bv) 261
476: 171(bool) CompositeExtract 472 1
352(i8v): 53(ptr) Variable Function
355(i8): 15(ptr) Variable Function
365(u8v): 200(ptr) Variable Function
367(u8): 37(ptr) Variable Function
437(i16): 248(ptr) Variable Function
440(i32): 225(ptr) Variable Function
443(i8v4): 442(ptr) Variable Function
447(u16): 446(ptr) Variable Function
448(u8v2): 50(ptr) Variable Function
451(u32): 300(ptr) Variable Function
454(u8v4): 453(ptr) Variable Function
466(bv): 465(ptr) Variable Function
353: 52(i8vec2) Load 352(i8v)
354: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 353
Store 352(i8v) 354
356: 14(int8_t) Load 355(i8)
357: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 356
Store 355(i8) 357
358: 52(i8vec2) Load 352(i8v)
359: 14(int8_t) Load 355(i8)
360: 52(i8vec2) CompositeConstruct 359 359
361: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 358 360
Store 352(i8v) 361
362: 52(i8vec2) Load 352(i8v)
364: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 362 363
Store 352(i8v) 364
366: 199(i8vec3) Load 365(u8v)
368: 36(int8_t) Load 367(u8)
369: 199(i8vec3) CompositeConstruct 368 368 368
370: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 366 369
Store 365(u8v) 370
371: 199(i8vec3) Load 365(u8v)
373: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 372
Store 365(u8v) 373
374: 52(i8vec2) Load 352(i8v)
375: 14(int8_t) Load 355(i8)
376: 52(i8vec2) CompositeConstruct 375 375
377: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 374 376
Store 352(i8v) 377
378: 52(i8vec2) Load 352(i8v)
379: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 378 363
Store 352(i8v) 379
380: 199(i8vec3) Load 365(u8v)
381: 36(int8_t) Load 367(u8)
382: 199(i8vec3) CompositeConstruct 381 381 381
383: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 380 382
Store 365(u8v) 383
384: 199(i8vec3) Load 365(u8v)
385: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 384 372
Store 365(u8v) 385
386: 52(i8vec2) Load 352(i8v)
387: 14(int8_t) Load 355(i8)
388: 14(int8_t) SNegate 387
389: 14(int8_t) Load 355(i8)
390: 52(i8vec2) CompositeConstruct 388 388
391: 52(i8vec2) CompositeConstruct 389 389
392: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 390 391
Store 352(i8v) 392
393: 52(i8vec2) Load 352(i8v)
394: 52(i8vec2) Load 352(i8v)
395: 52(i8vec2) SNegate 394
396: 52(i8vec2) Load 352(i8v)
397: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 393 395 396
Store 352(i8v) 397
398: 199(i8vec3) Load 365(u8v)
399: 36(int8_t) Load 367(u8)
400: 36(int8_t) SNegate 399
401: 36(int8_t) Load 367(u8)
402: 199(i8vec3) CompositeConstruct 400 400 400
403: 199(i8vec3) CompositeConstruct 401 401 401
404: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 402 403
Store 365(u8v) 404
405: 199(i8vec3) Load 365(u8v)
406: 199(i8vec3) Load 365(u8v)
407: 199(i8vec3) SNegate 406
408: 199(i8vec3) Load 365(u8v)
409: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 405 407 408
Store 365(u8v) 409
410: 15(ptr) AccessChain 352(i8v) 286
411: 14(int8_t) Load 410
412: 15(ptr) AccessChain 352(i8v) 270
413: 14(int8_t) Load 412
415: 14(int8_t) Select 414 413 411
Store 355(i8) 415
416: 14(int8_t) Load 355(i8)
417: 52(i8vec2) CompositeConstruct 416 416
418: 14(int8_t) Load 355(i8)
419: 14(int8_t) SNegate 418
420: 52(i8vec2) CompositeConstruct 419 419
423: 52(i8vec2) Select 422 420 417
Store 352(i8v) 423
424: 37(ptr) AccessChain 365(u8v) 286
425: 36(int8_t) Load 424
426: 37(ptr) AccessChain 365(u8v) 270
427: 36(int8_t) Load 426
428: 36(int8_t) Select 414 427 425
Store 367(u8) 428
429: 36(int8_t) Load 367(u8)
430: 199(i8vec3) CompositeConstruct 429 429 429
431: 36(int8_t) Load 367(u8)
432: 36(int8_t) SNegate 431
433: 199(i8vec3) CompositeConstruct 432 432 432
436: 199(i8vec3) Select 435 433 430
Store 365(u8v) 436
438: 52(i8vec2) Load 352(i8v)
439: 57(int16_t) Bitcast 438
Store 437(i16) 439
444: 441(i8vec4) Load 443(i8v4)
445: 27(int) Bitcast 444
Store 440(i32) 445
449: 49(i8vec2) Load 448(u8v2)
450: 64(int16_t) Bitcast 449
Store 447(u16) 450
455: 452(i8vec4) Load 454(u8v4)
456: 17(int) Bitcast 455
Store 451(u32) 456
457: 57(int16_t) Load 437(i16)
458: 52(i8vec2) Bitcast 457
Store 352(i8v) 458
459: 27(int) Load 440(i32)
460: 441(i8vec4) Bitcast 459
Store 443(i8v4) 460
461: 64(int16_t) Load 447(u16)
462: 49(i8vec2) Bitcast 461
Store 448(u8v2) 462
463: 17(int) Load 451(u32)
464: 452(i8vec4) Bitcast 463
Store 454(u8v4) 464
467: 199(i8vec3) Load 365(u8v)
468: 36(int8_t) Load 367(u8)
469: 199(i8vec3) CompositeConstruct 468 468 468
470: 434(bvec3) ULessThan 467 469
Store 466(bv) 470
471: 52(i8vec2) Load 352(i8v)
472: 14(int8_t) Load 355(i8)
473: 52(i8vec2) CompositeConstruct 472 472
474: 172(bvec2) SLessThan 471 473
475: 284(ptr) AccessChain 466(bv) 286
476: 171(bool) CompositeExtract 474 0
Store 475 476
477: 190(i8vec3) Load 351(u8v)
478: 36(int8_t) Load 353(u8)
479: 190(i8vec3) CompositeConstruct 478 478 478
480: 420(bvec3) UGreaterThan 477 479
Store 452(bv) 480
481: 52(i8vec2) Load 338(i8v)
482: 14(int8_t) Load 341(i8)
483: 52(i8vec2) CompositeConstruct 482 482
484: 172(bvec2) SGreaterThan 481 483
485: 275(ptr) AccessChain 452(bv) 277
486: 171(bool) CompositeExtract 484 0
Store 485 486
487: 275(ptr) AccessChain 452(bv) 261
488: 171(bool) CompositeExtract 484 1
477: 284(ptr) AccessChain 466(bv) 270
478: 171(bool) CompositeExtract 474 1
Store 477 478
479: 199(i8vec3) Load 365(u8v)
480: 36(int8_t) Load 367(u8)
481: 199(i8vec3) CompositeConstruct 480 480 480
482: 434(bvec3) ULessThanEqual 479 481
Store 466(bv) 482
483: 52(i8vec2) Load 352(i8v)
484: 14(int8_t) Load 355(i8)
485: 52(i8vec2) CompositeConstruct 484 484
486: 172(bvec2) SLessThanEqual 483 485
487: 284(ptr) AccessChain 466(bv) 286
488: 171(bool) CompositeExtract 486 0
Store 487 488
489: 190(i8vec3) Load 351(u8v)
490: 36(int8_t) Load 353(u8)
491: 190(i8vec3) CompositeConstruct 490 490 490
492: 420(bvec3) UGreaterThanEqual 489 491
Store 452(bv) 492
493: 52(i8vec2) Load 338(i8v)
494: 14(int8_t) Load 341(i8)
495: 52(i8vec2) CompositeConstruct 494 494
496: 172(bvec2) SGreaterThanEqual 493 495
497: 275(ptr) AccessChain 452(bv) 277
498: 171(bool) CompositeExtract 496 0
Store 497 498
499: 275(ptr) AccessChain 452(bv) 261
500: 171(bool) CompositeExtract 496 1
489: 284(ptr) AccessChain 466(bv) 270
490: 171(bool) CompositeExtract 486 1
Store 489 490
491: 199(i8vec3) Load 365(u8v)
492: 36(int8_t) Load 367(u8)
493: 199(i8vec3) CompositeConstruct 492 492 492
494: 434(bvec3) UGreaterThan 491 493
Store 466(bv) 494
495: 52(i8vec2) Load 352(i8v)
496: 14(int8_t) Load 355(i8)
497: 52(i8vec2) CompositeConstruct 496 496
498: 172(bvec2) SGreaterThan 495 497
499: 284(ptr) AccessChain 466(bv) 286
500: 171(bool) CompositeExtract 498 0
Store 499 500
501: 190(i8vec3) Load 351(u8v)
502: 36(int8_t) Load 353(u8)
503: 190(i8vec3) CompositeConstruct 502 502 502
504: 420(bvec3) IEqual 501 503
Store 452(bv) 504
505: 52(i8vec2) Load 338(i8v)
506: 14(int8_t) Load 341(i8)
507: 52(i8vec2) CompositeConstruct 506 506
508: 172(bvec2) IEqual 505 507
509: 275(ptr) AccessChain 452(bv) 277
510: 171(bool) CompositeExtract 508 0
Store 509 510
511: 275(ptr) AccessChain 452(bv) 261
512: 171(bool) CompositeExtract 508 1
501: 284(ptr) AccessChain 466(bv) 270
502: 171(bool) CompositeExtract 498 1
Store 501 502
503: 199(i8vec3) Load 365(u8v)
504: 36(int8_t) Load 367(u8)
505: 199(i8vec3) CompositeConstruct 504 504 504
506: 434(bvec3) UGreaterThanEqual 503 505
Store 466(bv) 506
507: 52(i8vec2) Load 352(i8v)
508: 14(int8_t) Load 355(i8)
509: 52(i8vec2) CompositeConstruct 508 508
510: 172(bvec2) SGreaterThanEqual 507 509
511: 284(ptr) AccessChain 466(bv) 286
512: 171(bool) CompositeExtract 510 0
Store 511 512
513: 190(i8vec3) Load 351(u8v)
514: 36(int8_t) Load 353(u8)
515: 190(i8vec3) CompositeConstruct 514 514 514
516: 420(bvec3) INotEqual 513 515
Store 452(bv) 516
517: 52(i8vec2) Load 338(i8v)
518: 14(int8_t) Load 341(i8)
519: 52(i8vec2) CompositeConstruct 518 518
520: 172(bvec2) INotEqual 517 519
521: 275(ptr) AccessChain 452(bv) 277
522: 171(bool) CompositeExtract 520 0
Store 521 522
523: 275(ptr) AccessChain 452(bv) 261
524: 171(bool) CompositeExtract 520 1
513: 284(ptr) AccessChain 466(bv) 270
514: 171(bool) CompositeExtract 510 1
Store 513 514
515: 199(i8vec3) Load 365(u8v)
516: 36(int8_t) Load 367(u8)
517: 199(i8vec3) CompositeConstruct 516 516 516
518: 434(bvec3) IEqual 515 517
Store 466(bv) 518
519: 52(i8vec2) Load 352(i8v)
520: 14(int8_t) Load 355(i8)
521: 52(i8vec2) CompositeConstruct 520 520
522: 172(bvec2) IEqual 519 521
523: 284(ptr) AccessChain 466(bv) 286
524: 171(bool) CompositeExtract 522 0
Store 523 524
525: 284(ptr) AccessChain 466(bv) 270
526: 171(bool) CompositeExtract 522 1
Store 525 526
527: 199(i8vec3) Load 365(u8v)
528: 36(int8_t) Load 367(u8)
529: 199(i8vec3) CompositeConstruct 528 528 528
530: 434(bvec3) INotEqual 527 529
Store 466(bv) 530
531: 52(i8vec2) Load 352(i8v)
532: 14(int8_t) Load 355(i8)
533: 52(i8vec2) CompositeConstruct 532 532
534: 172(bvec2) INotEqual 531 533
535: 284(ptr) AccessChain 466(bv) 286
536: 171(bool) CompositeExtract 534 0
Store 535 536
537: 284(ptr) AccessChain 466(bv) 270
538: 171(bool) CompositeExtract 534 1
Store 537 538
Return
FunctionEnd

View File

@ -116,6 +116,8 @@ void operators()
int32_t i;
int64_t i64;
bool b;
float f;
float arr[4] = {1.0, 2.0, 3.0, 4.0};
// Unary
u16v++;
@ -163,6 +165,9 @@ void operators()
uv = u16v & uv;
uv ^= i16;
u16v = u16v ^ i16;
// Index
f = arr[i16];
}
void builtinFuncs()

View File

@ -117,6 +117,8 @@ void operators()
int32_t i;
int16_t i16;
bool b;
float arr[4] = {1.0, 2.0, 3.0, 4.0};
float f;
// Unary
u8v++;
@ -164,6 +166,9 @@ void operators()
uv = u8v & uv;
uv ^= i8;
u8v = u8v ^ i8;
// Index
f = arr[i8];
}
void builtinFuncs()

View File

@ -3029,11 +3029,14 @@ void TParseContext::constantValueCheck(TIntermTyped* node, const char* token)
//
// Both test, and if necessary spit out an error, to see if the node is really
// an integer.
// a 32-bit integer or can implicitly convert to one.
//
void TParseContext::integerCheck(const TIntermTyped* node, const char* token)
{
if ((node->getBasicType() == EbtInt || node->getBasicType() == EbtUint) && node->isScalar())
auto from_type = node->getBasicType();
if ((from_type == EbtInt || from_type == EbtUint ||
intermediate.canImplicitlyPromote(from_type, EbtInt, EOpNull) ||
intermediate.canImplicitlyPromote(from_type, EbtUint, EOpNull)) && node->isScalar())
return;
error(node->getLoc(), "scalar integer expression required", token, "");