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
f200da86
Commit
f200da86
authored
Dec 20, 2016
by
chaoc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Modify shader ballot extension by adding OpSubgroupReadInvocationKHR
parent
0ad6a4e6
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
280 additions
and
270 deletions
+280
-270
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+12
-6
doc.cpp
SPIRV/doc.cpp
+5
-0
spirv.hpp
SPIRV/spirv.hpp
+1
-0
spv.shaderBallot.comp.out
Test/baseResults/spv.shaderBallot.comp.out
+262
-264
No files found.
SPIRV/GlslangToSpv.cpp
View file @
f200da86
...
...
@@ -4131,7 +4131,8 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
spv
::
Op
opCode
=
spv
::
OpNop
;
std
::
vector
<
spv
::
Id
>
spvGroupOperands
;
if
(
op
==
glslang
::
EOpBallot
||
op
==
glslang
::
EOpReadFirstInvocation
)
{
if
(
op
==
glslang
::
EOpBallot
||
op
==
glslang
::
EOpReadFirstInvocation
||
op
==
glslang
::
EOpReadInvocation
)
{
builder
.
addExtension
(
spv
::
E_SPV_KHR_shader_ballot
);
builder
.
addCapability
(
spv
::
CapabilitySubgroupBallotKHR
);
}
else
{
...
...
@@ -4171,7 +4172,7 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
}
case
glslang
:
:
EOpReadInvocation
:
opCode
=
spv
::
Op
GroupBroadcast
;
opCode
=
spv
::
Op
SubgroupReadInvocationKHR
;
if
(
builder
.
isVectorType
(
typeId
))
return
CreateInvocationsVectorOperation
(
opCode
,
typeId
,
operands
);
break
;
...
...
@@ -4283,13 +4284,15 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv
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
||
op
==
spv
::
OpSubgroupReadInvocationKHR
||
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
);
op
==
spv
::
OpGroupFAdd
||
op
==
spv
::
OpGroupIAdd
||
op
==
spv
::
OpGroupBroadcast
||
op
==
spv
::
OpSubgroupReadInvocationKHR
);
#endif
// Handle group invocation operations scalar by scalar.
...
...
@@ -4309,13 +4312,16 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv
std
::
vector
<
unsigned
int
>
indexes
;
indexes
.
push_back
(
comp
);
spv
::
Id
scalar
=
builder
.
createCompositeExtract
(
operands
[
0
],
scalarType
,
indexes
);
std
::
vector
<
spv
::
Id
>
spvGroupOperands
;
spvGroupOperands
.
push_back
(
builder
.
makeUintConstant
(
spv
::
ScopeSubgroup
));
if
(
op
==
spv
::
OpGroupBroadcast
)
{
if
(
op
==
spv
::
OpSubgroupReadInvocationKHR
)
{
spvGroupOperands
.
push_back
(
scalar
);
spvGroupOperands
.
push_back
(
operands
[
1
]);
}
else
if
(
op
==
spv
::
OpGroupBroadcast
)
{
spvGroupOperands
.
push_back
(
builder
.
makeUintConstant
(
spv
::
ScopeSubgroup
));
spvGroupOperands
.
push_back
(
scalar
);
spvGroupOperands
.
push_back
(
operands
[
1
]);
}
else
{
spvGroupOperands
.
push_back
(
builder
.
makeUintConstant
(
spv
::
ScopeSubgroup
));
spvGroupOperands
.
push_back
(
spv
::
GroupOperationReduce
);
spvGroupOperands
.
push_back
(
scalar
);
}
...
...
SPIRV/doc.cpp
View file @
f200da86
...
...
@@ -1152,6 +1152,7 @@ const char* OpcodeString(int op)
case
4421
:
return
"OpSubgroupBallotKHR"
;
case
4422
:
return
"OpSubgroupFirstInvocationKHR"
;
case
4432
:
return
"OpSubgroupReadInvocationKHR"
;
#ifdef AMD_EXTENSIONS
case
5000
:
return
"OpGroupIAddNonUniformAMD"
;
...
...
@@ -2764,6 +2765,10 @@ void Parameterize()
InstructionDesc
[
OpSubgroupFirstInvocationKHR
].
operands
.
push
(
OperandId
,
"'Value'"
);
InstructionDesc
[
OpSubgroupReadInvocationKHR
].
capabilities
.
push_back
(
CapabilityGroups
);
InstructionDesc
[
OpSubgroupReadInvocationKHR
].
operands
.
push
(
OperandId
,
"'Value'"
);
InstructionDesc
[
OpSubgroupReadInvocationKHR
].
operands
.
push
(
OperandId
,
"'Index'"
);
#ifdef AMD_EXTENSIONS
InstructionDesc
[
OpGroupIAddNonUniformAMD
].
capabilities
.
push_back
(
CapabilityGroups
);
InstructionDesc
[
OpGroupIAddNonUniformAMD
].
operands
.
push
(
OperandScope
,
"'Execution'"
);
...
...
SPIRV/spirv.hpp
View file @
f200da86
...
...
@@ -905,6 +905,7 @@ enum Op {
OpImageSparseRead
=
320
,
OpSubgroupBallotKHR
=
4421
,
OpSubgroupFirstInvocationKHR
=
4422
,
OpSubgroupReadInvocationKHR
=
4432
,
OpMax
=
0x7fffffff
,
};
...
...
Test/baseResults/spv.shaderBallot.comp.out
View file @
f200da86
...
...
@@ -3,11 +3,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 29
9
// Id's are bound by 29
8
Capability Shader
Capability Int64
Capability Groups
Capability SubgroupBallotKHR
Extension "SPV_KHR_shader_ballot"
1: ExtInstImport "GLSL.std.450"
...
...
@@ -45,7 +44,7 @@ Warning, version 450 is not yet complete; most version-specific features are pre
Decorate 52(Buffers) BufferBlock
Decorate 55(data) DescriptorSet 0
Decorate 55(data) Binding 0
Decorate 29
8
BuiltIn WorkgroupSize
Decorate 29
7
BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
...
...
@@ -77,23 +76,22 @@ Warning, version 450 is not yet complete; most version-specific features are pre
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)
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
66: 50(int) Constant 1
67: TypeVector 48(float) 2
68: TypePointer Uniform 49(fvec4)
82: 50(int) Constant 2
83: TypeVector 48(float) 3
99: 50(int) Constant 3
114: TypePointer Uniform 50(int)
121: TypeVector 50(int) 2
122: TypePointer Uniform 51(ivec4)
136: TypeVector 50(int) 3
166: TypePointer Uniform 6(int)
173: TypePointer Uniform 38(ivec4)
187: TypeVector 6(int) 3
295: 6(int) Constant 8
296: 6(int) Constant 1
297: 187(ivec3) ConstantComposite 295 295 296
4(main): 2 Function None 3
5: Label
8(invocation): 7(ptr) Variable Function
...
...
@@ -121,256 +119,256 @@ Warning, version 450 is not yet complete; most version-specific features are pre
44: 17(int) Bitcast 43
45: 36(bool) IEqual 35 44
SelectionMerge 47 None
BranchConditional 45 46 21
7
BranchConditional 45 46 21
6
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)
6
4: 48(float) GroupBroadcast 63
61 62
6
5
: 59(ptr) AccessChain 55(data) 56 57 58
Store 6
5 64
6
6
: 6(int) Load 8(invocation)
70: 69(ptr) AccessChain 55(data) 67
57
7
1: 49(fvec4) Load 70
7
2: 68(fvec2) VectorShuffle 71 71
0 1
7
3
: 6(int) Load 8(invocation)
7
4: 48(float) CompositeExtract 72
0
7
5: 48(float) GroupBroadcast 63 74 73
7
6: 48(float) CompositeExtract 72
1
7
7: 48(float) GroupBroadcast 63 76 73
7
8: 68(fvec2) CompositeConstruct 75 77
7
9: 69(ptr) AccessChain 55(data) 66
57
80: 49(fvec4) Load 79
8
1: 49(fvec4) VectorShuffle 80 78
4 5 2 3
Store 7
9 81
8
2
: 6(int) Load 8(invocation)
8
5: 69(ptr) AccessChain 55(data) 83
57
8
6: 49(fvec4) Load 85
8
7: 84(fvec3) VectorShuffle 86 86
0 1 2
8
8
: 6(int) Load 8(invocation)
8
9: 48(float) CompositeExtract 87
0
90: 48(float) GroupBroadcast 63 89 88
9
1: 48(float) CompositeExtract 87
1
9
2: 48(float) GroupBroadcast 63 91 88
9
3: 48(float) CompositeExtract 87
2
9
4: 48(float) GroupBroadcast 63 93 88
9
5: 84(fvec3) CompositeConstruct 90 92 94
9
6: 69(ptr) AccessChain 55(data) 82
57
9
7: 49(fvec4) Load 96
9
8: 49(fvec4) VectorShuffle 97 95
4 5 6 3
Store 9
6 98
9
9
: 6(int) Load 8(invocation)
10
1: 69(ptr) AccessChain 55(data) 100
57
10
2: 49(fvec4) Load 101
10
3
: 6(int) Load 8(invocation)
10
4: 48(float) CompositeExtract 102
0
10
5: 48(float) GroupBroadcast 63 104 103
10
6: 48(float) CompositeExtract 102
1
10
7: 48(float) GroupBroadcast 63 106 103
10
8: 48(float) CompositeExtract 102
2
10
9: 48(float) GroupBroadcast 63 108 103
1
10: 48(float) CompositeExtract 102
3
11
1: 48(float) GroupBroadcast 63 110 103
11
2: 49(fvec4) CompositeConstruct 105 107 109 111
11
3: 69(ptr) AccessChain 55(data) 99
57
Store 11
3 112
11
4
: 6(int) Load 8(invocation)
11
6: 115(ptr) AccessChain 55(data) 57 67
58
11
7: 50(int) Load 116
11
8
: 6(int) Load 8(invocation)
11
9: 50(int) GroupBroadcast 63 117 118
1
20: 115(ptr) AccessChain 55(data) 114 67
58
Store 1
20 119
12
1
: 6(int) Load 8(invocation)
12
4: 123(ptr) AccessChain 55(data) 67 67
12
5: 51(ivec4) Load 124
12
6: 122(ivec2) VectorShuffle 125 125
0 1
12
7
: 6(int) Load 8(invocation)
12
8: 50(int) CompositeExtract 126
0
12
9: 50(int) GroupBroadcast 63 128 127
1
30: 50(int) CompositeExtract 126
1
13
1: 50(int) GroupBroadcast 63 130 127
13
2: 122(ivec2) CompositeConstruct 129 131
13
3: 123(ptr) AccessChain 55(data) 121 67
13
4: 51(ivec4) Load 133
13
5: 51(ivec4) VectorShuffle 134 132
4 5 2 3
Store 13
3 135
13
6
: 6(int) Load 8(invocation)
13
8: 123(ptr) AccessChain 55(data) 83 67
13
9: 51(ivec4) Load 138
1
40: 137(ivec3) VectorShuffle 139 139
0 1 2
14
1
: 6(int) Load 8(invocation)
14
2: 50(int) CompositeExtract 140
0
14
3: 50(int) GroupBroadcast 63 142 141
14
4: 50(int) CompositeExtract 140
1
14
5: 50(int) GroupBroadcast 63 144 141
14
6: 50(int) CompositeExtract 140
2
14
7: 50(int) GroupBroadcast 63 146 141
14
8: 137(ivec3) CompositeConstruct 143 145 147
14
9: 123(ptr) AccessChain 55(data) 136 67
1
50: 51(ivec4) Load 149
15
1: 51(ivec4) VectorShuffle 150 148
4 5 6 3
Store 14
9 151
15
2
: 6(int) Load 8(invocation)
15
3: 123(ptr) AccessChain 55(data) 100 67
15
4: 51(ivec4) Load 153
15
5
: 6(int) Load 8(invocation)
15
6: 50(int) CompositeExtract 154
0
15
7: 50(int) GroupBroadcast 63 156 155
15
8: 50(int) CompositeExtract 154
1
15
9: 50(int) GroupBroadcast 63 158 155
1
60: 50(int) CompositeExtract 154
2
16
1: 50(int) GroupBroadcast 63 160 155
16
2: 50(int) CompositeExtract 154
3
16
3: 50(int) GroupBroadcast 63 162 155
16
4: 51(ivec4) CompositeConstruct 157 159 161 163
16
5: 123(ptr) AccessChain 55(data) 152 67
Store 16
5 164
16
6
: 6(int) Load 8(invocation)
16
8: 167(ptr) AccessChain 55(data) 57 83
58
16
9: 6(int) Load 168
1
70
: 6(int) Load 8(invocation)
17
1: 6(int) GroupBroadcast 63 169 170
17
2: 167(ptr) AccessChain 55(data) 166 83
58
Store 17
2 171
17
3
: 6(int) Load 8(invocation)
17
5: 174(ptr) AccessChain 55(data) 67 83
17
6: 38(ivec4) Load 175
17
7: 42(ivec2) VectorShuffle 176 176
0 1
17
8
: 6(int) Load 8(invocation)
17
9: 6(int) CompositeExtract 177
0
1
80: 6(int) GroupBroadcast 63 179 178
18
1: 6(int) CompositeExtract 177
1
18
2: 6(int) GroupBroadcast 63 181 178
18
3: 42(ivec2) CompositeConstruct 180 182
18
4: 174(ptr) AccessChain 55(data) 173 83
18
5: 38(ivec4) Load 184
18
6: 38(ivec4) VectorShuffle 185 183
4 5 2 3
Store 18
4 186
18
7
: 6(int) Load 8(invocation)
18
9: 174(ptr) AccessChain 55(data) 83 83
1
90: 38(ivec4) Load 189
19
1: 188(ivec3) VectorShuffle 190 190
0 1 2
19
2
: 6(int) Load 8(invocation)
19
3: 6(int) CompositeExtract 191
0
19
4: 6(int) GroupBroadcast 63 193 192
19
5: 6(int) CompositeExtract 191
1
19
6: 6(int) GroupBroadcast 63 195 192
19
7: 6(int) CompositeExtract 191
2
19
8: 6(int) GroupBroadcast 63 197 192
19
9: 188(ivec3) CompositeConstruct 194 196 198
200: 174(ptr) AccessChain 55(data) 187 83
20
1: 38(ivec4) Load 200
20
2: 38(ivec4) VectorShuffle 201 199
4 5 6 3
Store
200 202
20
3
: 6(int) Load 8(invocation)
20
4: 174(ptr) AccessChain 55(data) 100 83
20
5: 38(ivec4) Load 204
20
6
: 6(int) Load 8(invocation)
20
7: 6(int) CompositeExtract 205
0
20
8: 6(int) GroupBroadcast 63 207 206
20
9: 6(int) CompositeExtract 205
1
2
10: 6(int) GroupBroadcast 63 209 206
21
1: 6(int) CompositeExtract 205
2
21
2: 6(int) GroupBroadcast 63 211 206
21
3: 6(int) CompositeExtract 205
3
21
4: 6(int) GroupBroadcast 63 213 206
21
5: 38(ivec4) CompositeConstruct 208 210 212 214
21
6: 174(ptr) AccessChain 55(data) 203 83
Store 21
6 215
6
3: 48(float) SubgroupReadInvocationKHR
61 62
6
4
: 59(ptr) AccessChain 55(data) 56 57 58
Store 6
4 63
6
5
: 6(int) Load 8(invocation)
69: 68(ptr) AccessChain 55(data) 66
57
7
0: 49(fvec4) Load 69
7
1: 67(fvec2) VectorShuffle 70 70
0 1
7
2
: 6(int) Load 8(invocation)
7
3: 48(float) CompositeExtract 71
0
7
4: 48(float) SubgroupReadInvocationKHR 73 72
7
5: 48(float) CompositeExtract 71
1
7
6: 48(float) SubgroupReadInvocationKHR 75 72
7
7: 67(fvec2) CompositeConstruct 74 76
7
8: 68(ptr) AccessChain 55(data) 65
57
79: 49(fvec4) Load 78
8
0: 49(fvec4) VectorShuffle 79 77
4 5 2 3
Store 7
8 80
8
1
: 6(int) Load 8(invocation)
8
4: 68(ptr) AccessChain 55(data) 82
57
8
5: 49(fvec4) Load 84
8
6: 83(fvec3) VectorShuffle 85 85
0 1 2
8
7
: 6(int) Load 8(invocation)
8
8: 48(float) CompositeExtract 86
0
89: 48(float) SubgroupReadInvocationKHR 88 87
9
0: 48(float) CompositeExtract 86
1
9
1: 48(float) SubgroupReadInvocationKHR 90 87
9
2: 48(float) CompositeExtract 86
2
9
3: 48(float) SubgroupReadInvocationKHR 92 87
9
4: 83(fvec3) CompositeConstruct 89 91 93
9
5: 68(ptr) AccessChain 55(data) 81
57
9
6: 49(fvec4) Load 95
9
7: 49(fvec4) VectorShuffle 96 94
4 5 6 3
Store 9
5 97
9
8
: 6(int) Load 8(invocation)
10
0: 68(ptr) AccessChain 55(data) 99
57
10
1: 49(fvec4) Load 100
10
2
: 6(int) Load 8(invocation)
10
3: 48(float) CompositeExtract 101
0
10
4: 48(float) SubgroupReadInvocationKHR 103 102
10
5: 48(float) CompositeExtract 101
1
10
6: 48(float) SubgroupReadInvocationKHR 105 102
10
7: 48(float) CompositeExtract 101
2
10
8: 48(float) SubgroupReadInvocationKHR 107 102
1
09: 48(float) CompositeExtract 101
3
11
0: 48(float) SubgroupReadInvocationKHR 109 102
11
1: 49(fvec4) CompositeConstruct 104 106 108 110
11
2: 68(ptr) AccessChain 55(data) 98
57
Store 11
2 111
11
3
: 6(int) Load 8(invocation)
11
5: 114(ptr) AccessChain 55(data) 57 66
58
11
6: 50(int) Load 115
11
7
: 6(int) Load 8(invocation)
11
8: 50(int) SubgroupReadInvocationKHR 116 117
1
19: 114(ptr) AccessChain 55(data) 113 66
58
Store 1
19 118
12
0
: 6(int) Load 8(invocation)
12
3: 122(ptr) AccessChain 55(data) 66 66
12
4: 51(ivec4) Load 123
12
5: 121(ivec2) VectorShuffle 124 124
0 1
12
6
: 6(int) Load 8(invocation)
12
7: 50(int) CompositeExtract 125
0
12
8: 50(int) SubgroupReadInvocationKHR 127 126
1
29: 50(int) CompositeExtract 125
1
13
0: 50(int) SubgroupReadInvocationKHR 129 126
13
1: 121(ivec2) CompositeConstruct 128 130
13
2: 122(ptr) AccessChain 55(data) 120 66
13
3: 51(ivec4) Load 132
13
4: 51(ivec4) VectorShuffle 133 131
4 5 2 3
Store 13
2 134
13
5
: 6(int) Load 8(invocation)
13
7: 122(ptr) AccessChain 55(data) 82 66
13
8: 51(ivec4) Load 137
1
39: 136(ivec3) VectorShuffle 138 138
0 1 2
14
0
: 6(int) Load 8(invocation)
14
1: 50(int) CompositeExtract 139
0
14
2: 50(int) SubgroupReadInvocationKHR 141 140
14
3: 50(int) CompositeExtract 139
1
14
4: 50(int) SubgroupReadInvocationKHR 143 140
14
5: 50(int) CompositeExtract 139
2
14
6: 50(int) SubgroupReadInvocationKHR 145 140
14
7: 136(ivec3) CompositeConstruct 142 144 146
14
8: 122(ptr) AccessChain 55(data) 135 66
1
49: 51(ivec4) Load 148
15
0: 51(ivec4) VectorShuffle 149 147
4 5 6 3
Store 14
8 150
15
1
: 6(int) Load 8(invocation)
15
2: 122(ptr) AccessChain 55(data) 99 66
15
3: 51(ivec4) Load 152
15
4
: 6(int) Load 8(invocation)
15
5: 50(int) CompositeExtract 153
0
15
6: 50(int) SubgroupReadInvocationKHR 155 154
15
7: 50(int) CompositeExtract 153
1
15
8: 50(int) SubgroupReadInvocationKHR 157 154
1
59: 50(int) CompositeExtract 153
2
16
0: 50(int) SubgroupReadInvocationKHR 159 154
16
1: 50(int) CompositeExtract 153
3
16
2: 50(int) SubgroupReadInvocationKHR 161 154
16
3: 51(ivec4) CompositeConstruct 156 158 160 162
16
4: 122(ptr) AccessChain 55(data) 151 66
Store 16
4 163
16
5
: 6(int) Load 8(invocation)
16
7: 166(ptr) AccessChain 55(data) 57 82
58
16
8: 6(int) Load 167
1
69
: 6(int) Load 8(invocation)
17
0: 6(int) SubgroupReadInvocationKHR 168 169
17
1: 166(ptr) AccessChain 55(data) 165 82
58
Store 17
1 170
17
2
: 6(int) Load 8(invocation)
17
4: 173(ptr) AccessChain 55(data) 66 82
17
5: 38(ivec4) Load 174
17
6: 42(ivec2) VectorShuffle 175 175
0 1
17
7
: 6(int) Load 8(invocation)
17
8: 6(int) CompositeExtract 176
0
1
79: 6(int) SubgroupReadInvocationKHR 178 177
18
0: 6(int) CompositeExtract 176
1
18
1: 6(int) SubgroupReadInvocationKHR 180 177
18
2: 42(ivec2) CompositeConstruct 179 181
18
3: 173(ptr) AccessChain 55(data) 172 82
18
4: 38(ivec4) Load 183
18
5: 38(ivec4) VectorShuffle 184 182
4 5 2 3
Store 18
3 185
18
6
: 6(int) Load 8(invocation)
18
8: 173(ptr) AccessChain 55(data) 82 82
1
89: 38(ivec4) Load 188
19
0: 187(ivec3) VectorShuffle 189 189
0 1 2
19
1
: 6(int) Load 8(invocation)
19
2: 6(int) CompositeExtract 190
0
19
3: 6(int) SubgroupReadInvocationKHR 192 191
19
4: 6(int) CompositeExtract 190
1
19
5: 6(int) SubgroupReadInvocationKHR 194 191
19
6: 6(int) CompositeExtract 190
2
19
7: 6(int) SubgroupReadInvocationKHR 196 191
19
8: 187(ivec3) CompositeConstruct 193 195 197
199: 173(ptr) AccessChain 55(data) 186 82
20
0: 38(ivec4) Load 199
20
1: 38(ivec4) VectorShuffle 200 198
4 5 6 3
Store
199 201
20
2
: 6(int) Load 8(invocation)
20
3: 173(ptr) AccessChain 55(data) 99 82
20
4: 38(ivec4) Load 203
20
5
: 6(int) Load 8(invocation)
20
6: 6(int) CompositeExtract 204
0
20
7: 6(int) SubgroupReadInvocationKHR 206 205
20
8: 6(int) CompositeExtract 204
1
2
09: 6(int) SubgroupReadInvocationKHR 208 205
21
0: 6(int) CompositeExtract 204
2
21
1: 6(int) SubgroupReadInvocationKHR 210 205
21
2: 6(int) CompositeExtract 204
3
21
3: 6(int) SubgroupReadInvocationKHR 212 205
21
4: 38(ivec4) CompositeConstruct 207 209 211 213
21
5: 173(ptr) AccessChain 55(data) 202 82
Store 21
5 214
Branch 47
21
7
: Label
21
8
: 6(int) Load 8(invocation)
21
9
: 59(ptr) AccessChain 55(data) 57 57 58
2
20: 48(float) Load 219
22
1: 48(float) SubgroupFirstInvocationKHR 220
22
2: 59(ptr) AccessChain 55(data) 218
57 58
Store 22
2 221
22
3
: 6(int) Load 8(invocation)
22
4: 69(ptr) AccessChain 55(data) 67
57
22
5: 49(fvec4) Load 224
22
6: 68(fvec2) VectorShuffle 225 225
0 1
22
7: 68(fvec2) SubgroupFirstInvocationKHR 226
22
8: 69(ptr) AccessChain 55(data) 223
57
22
9: 49(fvec4) Load 228
2
30: 49(fvec4) VectorShuffle 229 227
4 5 2 3
Store 22
8 230
23
1
: 6(int) Load 8(invocation)
23
2: 69(ptr) AccessChain 55(data) 83
57
23
3: 49(fvec4) Load 232
23
4: 84(fvec3) VectorShuffle 233 233
0 1 2
23
5: 84(fvec3) SubgroupFirstInvocationKHR 234
23
6: 69(ptr) AccessChain 55(data) 231
57
23
7: 49(fvec4) Load 236
23
8: 49(fvec4) VectorShuffle 237 235
4 5 6 3
Store 23
6 238
23
9
: 6(int) Load 8(invocation)
2
40: 69(ptr) AccessChain 55(data) 100
57
24
1: 49(fvec4) Load 240
24
2: 49(fvec4) SubgroupFirstInvocationKHR 241
24
3: 69(ptr) AccessChain 55(data) 239
57
Store 24
3 242
24
4
: 6(int) Load 8(invocation)
24
5: 115(ptr) AccessChain 55(data) 57 67
58
24
6: 50(int) Load 245
24
7: 50(int) SubgroupFirstInvocationKHR 246
24
8: 115(ptr) AccessChain 55(data) 244 67
58
Store 24
8 247
24
9
: 6(int) Load 8(invocation)
2
50: 123(ptr) AccessChain 55(data) 67 67
25
1: 51(ivec4) Load 250
25
2: 122(ivec2) VectorShuffle 251 251
0 1
25
3: 122(ivec2) SubgroupFirstInvocationKHR 252
25
4: 123(ptr) AccessChain 55(data) 249 67
25
5: 51(ivec4) Load 254
25
6: 51(ivec4) VectorShuffle 255 253
4 5 2 3
Store 25
4 256
25
7
: 6(int) Load 8(invocation)
25
8: 123(ptr) AccessChain 55(data) 83 67
25
9: 51(ivec4) Load 258
2
60: 137(ivec3) VectorShuffle 259 259
0 1 2
26
1: 137(ivec3) SubgroupFirstInvocationKHR 260
26
2: 123(ptr) AccessChain 55(data) 257 67
26
3: 51(ivec4) Load 262
26
4: 51(ivec4) VectorShuffle 263 261
4 5 6 3
Store 26
2 264
26
5
: 6(int) Load 8(invocation)
26
6: 123(ptr) AccessChain 55(data) 100 67
26
7: 51(ivec4) Load 266
26
8: 51(ivec4) SubgroupFirstInvocationKHR 267
26
9: 123(ptr) AccessChain 55(data) 265 67
Store 26
9 268
2
70
: 6(int) Load 8(invocation)
27
1: 167(ptr) AccessChain 55(data) 57 83
58
27
2: 6(int) Load 271
27
3: 6(int) SubgroupFirstInvocationKHR 272
27
4: 167(ptr) AccessChain 55(data) 270 83
58
Store 27
4 273
27
5
: 6(int) Load 8(invocation)
27
6: 174(ptr) AccessChain 55(data) 67 83
27
7: 38(ivec4) Load 276
27
8: 42(ivec2) VectorShuffle 277 277
0 1
27
9: 42(ivec2) SubgroupFirstInvocationKHR 278
2
80: 174(ptr) AccessChain 55(data) 275 83
28
1: 38(ivec4) Load 280
28
2: 38(ivec4) VectorShuffle 281 279
4 5 2 3
Store 2
80 282
28
3
: 6(int) Load 8(invocation)
28
4: 174(ptr) AccessChain 55(data) 83 83
28
5: 38(ivec4) Load 284
28
6: 188(ivec3) VectorShuffle 285 285
0 1 2
28
7: 188(ivec3) SubgroupFirstInvocationKHR 286
28
8: 174(ptr) AccessChain 55(data) 283 83
28
9: 38(ivec4) Load 288
2
90: 38(ivec4) VectorShuffle 289 287
4 5 6 3
Store 28
8 290
29
1
: 6(int) Load 8(invocation)
29
2: 174(ptr) AccessChain 55(data) 100 83
29
3: 38(ivec4) Load 292
29
4: 38(ivec4) SubgroupFirstInvocationKHR 293
29
5: 174(ptr) AccessChain 55(data) 291 83
Store 29
5 294
21
6
: Label
21
7
: 6(int) Load 8(invocation)
21
8
: 59(ptr) AccessChain 55(data) 57 57 58
2
19: 48(float) Load 218
22
0: 48(float) SubgroupFirstInvocationKHR 219
22
1: 59(ptr) AccessChain 55(data) 217
57 58
Store 22
1 220
22
2
: 6(int) Load 8(invocation)
22
3: 68(ptr) AccessChain 55(data) 66
57
22
4: 49(fvec4) Load 223
22
5: 67(fvec2) VectorShuffle 224 224
0 1
22
6: 67(fvec2) SubgroupFirstInvocationKHR 225
22
7: 68(ptr) AccessChain 55(data) 222
57
22
8: 49(fvec4) Load 227
2
29: 49(fvec4) VectorShuffle 228 226
4 5 2 3
Store 22
7 229
23
0
: 6(int) Load 8(invocation)
23
1: 68(ptr) AccessChain 55(data) 82
57
23
2: 49(fvec4) Load 231
23
3: 83(fvec3) VectorShuffle 232 232
0 1 2
23
4: 83(fvec3) SubgroupFirstInvocationKHR 233
23
5: 68(ptr) AccessChain 55(data) 230
57
23
6: 49(fvec4) Load 235
23
7: 49(fvec4) VectorShuffle 236 234
4 5 6 3
Store 23
5 237
23
8
: 6(int) Load 8(invocation)
2
39: 68(ptr) AccessChain 55(data) 99
57
24
0: 49(fvec4) Load 239
24
1: 49(fvec4) SubgroupFirstInvocationKHR 240
24
2: 68(ptr) AccessChain 55(data) 238
57
Store 24
2 241
24
3
: 6(int) Load 8(invocation)
24
4: 114(ptr) AccessChain 55(data) 57 66
58
24
5: 50(int) Load 244
24
6: 50(int) SubgroupFirstInvocationKHR 245
24
7: 114(ptr) AccessChain 55(data) 243 66
58
Store 24
7 246
24
8
: 6(int) Load 8(invocation)
2
49: 122(ptr) AccessChain 55(data) 66 66
25
0: 51(ivec4) Load 249
25
1: 121(ivec2) VectorShuffle 250 250
0 1
25
2: 121(ivec2) SubgroupFirstInvocationKHR 251
25
3: 122(ptr) AccessChain 55(data) 248 66
25
4: 51(ivec4) Load 253
25
5: 51(ivec4) VectorShuffle 254 252
4 5 2 3
Store 25
3 255
25
6
: 6(int) Load 8(invocation)
25
7: 122(ptr) AccessChain 55(data) 82 66
25
8: 51(ivec4) Load 257
2
59: 136(ivec3) VectorShuffle 258 258
0 1 2
26
0: 136(ivec3) SubgroupFirstInvocationKHR 259
26
1: 122(ptr) AccessChain 55(data) 256 66
26
2: 51(ivec4) Load 261
26
3: 51(ivec4) VectorShuffle 262 260
4 5 6 3
Store 26
1 263
26
4
: 6(int) Load 8(invocation)
26
5: 122(ptr) AccessChain 55(data) 99 66
26
6: 51(ivec4) Load 265
26
7: 51(ivec4) SubgroupFirstInvocationKHR 266
26
8: 122(ptr) AccessChain 55(data) 264 66
Store 26
8 267
2
69
: 6(int) Load 8(invocation)
27
0: 166(ptr) AccessChain 55(data) 57 82
58
27
1: 6(int) Load 270
27
2: 6(int) SubgroupFirstInvocationKHR 271
27
3: 166(ptr) AccessChain 55(data) 269 82
58
Store 27
3 272
27
4
: 6(int) Load 8(invocation)
27
5: 173(ptr) AccessChain 55(data) 66 82
27
6: 38(ivec4) Load 275
27
7: 42(ivec2) VectorShuffle 276 276
0 1
27
8: 42(ivec2) SubgroupFirstInvocationKHR 277
2
79: 173(ptr) AccessChain 55(data) 274 82
28
0: 38(ivec4) Load 279
28
1: 38(ivec4) VectorShuffle 280 278
4 5 2 3
Store 2
79 281
28
2
: 6(int) Load 8(invocation)
28
3: 173(ptr) AccessChain 55(data) 82 82
28
4: 38(ivec4) Load 283
28
5: 187(ivec3) VectorShuffle 284 284
0 1 2
28
6: 187(ivec3) SubgroupFirstInvocationKHR 285
28
7: 173(ptr) AccessChain 55(data) 282 82
28
8: 38(ivec4) Load 287
2
89: 38(ivec4) VectorShuffle 288 286
4 5 6 3
Store 28
7 289
29
0
: 6(int) Load 8(invocation)
29
1: 173(ptr) AccessChain 55(data) 99 82
29
2: 38(ivec4) Load 291
29
3: 38(ivec4) SubgroupFirstInvocationKHR 292
29
4: 173(ptr) AccessChain 55(data) 290 82
Store 29
4 293
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