Implement GL_EXT_shader_16bit_storage and GL_EXT_shader_8bit_storage extensions.

These introduce limited support for 8/16-bit types such that they can only be accessed in buffer memory and converted to/from 32-bit types.

Contributed from Khronos-internal work.
This commit is contained in:
John Kessenich 2018-07-03 13:19:51 -06:00
parent eefab240f7
commit 312dcfb070
43 changed files with 6179 additions and 2765 deletions

View file

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