mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-10 04:20:06 +00:00
SPV: OpGroupBroadcast is unable to handle vector operand.
This commit is contained in:
parent
10f7fc739c
commit
b707205b0d
@ -156,9 +156,7 @@ protected:
|
||||
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
|
||||
spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
|
||||
spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
|
||||
#ifdef AMD_EXTENSIONS
|
||||
spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, spv::Id operand);
|
||||
#endif
|
||||
spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, std::vector<spv::Id>& operands);
|
||||
spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
|
||||
spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId);
|
||||
spv::Id getSymbolId(const glslang::TIntermSymbol* node);
|
||||
@ -4029,6 +4027,8 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
||||
|
||||
case glslang::EOpReadInvocation:
|
||||
opCode = spv::OpGroupBroadcast;
|
||||
if (builder.isVectorType(typeId))
|
||||
return CreateInvocationsVectorOperation(opCode, typeId, operands);
|
||||
break;
|
||||
case glslang::EOpReadFirstInvocation:
|
||||
opCode = spv::OpSubgroupFirstInvocationKHR;
|
||||
@ -4084,7 +4084,7 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
||||
}
|
||||
|
||||
if (builder.isVectorType(typeId))
|
||||
return CreateInvocationsVectorOperation(opCode, typeId, operands[0]);
|
||||
return CreateInvocationsVectorOperation(opCode, typeId, operands);
|
||||
|
||||
break;
|
||||
case glslang::EOpMinInvocationsNonUniform:
|
||||
@ -4118,7 +4118,7 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
||||
}
|
||||
|
||||
if (builder.isVectorType(typeId))
|
||||
return CreateInvocationsVectorOperation(opCode, typeId, operands[0]);
|
||||
return CreateInvocationsVectorOperation(opCode, typeId, operands);
|
||||
|
||||
break;
|
||||
#endif
|
||||
@ -4131,16 +4131,21 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
||||
return builder.createOp(opCode, typeId, spvGroupOperands);
|
||||
}
|
||||
|
||||
#ifdef AMD_EXTENSIONS
|
||||
// Create group invocation operations on a vector
|
||||
spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, spv::Id operand)
|
||||
spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, std::vector<spv::Id>& operands)
|
||||
{
|
||||
#ifdef AMD_EXTENSIONS
|
||||
assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin ||
|
||||
op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax ||
|
||||
op == spv::OpGroupFAdd || op == spv::OpGroupIAdd ||
|
||||
op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast ||
|
||||
op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || op == spv::OpGroupSMinNonUniformAMD ||
|
||||
op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || op == spv::OpGroupSMaxNonUniformAMD ||
|
||||
op == spv::OpGroupFAddNonUniformAMD || op == spv::OpGroupIAddNonUniformAMD);
|
||||
#else
|
||||
assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin ||
|
||||
op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax ||
|
||||
op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast);
|
||||
#endif
|
||||
|
||||
// Handle group invocation operations scalar by scalar.
|
||||
// The result type is the same type as the original type.
|
||||
@ -4150,28 +4155,32 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv
|
||||
// - make a vector out the scalar results
|
||||
|
||||
// get the types sorted out
|
||||
int numComponents = builder.getNumComponents(operand);
|
||||
spv::Id scalarType = builder.getScalarTypeId(builder.getTypeId(operand));
|
||||
int numComponents = builder.getNumComponents(operands[0]);
|
||||
spv::Id scalarType = builder.getScalarTypeId(builder.getTypeId(operands[0]));
|
||||
std::vector<spv::Id> results;
|
||||
|
||||
// do each scalar op
|
||||
for (int comp = 0; comp < numComponents; ++comp) {
|
||||
std::vector<unsigned int> indexes;
|
||||
indexes.push_back(comp);
|
||||
spv::Id scalar = builder.createCompositeExtract(operand, scalarType, indexes);
|
||||
spv::Id scalar = builder.createCompositeExtract(operands[0], scalarType, indexes);
|
||||
|
||||
std::vector<spv::Id> operands;
|
||||
operands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
|
||||
operands.push_back(spv::GroupOperationReduce);
|
||||
operands.push_back(scalar);
|
||||
std::vector<spv::Id> spvGroupOperands;
|
||||
spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
|
||||
if (op == spv::OpGroupBroadcast) {
|
||||
spvGroupOperands.push_back(scalar);
|
||||
spvGroupOperands.push_back(operands[1]);
|
||||
} else {
|
||||
spvGroupOperands.push_back(spv::GroupOperationReduce);
|
||||
spvGroupOperands.push_back(scalar);
|
||||
}
|
||||
|
||||
results.push_back(builder.createOp(op, scalarType, operands));
|
||||
results.push_back(builder.createOp(op, scalarType, spvGroupOperands));
|
||||
}
|
||||
|
||||
// put the pieces together
|
||||
return builder.createCompositeConstruct(typeId, results);
|
||||
}
|
||||
#endif
|
||||
|
||||
spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
|
||||
{
|
||||
|
@ -7,7 +7,7 @@ Linked compute stage:
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 245
|
||||
// Id's are bound by 299
|
||||
|
||||
Capability Shader
|
||||
Capability Int64
|
||||
@ -49,7 +49,7 @@ Linked compute stage:
|
||||
Decorate 52(Buffers) BufferBlock
|
||||
Decorate 55(data) DescriptorSet 0
|
||||
Decorate 55(data) Binding 0
|
||||
Decorate 244 BuiltIn WorkgroupSize
|
||||
Decorate 298 BuiltIn WorkgroupSize
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
@ -85,19 +85,19 @@ Linked compute stage:
|
||||
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
|
||||
83: 50(int) Constant 2
|
||||
84: TypeVector 48(float) 3
|
||||
100: 50(int) Constant 3
|
||||
115: TypePointer Uniform 50(int)
|
||||
122: TypeVector 50(int) 2
|
||||
123: TypePointer Uniform 51(ivec4)
|
||||
137: TypeVector 50(int) 3
|
||||
167: TypePointer Uniform 6(int)
|
||||
174: TypePointer Uniform 38(ivec4)
|
||||
188: TypeVector 6(int) 3
|
||||
296: 6(int) Constant 8
|
||||
297: 6(int) Constant 1
|
||||
298: 188(ivec3) ConstantComposite 296 296 297
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
8(invocation): 7(ptr) Variable Function
|
||||
@ -125,7 +125,7 @@ Linked compute stage:
|
||||
44: 17(int) Bitcast 43
|
||||
45: 36(bool) IEqual 35 44
|
||||
SelectionMerge 47 None
|
||||
BranchConditional 45 46 163
|
||||
BranchConditional 45 46 217
|
||||
46: Label
|
||||
56: 6(int) Load 8(invocation)
|
||||
60: 59(ptr) AccessChain 55(data) 57 57 58
|
||||
@ -139,188 +139,242 @@ Linked compute stage:
|
||||
71: 49(fvec4) Load 70
|
||||
72: 68(fvec2) VectorShuffle 71 71 0 1
|
||||
73: 6(int) Load 8(invocation)
|
||||
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)
|
||||
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
|
||||
74: 48(float) CompositeExtract 72 0
|
||||
75: 48(float) GroupBroadcast 63 74 73
|
||||
76: 48(float) CompositeExtract 72 1
|
||||
77: 48(float) GroupBroadcast 63 76 73
|
||||
78: 68(fvec2) CompositeConstruct 75 77
|
||||
79: 69(ptr) AccessChain 55(data) 66 57
|
||||
80: 49(fvec4) Load 79
|
||||
81: 49(fvec4) VectorShuffle 80 78 4 5 2 3
|
||||
Store 79 81
|
||||
82: 6(int) Load 8(invocation)
|
||||
85: 69(ptr) AccessChain 55(data) 83 57
|
||||
86: 49(fvec4) Load 85
|
||||
87: 84(fvec3) VectorShuffle 86 86 0 1 2
|
||||
88: 6(int) Load 8(invocation)
|
||||
89: 48(float) CompositeExtract 87 0
|
||||
90: 48(float) GroupBroadcast 63 89 88
|
||||
91: 48(float) CompositeExtract 87 1
|
||||
92: 48(float) GroupBroadcast 63 91 88
|
||||
93: 48(float) CompositeExtract 87 2
|
||||
94: 48(float) GroupBroadcast 63 93 88
|
||||
95: 84(fvec3) CompositeConstruct 90 92 94
|
||||
96: 69(ptr) AccessChain 55(data) 82 57
|
||||
97: 49(fvec4) Load 96
|
||||
98: 49(fvec4) VectorShuffle 97 95 4 5 6 3
|
||||
Store 96 98
|
||||
99: 6(int) Load 8(invocation)
|
||||
101: 69(ptr) AccessChain 55(data) 100 57
|
||||
102: 49(fvec4) Load 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)
|
||||
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
|
||||
104: 48(float) CompositeExtract 102 0
|
||||
105: 48(float) GroupBroadcast 63 104 103
|
||||
106: 48(float) CompositeExtract 102 1
|
||||
107: 48(float) GroupBroadcast 63 106 103
|
||||
108: 48(float) CompositeExtract 102 2
|
||||
109: 48(float) GroupBroadcast 63 108 103
|
||||
110: 48(float) CompositeExtract 102 3
|
||||
111: 48(float) GroupBroadcast 63 110 103
|
||||
112: 49(fvec4) CompositeConstruct 105 107 109 111
|
||||
113: 69(ptr) AccessChain 55(data) 99 57
|
||||
Store 113 112
|
||||
114: 6(int) Load 8(invocation)
|
||||
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: 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
|
||||
116: 115(ptr) AccessChain 55(data) 57 67 58
|
||||
117: 50(int) Load 116
|
||||
118: 6(int) Load 8(invocation)
|
||||
119: 50(int) GroupBroadcast 63 117 118
|
||||
120: 115(ptr) AccessChain 55(data) 114 67 58
|
||||
Store 120 119
|
||||
121: 6(int) Load 8(invocation)
|
||||
124: 123(ptr) AccessChain 55(data) 67 67
|
||||
125: 51(ivec4) Load 124
|
||||
126: 122(ivec2) VectorShuffle 125 125 0 1
|
||||
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
|
||||
128: 50(int) CompositeExtract 126 0
|
||||
129: 50(int) GroupBroadcast 63 128 127
|
||||
130: 50(int) CompositeExtract 126 1
|
||||
131: 50(int) GroupBroadcast 63 130 127
|
||||
132: 122(ivec2) CompositeConstruct 129 131
|
||||
133: 123(ptr) AccessChain 55(data) 121 67
|
||||
134: 51(ivec4) Load 133
|
||||
135: 51(ivec4) VectorShuffle 134 132 4 5 2 3
|
||||
Store 133 135
|
||||
136: 6(int) Load 8(invocation)
|
||||
138: 123(ptr) AccessChain 55(data) 83 67
|
||||
139: 51(ivec4) Load 138
|
||||
140: 137(ivec3) VectorShuffle 139 139 0 1 2
|
||||
141: 6(int) Load 8(invocation)
|
||||
142: 50(int) CompositeExtract 140 0
|
||||
143: 50(int) GroupBroadcast 63 142 141
|
||||
144: 50(int) CompositeExtract 140 1
|
||||
145: 50(int) GroupBroadcast 63 144 141
|
||||
146: 50(int) CompositeExtract 140 2
|
||||
147: 50(int) GroupBroadcast 63 146 141
|
||||
148: 137(ivec3) CompositeConstruct 143 145 147
|
||||
149: 123(ptr) AccessChain 55(data) 136 67
|
||||
150: 51(ivec4) Load 149
|
||||
151: 51(ivec4) VectorShuffle 150 148 4 5 6 3
|
||||
Store 149 151
|
||||
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: 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
|
||||
153: 123(ptr) AccessChain 55(data) 100 67
|
||||
154: 51(ivec4) Load 153
|
||||
155: 6(int) Load 8(invocation)
|
||||
156: 50(int) CompositeExtract 154 0
|
||||
157: 50(int) GroupBroadcast 63 156 155
|
||||
158: 50(int) CompositeExtract 154 1
|
||||
159: 50(int) GroupBroadcast 63 158 155
|
||||
160: 50(int) CompositeExtract 154 2
|
||||
161: 50(int) GroupBroadcast 63 160 155
|
||||
162: 50(int) CompositeExtract 154 3
|
||||
163: 50(int) GroupBroadcast 63 162 155
|
||||
164: 51(ivec4) CompositeConstruct 157 159 161 163
|
||||
165: 123(ptr) AccessChain 55(data) 152 67
|
||||
Store 165 164
|
||||
166: 6(int) Load 8(invocation)
|
||||
168: 167(ptr) AccessChain 55(data) 57 83 58
|
||||
169: 6(int) Load 168
|
||||
170: 6(int) Load 8(invocation)
|
||||
171: 6(int) GroupBroadcast 63 169 170
|
||||
172: 167(ptr) AccessChain 55(data) 166 83 58
|
||||
Store 172 171
|
||||
173: 6(int) Load 8(invocation)
|
||||
175: 174(ptr) AccessChain 55(data) 67 83
|
||||
176: 38(ivec4) Load 175
|
||||
177: 42(ivec2) VectorShuffle 176 176 0 1
|
||||
178: 6(int) Load 8(invocation)
|
||||
179: 6(int) CompositeExtract 177 0
|
||||
180: 6(int) GroupBroadcast 63 179 178
|
||||
181: 6(int) CompositeExtract 177 1
|
||||
182: 6(int) GroupBroadcast 63 181 178
|
||||
183: 42(ivec2) CompositeConstruct 180 182
|
||||
184: 174(ptr) AccessChain 55(data) 173 83
|
||||
185: 38(ivec4) Load 184
|
||||
186: 38(ivec4) VectorShuffle 185 183 4 5 2 3
|
||||
Store 184 186
|
||||
187: 6(int) Load 8(invocation)
|
||||
189: 174(ptr) AccessChain 55(data) 83 83
|
||||
190: 38(ivec4) Load 189
|
||||
191: 188(ivec3) VectorShuffle 190 190 0 1 2
|
||||
192: 6(int) Load 8(invocation)
|
||||
193: 6(int) CompositeExtract 191 0
|
||||
194: 6(int) GroupBroadcast 63 193 192
|
||||
195: 6(int) CompositeExtract 191 1
|
||||
196: 6(int) GroupBroadcast 63 195 192
|
||||
197: 6(int) CompositeExtract 191 2
|
||||
198: 6(int) GroupBroadcast 63 197 192
|
||||
199: 188(ivec3) CompositeConstruct 194 196 198
|
||||
200: 174(ptr) AccessChain 55(data) 187 83
|
||||
201: 38(ivec4) Load 200
|
||||
202: 38(ivec4) VectorShuffle 201 199 4 5 6 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
|
||||
204: 174(ptr) AccessChain 55(data) 100 83
|
||||
205: 38(ivec4) Load 204
|
||||
206: 6(int) Load 8(invocation)
|
||||
207: 6(int) CompositeExtract 205 0
|
||||
208: 6(int) GroupBroadcast 63 207 206
|
||||
209: 6(int) CompositeExtract 205 1
|
||||
210: 6(int) GroupBroadcast 63 209 206
|
||||
211: 6(int) CompositeExtract 205 2
|
||||
212: 6(int) GroupBroadcast 63 211 206
|
||||
213: 6(int) CompositeExtract 205 3
|
||||
214: 6(int) GroupBroadcast 63 213 206
|
||||
215: 38(ivec4) CompositeConstruct 208 210 212 214
|
||||
216: 174(ptr) AccessChain 55(data) 203 83
|
||||
Store 216 215
|
||||
Branch 47
|
||||
217: Label
|
||||
218: 6(int) Load 8(invocation)
|
||||
219: 59(ptr) AccessChain 55(data) 57 57 58
|
||||
220: 48(float) Load 219
|
||||
221: 48(float) SubgroupFirstInvocationKHR 220
|
||||
222: 59(ptr) AccessChain 55(data) 218 57 58
|
||||
Store 222 221
|
||||
223: 6(int) Load 8(invocation)
|
||||
224: 69(ptr) AccessChain 55(data) 67 57
|
||||
225: 49(fvec4) Load 224
|
||||
226: 68(fvec2) VectorShuffle 225 225 0 1
|
||||
227: 68(fvec2) SubgroupFirstInvocationKHR 226
|
||||
228: 69(ptr) AccessChain 55(data) 223 57
|
||||
229: 49(fvec4) Load 228
|
||||
230: 49(fvec4) VectorShuffle 229 227 4 5 2 3
|
||||
Store 228 230
|
||||
231: 6(int) Load 8(invocation)
|
||||
232: 69(ptr) AccessChain 55(data) 83 57
|
||||
233: 49(fvec4) Load 232
|
||||
234: 84(fvec3) VectorShuffle 233 233 0 1 2
|
||||
235: 84(fvec3) SubgroupFirstInvocationKHR 234
|
||||
236: 69(ptr) AccessChain 55(data) 231 57
|
||||
237: 49(fvec4) Load 236
|
||||
238: 49(fvec4) VectorShuffle 237 235 4 5 6 3
|
||||
Store 236 238
|
||||
239: 6(int) Load 8(invocation)
|
||||
240: 69(ptr) AccessChain 55(data) 100 57
|
||||
241: 49(fvec4) Load 240
|
||||
242: 49(fvec4) SubgroupFirstInvocationKHR 241
|
||||
243: 69(ptr) AccessChain 55(data) 239 57
|
||||
Store 243 242
|
||||
244: 6(int) Load 8(invocation)
|
||||
245: 115(ptr) AccessChain 55(data) 57 67 58
|
||||
246: 50(int) Load 245
|
||||
247: 50(int) SubgroupFirstInvocationKHR 246
|
||||
248: 115(ptr) AccessChain 55(data) 244 67 58
|
||||
Store 248 247
|
||||
249: 6(int) Load 8(invocation)
|
||||
250: 123(ptr) AccessChain 55(data) 67 67
|
||||
251: 51(ivec4) Load 250
|
||||
252: 122(ivec2) VectorShuffle 251 251 0 1
|
||||
253: 122(ivec2) SubgroupFirstInvocationKHR 252
|
||||
254: 123(ptr) AccessChain 55(data) 249 67
|
||||
255: 51(ivec4) Load 254
|
||||
256: 51(ivec4) VectorShuffle 255 253 4 5 2 3
|
||||
Store 254 256
|
||||
257: 6(int) Load 8(invocation)
|
||||
258: 123(ptr) AccessChain 55(data) 83 67
|
||||
259: 51(ivec4) Load 258
|
||||
260: 137(ivec3) VectorShuffle 259 259 0 1 2
|
||||
261: 137(ivec3) SubgroupFirstInvocationKHR 260
|
||||
262: 123(ptr) AccessChain 55(data) 257 67
|
||||
263: 51(ivec4) Load 262
|
||||
264: 51(ivec4) VectorShuffle 263 261 4 5 6 3
|
||||
Store 262 264
|
||||
265: 6(int) Load 8(invocation)
|
||||
266: 123(ptr) AccessChain 55(data) 100 67
|
||||
267: 51(ivec4) Load 266
|
||||
268: 51(ivec4) SubgroupFirstInvocationKHR 267
|
||||
269: 123(ptr) AccessChain 55(data) 265 67
|
||||
Store 269 268
|
||||
270: 6(int) Load 8(invocation)
|
||||
271: 167(ptr) AccessChain 55(data) 57 83 58
|
||||
272: 6(int) Load 271
|
||||
273: 6(int) SubgroupFirstInvocationKHR 272
|
||||
274: 167(ptr) AccessChain 55(data) 270 83 58
|
||||
Store 274 273
|
||||
275: 6(int) Load 8(invocation)
|
||||
276: 174(ptr) AccessChain 55(data) 67 83
|
||||
277: 38(ivec4) Load 276
|
||||
278: 42(ivec2) VectorShuffle 277 277 0 1
|
||||
279: 42(ivec2) SubgroupFirstInvocationKHR 278
|
||||
280: 174(ptr) AccessChain 55(data) 275 83
|
||||
281: 38(ivec4) Load 280
|
||||
282: 38(ivec4) VectorShuffle 281 279 4 5 2 3
|
||||
Store 280 282
|
||||
283: 6(int) Load 8(invocation)
|
||||
284: 174(ptr) AccessChain 55(data) 83 83
|
||||
285: 38(ivec4) Load 284
|
||||
286: 188(ivec3) VectorShuffle 285 285 0 1 2
|
||||
287: 188(ivec3) SubgroupFirstInvocationKHR 286
|
||||
288: 174(ptr) AccessChain 55(data) 283 83
|
||||
289: 38(ivec4) Load 288
|
||||
290: 38(ivec4) VectorShuffle 289 287 4 5 6 3
|
||||
Store 288 290
|
||||
291: 6(int) Load 8(invocation)
|
||||
292: 174(ptr) AccessChain 55(data) 100 83
|
||||
293: 38(ivec4) Load 292
|
||||
294: 38(ivec4) SubgroupFirstInvocationKHR 293
|
||||
295: 174(ptr) AccessChain 55(data) 291 83
|
||||
Store 295 294
|
||||
Branch 47
|
||||
47: Label
|
||||
Return
|
||||
|
Loading…
Reference in New Issue
Block a user