From 82b2668d584a23766c54e0d387c471c05515293c Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Mon, 18 Oct 2021 18:28:01 -0600 Subject: [PATCH] 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 --- SPIRV/SpvPostProcess.cpp | 31 +- Test/baseResults/spv.int16.frag.out | 934 +++++++++++---------- Test/baseResults/spv.int8.frag.out | 930 ++++++++++---------- Test/spv.int16.frag | 5 + Test/spv.int8.frag | 5 + glslang/MachineIndependent/ParseHelper.cpp | 7 +- 6 files changed, 988 insertions(+), 924 deletions(-) diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index d283febef..dd6dabce0 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -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; + case OpAccessChain: + case OpPtrAccessChain: + if (isPointerType(typeId)) + break; + if (basicTypeOp == OpTypeInt) { + if (width == 16) + addCapability(CapabilityInt16); + else if (width == 8) + addCapability(CapabilityInt8); + } default: - if (basicTypeOp == OpTypeFloat && width == 16) - addCapability(CapabilityFloat16); - if (basicTypeOp == OpTypeInt && width == 16) - addCapability(CapabilityInt16); - if (basicTypeOp == OpTypeInt && width == 8) - addCapability(CapabilityInt8); + 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; } } diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out index 43cb09fee..3e10a7db2 100644 --- a/Test/baseResults/spv.int16.frag.out +++ b/Test/baseResults/spv.int16.frag.out @@ -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 diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out index a0da3e99f..e9cd5f865 100644 --- a/Test/baseResults/spv.int8.frag.out +++ b/Test/baseResults/spv.int8.frag.out @@ -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 diff --git a/Test/spv.int16.frag b/Test/spv.int16.frag index 2feff4f8d..26a8c9bda 100644 --- a/Test/spv.int16.frag +++ b/Test/spv.int16.frag @@ -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() diff --git a/Test/spv.int8.frag b/Test/spv.int8.frag index 80702b759..bd3de17a2 100644 --- a/Test/spv.int8.frag +++ b/Test/spv.int8.frag @@ -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() diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index b2b187b4f..ca374217f 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -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, "");