Merge pull request #516 from amdrexu/feature3

SPV: Implement the extension SPV_KHR_shader_ballot
This commit is contained in:
John Kessenich
2016-09-22 10:54:18 -06:00
committed by GitHub
8 changed files with 480 additions and 341 deletions

View File

@@ -5,16 +5,18 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Linked compute stage:
Missing functionality: shader ballot
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 241
// Id's are bound by 245
Capability Shader
Capability Int64
Capability Groups
Capability SubgroupBallotKHR
Extension "SPV_KHR_shader_ballot"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 10 22 24 27 30 33
EntryPoint GLCompute 4 "main" 10 12 21 23 26 29 32
ExecutionMode 4 LocalSize 8 8 1
Source GLSL 450
SourceExtension "GL_ARB_gpu_shader_int64"
@@ -22,293 +24,304 @@ Missing functionality: shader ballot
Name 4 "main"
Name 8 "invocation"
Name 10 "gl_SubGroupInvocationARB"
Name 13 "gl_SubGroupSizeARB"
Name 20 "relMask"
Name 22 "gl_SubGroupEqMaskARB"
Name 24 "gl_SubGroupGeMaskARB"
Name 27 "gl_SubGroupGtMaskARB"
Name 30 "gl_SubGroupLeMaskARB"
Name 33 "gl_SubGroupLtMaskARB"
Name 48 "Buffers"
MemberName 48(Buffers) 0 "f4"
MemberName 48(Buffers) 1 "i4"
MemberName 48(Buffers) 2 "u4"
Name 51 "data"
MemberDecorate 48(Buffers) 0 Offset 0
MemberDecorate 48(Buffers) 1 Offset 16
MemberDecorate 48(Buffers) 2 Offset 32
Decorate 48(Buffers) BufferBlock
Decorate 51(data) DescriptorSet 0
Decorate 51(data) Binding 0
Decorate 240 BuiltIn WorkgroupSize
Name 12 "gl_SubGroupSizeARB"
Name 19 "relMask"
Name 21 "gl_SubGroupEqMaskARB"
Name 23 "gl_SubGroupGeMaskARB"
Name 26 "gl_SubGroupGtMaskARB"
Name 29 "gl_SubGroupLeMaskARB"
Name 32 "gl_SubGroupLtMaskARB"
Name 52 "Buffers"
MemberName 52(Buffers) 0 "f4"
MemberName 52(Buffers) 1 "i4"
MemberName 52(Buffers) 2 "u4"
Name 55 "data"
Decorate 10(gl_SubGroupInvocationARB) BuiltIn SubgroupLocalInvocationId
Decorate 12(gl_SubGroupSizeARB) BuiltIn SubgroupSize
Decorate 21(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR
Decorate 23(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR
Decorate 26(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR
Decorate 29(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR
Decorate 32(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR
MemberDecorate 52(Buffers) 0 Offset 0
MemberDecorate 52(Buffers) 1 Offset 16
MemberDecorate 52(Buffers) 2 Offset 32
Decorate 52(Buffers) BufferBlock
Decorate 55(data) DescriptorSet 0
Decorate 55(data) Binding 0
Decorate 244 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
9: TypePointer Input 6(int)
10(gl_SubGroupInvocationARB): 9(ptr) Variable Input
12: TypePointer UniformConstant 6(int)
13(gl_SubGroupSizeARB): 12(ptr) Variable UniformConstant
16: 6(int) Constant 4
18: TypeInt 64 0
19: TypePointer Function 18(int)
21: TypePointer Input 18(int)
22(gl_SubGroupEqMaskARB): 21(ptr) Variable Input
24(gl_SubGroupGeMaskARB): 21(ptr) Variable Input
27(gl_SubGroupGtMaskARB): 21(ptr) Variable Input
30(gl_SubGroupLeMaskARB): 21(ptr) Variable Input
33(gl_SubGroupLtMaskARB): 21(ptr) Variable Input
37: TypeBool
38: 37(bool) ConstantTrue
43: TypeFloat 32
44: TypeVector 43(float) 4
45: TypeInt 32 1
46: TypeVector 45(int) 4
47: TypeVector 6(int) 4
48(Buffers): TypeStruct 44(fvec4) 46(ivec4) 47(ivec4)
49: TypeArray 48(Buffers) 16
50: TypePointer Uniform 49
51(data): 50(ptr) Variable Uniform
53: 45(int) Constant 0
54: 6(int) Constant 0
55: TypePointer Uniform 43(float)
62: 45(int) Constant 1
63: TypeVector 43(float) 2
64: TypePointer Uniform 44(fvec4)
74: 45(int) Constant 2
75: TypeVector 43(float) 3
85: 45(int) Constant 3
92: TypePointer Uniform 45(int)
99: TypeVector 45(int) 2
100: TypePointer Uniform 46(ivec4)
110: TypeVector 45(int) 3
126: TypePointer Uniform 6(int)
133: TypeVector 6(int) 2
134: TypePointer Uniform 47(ivec4)
144: TypeVector 6(int) 3
238: 6(int) Constant 8
239: 6(int) Constant 1
240: 144(ivec3) ConstantComposite 238 238 239
12(gl_SubGroupSizeARB): 9(ptr) Variable Input
15: 6(int) Constant 4
17: TypeInt 64 0
18: TypePointer Function 17(int)
20: TypePointer Input 17(int)
21(gl_SubGroupEqMaskARB): 20(ptr) Variable Input
23(gl_SubGroupGeMaskARB): 20(ptr) Variable Input
26(gl_SubGroupGtMaskARB): 20(ptr) Variable Input
29(gl_SubGroupLeMaskARB): 20(ptr) Variable Input
32(gl_SubGroupLtMaskARB): 20(ptr) Variable Input
36: TypeBool
37: 36(bool) ConstantTrue
38: TypeVector 6(int) 4
42: TypeVector 6(int) 2
48: TypeFloat 32
49: TypeVector 48(float) 4
50: TypeInt 32 1
51: TypeVector 50(int) 4
52(Buffers): TypeStruct 49(fvec4) 51(ivec4) 38(ivec4)
53: TypeArray 52(Buffers) 15
54: TypePointer Uniform 53
55(data): 54(ptr) Variable Uniform
57: 50(int) Constant 0
58: 6(int) Constant 0
59: TypePointer Uniform 48(float)
63: 6(int) Constant 3
67: 50(int) Constant 1
68: TypeVector 48(float) 2
69: TypePointer Uniform 49(fvec4)
79: 50(int) Constant 2
80: TypeVector 48(float) 3
90: 50(int) Constant 3
97: TypePointer Uniform 50(int)
104: TypeVector 50(int) 2
105: TypePointer Uniform 51(ivec4)
115: TypeVector 50(int) 3
131: TypePointer Uniform 6(int)
138: TypePointer Uniform 38(ivec4)
148: TypeVector 6(int) 3
242: 6(int) Constant 8
243: 6(int) Constant 1
244: 148(ivec3) ConstantComposite 242 242 243
4(main): 2 Function None 3
5: Label
8(invocation): 7(ptr) Variable Function
20(relMask): 19(ptr) Variable Function
19(relMask): 18(ptr) Variable Function
11: 6(int) Load 10(gl_SubGroupInvocationARB)
14: 6(int) Load 13(gl_SubGroupSizeARB)
15: 6(int) IAdd 11 14
17: 6(int) UMod 15 16
Store 8(invocation) 17
23: 18(int) Load 22(gl_SubGroupEqMaskARB)
25: 18(int) Load 24(gl_SubGroupGeMaskARB)
26: 18(int) IAdd 23 25
28: 18(int) Load 27(gl_SubGroupGtMaskARB)
29: 18(int) IAdd 26 28
31: 18(int) Load 30(gl_SubGroupLeMaskARB)
32: 18(int) IAdd 29 31
34: 18(int) Load 33(gl_SubGroupLtMaskARB)
35: 18(int) IAdd 32 34
Store 20(relMask) 35
36: 18(int) Load 20(relMask)
39: 18(int) ExtInst 1(GLSL.std.450) 0(Unknown) 38
40: 37(bool) IEqual 36 39
SelectionMerge 42 None
BranchConditional 40 41 159
41: Label
52: 6(int) Load 8(invocation)
56: 55(ptr) AccessChain 51(data) 53 53 54
57: 43(float) Load 56
58: 6(int) Load 8(invocation)
59: 43(float) ExtInst 1(GLSL.std.450) 0(Unknown) 57 58
60: 55(ptr) AccessChain 51(data) 52 53 54
Store 60 59
61: 6(int) Load 8(invocation)
65: 64(ptr) AccessChain 51(data) 62 53
66: 44(fvec4) Load 65
67: 63(fvec2) VectorShuffle 66 66 0 1
68: 6(int) Load 8(invocation)
69: 63(fvec2) ExtInst 1(GLSL.std.450) 0(Unknown) 67 68
70: 64(ptr) AccessChain 51(data) 61 53
71: 44(fvec4) Load 70
72: 44(fvec4) VectorShuffle 71 69 4 5 2 3
Store 70 72
13: 6(int) Load 12(gl_SubGroupSizeARB)
14: 6(int) IAdd 11 13
16: 6(int) UMod 14 15
Store 8(invocation) 16
22: 17(int) Load 21(gl_SubGroupEqMaskARB)
24: 17(int) Load 23(gl_SubGroupGeMaskARB)
25: 17(int) IAdd 22 24
27: 17(int) Load 26(gl_SubGroupGtMaskARB)
28: 17(int) IAdd 25 27
30: 17(int) Load 29(gl_SubGroupLeMaskARB)
31: 17(int) IAdd 28 30
33: 17(int) Load 32(gl_SubGroupLtMaskARB)
34: 17(int) IAdd 31 33
Store 19(relMask) 34
35: 17(int) Load 19(relMask)
39: 38(ivec4) SubgroupBallotKHR 37
40: 6(int) CompositeExtract 39 0
41: 6(int) CompositeExtract 39 1
43: 42(ivec2) CompositeConstruct 40 41
44: 17(int) Bitcast 43
45: 36(bool) IEqual 35 44
SelectionMerge 47 None
BranchConditional 45 46 163
46: Label
56: 6(int) Load 8(invocation)
60: 59(ptr) AccessChain 55(data) 57 57 58
61: 48(float) Load 60
62: 6(int) Load 8(invocation)
64: 48(float) GroupBroadcast 63 61 62
65: 59(ptr) AccessChain 55(data) 56 57 58
Store 65 64
66: 6(int) Load 8(invocation)
70: 69(ptr) AccessChain 55(data) 67 57
71: 49(fvec4) Load 70
72: 68(fvec2) VectorShuffle 71 71 0 1
73: 6(int) Load 8(invocation)
76: 64(ptr) AccessChain 51(data) 74 53
77: 44(fvec4) Load 76
78: 75(fvec3) VectorShuffle 77 77 0 1 2
79: 6(int) Load 8(invocation)
80: 75(fvec3) ExtInst 1(GLSL.std.450) 0(Unknown) 78 79
81: 64(ptr) AccessChain 51(data) 73 53
82: 44(fvec4) Load 81
83: 44(fvec4) VectorShuffle 82 80 4 5 6 3
Store 81 83
74: 68(fvec2) GroupBroadcast 63 72 73
75: 69(ptr) AccessChain 55(data) 66 57
76: 49(fvec4) Load 75
77: 49(fvec4) VectorShuffle 76 74 4 5 2 3
Store 75 77
78: 6(int) Load 8(invocation)
81: 69(ptr) AccessChain 55(data) 79 57
82: 49(fvec4) Load 81
83: 80(fvec3) VectorShuffle 82 82 0 1 2
84: 6(int) Load 8(invocation)
86: 64(ptr) AccessChain 51(data) 85 53
87: 44(fvec4) Load 86
88: 6(int) Load 8(invocation)
89: 44(fvec4) ExtInst 1(GLSL.std.450) 0(Unknown) 87 88
90: 64(ptr) AccessChain 51(data) 84 53
Store 90 89
91: 6(int) Load 8(invocation)
93: 92(ptr) AccessChain 51(data) 53 62 54
94: 45(int) Load 93
95: 6(int) Load 8(invocation)
96: 45(int) ExtInst 1(GLSL.std.450) 0(Unknown) 94 95
97: 92(ptr) AccessChain 51(data) 91 62 54
Store 97 96
98: 6(int) Load 8(invocation)
101: 100(ptr) AccessChain 51(data) 62 62
102: 46(ivec4) Load 101
103: 99(ivec2) VectorShuffle 102 102 0 1
104: 6(int) Load 8(invocation)
105: 99(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 103 104
106: 100(ptr) AccessChain 51(data) 98 62
107: 46(ivec4) Load 106
108: 46(ivec4) VectorShuffle 107 105 4 5 2 3
Store 106 108
85: 80(fvec3) GroupBroadcast 63 83 84
86: 69(ptr) AccessChain 55(data) 78 57
87: 49(fvec4) Load 86
88: 49(fvec4) VectorShuffle 87 85 4 5 6 3
Store 86 88
89: 6(int) Load 8(invocation)
91: 69(ptr) AccessChain 55(data) 90 57
92: 49(fvec4) Load 91
93: 6(int) Load 8(invocation)
94: 49(fvec4) GroupBroadcast 63 92 93
95: 69(ptr) AccessChain 55(data) 89 57
Store 95 94
96: 6(int) Load 8(invocation)
98: 97(ptr) AccessChain 55(data) 57 67 58
99: 50(int) Load 98
100: 6(int) Load 8(invocation)
101: 50(int) GroupBroadcast 63 99 100
102: 97(ptr) AccessChain 55(data) 96 67 58
Store 102 101
103: 6(int) Load 8(invocation)
106: 105(ptr) AccessChain 55(data) 67 67
107: 51(ivec4) Load 106
108: 104(ivec2) VectorShuffle 107 107 0 1
109: 6(int) Load 8(invocation)
111: 100(ptr) AccessChain 51(data) 74 62
112: 46(ivec4) Load 111
113: 110(ivec3) VectorShuffle 112 112 0 1 2
110: 104(ivec2) GroupBroadcast 63 108 109
111: 105(ptr) AccessChain 55(data) 103 67
112: 51(ivec4) Load 111
113: 51(ivec4) VectorShuffle 112 110 4 5 2 3
Store 111 113
114: 6(int) Load 8(invocation)
115: 110(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 113 114
116: 100(ptr) AccessChain 51(data) 109 62
117: 46(ivec4) Load 116
118: 46(ivec4) VectorShuffle 117 115 4 5 6 3
Store 116 118
116: 105(ptr) AccessChain 55(data) 79 67
117: 51(ivec4) Load 116
118: 115(ivec3) VectorShuffle 117 117 0 1 2
119: 6(int) Load 8(invocation)
120: 100(ptr) AccessChain 51(data) 85 62
121: 46(ivec4) Load 120
122: 6(int) Load 8(invocation)
123: 46(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 121 122
124: 100(ptr) AccessChain 51(data) 119 62
Store 124 123
125: 6(int) Load 8(invocation)
127: 126(ptr) AccessChain 51(data) 53 74 54
128: 6(int) Load 127
129: 6(int) Load 8(invocation)
130: 6(int) ExtInst 1(GLSL.std.450) 0(Unknown) 128 129
131: 126(ptr) AccessChain 51(data) 125 74 54
Store 131 130
132: 6(int) Load 8(invocation)
135: 134(ptr) AccessChain 51(data) 62 74
136: 47(ivec4) Load 135
137: 133(ivec2) VectorShuffle 136 136 0 1
138: 6(int) Load 8(invocation)
139: 133(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 137 138
140: 134(ptr) AccessChain 51(data) 132 74
141: 47(ivec4) Load 140
142: 47(ivec4) VectorShuffle 141 139 4 5 2 3
Store 140 142
143: 6(int) Load 8(invocation)
145: 134(ptr) AccessChain 51(data) 74 74
146: 47(ivec4) Load 145
147: 144(ivec3) VectorShuffle 146 146 0 1 2
148: 6(int) Load 8(invocation)
149: 144(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 147 148
150: 134(ptr) AccessChain 51(data) 143 74
151: 47(ivec4) Load 150
152: 47(ivec4) VectorShuffle 151 149 4 5 6 3
Store 150 152
153: 6(int) Load 8(invocation)
154: 134(ptr) AccessChain 51(data) 85 74
155: 47(ivec4) Load 154
156: 6(int) Load 8(invocation)
157: 47(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 155 156
158: 134(ptr) AccessChain 51(data) 153 74
Store 158 157
Branch 42
159: Label
120: 115(ivec3) GroupBroadcast 63 118 119
121: 105(ptr) AccessChain 55(data) 114 67
122: 51(ivec4) Load 121
123: 51(ivec4) VectorShuffle 122 120 4 5 6 3
Store 121 123
124: 6(int) Load 8(invocation)
125: 105(ptr) AccessChain 55(data) 90 67
126: 51(ivec4) Load 125
127: 6(int) Load 8(invocation)
128: 51(ivec4) GroupBroadcast 63 126 127
129: 105(ptr) AccessChain 55(data) 124 67
Store 129 128
130: 6(int) Load 8(invocation)
132: 131(ptr) AccessChain 55(data) 57 79 58
133: 6(int) Load 132
134: 6(int) Load 8(invocation)
135: 6(int) GroupBroadcast 63 133 134
136: 131(ptr) AccessChain 55(data) 130 79 58
Store 136 135
137: 6(int) Load 8(invocation)
139: 138(ptr) AccessChain 55(data) 67 79
140: 38(ivec4) Load 139
141: 42(ivec2) VectorShuffle 140 140 0 1
142: 6(int) Load 8(invocation)
143: 42(ivec2) GroupBroadcast 63 141 142
144: 138(ptr) AccessChain 55(data) 137 79
145: 38(ivec4) Load 144
146: 38(ivec4) VectorShuffle 145 143 4 5 2 3
Store 144 146
147: 6(int) Load 8(invocation)
149: 138(ptr) AccessChain 55(data) 79 79
150: 38(ivec4) Load 149
151: 148(ivec3) VectorShuffle 150 150 0 1 2
152: 6(int) Load 8(invocation)
153: 148(ivec3) GroupBroadcast 63 151 152
154: 138(ptr) AccessChain 55(data) 147 79
155: 38(ivec4) Load 154
156: 38(ivec4) VectorShuffle 155 153 4 5 6 3
Store 154 156
157: 6(int) Load 8(invocation)
158: 138(ptr) AccessChain 55(data) 90 79
159: 38(ivec4) Load 158
160: 6(int) Load 8(invocation)
161: 55(ptr) AccessChain 51(data) 53 53 54
162: 43(float) Load 161
163: 43(float) ExtInst 1(GLSL.std.450) 0(Unknown) 162
164: 55(ptr) AccessChain 51(data) 160 53 54
Store 164 163
165: 6(int) Load 8(invocation)
166: 64(ptr) AccessChain 51(data) 62 53
167: 44(fvec4) Load 166
168: 63(fvec2) VectorShuffle 167 167 0 1
169: 63(fvec2) ExtInst 1(GLSL.std.450) 0(Unknown) 168
170: 64(ptr) AccessChain 51(data) 165 53
171: 44(fvec4) Load 170
172: 44(fvec4) VectorShuffle 171 169 4 5 2 3
Store 170 172
173: 6(int) Load 8(invocation)
174: 64(ptr) AccessChain 51(data) 74 53
175: 44(fvec4) Load 174
176: 75(fvec3) VectorShuffle 175 175 0 1 2
177: 75(fvec3) ExtInst 1(GLSL.std.450) 0(Unknown) 176
178: 64(ptr) AccessChain 51(data) 173 53
179: 44(fvec4) Load 178
180: 44(fvec4) VectorShuffle 179 177 4 5 6 3
Store 178 180
181: 6(int) Load 8(invocation)
182: 64(ptr) AccessChain 51(data) 85 53
183: 44(fvec4) Load 182
184: 44(fvec4) ExtInst 1(GLSL.std.450) 0(Unknown) 183
185: 64(ptr) AccessChain 51(data) 181 53
Store 185 184
186: 6(int) Load 8(invocation)
187: 92(ptr) AccessChain 51(data) 53 62 54
188: 45(int) Load 187
189: 45(int) ExtInst 1(GLSL.std.450) 0(Unknown) 188
190: 92(ptr) AccessChain 51(data) 186 62 54
Store 190 189
191: 6(int) Load 8(invocation)
192: 100(ptr) AccessChain 51(data) 62 62
193: 46(ivec4) Load 192
194: 99(ivec2) VectorShuffle 193 193 0 1
195: 99(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 194
196: 100(ptr) AccessChain 51(data) 191 62
197: 46(ivec4) Load 196
198: 46(ivec4) VectorShuffle 197 195 4 5 2 3
Store 196 198
199: 6(int) Load 8(invocation)
200: 100(ptr) AccessChain 51(data) 74 62
201: 46(ivec4) Load 200
202: 110(ivec3) VectorShuffle 201 201 0 1 2
203: 110(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 202
204: 100(ptr) AccessChain 51(data) 199 62
205: 46(ivec4) Load 204
206: 46(ivec4) VectorShuffle 205 203 4 5 6 3
Store 204 206
207: 6(int) Load 8(invocation)
208: 100(ptr) AccessChain 51(data) 85 62
209: 46(ivec4) Load 208
210: 46(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 209
211: 100(ptr) AccessChain 51(data) 207 62
Store 211 210
212: 6(int) Load 8(invocation)
213: 126(ptr) AccessChain 51(data) 53 74 54
214: 6(int) Load 213
215: 6(int) ExtInst 1(GLSL.std.450) 0(Unknown) 214
216: 126(ptr) AccessChain 51(data) 212 74 54
Store 216 215
217: 6(int) Load 8(invocation)
218: 134(ptr) AccessChain 51(data) 62 74
219: 47(ivec4) Load 218
220: 133(ivec2) VectorShuffle 219 219 0 1
221: 133(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 220
222: 134(ptr) AccessChain 51(data) 217 74
223: 47(ivec4) Load 222
224: 47(ivec4) VectorShuffle 223 221 4 5 2 3
Store 222 224
225: 6(int) Load 8(invocation)
226: 134(ptr) AccessChain 51(data) 74 74
227: 47(ivec4) Load 226
228: 144(ivec3) VectorShuffle 227 227 0 1 2
229: 144(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 228
230: 134(ptr) AccessChain 51(data) 225 74
231: 47(ivec4) Load 230
232: 47(ivec4) VectorShuffle 231 229 4 5 6 3
Store 230 232
233: 6(int) Load 8(invocation)
234: 134(ptr) AccessChain 51(data) 85 74
235: 47(ivec4) Load 234
236: 47(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 235
237: 134(ptr) AccessChain 51(data) 233 74
Store 237 236
Branch 42
42: Label
161: 38(ivec4) GroupBroadcast 63 159 160
162: 138(ptr) AccessChain 55(data) 157 79
Store 162 161
Branch 47
163: Label
164: 6(int) Load 8(invocation)
165: 59(ptr) AccessChain 55(data) 57 57 58
166: 48(float) Load 165
167: 48(float) SubgroupFirstInvocationKHR 166
168: 59(ptr) AccessChain 55(data) 164 57 58
Store 168 167
169: 6(int) Load 8(invocation)
170: 69(ptr) AccessChain 55(data) 67 57
171: 49(fvec4) Load 170
172: 68(fvec2) VectorShuffle 171 171 0 1
173: 68(fvec2) SubgroupFirstInvocationKHR 172
174: 69(ptr) AccessChain 55(data) 169 57
175: 49(fvec4) Load 174
176: 49(fvec4) VectorShuffle 175 173 4 5 2 3
Store 174 176
177: 6(int) Load 8(invocation)
178: 69(ptr) AccessChain 55(data) 79 57
179: 49(fvec4) Load 178
180: 80(fvec3) VectorShuffle 179 179 0 1 2
181: 80(fvec3) SubgroupFirstInvocationKHR 180
182: 69(ptr) AccessChain 55(data) 177 57
183: 49(fvec4) Load 182
184: 49(fvec4) VectorShuffle 183 181 4 5 6 3
Store 182 184
185: 6(int) Load 8(invocation)
186: 69(ptr) AccessChain 55(data) 90 57
187: 49(fvec4) Load 186
188: 49(fvec4) SubgroupFirstInvocationKHR 187
189: 69(ptr) AccessChain 55(data) 185 57
Store 189 188
190: 6(int) Load 8(invocation)
191: 97(ptr) AccessChain 55(data) 57 67 58
192: 50(int) Load 191
193: 50(int) SubgroupFirstInvocationKHR 192
194: 97(ptr) AccessChain 55(data) 190 67 58
Store 194 193
195: 6(int) Load 8(invocation)
196: 105(ptr) AccessChain 55(data) 67 67
197: 51(ivec4) Load 196
198: 104(ivec2) VectorShuffle 197 197 0 1
199: 104(ivec2) SubgroupFirstInvocationKHR 198
200: 105(ptr) AccessChain 55(data) 195 67
201: 51(ivec4) Load 200
202: 51(ivec4) VectorShuffle 201 199 4 5 2 3
Store 200 202
203: 6(int) Load 8(invocation)
204: 105(ptr) AccessChain 55(data) 79 67
205: 51(ivec4) Load 204
206: 115(ivec3) VectorShuffle 205 205 0 1 2
207: 115(ivec3) SubgroupFirstInvocationKHR 206
208: 105(ptr) AccessChain 55(data) 203 67
209: 51(ivec4) Load 208
210: 51(ivec4) VectorShuffle 209 207 4 5 6 3
Store 208 210
211: 6(int) Load 8(invocation)
212: 105(ptr) AccessChain 55(data) 90 67
213: 51(ivec4) Load 212
214: 51(ivec4) SubgroupFirstInvocationKHR 213
215: 105(ptr) AccessChain 55(data) 211 67
Store 215 214
216: 6(int) Load 8(invocation)
217: 131(ptr) AccessChain 55(data) 57 79 58
218: 6(int) Load 217
219: 6(int) SubgroupFirstInvocationKHR 218
220: 131(ptr) AccessChain 55(data) 216 79 58
Store 220 219
221: 6(int) Load 8(invocation)
222: 138(ptr) AccessChain 55(data) 67 79
223: 38(ivec4) Load 222
224: 42(ivec2) VectorShuffle 223 223 0 1
225: 42(ivec2) SubgroupFirstInvocationKHR 224
226: 138(ptr) AccessChain 55(data) 221 79
227: 38(ivec4) Load 226
228: 38(ivec4) VectorShuffle 227 225 4 5 2 3
Store 226 228
229: 6(int) Load 8(invocation)
230: 138(ptr) AccessChain 55(data) 79 79
231: 38(ivec4) Load 230
232: 148(ivec3) VectorShuffle 231 231 0 1 2
233: 148(ivec3) SubgroupFirstInvocationKHR 232
234: 138(ptr) AccessChain 55(data) 229 79
235: 38(ivec4) Load 234
236: 38(ivec4) VectorShuffle 235 233 4 5 6 3
Store 234 236
237: 6(int) Load 8(invocation)
238: 138(ptr) AccessChain 55(data) 90 79
239: 38(ivec4) Load 238
240: 38(ivec4) SubgroupFirstInvocationKHR 239
241: 138(ptr) AccessChain 55(data) 237 79
Store 241 240
Branch 47
47: Label
Return
FunctionEnd