glslang/Test/baseResults/spv.bufferhandle6.frag.out
Steven Perron 33c7e30860
Don't emit duplicate decorations. (#3635)
It is invalid if the same decoration is applied to the same id multiple
times. This adds a check before adding a decoration that the decoration
is not already in the list. If it is, then the duplicate is not added.

Fixes #3627
2024-06-28 19:16:59 -04:00

239 lines
12 KiB
Plaintext

spv.bufferhandle6.frag
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 165
Capability Shader
Capability PhysicalStorageBufferAddressesEXT
Extension "SPV_KHR_physical_storage_buffer"
Extension "SPV_KHR_storage_buffer_storage_class"
1: ExtInstImport "GLSL.std.450"
MemoryModel PhysicalStorageBuffer64EXT GLSL450
EntryPoint Fragment 4 "main" 154
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_EXT_buffer_reference"
Name 4 "main"
Name 8 "accum"
Name 15 "T1"
MemberName 15(T1) 0 "a"
MemberName 15(T1) 1 "b"
MemberName 15(T1) 2 "c"
MemberName 15(T1) 3 "d"
Name 18 "T1"
MemberName 18(T1) 0 "a"
MemberName 18(T1) 1 "b"
MemberName 18(T1) 2 "c"
MemberName 18(T1) 3 "d"
Name 21 "x"
Name 30 "Block"
MemberName 30(Block) 0 "identity"
Name 32 "pc"
Name 136 "color"
Name 149 "image0_0"
Name 154 "gl_FragCoord"
Decorate 12 ArrayStride 4
Decorate 14 ArrayStride 8
Decorate 15(T1) Block
MemberDecorate 15(T1) 0 Offset 0
MemberDecorate 15(T1) 1 Offset 32
MemberDecorate 15(T1) 2 Offset 48
MemberDecorate 15(T1) 3 Offset 80
Decorate 16 ArrayStride 4
Decorate 17 ArrayStride 8
Decorate 18(T1) Block
MemberDecorate 18(T1) 0 Offset 0
MemberDecorate 18(T1) 1 Offset 32
MemberDecorate 18(T1) 2 Offset 48
MemberDecorate 18(T1) 3 Offset 80
Decorate 19 ArrayStride 8
Decorate 21(x) Binding 1
Decorate 21(x) DescriptorSet 3
Decorate 29 ArrayStride 4
Decorate 30(Block) Block
MemberDecorate 30(Block) 0 Offset 0
Decorate 149(image0_0) Binding 0
Decorate 149(image0_0) DescriptorSet 3
Decorate 154(gl_FragCoord) BuiltIn FragCoord
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypePointer Function 6(int)
9: 6(int) Constant 0
10: TypeInt 32 0
11: 10(int) Constant 2
12: TypeArray 6(int) 11
TypeForwardPointer 13 PhysicalStorageBufferEXT
14: TypeArray 13 11
15(T1): TypeStruct 12 6(int) 14 13
16: TypeArray 6(int) 11
17: TypeArray 13 11
18(T1): TypeStruct 16 6(int) 17 13
13: TypePointer PhysicalStorageBufferEXT 18(T1)
19: TypeArray 13(ptr) 11
20: TypePointer StorageBuffer 15(T1)
21(x): 20(ptr) Variable StorageBuffer
22: TypePointer StorageBuffer 6(int)
28: 10(int) Constant 32
29: TypeArray 6(int) 28
30(Block): TypeStruct 29
31: TypePointer PushConstant 30(Block)
32(pc): 31(ptr) Variable PushConstant
33: 6(int) Constant 1
34: TypePointer PushConstant 6(int)
44: 6(int) Constant 2
48: TypePointer StorageBuffer 13(ptr)
51: TypePointer PhysicalStorageBufferEXT 6(int)
54: 6(int) Constant 3
64: 6(int) Constant 4
72: 6(int) Constant 5
82: 6(int) Constant 6
94: 6(int) Constant 7
104: 6(int) Constant 8
112: 6(int) Constant 9
122: 6(int) Constant 10
130: 6(int) Constant 11
134: TypeVector 10(int) 4
135: TypePointer Function 134(ivec4)
138: TypeBool
140: 10(int) Constant 0
141: 134(ivec4) ConstantComposite 140 140 140 140
142: 10(int) Constant 1
143: 134(ivec4) ConstantComposite 142 140 140 142
144: TypeVector 138(bool) 4
147: TypeImage 10(int) 2D nonsampled format:R32ui
148: TypePointer UniformConstant 147
149(image0_0): 148(ptr) Variable UniformConstant
151: TypeFloat 32
152: TypeVector 151(float) 4
153: TypePointer Input 152(fvec4)
154(gl_FragCoord): 153(ptr) Variable Input
155: TypePointer Input 151(float)
162: TypeVector 6(int) 2
4(main): 2 Function None 3
5: Label
8(accum): 7(ptr) Variable Function
136(color): 135(ptr) Variable Function
Store 8(accum) 9
23: 22(ptr) AccessChain 21(x) 9 9
24: 6(int) Load 23
25: 6(int) ISub 24 9
26: 6(int) Load 8(accum)
27: 6(int) BitwiseOr 26 25
Store 8(accum) 27
35: 34(ptr) AccessChain 32(pc) 9 33
36: 6(int) Load 35
37: 22(ptr) AccessChain 21(x) 9 36
38: 6(int) Load 37
39: 6(int) ISub 38 33
40: 6(int) Load 8(accum)
41: 6(int) BitwiseOr 40 39
Store 8(accum) 41
42: 22(ptr) AccessChain 21(x) 33
43: 6(int) Load 42
45: 6(int) ISub 43 44
46: 6(int) Load 8(accum)
47: 6(int) BitwiseOr 46 45
Store 8(accum) 47
49: 48(ptr) AccessChain 21(x) 44 9
50: 13(ptr) Load 49
52: 51(ptr) AccessChain 50 9 9
53: 6(int) Load 52 Aligned 4
55: 6(int) ISub 53 54
56: 6(int) Load 8(accum)
57: 6(int) BitwiseOr 56 55
Store 8(accum) 57
58: 48(ptr) AccessChain 21(x) 44 9
59: 13(ptr) Load 58
60: 34(ptr) AccessChain 32(pc) 9 33
61: 6(int) Load 60
62: 51(ptr) AccessChain 59 9 61
63: 6(int) Load 62 Aligned 4
65: 6(int) ISub 63 64
66: 6(int) Load 8(accum)
67: 6(int) BitwiseOr 66 65
Store 8(accum) 67
68: 48(ptr) AccessChain 21(x) 44 9
69: 13(ptr) Load 68
70: 51(ptr) AccessChain 69 33
71: 6(int) Load 70 Aligned 16
73: 6(int) ISub 71 72
74: 6(int) Load 8(accum)
75: 6(int) BitwiseOr 74 73
Store 8(accum) 75
76: 34(ptr) AccessChain 32(pc) 9 33
77: 6(int) Load 76
78: 48(ptr) AccessChain 21(x) 44 77
79: 13(ptr) Load 78
80: 51(ptr) AccessChain 79 9 9
81: 6(int) Load 80 Aligned 4
83: 6(int) ISub 81 82
84: 6(int) Load 8(accum)
85: 6(int) BitwiseOr 84 83
Store 8(accum) 85
86: 34(ptr) AccessChain 32(pc) 9 33
87: 6(int) Load 86
88: 48(ptr) AccessChain 21(x) 44 87
89: 13(ptr) Load 88
90: 34(ptr) AccessChain 32(pc) 9 33
91: 6(int) Load 90
92: 51(ptr) AccessChain 89 9 91
93: 6(int) Load 92 Aligned 4
95: 6(int) ISub 93 94
96: 6(int) Load 8(accum)
97: 6(int) BitwiseOr 96 95
Store 8(accum) 97
98: 34(ptr) AccessChain 32(pc) 9 33
99: 6(int) Load 98
100: 48(ptr) AccessChain 21(x) 44 99
101: 13(ptr) Load 100
102: 51(ptr) AccessChain 101 33
103: 6(int) Load 102 Aligned 16
105: 6(int) ISub 103 104
106: 6(int) Load 8(accum)
107: 6(int) BitwiseOr 106 105
Store 8(accum) 107
108: 48(ptr) AccessChain 21(x) 54
109: 13(ptr) Load 108
110: 51(ptr) AccessChain 109 9 9
111: 6(int) Load 110 Aligned 4
113: 6(int) ISub 111 112
114: 6(int) Load 8(accum)
115: 6(int) BitwiseOr 114 113
Store 8(accum) 115
116: 48(ptr) AccessChain 21(x) 54
117: 13(ptr) Load 116
118: 34(ptr) AccessChain 32(pc) 9 33
119: 6(int) Load 118
120: 51(ptr) AccessChain 117 9 119
121: 6(int) Load 120 Aligned 4
123: 6(int) ISub 121 122
124: 6(int) Load 8(accum)
125: 6(int) BitwiseOr 124 123
Store 8(accum) 125
126: 48(ptr) AccessChain 21(x) 54
127: 13(ptr) Load 126
128: 51(ptr) AccessChain 127 33
129: 6(int) Load 128 Aligned 16
131: 6(int) ISub 129 130
132: 6(int) Load 8(accum)
133: 6(int) BitwiseOr 132 131
Store 8(accum) 133
137: 6(int) Load 8(accum)
139: 138(bool) INotEqual 137 9
145: 144(bvec4) CompositeConstruct 139 139 139 139
146: 134(ivec4) Select 145 141 143
Store 136(color) 146
150: 147 Load 149(image0_0)
156: 155(ptr) AccessChain 154(gl_FragCoord) 140
157: 151(float) Load 156
158: 6(int) ConvertFToS 157
159: 155(ptr) AccessChain 154(gl_FragCoord) 142
160: 151(float) Load 159
161: 6(int) ConvertFToS 160
163: 162(ivec2) CompositeConstruct 158 161
164: 134(ivec4) Load 136(color)
ImageWrite 150 163 164
Return
FunctionEnd