glslang/Test/baseResults/spv.load.bool.array.interface.block.frag.out
Shahbaz Youssefi 097215f618 Fix loading bool arrays from interface blocks
SPIR-V disallows bool in interface blocks, which is emulated with uint.
When loading a bool variable (through accessChainLoad()), it's converted
from uint to bool if it came from an interface block.

This was handled for bool and bvecN, but not for bool arrays.  This
change implements the conversion for bool arrays.

Closes #2694
2021-07-15 22:29:48 -04:00

120 lines
5.6 KiB
Plaintext

spv.load.bool.array.interface.block.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 80
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 77
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
Name 4 "main"
Name 11 "ssbo"
MemberName 11(ssbo) 0 "bo"
Name 13 ""
Name 18 "ub"
MemberName 18(ub) 0 "bi"
Name 20 ""
Name 77 "color"
Decorate 8 ArrayStride 4
Decorate 10 ArrayStride 12
MemberDecorate 11(ssbo) 0 Offset 0
Decorate 11(ssbo) BufferBlock
Decorate 13 DescriptorSet 0
Decorate 13 Binding 1
Decorate 16 ArrayStride 16
Decorate 17 ArrayStride 48
MemberDecorate 18(ub) 0 Offset 0
Decorate 18(ub) Block
Decorate 20 DescriptorSet 0
Decorate 20 Binding 0
Decorate 77(color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 3
8: TypeArray 6(int) 7
9: 6(int) Constant 2
10: TypeArray 8 9
11(ssbo): TypeStruct 10
12: TypePointer Uniform 11(ssbo)
13: 12(ptr) Variable Uniform
14: TypeInt 32 1
15: 14(int) Constant 0
16: TypeArray 6(int) 7
17: TypeArray 16 9
18(ub): TypeStruct 17
19: TypePointer Uniform 18(ub)
20: 19(ptr) Variable Uniform
21: TypePointer Uniform 17
24: TypeBool
25: TypeArray 24(bool) 7
26: TypeArray 25 9
29: 6(int) Constant 0
45: TypePointer Uniform 10
48: TypePointer Uniform 8
51: 6(int) Constant 1
53: TypePointer Uniform 6(int)
56: 14(int) Constant 1
60: 14(int) Constant 2
74: TypeFloat 32
75: TypeVector 74(float) 4
76: TypePointer Output 75(fvec4)
77(color): 76(ptr) Variable Output
78: 74(float) Constant 0
79: 75(fvec4) ConstantComposite 78 78 78 78
4(main): 2 Function None 3
5: Label
22: 21(ptr) AccessChain 20 15
23: 17 Load 22
27: 16 CompositeExtract 23 0
28: 6(int) CompositeExtract 27 0
30: 24(bool) INotEqual 28 29
31: 6(int) CompositeExtract 27 1
32: 24(bool) INotEqual 31 29
33: 6(int) CompositeExtract 27 2
34: 24(bool) INotEqual 33 29
35: 25 CompositeConstruct 30 32 34
36: 16 CompositeExtract 23 1
37: 6(int) CompositeExtract 36 0
38: 24(bool) INotEqual 37 29
39: 6(int) CompositeExtract 36 1
40: 24(bool) INotEqual 39 29
41: 6(int) CompositeExtract 36 2
42: 24(bool) INotEqual 41 29
43: 25 CompositeConstruct 38 40 42
44: 26 CompositeConstruct 35 43
46: 45(ptr) AccessChain 13 15
47: 25 CompositeExtract 44 0
49: 48(ptr) AccessChain 46 15
50: 24(bool) CompositeExtract 47 0
52: 6(int) Select 50 51 29
54: 53(ptr) AccessChain 49 15
Store 54 52
55: 24(bool) CompositeExtract 47 1
57: 6(int) Select 55 51 29
58: 53(ptr) AccessChain 49 56
Store 58 57
59: 24(bool) CompositeExtract 47 2
61: 6(int) Select 59 51 29
62: 53(ptr) AccessChain 49 60
Store 62 61
63: 25 CompositeExtract 44 1
64: 48(ptr) AccessChain 46 56
65: 24(bool) CompositeExtract 63 0
66: 6(int) Select 65 51 29
67: 53(ptr) AccessChain 64 15
Store 67 66
68: 24(bool) CompositeExtract 63 1
69: 6(int) Select 68 51 29
70: 53(ptr) AccessChain 64 56
Store 70 69
71: 24(bool) CompositeExtract 63 2
72: 6(int) Select 71 51 29
73: 53(ptr) AccessChain 64 60
Store 73 72
Store 77(color) 79
Return
FunctionEnd