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