Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
5fc501ff
Commit
5fc501ff
authored
Sep 26, 2016
by
John Kessenich
Committed by
GitHub
Sep 26, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #520 from amdrexu/bugfix
SPV: OpGroupBroadcast is unable to handle vector operand.
parents
f38978ed
b707205b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
272 additions
and
209 deletions
+272
-209
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+26
-17
spv.shaderBallot.comp.out
Test/baseResults/spv.shaderBallot.comp.out
+246
-192
No files found.
SPIRV/GlslangToSpv.cpp
View file @
5fc501ff
...
...
@@ -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
,
s
pv
::
Id
operand
)
spv
::
Id
TGlslangToSpvTraverser
::
CreateInvocationsVectorOperation
(
spv
::
Op
op
,
spv
::
Id
typeId
,
s
td
::
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
(
operand
s
[
0
]
);
spv
::
Id
scalarType
=
builder
.
getScalarTypeId
(
builder
.
getTypeId
(
operand
s
[
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
(
operand
s
[
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
,
o
perands
));
results
.
push_back
(
builder
.
createOp
(
op
,
scalarType
,
spvGroupO
perands
));
}
// 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
)
{
...
...
Test/baseResults/spv.shaderBallot.comp.out
View file @
5fc501ff
...
...
@@ -7,7 +7,7 @@ Linked compute stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 2
45
// Id's are bound by 2
99
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 2
44
BuiltIn WorkgroupSize
Decorate 2
98
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
8
0
: TypeVector 48(float) 3
9
0: 50(int) Constant 3
97
: TypePointer Uniform 50(int)
1
04
: TypeVector 50(int) 2
1
05
: TypePointer Uniform 51(ivec4)
1
15
: TypeVector 50(int) 3
1
31
: TypePointer Uniform 6(int)
1
38
: TypePointer Uniform 38(ivec4)
1
4
8: TypeVector 6(int) 3
2
42
: 6(int) Constant 8
2
43
: 6(int) Constant 1
2
44: 148(ivec3) ConstantComposite 242 242 243
83
: 50(int) Constant 2
8
4
: TypeVector 48(float) 3
10
0: 50(int) Constant 3
115
: TypePointer Uniform 50(int)
1
22
: TypeVector 50(int) 2
1
23
: TypePointer Uniform 51(ivec4)
1
37
: TypeVector 50(int) 3
1
67
: TypePointer Uniform 6(int)
1
74
: TypePointer Uniform 38(ivec4)
1
8
8: TypeVector 6(int) 3
2
96
: 6(int) Constant 8
2
97
: 6(int) Constant 1
2
98: 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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment