Implement GL_NV_shader_subgroup_partitioned
diff --git a/SPIRV/GLSL.ext.NV.h b/SPIRV/GLSL.ext.NV.h
index c01858b..148d4b4 100644
--- a/SPIRV/GLSL.ext.NV.h
+++ b/SPIRV/GLSL.ext.NV.h
@@ -51,4 +51,7 @@
//SPV_NVX_multiview_per_view_attributes
const char* const E_SPV_NVX_multiview_per_view_attributes = "SPV_NVX_multiview_per_view_attributes";
+//SPV_NV_shader_subgroup_partitioned
+const char* const E_SPV_NV_shader_subgroup_partitioned = "SPV_NV_shader_subgroup_partitioned";
+
#endif // #ifndef GLSLextNV_H
\ No newline at end of file
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
old mode 100644
new mode 100755
index d39c260..74cb9e9
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -4666,7 +4666,13 @@
libCall = spv::CubeFaceCoordAMD;
break;
#endif
-
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartition:
+ builder.addExtension(spv::E_SPV_NV_shader_subgroup_partitioned);
+ builder.addCapability(spv::CapabilityGroupNonUniformPartitionedNV);
+ unaryOp = spv::OpGroupNonUniformPartitionNV;
+ break;
+#endif
default:
return 0;
}
@@ -5629,6 +5635,32 @@
builder.addCapability(spv::CapabilityGroupNonUniform);
builder.addCapability(spv::CapabilityGroupNonUniformQuad);
break;
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedAdd:
+ case glslang::EOpSubgroupPartitionedMul:
+ case glslang::EOpSubgroupPartitionedMin:
+ case glslang::EOpSubgroupPartitionedMax:
+ case glslang::EOpSubgroupPartitionedAnd:
+ case glslang::EOpSubgroupPartitionedOr:
+ case glslang::EOpSubgroupPartitionedXor:
+ case glslang::EOpSubgroupPartitionedInclusiveAdd:
+ case glslang::EOpSubgroupPartitionedInclusiveMul:
+ case glslang::EOpSubgroupPartitionedInclusiveMin:
+ case glslang::EOpSubgroupPartitionedInclusiveMax:
+ case glslang::EOpSubgroupPartitionedInclusiveAnd:
+ case glslang::EOpSubgroupPartitionedInclusiveOr:
+ case glslang::EOpSubgroupPartitionedInclusiveXor:
+ case glslang::EOpSubgroupPartitionedExclusiveAdd:
+ case glslang::EOpSubgroupPartitionedExclusiveMul:
+ case glslang::EOpSubgroupPartitionedExclusiveMin:
+ case glslang::EOpSubgroupPartitionedExclusiveMax:
+ case glslang::EOpSubgroupPartitionedExclusiveAnd:
+ case glslang::EOpSubgroupPartitionedExclusiveOr:
+ case glslang::EOpSubgroupPartitionedExclusiveXor:
+ builder.addExtension(spv::E_SPV_NV_shader_subgroup_partitioned);
+ builder.addCapability(spv::CapabilityGroupNonUniformPartitionedNV);
+ break;
+#endif
default: assert(0 && "Unhandled subgroup operation!");
}
@@ -5662,6 +5694,11 @@
case glslang::EOpSubgroupInclusiveAdd:
case glslang::EOpSubgroupExclusiveAdd:
case glslang::EOpSubgroupClusteredAdd:
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedAdd:
+ case glslang::EOpSubgroupPartitionedInclusiveAdd:
+ case glslang::EOpSubgroupPartitionedExclusiveAdd:
+#endif
if (isFloat) {
opCode = spv::OpGroupNonUniformFAdd;
} else {
@@ -5672,6 +5709,11 @@
case glslang::EOpSubgroupInclusiveMul:
case glslang::EOpSubgroupExclusiveMul:
case glslang::EOpSubgroupClusteredMul:
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedMul:
+ case glslang::EOpSubgroupPartitionedInclusiveMul:
+ case glslang::EOpSubgroupPartitionedExclusiveMul:
+#endif
if (isFloat) {
opCode = spv::OpGroupNonUniformFMul;
} else {
@@ -5682,6 +5724,11 @@
case glslang::EOpSubgroupInclusiveMin:
case glslang::EOpSubgroupExclusiveMin:
case glslang::EOpSubgroupClusteredMin:
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedMin:
+ case glslang::EOpSubgroupPartitionedInclusiveMin:
+ case glslang::EOpSubgroupPartitionedExclusiveMin:
+#endif
if (isFloat) {
opCode = spv::OpGroupNonUniformFMin;
} else if (isUnsigned) {
@@ -5694,6 +5741,11 @@
case glslang::EOpSubgroupInclusiveMax:
case glslang::EOpSubgroupExclusiveMax:
case glslang::EOpSubgroupClusteredMax:
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedMax:
+ case glslang::EOpSubgroupPartitionedInclusiveMax:
+ case glslang::EOpSubgroupPartitionedExclusiveMax:
+#endif
if (isFloat) {
opCode = spv::OpGroupNonUniformFMax;
} else if (isUnsigned) {
@@ -5706,6 +5758,11 @@
case glslang::EOpSubgroupInclusiveAnd:
case glslang::EOpSubgroupExclusiveAnd:
case glslang::EOpSubgroupClusteredAnd:
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedAnd:
+ case glslang::EOpSubgroupPartitionedInclusiveAnd:
+ case glslang::EOpSubgroupPartitionedExclusiveAnd:
+#endif
if (isBool) {
opCode = spv::OpGroupNonUniformLogicalAnd;
} else {
@@ -5716,6 +5773,11 @@
case glslang::EOpSubgroupInclusiveOr:
case glslang::EOpSubgroupExclusiveOr:
case glslang::EOpSubgroupClusteredOr:
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedOr:
+ case glslang::EOpSubgroupPartitionedInclusiveOr:
+ case glslang::EOpSubgroupPartitionedExclusiveOr:
+#endif
if (isBool) {
opCode = spv::OpGroupNonUniformLogicalOr;
} else {
@@ -5726,6 +5788,11 @@
case glslang::EOpSubgroupInclusiveXor:
case glslang::EOpSubgroupExclusiveXor:
case glslang::EOpSubgroupClusteredXor:
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedXor:
+ case glslang::EOpSubgroupPartitionedInclusiveXor:
+ case glslang::EOpSubgroupPartitionedExclusiveXor:
+#endif
if (isBool) {
opCode = spv::OpGroupNonUniformLogicalXor;
} else {
@@ -5786,6 +5853,35 @@
case glslang::EOpSubgroupClusteredXor:
spvGroupOperands.push_back(spv::GroupOperationClusteredReduce);
break;
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedAdd:
+ case glslang::EOpSubgroupPartitionedMul:
+ case glslang::EOpSubgroupPartitionedMin:
+ case glslang::EOpSubgroupPartitionedMax:
+ case glslang::EOpSubgroupPartitionedAnd:
+ case glslang::EOpSubgroupPartitionedOr:
+ case glslang::EOpSubgroupPartitionedXor:
+ spvGroupOperands.push_back(spv::GroupOperationPartitionedReduceNV);
+ break;
+ case glslang::EOpSubgroupPartitionedInclusiveAdd:
+ case glslang::EOpSubgroupPartitionedInclusiveMul:
+ case glslang::EOpSubgroupPartitionedInclusiveMin:
+ case glslang::EOpSubgroupPartitionedInclusiveMax:
+ case glslang::EOpSubgroupPartitionedInclusiveAnd:
+ case glslang::EOpSubgroupPartitionedInclusiveOr:
+ case glslang::EOpSubgroupPartitionedInclusiveXor:
+ spvGroupOperands.push_back(spv::GroupOperationPartitionedInclusiveScanNV);
+ break;
+ case glslang::EOpSubgroupPartitionedExclusiveAdd:
+ case glslang::EOpSubgroupPartitionedExclusiveMul:
+ case glslang::EOpSubgroupPartitionedExclusiveMin:
+ case glslang::EOpSubgroupPartitionedExclusiveMax:
+ case glslang::EOpSubgroupPartitionedExclusiveAnd:
+ case glslang::EOpSubgroupPartitionedExclusiveOr:
+ case glslang::EOpSubgroupPartitionedExclusiveXor:
+ spvGroupOperands.push_back(spv::GroupOperationPartitionedExclusiveScanNV);
+ break;
+#endif
}
// Push back the operands next.
@@ -5974,6 +6070,29 @@
case glslang::EOpSubgroupClusteredOr:
case glslang::EOpSubgroupClusteredXor:
case glslang::EOpSubgroupQuadBroadcast:
+#ifdef NV_EXTENSIONS
+ case glslang::EOpSubgroupPartitionedAdd:
+ case glslang::EOpSubgroupPartitionedMul:
+ case glslang::EOpSubgroupPartitionedMin:
+ case glslang::EOpSubgroupPartitionedMax:
+ case glslang::EOpSubgroupPartitionedAnd:
+ case glslang::EOpSubgroupPartitionedOr:
+ case glslang::EOpSubgroupPartitionedXor:
+ case glslang::EOpSubgroupPartitionedInclusiveAdd:
+ case glslang::EOpSubgroupPartitionedInclusiveMul:
+ case glslang::EOpSubgroupPartitionedInclusiveMin:
+ case glslang::EOpSubgroupPartitionedInclusiveMax:
+ case glslang::EOpSubgroupPartitionedInclusiveAnd:
+ case glslang::EOpSubgroupPartitionedInclusiveOr:
+ case glslang::EOpSubgroupPartitionedInclusiveXor:
+ case glslang::EOpSubgroupPartitionedExclusiveAdd:
+ case glslang::EOpSubgroupPartitionedExclusiveMul:
+ case glslang::EOpSubgroupPartitionedExclusiveMin:
+ case glslang::EOpSubgroupPartitionedExclusiveMax:
+ case glslang::EOpSubgroupPartitionedExclusiveAnd:
+ case glslang::EOpSubgroupPartitionedExclusiveOr:
+ case glslang::EOpSubgroupPartitionedExclusiveXor:
+#endif
return createSubgroupOperation(op, typeId, operands, typeProxy);
#ifdef AMD_EXTENSIONS
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
old mode 100644
new mode 100755
index bfe9f7a..061c13e
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -728,17 +728,22 @@
}
}
-const int GroupOperationCeiling = 4;
+const int GroupOperationCeiling = 9;
const char* GroupOperationString(int gop)
{
switch (gop)
{
- case 0: return "Reduce";
- case 1: return "InclusiveScan";
- case 2: return "ExclusiveScan";
- case 3: return "ClusteredReduce";
+ case GroupOperationReduce: return "Reduce";
+ case GroupOperationInclusiveScan: return "InclusiveScan";
+ case GroupOperationExclusiveScan: return "ExclusiveScan";
+ case GroupOperationClusteredReduce: return "ClusteredReduce";
+#ifdef NV_EXTENSIONS
+ case GroupOperationPartitionedReduceNV: return "PartitionedReduceNV";
+ case GroupOperationPartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV";
+ case GroupOperationPartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV";
+#endif
case GroupOperationCeiling:
default: return "Bad";
@@ -876,6 +881,7 @@
case 5255: return "ShaderViewportMaskNV";
case 5259: return "ShaderStereoViewNV";
case 5260: return "PerViewAttributesNV";
+ case 5297: return "GroupNonUniformPartitionedNV";
#endif
case 5265: return "FragmentFullyCoveredEXT";
@@ -1272,6 +1278,9 @@
case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE";
case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE";
+#ifdef NV_EXTENSIONS
+ case 5296: return "OpGroupNonUniformPartitionNV";
+#endif
case OpcodeCeiling:
default:
return "Bad";
@@ -3138,6 +3147,11 @@
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
#endif
+
+#ifdef NV_EXTENSIONS
+ InstructionDesc[OpGroupNonUniformPartitionNV].capabilities.push_back(CapabilityGroupNonUniformPartitionedNV);
+ InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
+#endif
}
}; // end spv namespace
diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp
index 1fc24fb..3c599f1 100755
--- a/SPIRV/spirv.hpp
+++ b/SPIRV/spirv.hpp
@@ -572,6 +572,9 @@
GroupOperationInclusiveScan = 1,
GroupOperationExclusiveScan = 2,
GroupOperationClusteredReduce = 3,
+ GroupOperationPartitionedReduceNV = 6,
+ GroupOperationPartitionedInclusiveScanNV = 7,
+ GroupOperationPartitionedExclusiveScanNV = 8,
GroupOperationMax = 0x7fffffff,
};
@@ -688,6 +691,7 @@
CapabilityShaderStereoViewNV = 5259,
CapabilityPerViewAttributesNV = 5260,
CapabilityFragmentFullyCoveredEXT = 5265,
+ CapabilityGroupNonUniformPartitionedNV = 5297,
CapabilitySubgroupShuffleINTEL = 5568,
CapabilitySubgroupBufferBlockIOINTEL = 5569,
CapabilitySubgroupImageBlockIOINTEL = 5570,
@@ -1051,6 +1055,7 @@
OpGroupSMaxNonUniformAMD = 5007,
OpFragmentMaskFetchAMD = 5011,
OpFragmentFetchAMD = 5012,
+ OpGroupNonUniformPartitionNV = 5296,
OpSubgroupShuffleINTEL = 5571,
OpSubgroupShuffleDownINTEL = 5572,
OpSubgroupShuffleUpINTEL = 5573,
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index 8ce58ef..8280051 100644
--- a/Test/baseResults/spv.specConstant.vert.out
+++ b/Test/baseResults/spv.specConstant.vert.out
@@ -11,7 +11,7 @@
Source GLSL 400
Name 4 "main"
Name 9 "arraySize"
- Name 14 "foo(vf4[s2148];"
+ Name 14 "foo(vf4[s2468];"
Name 13 "p"
Name 17 "builtin_spec_constant("
Name 20 "color"
@@ -102,10 +102,10 @@
Store 20(color) 46
48: 10 Load 22(ucol)
Store 47(param) 48
- 49: 2 FunctionCall 14(foo(vf4[s2148];) 47(param)
+ 49: 2 FunctionCall 14(foo(vf4[s2468];) 47(param)
Return
FunctionEnd
-14(foo(vf4[s2148];): 2 Function None 12
+14(foo(vf4[s2468];): 2 Function None 12
13(p): 11(ptr) FunctionParameter
15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23
diff --git a/Test/baseResults/spv.subgroupPartitioned.comp.out b/Test/baseResults/spv.subgroupPartitioned.comp.out
new file mode 100755
index 0000000..74f0104
--- /dev/null
+++ b/Test/baseResults/spv.subgroupPartitioned.comp.out
@@ -0,0 +1,2872 @@
+spv.subgroupPartitioned.comp
+// Module Version 10300
+// Generated by (magic number): 80006
+// Id's are bound by 2506
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformPartitionedNV
+ Extension "SPV_NV_shader_subgroup_partitioned"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 1 1
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_NV_shader_subgroup_partitioned"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 19 "ballot"
+ Name 28 "Buffers"
+ MemberName 28(Buffers) 0 "f4"
+ MemberName 28(Buffers) 1 "i4"
+ MemberName 28(Buffers) 2 "u4"
+ MemberName 28(Buffers) 3 "d4"
+ Name 31 "data"
+ Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 11 RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) RelaxedPrecision
+ Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 13 RelaxedPrecision
+ Decorate 14 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
+ MemberDecorate 28(Buffers) 0 Offset 0
+ MemberDecorate 28(Buffers) 1 Offset 16
+ MemberDecorate 28(Buffers) 2 Offset 32
+ MemberDecorate 28(Buffers) 3 Offset 64
+ Decorate 28(Buffers) BufferBlock
+ Decorate 31(data) DescriptorSet 0
+ Decorate 31(data) Binding 0
+ Decorate 2505 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 9: TypePointer Input 6(int)
+10(gl_SubgroupInvocationID): 9(ptr) Variable Input
+12(gl_SubgroupSize): 9(ptr) Variable Input
+ 15: 6(int) Constant 4
+ 17: TypeVector 6(int) 4
+ 18: TypePointer Function 17(ivec4)
+ 22: TypeFloat 32
+ 23: TypeVector 22(float) 4
+ 24: TypeInt 32 1
+ 25: TypeVector 24(int) 4
+ 26: TypeFloat 64
+ 27: TypeVector 26(float) 4
+ 28(Buffers): TypeStruct 23(fvec4) 25(ivec4) 17(ivec4) 27(fvec4)
+ 29: TypeArray 28(Buffers) 15
+ 30: TypePointer Uniform 29
+ 31(data): 30(ptr) Variable Uniform
+ 33: 24(int) Constant 2
+ 34: 24(int) Constant 0
+ 35: 6(int) Constant 0
+ 36: TypePointer Uniform 22(float)
+ 40: TypePointer Uniform 17(ivec4)
+ 43: TypeVector 22(float) 2
+ 44: TypePointer Uniform 23(fvec4)
+ 51: TypeVector 22(float) 3
+ 63: 24(int) Constant 1
+ 64: TypePointer Uniform 24(int)
+ 70: TypeVector 24(int) 2
+ 71: TypePointer Uniform 25(ivec4)
+ 78: TypeVector 24(int) 3
+ 90: TypePointer Uniform 6(int)
+ 96: TypeVector 6(int) 2
+ 103: TypeVector 6(int) 3
+ 115: 24(int) Constant 3
+ 116: TypePointer Uniform 26(float)
+ 122: TypeVector 26(float) 2
+ 123: TypePointer Uniform 27(fvec4)
+ 130: TypeVector 26(float) 3
+ 144: TypeBool
+ 152: TypeVector 144(bool) 2
+ 153: 96(ivec2) ConstantComposite 35 35
+ 161: TypeVector 144(bool) 3
+ 162: 103(ivec3) ConstantComposite 35 35 35
+ 169: TypeVector 144(bool) 4
+ 170: 17(ivec4) ConstantComposite 35 35 35 35
+ 178: 6(int) Constant 3
+ 727: 70(ivec2) ConstantComposite 34 34
+ 731: 70(ivec2) ConstantComposite 63 63
+ 740: 78(ivec3) ConstantComposite 34 34 34
+ 744: 78(ivec3) ConstantComposite 63 63 63
+ 752: 25(ivec4) ConstantComposite 34 34 34 34
+ 756: 25(ivec4) ConstantComposite 63 63 63 63
+ 2503: 6(int) Constant 8
+ 2504: 6(int) Constant 1
+ 2505: 103(ivec3) ConstantComposite 2503 2504 2504
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 19(ballot): 18(ptr) Variable Function
+ 11: 6(int) Load 10(gl_SubgroupInvocationID)
+ 13: 6(int) Load 12(gl_SubgroupSize)
+ 14: 6(int) IAdd 11 13
+ 16: 6(int) UMod 14 15
+ Store 8(invocation) 16
+ 20: 6(int) Load 8(invocation)
+ 21: 17(ivec4) GroupNonUniformPartitionNV 20
+ Store 19(ballot) 21
+ 32: 6(int) Load 8(invocation)
+ 37: 36(ptr) AccessChain 31(data) 34 34 35
+ 38: 22(float) Load 37
+ 39: 17(ivec4) GroupNonUniformPartitionNV 38
+ 41: 40(ptr) AccessChain 31(data) 32 33
+ Store 41 39
+ 42: 6(int) Load 8(invocation)
+ 45: 44(ptr) AccessChain 31(data) 34 34
+ 46: 23(fvec4) Load 45
+ 47: 43(fvec2) VectorShuffle 46 46 0 1
+ 48: 17(ivec4) GroupNonUniformPartitionNV 47
+ 49: 40(ptr) AccessChain 31(data) 42 33
+ Store 49 48
+ 50: 6(int) Load 8(invocation)
+ 52: 44(ptr) AccessChain 31(data) 34 34
+ 53: 23(fvec4) Load 52
+ 54: 51(fvec3) VectorShuffle 53 53 0 1 2
+ 55: 17(ivec4) GroupNonUniformPartitionNV 54
+ 56: 40(ptr) AccessChain 31(data) 50 33
+ Store 56 55
+ 57: 6(int) Load 8(invocation)
+ 58: 44(ptr) AccessChain 31(data) 34 34
+ 59: 23(fvec4) Load 58
+ 60: 17(ivec4) GroupNonUniformPartitionNV 59
+ 61: 40(ptr) AccessChain 31(data) 57 33
+ Store 61 60
+ 62: 6(int) Load 8(invocation)
+ 65: 64(ptr) AccessChain 31(data) 34 63 35
+ 66: 24(int) Load 65
+ 67: 17(ivec4) GroupNonUniformPartitionNV 66
+ 68: 40(ptr) AccessChain 31(data) 62 33
+ Store 68 67
+ 69: 6(int) Load 8(invocation)
+ 72: 71(ptr) AccessChain 31(data) 34 63
+ 73: 25(ivec4) Load 72
+ 74: 70(ivec2) VectorShuffle 73 73 0 1
+ 75: 17(ivec4) GroupNonUniformPartitionNV 74
+ 76: 40(ptr) AccessChain 31(data) 69 33
+ Store 76 75
+ 77: 6(int) Load 8(invocation)
+ 79: 71(ptr) AccessChain 31(data) 34 63
+ 80: 25(ivec4) Load 79
+ 81: 78(ivec3) VectorShuffle 80 80 0 1 2
+ 82: 17(ivec4) GroupNonUniformPartitionNV 81
+ 83: 40(ptr) AccessChain 31(data) 77 33
+ Store 83 82
+ 84: 6(int) Load 8(invocation)
+ 85: 71(ptr) AccessChain 31(data) 34 63
+ 86: 25(ivec4) Load 85
+ 87: 17(ivec4) GroupNonUniformPartitionNV 86
+ 88: 40(ptr) AccessChain 31(data) 84 33
+ Store 88 87
+ 89: 6(int) Load 8(invocation)
+ 91: 90(ptr) AccessChain 31(data) 34 33 35
+ 92: 6(int) Load 91
+ 93: 17(ivec4) GroupNonUniformPartitionNV 92
+ 94: 40(ptr) AccessChain 31(data) 89 33
+ Store 94 93
+ 95: 6(int) Load 8(invocation)
+ 97: 40(ptr) AccessChain 31(data) 34 33
+ 98: 17(ivec4) Load 97
+ 99: 96(ivec2) VectorShuffle 98 98 0 1
+ 100: 17(ivec4) GroupNonUniformPartitionNV 99
+ 101: 40(ptr) AccessChain 31(data) 95 33
+ Store 101 100
+ 102: 6(int) Load 8(invocation)
+ 104: 40(ptr) AccessChain 31(data) 34 33
+ 105: 17(ivec4) Load 104
+ 106: 103(ivec3) VectorShuffle 105 105 0 1 2
+ 107: 17(ivec4) GroupNonUniformPartitionNV 106
+ 108: 40(ptr) AccessChain 31(data) 102 33
+ Store 108 107
+ 109: 6(int) Load 8(invocation)
+ 110: 40(ptr) AccessChain 31(data) 34 33
+ 111: 17(ivec4) Load 110
+ 112: 17(ivec4) GroupNonUniformPartitionNV 111
+ 113: 40(ptr) AccessChain 31(data) 109 33
+ Store 113 112
+ 114: 6(int) Load 8(invocation)
+ 117: 116(ptr) AccessChain 31(data) 34 115 35
+ 118: 26(float) Load 117
+ 119: 17(ivec4) GroupNonUniformPartitionNV 118
+ 120: 40(ptr) AccessChain 31(data) 114 33
+ Store 120 119
+ 121: 6(int) Load 8(invocation)
+ 124: 123(ptr) AccessChain 31(data) 34 115
+ 125: 27(fvec4) Load 124
+ 126: 122(fvec2) VectorShuffle 125 125 0 1
+ 127: 17(ivec4) GroupNonUniformPartitionNV 126
+ 128: 40(ptr) AccessChain 31(data) 121 33
+ Store 128 127
+ 129: 6(int) Load 8(invocation)
+ 131: 123(ptr) AccessChain 31(data) 34 115
+ 132: 27(fvec4) Load 131
+ 133: 130(fvec3) VectorShuffle 132 132 0 1 2
+ 134: 17(ivec4) GroupNonUniformPartitionNV 133
+ 135: 40(ptr) AccessChain 31(data) 129 33
+ Store 135 134
+ 136: 6(int) Load 8(invocation)
+ 137: 123(ptr) AccessChain 31(data) 34 115
+ 138: 27(fvec4) Load 137
+ 139: 17(ivec4) GroupNonUniformPartitionNV 138
+ 140: 40(ptr) AccessChain 31(data) 136 33
+ Store 140 139
+ 141: 6(int) Load 8(invocation)
+ 142: 64(ptr) AccessChain 31(data) 34 63 35
+ 143: 24(int) Load 142
+ 145: 144(bool) INotEqual 143 35
+ 146: 17(ivec4) GroupNonUniformPartitionNV 145
+ 147: 40(ptr) AccessChain 31(data) 141 33
+ Store 147 146
+ 148: 6(int) Load 8(invocation)
+ 149: 71(ptr) AccessChain 31(data) 34 63
+ 150: 25(ivec4) Load 149
+ 151: 70(ivec2) VectorShuffle 150 150 0 1
+ 154: 152(bvec2) INotEqual 151 153
+ 155: 17(ivec4) GroupNonUniformPartitionNV 154
+ 156: 40(ptr) AccessChain 31(data) 148 33
+ Store 156 155
+ 157: 6(int) Load 8(invocation)
+ 158: 71(ptr) AccessChain 31(data) 34 63
+ 159: 25(ivec4) Load 158
+ 160: 78(ivec3) VectorShuffle 159 159 0 1 2
+ 163: 161(bvec3) INotEqual 160 162
+ 164: 17(ivec4) GroupNonUniformPartitionNV 163
+ 165: 40(ptr) AccessChain 31(data) 157 33
+ Store 165 164
+ 166: 6(int) Load 8(invocation)
+ 167: 71(ptr) AccessChain 31(data) 34 63
+ 168: 25(ivec4) Load 167
+ 171: 169(bvec4) INotEqual 168 170
+ 172: 17(ivec4) GroupNonUniformPartitionNV 171
+ 173: 40(ptr) AccessChain 31(data) 166 33
+ Store 173 172
+ 174: 6(int) Load 8(invocation)
+ 175: 36(ptr) AccessChain 31(data) 34 34 35
+ 176: 22(float) Load 175
+ 177: 17(ivec4) Load 19(ballot)
+ 179: 22(float) GroupNonUniformFAdd 178 PartitionedReduceNV 176 177
+ 180: 36(ptr) AccessChain 31(data) 174 34 35
+ Store 180 179
+ 181: 6(int) Load 8(invocation)
+ 182: 44(ptr) AccessChain 31(data) 63 34
+ 183: 23(fvec4) Load 182
+ 184: 43(fvec2) VectorShuffle 183 183 0 1
+ 185: 17(ivec4) Load 19(ballot)
+ 186: 43(fvec2) GroupNonUniformFAdd 178 PartitionedReduceNV 184 185
+ 187: 44(ptr) AccessChain 31(data) 181 34
+ 188: 23(fvec4) Load 187
+ 189: 23(fvec4) VectorShuffle 188 186 4 5 2 3
+ Store 187 189
+ 190: 6(int) Load 8(invocation)
+ 191: 44(ptr) AccessChain 31(data) 33 34
+ 192: 23(fvec4) Load 191
+ 193: 51(fvec3) VectorShuffle 192 192 0 1 2
+ 194: 17(ivec4) Load 19(ballot)
+ 195: 51(fvec3) GroupNonUniformFAdd 178 PartitionedReduceNV 193 194
+ 196: 44(ptr) AccessChain 31(data) 190 34
+ 197: 23(fvec4) Load 196
+ 198: 23(fvec4) VectorShuffle 197 195 4 5 6 3
+ Store 196 198
+ 199: 6(int) Load 8(invocation)
+ 200: 44(ptr) AccessChain 31(data) 115 34
+ 201: 23(fvec4) Load 200
+ 202: 17(ivec4) Load 19(ballot)
+ 203: 23(fvec4) GroupNonUniformFAdd 178 PartitionedReduceNV 201 202
+ 204: 44(ptr) AccessChain 31(data) 199 34
+ Store 204 203
+ 205: 6(int) Load 8(invocation)
+ 206: 64(ptr) AccessChain 31(data) 34 63 35
+ 207: 24(int) Load 206
+ 208: 17(ivec4) Load 19(ballot)
+ 209: 24(int) GroupNonUniformIAdd 178 PartitionedReduceNV 207 208
+ 210: 64(ptr) AccessChain 31(data) 205 63 35
+ Store 210 209
+ 211: 6(int) Load 8(invocation)
+ 212: 71(ptr) AccessChain 31(data) 63 63
+ 213: 25(ivec4) Load 212
+ 214: 70(ivec2) VectorShuffle 213 213 0 1
+ 215: 17(ivec4) Load 19(ballot)
+ 216: 70(ivec2) GroupNonUniformIAdd 178 PartitionedReduceNV 214 215
+ 217: 71(ptr) AccessChain 31(data) 211 63
+ 218: 25(ivec4) Load 217
+ 219: 25(ivec4) VectorShuffle 218 216 4 5 2 3
+ Store 217 219
+ 220: 6(int) Load 8(invocation)
+ 221: 71(ptr) AccessChain 31(data) 33 63
+ 222: 25(ivec4) Load 221
+ 223: 78(ivec3) VectorShuffle 222 222 0 1 2
+ 224: 17(ivec4) Load 19(ballot)
+ 225: 78(ivec3) GroupNonUniformIAdd 178 PartitionedReduceNV 223 224
+ 226: 71(ptr) AccessChain 31(data) 220 63
+ 227: 25(ivec4) Load 226
+ 228: 25(ivec4) VectorShuffle 227 225 4 5 6 3
+ Store 226 228
+ 229: 6(int) Load 8(invocation)
+ 230: 71(ptr) AccessChain 31(data) 115 63
+ 231: 25(ivec4) Load 230
+ 232: 17(ivec4) Load 19(ballot)
+ 233: 25(ivec4) GroupNonUniformIAdd 178 PartitionedReduceNV 231 232
+ 234: 71(ptr) AccessChain 31(data) 229 63
+ Store 234 233
+ 235: 6(int) Load 8(invocation)
+ 236: 90(ptr) AccessChain 31(data) 34 33 35
+ 237: 6(int) Load 236
+ 238: 17(ivec4) Load 19(ballot)
+ 239: 6(int) GroupNonUniformIAdd 178 PartitionedReduceNV 237 238
+ 240: 90(ptr) AccessChain 31(data) 235 33 35
+ Store 240 239
+ 241: 6(int) Load 8(invocation)
+ 242: 40(ptr) AccessChain 31(data) 63 33
+ 243: 17(ivec4) Load 242
+ 244: 96(ivec2) VectorShuffle 243 243 0 1
+ 245: 17(ivec4) Load 19(ballot)
+ 246: 96(ivec2) GroupNonUniformIAdd 178 PartitionedReduceNV 244 245
+ 247: 40(ptr) AccessChain 31(data) 241 33
+ 248: 17(ivec4) Load 247
+ 249: 17(ivec4) VectorShuffle 248 246 4 5 2 3
+ Store 247 249
+ 250: 6(int) Load 8(invocation)
+ 251: 40(ptr) AccessChain 31(data) 33 33
+ 252: 17(ivec4) Load 251
+ 253: 103(ivec3) VectorShuffle 252 252 0 1 2
+ 254: 17(ivec4) Load 19(ballot)
+ 255: 103(ivec3) GroupNonUniformIAdd 178 PartitionedReduceNV 253 254
+ 256: 40(ptr) AccessChain 31(data) 250 33
+ 257: 17(ivec4) Load 256
+ 258: 17(ivec4) VectorShuffle 257 255 4 5 6 3
+ Store 256 258
+ 259: 6(int) Load 8(invocation)
+ 260: 40(ptr) AccessChain 31(data) 115 33
+ 261: 17(ivec4) Load 260
+ 262: 17(ivec4) Load 19(ballot)
+ 263: 17(ivec4) GroupNonUniformIAdd 178 PartitionedReduceNV 261 262
+ 264: 40(ptr) AccessChain 31(data) 259 33
+ Store 264 263
+ 265: 6(int) Load 8(invocation)
+ 266: 116(ptr) AccessChain 31(data) 34 115 35
+ 267: 26(float) Load 266
+ 268: 17(ivec4) Load 19(ballot)
+ 269: 26(float) GroupNonUniformFAdd 178 PartitionedReduceNV 267 268
+ 270: 116(ptr) AccessChain 31(data) 265 115 35
+ Store 270 269
+ 271: 6(int) Load 8(invocation)
+ 272: 123(ptr) AccessChain 31(data) 63 115
+ 273: 27(fvec4) Load 272
+ 274: 122(fvec2) VectorShuffle 273 273 0 1
+ 275: 17(ivec4) Load 19(ballot)
+ 276: 122(fvec2) GroupNonUniformFAdd 178 PartitionedReduceNV 274 275
+ 277: 123(ptr) AccessChain 31(data) 271 115
+ 278: 27(fvec4) Load 277
+ 279: 27(fvec4) VectorShuffle 278 276 4 5 2 3
+ Store 277 279
+ 280: 6(int) Load 8(invocation)
+ 281: 123(ptr) AccessChain 31(data) 33 115
+ 282: 27(fvec4) Load 281
+ 283: 130(fvec3) VectorShuffle 282 282 0 1 2
+ 284: 17(ivec4) Load 19(ballot)
+ 285: 130(fvec3) GroupNonUniformFAdd 178 PartitionedReduceNV 283 284
+ 286: 123(ptr) AccessChain 31(data) 280 115
+ 287: 27(fvec4) Load 286
+ 288: 27(fvec4) VectorShuffle 287 285 4 5 6 3
+ Store 286 288
+ 289: 6(int) Load 8(invocation)
+ 290: 123(ptr) AccessChain 31(data) 115 115
+ 291: 27(fvec4) Load 290
+ 292: 17(ivec4) Load 19(ballot)
+ 293: 27(fvec4) GroupNonUniformFAdd 178 PartitionedReduceNV 291 292
+ 294: 123(ptr) AccessChain 31(data) 289 115
+ Store 294 293
+ 295: 6(int) Load 8(invocation)
+ 296: 36(ptr) AccessChain 31(data) 34 34 35
+ 297: 22(float) Load 296
+ 298: 17(ivec4) Load 19(ballot)
+ 299: 22(float) GroupNonUniformFMul 178 PartitionedReduceNV 297 298
+ 300: 36(ptr) AccessChain 31(data) 295 34 35
+ Store 300 299
+ 301: 6(int) Load 8(invocation)
+ 302: 44(ptr) AccessChain 31(data) 63 34
+ 303: 23(fvec4) Load 302
+ 304: 43(fvec2) VectorShuffle 303 303 0 1
+ 305: 17(ivec4) Load 19(ballot)
+ 306: 43(fvec2) GroupNonUniformFMul 178 PartitionedReduceNV 304 305
+ 307: 44(ptr) AccessChain 31(data) 301 34
+ 308: 23(fvec4) Load 307
+ 309: 23(fvec4) VectorShuffle 308 306 4 5 2 3
+ Store 307 309
+ 310: 6(int) Load 8(invocation)
+ 311: 44(ptr) AccessChain 31(data) 33 34
+ 312: 23(fvec4) Load 311
+ 313: 51(fvec3) VectorShuffle 312 312 0 1 2
+ 314: 17(ivec4) Load 19(ballot)
+ 315: 51(fvec3) GroupNonUniformFMul 178 PartitionedReduceNV 313 314
+ 316: 44(ptr) AccessChain 31(data) 310 34
+ 317: 23(fvec4) Load 316
+ 318: 23(fvec4) VectorShuffle 317 315 4 5 6 3
+ Store 316 318
+ 319: 6(int) Load 8(invocation)
+ 320: 44(ptr) AccessChain 31(data) 115 34
+ 321: 23(fvec4) Load 320
+ 322: 17(ivec4) Load 19(ballot)
+ 323: 23(fvec4) GroupNonUniformFMul 178 PartitionedReduceNV 321 322
+ 324: 44(ptr) AccessChain 31(data) 319 34
+ Store 324 323
+ 325: 6(int) Load 8(invocation)
+ 326: 64(ptr) AccessChain 31(data) 34 63 35
+ 327: 24(int) Load 326
+ 328: 17(ivec4) Load 19(ballot)
+ 329: 24(int) GroupNonUniformIMul 178 PartitionedReduceNV 327 328
+ 330: 64(ptr) AccessChain 31(data) 325 63 35
+ Store 330 329
+ 331: 6(int) Load 8(invocation)
+ 332: 71(ptr) AccessChain 31(data) 63 63
+ 333: 25(ivec4) Load 332
+ 334: 70(ivec2) VectorShuffle 333 333 0 1
+ 335: 17(ivec4) Load 19(ballot)
+ 336: 70(ivec2) GroupNonUniformIMul 178 PartitionedReduceNV 334 335
+ 337: 71(ptr) AccessChain 31(data) 331 63
+ 338: 25(ivec4) Load 337
+ 339: 25(ivec4) VectorShuffle 338 336 4 5 2 3
+ Store 337 339
+ 340: 6(int) Load 8(invocation)
+ 341: 71(ptr) AccessChain 31(data) 33 63
+ 342: 25(ivec4) Load 341
+ 343: 78(ivec3) VectorShuffle 342 342 0 1 2
+ 344: 17(ivec4) Load 19(ballot)
+ 345: 78(ivec3) GroupNonUniformIMul 178 PartitionedReduceNV 343 344
+ 346: 71(ptr) AccessChain 31(data) 340 63
+ 347: 25(ivec4) Load 346
+ 348: 25(ivec4) VectorShuffle 347 345 4 5 6 3
+ Store 346 348
+ 349: 6(int) Load 8(invocation)
+ 350: 71(ptr) AccessChain 31(data) 115 63
+ 351: 25(ivec4) Load 350
+ 352: 17(ivec4) Load 19(ballot)
+ 353: 25(ivec4) GroupNonUniformIMul 178 PartitionedReduceNV 351 352
+ 354: 71(ptr) AccessChain 31(data) 349 63
+ Store 354 353
+ 355: 6(int) Load 8(invocation)
+ 356: 90(ptr) AccessChain 31(data) 34 33 35
+ 357: 6(int) Load 356
+ 358: 17(ivec4) Load 19(ballot)
+ 359: 6(int) GroupNonUniformIMul 178 PartitionedReduceNV 357 358
+ 360: 90(ptr) AccessChain 31(data) 355 33 35
+ Store 360 359
+ 361: 6(int) Load 8(invocation)
+ 362: 40(ptr) AccessChain 31(data) 63 33
+ 363: 17(ivec4) Load 362
+ 364: 96(ivec2) VectorShuffle 363 363 0 1
+ 365: 17(ivec4) Load 19(ballot)
+ 366: 96(ivec2) GroupNonUniformIMul 178 PartitionedReduceNV 364 365
+ 367: 40(ptr) AccessChain 31(data) 361 33
+ 368: 17(ivec4) Load 367
+ 369: 17(ivec4) VectorShuffle 368 366 4 5 2 3
+ Store 367 369
+ 370: 6(int) Load 8(invocation)
+ 371: 40(ptr) AccessChain 31(data) 33 33
+ 372: 17(ivec4) Load 371
+ 373: 103(ivec3) VectorShuffle 372 372 0 1 2
+ 374: 17(ivec4) Load 19(ballot)
+ 375: 103(ivec3) GroupNonUniformIMul 178 PartitionedReduceNV 373 374
+ 376: 40(ptr) AccessChain 31(data) 370 33
+ 377: 17(ivec4) Load 376
+ 378: 17(ivec4) VectorShuffle 377 375 4 5 6 3
+ Store 376 378
+ 379: 6(int) Load 8(invocation)
+ 380: 40(ptr) AccessChain 31(data) 115 33
+ 381: 17(ivec4) Load 380
+ 382: 17(ivec4) Load 19(ballot)
+ 383: 17(ivec4) GroupNonUniformIMul 178 PartitionedReduceNV 381 382
+ 384: 40(ptr) AccessChain 31(data) 379 33
+ Store 384 383
+ 385: 6(int) Load 8(invocation)
+ 386: 116(ptr) AccessChain 31(data) 34 115 35
+ 387: 26(float) Load 386
+ 388: 17(ivec4) Load 19(ballot)
+ 389: 26(float) GroupNonUniformFMul 178 PartitionedReduceNV 387 388
+ 390: 116(ptr) AccessChain 31(data) 385 115 35
+ Store 390 389
+ 391: 6(int) Load 8(invocation)
+ 392: 123(ptr) AccessChain 31(data) 63 115
+ 393: 27(fvec4) Load 392
+ 394: 122(fvec2) VectorShuffle 393 393 0 1
+ 395: 17(ivec4) Load 19(ballot)
+ 396: 122(fvec2) GroupNonUniformFMul 178 PartitionedReduceNV 394 395
+ 397: 123(ptr) AccessChain 31(data) 391 115
+ 398: 27(fvec4) Load 397
+ 399: 27(fvec4) VectorShuffle 398 396 4 5 2 3
+ Store 397 399
+ 400: 6(int) Load 8(invocation)
+ 401: 123(ptr) AccessChain 31(data) 33 115
+ 402: 27(fvec4) Load 401
+ 403: 130(fvec3) VectorShuffle 402 402 0 1 2
+ 404: 17(ivec4) Load 19(ballot)
+ 405: 130(fvec3) GroupNonUniformFMul 178 PartitionedReduceNV 403 404
+ 406: 123(ptr) AccessChain 31(data) 400 115
+ 407: 27(fvec4) Load 406
+ 408: 27(fvec4) VectorShuffle 407 405 4 5 6 3
+ Store 406 408
+ 409: 6(int) Load 8(invocation)
+ 410: 123(ptr) AccessChain 31(data) 115 115
+ 411: 27(fvec4) Load 410
+ 412: 17(ivec4) Load 19(ballot)
+ 413: 27(fvec4) GroupNonUniformFMul 178 PartitionedReduceNV 411 412
+ 414: 123(ptr) AccessChain 31(data) 409 115
+ Store 414 413
+ 415: 6(int) Load 8(invocation)
+ 416: 36(ptr) AccessChain 31(data) 34 34 35
+ 417: 22(float) Load 416
+ 418: 17(ivec4) Load 19(ballot)
+ 419: 22(float) GroupNonUniformFMin 178 PartitionedReduceNV 417 418
+ 420: 36(ptr) AccessChain 31(data) 415 34 35
+ Store 420 419
+ 421: 6(int) Load 8(invocation)
+ 422: 44(ptr) AccessChain 31(data) 63 34
+ 423: 23(fvec4) Load 422
+ 424: 43(fvec2) VectorShuffle 423 423 0 1
+ 425: 17(ivec4) Load 19(ballot)
+ 426: 43(fvec2) GroupNonUniformFMin 178 PartitionedReduceNV 424 425
+ 427: 44(ptr) AccessChain 31(data) 421 34
+ 428: 23(fvec4) Load 427
+ 429: 23(fvec4) VectorShuffle 428 426 4 5 2 3
+ Store 427 429
+ 430: 6(int) Load 8(invocation)
+ 431: 44(ptr) AccessChain 31(data) 33 34
+ 432: 23(fvec4) Load 431
+ 433: 51(fvec3) VectorShuffle 432 432 0 1 2
+ 434: 17(ivec4) Load 19(ballot)
+ 435: 51(fvec3) GroupNonUniformFMin 178 PartitionedReduceNV 433 434
+ 436: 44(ptr) AccessChain 31(data) 430 34
+ 437: 23(fvec4) Load 436
+ 438: 23(fvec4) VectorShuffle 437 435 4 5 6 3
+ Store 436 438
+ 439: 6(int) Load 8(invocation)
+ 440: 44(ptr) AccessChain 31(data) 115 34
+ 441: 23(fvec4) Load 440
+ 442: 17(ivec4) Load 19(ballot)
+ 443: 23(fvec4) GroupNonUniformFMin 178 PartitionedReduceNV 441 442
+ 444: 44(ptr) AccessChain 31(data) 439 34
+ Store 444 443
+ 445: 6(int) Load 8(invocation)
+ 446: 64(ptr) AccessChain 31(data) 34 63 35
+ 447: 24(int) Load 446
+ 448: 17(ivec4) Load 19(ballot)
+ 449: 24(int) GroupNonUniformSMin 178 PartitionedReduceNV 447 448
+ 450: 64(ptr) AccessChain 31(data) 445 63 35
+ Store 450 449
+ 451: 6(int) Load 8(invocation)
+ 452: 71(ptr) AccessChain 31(data) 63 63
+ 453: 25(ivec4) Load 452
+ 454: 70(ivec2) VectorShuffle 453 453 0 1
+ 455: 17(ivec4) Load 19(ballot)
+ 456: 70(ivec2) GroupNonUniformSMin 178 PartitionedReduceNV 454 455
+ 457: 71(ptr) AccessChain 31(data) 451 63
+ 458: 25(ivec4) Load 457
+ 459: 25(ivec4) VectorShuffle 458 456 4 5 2 3
+ Store 457 459
+ 460: 6(int) Load 8(invocation)
+ 461: 71(ptr) AccessChain 31(data) 33 63
+ 462: 25(ivec4) Load 461
+ 463: 78(ivec3) VectorShuffle 462 462 0 1 2
+ 464: 17(ivec4) Load 19(ballot)
+ 465: 78(ivec3) GroupNonUniformSMin 178 PartitionedReduceNV 463 464
+ 466: 71(ptr) AccessChain 31(data) 460 63
+ 467: 25(ivec4) Load 466
+ 468: 25(ivec4) VectorShuffle 467 465 4 5 6 3
+ Store 466 468
+ 469: 6(int) Load 8(invocation)
+ 470: 71(ptr) AccessChain 31(data) 115 63
+ 471: 25(ivec4) Load 470
+ 472: 17(ivec4) Load 19(ballot)
+ 473: 25(ivec4) GroupNonUniformSMin 178 PartitionedReduceNV 471 472
+ 474: 71(ptr) AccessChain 31(data) 469 63
+ Store 474 473
+ 475: 6(int) Load 8(invocation)
+ 476: 90(ptr) AccessChain 31(data) 34 33 35
+ 477: 6(int) Load 476
+ 478: 17(ivec4) Load 19(ballot)
+ 479: 6(int) GroupNonUniformUMin 178 PartitionedReduceNV 477 478
+ 480: 90(ptr) AccessChain 31(data) 475 33 35
+ Store 480 479
+ 481: 6(int) Load 8(invocation)
+ 482: 40(ptr) AccessChain 31(data) 63 33
+ 483: 17(ivec4) Load 482
+ 484: 96(ivec2) VectorShuffle 483 483 0 1
+ 485: 17(ivec4) Load 19(ballot)
+ 486: 96(ivec2) GroupNonUniformUMin 178 PartitionedReduceNV 484 485
+ 487: 40(ptr) AccessChain 31(data) 481 33
+ 488: 17(ivec4) Load 487
+ 489: 17(ivec4) VectorShuffle 488 486 4 5 2 3
+ Store 487 489
+ 490: 6(int) Load 8(invocation)
+ 491: 40(ptr) AccessChain 31(data) 33 33
+ 492: 17(ivec4) Load 491
+ 493: 103(ivec3) VectorShuffle 492 492 0 1 2
+ 494: 17(ivec4) Load 19(ballot)
+ 495: 103(ivec3) GroupNonUniformUMin 178 PartitionedReduceNV 493 494
+ 496: 40(ptr) AccessChain 31(data) 490 33
+ 497: 17(ivec4) Load 496
+ 498: 17(ivec4) VectorShuffle 497 495 4 5 6 3
+ Store 496 498
+ 499: 6(int) Load 8(invocation)
+ 500: 40(ptr) AccessChain 31(data) 115 33
+ 501: 17(ivec4) Load 500
+ 502: 17(ivec4) Load 19(ballot)
+ 503: 17(ivec4) GroupNonUniformUMin 178 PartitionedReduceNV 501 502
+ 504: 40(ptr) AccessChain 31(data) 499 33
+ Store 504 503
+ 505: 6(int) Load 8(invocation)
+ 506: 116(ptr) AccessChain 31(data) 34 115 35
+ 507: 26(float) Load 506
+ 508: 17(ivec4) Load 19(ballot)
+ 509: 26(float) GroupNonUniformFMin 178 PartitionedReduceNV 507 508
+ 510: 116(ptr) AccessChain 31(data) 505 115 35
+ Store 510 509
+ 511: 6(int) Load 8(invocation)
+ 512: 123(ptr) AccessChain 31(data) 63 115
+ 513: 27(fvec4) Load 512
+ 514: 122(fvec2) VectorShuffle 513 513 0 1
+ 515: 17(ivec4) Load 19(ballot)
+ 516: 122(fvec2) GroupNonUniformFMin 178 PartitionedReduceNV 514 515
+ 517: 123(ptr) AccessChain 31(data) 511 115
+ 518: 27(fvec4) Load 517
+ 519: 27(fvec4) VectorShuffle 518 516 4 5 2 3
+ Store 517 519
+ 520: 6(int) Load 8(invocation)
+ 521: 123(ptr) AccessChain 31(data) 33 115
+ 522: 27(fvec4) Load 521
+ 523: 130(fvec3) VectorShuffle 522 522 0 1 2
+ 524: 17(ivec4) Load 19(ballot)
+ 525: 130(fvec3) GroupNonUniformFMin 178 PartitionedReduceNV 523 524
+ 526: 123(ptr) AccessChain 31(data) 520 115
+ 527: 27(fvec4) Load 526
+ 528: 27(fvec4) VectorShuffle 527 525 4 5 6 3
+ Store 526 528
+ 529: 6(int) Load 8(invocation)
+ 530: 123(ptr) AccessChain 31(data) 115 115
+ 531: 27(fvec4) Load 530
+ 532: 17(ivec4) Load 19(ballot)
+ 533: 27(fvec4) GroupNonUniformFMin 178 PartitionedReduceNV 531 532
+ 534: 123(ptr) AccessChain 31(data) 529 115
+ Store 534 533
+ 535: 6(int) Load 8(invocation)
+ 536: 36(ptr) AccessChain 31(data) 34 34 35
+ 537: 22(float) Load 536
+ 538: 17(ivec4) Load 19(ballot)
+ 539: 22(float) GroupNonUniformFMax 178 PartitionedReduceNV 537 538
+ 540: 36(ptr) AccessChain 31(data) 535 34 35
+ Store 540 539
+ 541: 6(int) Load 8(invocation)
+ 542: 44(ptr) AccessChain 31(data) 63 34
+ 543: 23(fvec4) Load 542
+ 544: 43(fvec2) VectorShuffle 543 543 0 1
+ 545: 17(ivec4) Load 19(ballot)
+ 546: 43(fvec2) GroupNonUniformFMax 178 PartitionedReduceNV 544 545
+ 547: 44(ptr) AccessChain 31(data) 541 34
+ 548: 23(fvec4) Load 547
+ 549: 23(fvec4) VectorShuffle 548 546 4 5 2 3
+ Store 547 549
+ 550: 6(int) Load 8(invocation)
+ 551: 44(ptr) AccessChain 31(data) 33 34
+ 552: 23(fvec4) Load 551
+ 553: 51(fvec3) VectorShuffle 552 552 0 1 2
+ 554: 17(ivec4) Load 19(ballot)
+ 555: 51(fvec3) GroupNonUniformFMax 178 PartitionedReduceNV 553 554
+ 556: 44(ptr) AccessChain 31(data) 550 34
+ 557: 23(fvec4) Load 556
+ 558: 23(fvec4) VectorShuffle 557 555 4 5 6 3
+ Store 556 558
+ 559: 6(int) Load 8(invocation)
+ 560: 44(ptr) AccessChain 31(data) 115 34
+ 561: 23(fvec4) Load 560
+ 562: 17(ivec4) Load 19(ballot)
+ 563: 23(fvec4) GroupNonUniformFMax 178 PartitionedReduceNV 561 562
+ 564: 44(ptr) AccessChain 31(data) 559 34
+ Store 564 563
+ 565: 6(int) Load 8(invocation)
+ 566: 64(ptr) AccessChain 31(data) 34 63 35
+ 567: 24(int) Load 566
+ 568: 17(ivec4) Load 19(ballot)
+ 569: 24(int) GroupNonUniformSMax 178 PartitionedReduceNV 567 568
+ 570: 64(ptr) AccessChain 31(data) 565 63 35
+ Store 570 569
+ 571: 6(int) Load 8(invocation)
+ 572: 71(ptr) AccessChain 31(data) 63 63
+ 573: 25(ivec4) Load 572
+ 574: 70(ivec2) VectorShuffle 573 573 0 1
+ 575: 17(ivec4) Load 19(ballot)
+ 576: 70(ivec2) GroupNonUniformSMax 178 PartitionedReduceNV 574 575
+ 577: 71(ptr) AccessChain 31(data) 571 63
+ 578: 25(ivec4) Load 577
+ 579: 25(ivec4) VectorShuffle 578 576 4 5 2 3
+ Store 577 579
+ 580: 6(int) Load 8(invocation)
+ 581: 71(ptr) AccessChain 31(data) 33 63
+ 582: 25(ivec4) Load 581
+ 583: 78(ivec3) VectorShuffle 582 582 0 1 2
+ 584: 17(ivec4) Load 19(ballot)
+ 585: 78(ivec3) GroupNonUniformSMax 178 PartitionedReduceNV 583 584
+ 586: 71(ptr) AccessChain 31(data) 580 63
+ 587: 25(ivec4) Load 586
+ 588: 25(ivec4) VectorShuffle 587 585 4 5 6 3
+ Store 586 588
+ 589: 6(int) Load 8(invocation)
+ 590: 71(ptr) AccessChain 31(data) 115 63
+ 591: 25(ivec4) Load 590
+ 592: 17(ivec4) Load 19(ballot)
+ 593: 25(ivec4) GroupNonUniformSMax 178 PartitionedReduceNV 591 592
+ 594: 71(ptr) AccessChain 31(data) 589 63
+ Store 594 593
+ 595: 6(int) Load 8(invocation)
+ 596: 90(ptr) AccessChain 31(data) 34 33 35
+ 597: 6(int) Load 596
+ 598: 17(ivec4) Load 19(ballot)
+ 599: 6(int) GroupNonUniformUMax 178 PartitionedReduceNV 597 598
+ 600: 90(ptr) AccessChain 31(data) 595 33 35
+ Store 600 599
+ 601: 6(int) Load 8(invocation)
+ 602: 40(ptr) AccessChain 31(data) 63 33
+ 603: 17(ivec4) Load 602
+ 604: 96(ivec2) VectorShuffle 603 603 0 1
+ 605: 17(ivec4) Load 19(ballot)
+ 606: 96(ivec2) GroupNonUniformUMax 178 PartitionedReduceNV 604 605
+ 607: 40(ptr) AccessChain 31(data) 601 33
+ 608: 17(ivec4) Load 607
+ 609: 17(ivec4) VectorShuffle 608 606 4 5 2 3
+ Store 607 609
+ 610: 6(int) Load 8(invocation)
+ 611: 40(ptr) AccessChain 31(data) 33 33
+ 612: 17(ivec4) Load 611
+ 613: 103(ivec3) VectorShuffle 612 612 0 1 2
+ 614: 17(ivec4) Load 19(ballot)
+ 615: 103(ivec3) GroupNonUniformUMax 178 PartitionedReduceNV 613 614
+ 616: 40(ptr) AccessChain 31(data) 610 33
+ 617: 17(ivec4) Load 616
+ 618: 17(ivec4) VectorShuffle 617 615 4 5 6 3
+ Store 616 618
+ 619: 6(int) Load 8(invocation)
+ 620: 40(ptr) AccessChain 31(data) 115 33
+ 621: 17(ivec4) Load 620
+ 622: 17(ivec4) Load 19(ballot)
+ 623: 17(ivec4) GroupNonUniformUMax 178 PartitionedReduceNV 621 622
+ 624: 40(ptr) AccessChain 31(data) 619 33
+ Store 624 623
+ 625: 6(int) Load 8(invocation)
+ 626: 116(ptr) AccessChain 31(data) 34 115 35
+ 627: 26(float) Load 626
+ 628: 17(ivec4) Load 19(ballot)
+ 629: 26(float) GroupNonUniformFMax 178 PartitionedReduceNV 627 628
+ 630: 116(ptr) AccessChain 31(data) 625 115 35
+ Store 630 629
+ 631: 6(int) Load 8(invocation)
+ 632: 123(ptr) AccessChain 31(data) 63 115
+ 633: 27(fvec4) Load 632
+ 634: 122(fvec2) VectorShuffle 633 633 0 1
+ 635: 17(ivec4) Load 19(ballot)
+ 636: 122(fvec2) GroupNonUniformFMax 178 PartitionedReduceNV 634 635
+ 637: 123(ptr) AccessChain 31(data) 631 115
+ 638: 27(fvec4) Load 637
+ 639: 27(fvec4) VectorShuffle 638 636 4 5 2 3
+ Store 637 639
+ 640: 6(int) Load 8(invocation)
+ 641: 123(ptr) AccessChain 31(data) 33 115
+ 642: 27(fvec4) Load 641
+ 643: 130(fvec3) VectorShuffle 642 642 0 1 2
+ 644: 17(ivec4) Load 19(ballot)
+ 645: 130(fvec3) GroupNonUniformFMax 178 PartitionedReduceNV 643 644
+ 646: 123(ptr) AccessChain 31(data) 640 115
+ 647: 27(fvec4) Load 646
+ 648: 27(fvec4) VectorShuffle 647 645 4 5 6 3
+ Store 646 648
+ 649: 6(int) Load 8(invocation)
+ 650: 123(ptr) AccessChain 31(data) 115 115
+ 651: 27(fvec4) Load 650
+ 652: 17(ivec4) Load 19(ballot)
+ 653: 27(fvec4) GroupNonUniformFMax 178 PartitionedReduceNV 651 652
+ 654: 123(ptr) AccessChain 31(data) 649 115
+ Store 654 653
+ 655: 6(int) Load 8(invocation)
+ 656: 64(ptr) AccessChain 31(data) 34 63 35
+ 657: 24(int) Load 656
+ 658: 17(ivec4) Load 19(ballot)
+ 659: 24(int) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 657 658
+ 660: 64(ptr) AccessChain 31(data) 655 63 35
+ Store 660 659
+ 661: 6(int) Load 8(invocation)
+ 662: 71(ptr) AccessChain 31(data) 63 63
+ 663: 25(ivec4) Load 662
+ 664: 70(ivec2) VectorShuffle 663 663 0 1
+ 665: 17(ivec4) Load 19(ballot)
+ 666: 70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 664 665
+ 667: 71(ptr) AccessChain 31(data) 661 63
+ 668: 25(ivec4) Load 667
+ 669: 25(ivec4) VectorShuffle 668 666 4 5 2 3
+ Store 667 669
+ 670: 6(int) Load 8(invocation)
+ 671: 71(ptr) AccessChain 31(data) 33 63
+ 672: 25(ivec4) Load 671
+ 673: 78(ivec3) VectorShuffle 672 672 0 1 2
+ 674: 17(ivec4) Load 19(ballot)
+ 675: 78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 673 674
+ 676: 71(ptr) AccessChain 31(data) 670 63
+ 677: 25(ivec4) Load 676
+ 678: 25(ivec4) VectorShuffle 677 675 4 5 6 3
+ Store 676 678
+ 679: 6(int) Load 8(invocation)
+ 680: 71(ptr) AccessChain 31(data) 115 63
+ 681: 25(ivec4) Load 680
+ 682: 17(ivec4) Load 19(ballot)
+ 683: 25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 681 682
+ 684: 71(ptr) AccessChain 31(data) 679 63
+ Store 684 683
+ 685: 6(int) Load 8(invocation)
+ 686: 90(ptr) AccessChain 31(data) 34 33 35
+ 687: 6(int) Load 686
+ 688: 17(ivec4) Load 19(ballot)
+ 689: 6(int) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 687 688
+ 690: 90(ptr) AccessChain 31(data) 685 33 35
+ Store 690 689
+ 691: 6(int) Load 8(invocation)
+ 692: 40(ptr) AccessChain 31(data) 63 33
+ 693: 17(ivec4) Load 692
+ 694: 96(ivec2) VectorShuffle 693 693 0 1
+ 695: 17(ivec4) Load 19(ballot)
+ 696: 96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 694 695
+ 697: 40(ptr) AccessChain 31(data) 691 33
+ 698: 17(ivec4) Load 697
+ 699: 17(ivec4) VectorShuffle 698 696 4 5 2 3
+ Store 697 699
+ 700: 6(int) Load 8(invocation)
+ 701: 40(ptr) AccessChain 31(data) 33 33
+ 702: 17(ivec4) Load 701
+ 703: 103(ivec3) VectorShuffle 702 702 0 1 2
+ 704: 17(ivec4) Load 19(ballot)
+ 705: 103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 703 704
+ 706: 40(ptr) AccessChain 31(data) 700 33
+ 707: 17(ivec4) Load 706
+ 708: 17(ivec4) VectorShuffle 707 705 4 5 6 3
+ Store 706 708
+ 709: 6(int) Load 8(invocation)
+ 710: 40(ptr) AccessChain 31(data) 115 33
+ 711: 17(ivec4) Load 710
+ 712: 17(ivec4) Load 19(ballot)
+ 713: 17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 711 712
+ 714: 40(ptr) AccessChain 31(data) 709 33
+ Store 714 713
+ 715: 6(int) Load 8(invocation)
+ 716: 64(ptr) AccessChain 31(data) 34 63 35
+ 717: 24(int) Load 716
+ 718: 144(bool) SLessThan 717 34
+ 719: 17(ivec4) Load 19(ballot)
+ 720: 144(bool) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 718 719
+ 721: 24(int) Select 720 63 34
+ 722: 64(ptr) AccessChain 31(data) 715 63 35
+ Store 722 721
+ 723: 6(int) Load 8(invocation)
+ 724: 71(ptr) AccessChain 31(data) 63 63
+ 725: 25(ivec4) Load 724
+ 726: 70(ivec2) VectorShuffle 725 725 0 1
+ 728: 152(bvec2) SLessThan 726 727
+ 729: 17(ivec4) Load 19(ballot)
+ 730: 152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 728 729
+ 732: 70(ivec2) Select 730 731 727
+ 733: 71(ptr) AccessChain 31(data) 723 63
+ 734: 25(ivec4) Load 733
+ 735: 25(ivec4) VectorShuffle 734 732 4 5 2 3
+ Store 733 735
+ 736: 6(int) Load 8(invocation)
+ 737: 71(ptr) AccessChain 31(data) 63 63
+ 738: 25(ivec4) Load 737
+ 739: 78(ivec3) VectorShuffle 738 738 0 1 2
+ 741: 161(bvec3) SLessThan 739 740
+ 742: 17(ivec4) Load 19(ballot)
+ 743: 161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 741 742
+ 745: 78(ivec3) Select 743 744 740
+ 746: 71(ptr) AccessChain 31(data) 736 63
+ 747: 25(ivec4) Load 746
+ 748: 25(ivec4) VectorShuffle 747 745 4 5 6 3
+ Store 746 748
+ 749: 6(int) Load 8(invocation)
+ 750: 71(ptr) AccessChain 31(data) 63 63
+ 751: 25(ivec4) Load 750
+ 753: 169(bvec4) SLessThan 751 752
+ 754: 17(ivec4) Load 19(ballot)
+ 755: 169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 753 754
+ 757: 25(ivec4) Select 755 756 752
+ 758: 71(ptr) AccessChain 31(data) 749 63
+ Store 758 757
+ 759: 6(int) Load 8(invocation)
+ 760: 64(ptr) AccessChain 31(data) 34 63 35
+ 761: 24(int) Load 760
+ 762: 17(ivec4) Load 19(ballot)
+ 763: 24(int) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 761 762
+ 764: 64(ptr) AccessChain 31(data) 759 63 35
+ Store 764 763
+ 765: 6(int) Load 8(invocation)
+ 766: 71(ptr) AccessChain 31(data) 63 63
+ 767: 25(ivec4) Load 766
+ 768: 70(ivec2) VectorShuffle 767 767 0 1
+ 769: 17(ivec4) Load 19(ballot)
+ 770: 70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 768 769
+ 771: 71(ptr) AccessChain 31(data) 765 63
+ 772: 25(ivec4) Load 771
+ 773: 25(ivec4) VectorShuffle 772 770 4 5 2 3
+ Store 771 773
+ 774: 6(int) Load 8(invocation)
+ 775: 71(ptr) AccessChain 31(data) 33 63
+ 776: 25(ivec4) Load 775
+ 777: 78(ivec3) VectorShuffle 776 776 0 1 2
+ 778: 17(ivec4) Load 19(ballot)
+ 779: 78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 777 778
+ 780: 71(ptr) AccessChain 31(data) 774 63
+ 781: 25(ivec4) Load 780
+ 782: 25(ivec4) VectorShuffle 781 779 4 5 6 3
+ Store 780 782
+ 783: 6(int) Load 8(invocation)
+ 784: 71(ptr) AccessChain 31(data) 115 63
+ 785: 25(ivec4) Load 784
+ 786: 17(ivec4) Load 19(ballot)
+ 787: 25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 785 786
+ 788: 71(ptr) AccessChain 31(data) 783 63
+ Store 788 787
+ 789: 6(int) Load 8(invocation)
+ 790: 90(ptr) AccessChain 31(data) 34 33 35
+ 791: 6(int) Load 790
+ 792: 17(ivec4) Load 19(ballot)
+ 793: 6(int) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 791 792
+ 794: 90(ptr) AccessChain 31(data) 789 33 35
+ Store 794 793
+ 795: 6(int) Load 8(invocation)
+ 796: 40(ptr) AccessChain 31(data) 63 33
+ 797: 17(ivec4) Load 796
+ 798: 96(ivec2) VectorShuffle 797 797 0 1
+ 799: 17(ivec4) Load 19(ballot)
+ 800: 96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 798 799
+ 801: 40(ptr) AccessChain 31(data) 795 33
+ 802: 17(ivec4) Load 801
+ 803: 17(ivec4) VectorShuffle 802 800 4 5 2 3
+ Store 801 803
+ 804: 6(int) Load 8(invocation)
+ 805: 40(ptr) AccessChain 31(data) 33 33
+ 806: 17(ivec4) Load 805
+ 807: 103(ivec3) VectorShuffle 806 806 0 1 2
+ 808: 17(ivec4) Load 19(ballot)
+ 809: 103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 807 808
+ 810: 40(ptr) AccessChain 31(data) 804 33
+ 811: 17(ivec4) Load 810
+ 812: 17(ivec4) VectorShuffle 811 809 4 5 6 3
+ Store 810 812
+ 813: 6(int) Load 8(invocation)
+ 814: 40(ptr) AccessChain 31(data) 115 33
+ 815: 17(ivec4) Load 814
+ 816: 17(ivec4) Load 19(ballot)
+ 817: 17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 815 816
+ 818: 40(ptr) AccessChain 31(data) 813 33
+ Store 818 817
+ 819: 6(int) Load 8(invocation)
+ 820: 64(ptr) AccessChain 31(data) 34 63 35
+ 821: 24(int) Load 820
+ 822: 144(bool) SLessThan 821 34
+ 823: 17(ivec4) Load 19(ballot)
+ 824: 144(bool) GroupNonUniformLogicalOr 178 PartitionedReduceNV 822 823
+ 825: 24(int) Select 824 63 34
+ 826: 64(ptr) AccessChain 31(data) 819 63 35
+ Store 826 825
+ 827: 6(int) Load 8(invocation)
+ 828: 71(ptr) AccessChain 31(data) 63 63
+ 829: 25(ivec4) Load 828
+ 830: 70(ivec2) VectorShuffle 829 829 0 1
+ 831: 152(bvec2) SLessThan 830 727
+ 832: 17(ivec4) Load 19(ballot)
+ 833: 152(bvec2) GroupNonUniformLogicalOr 178 PartitionedReduceNV 831 832
+ 834: 70(ivec2) Select 833 731 727
+ 835: 71(ptr) AccessChain 31(data) 827 63
+ 836: 25(ivec4) Load 835
+ 837: 25(ivec4) VectorShuffle 836 834 4 5 2 3
+ Store 835 837
+ 838: 6(int) Load 8(invocation)
+ 839: 71(ptr) AccessChain 31(data) 63 63
+ 840: 25(ivec4) Load 839
+ 841: 78(ivec3) VectorShuffle 840 840 0 1 2
+ 842: 161(bvec3) SLessThan 841 740
+ 843: 17(ivec4) Load 19(ballot)
+ 844: 161(bvec3) GroupNonUniformLogicalOr 178 PartitionedReduceNV 842 843
+ 845: 78(ivec3) Select 844 744 740
+ 846: 71(ptr) AccessChain 31(data) 838 63
+ 847: 25(ivec4) Load 846
+ 848: 25(ivec4) VectorShuffle 847 845 4 5 6 3
+ Store 846 848
+ 849: 6(int) Load 8(invocation)
+ 850: 71(ptr) AccessChain 31(data) 63 63
+ 851: 25(ivec4) Load 850
+ 852: 169(bvec4) SLessThan 851 752
+ 853: 17(ivec4) Load 19(ballot)
+ 854: 169(bvec4) GroupNonUniformLogicalOr 178 PartitionedReduceNV 852 853
+ 855: 25(ivec4) Select 854 756 752
+ 856: 71(ptr) AccessChain 31(data) 849 63
+ Store 856 855
+ 857: 6(int) Load 8(invocation)
+ 858: 64(ptr) AccessChain 31(data) 34 63 35
+ 859: 24(int) Load 858
+ 860: 17(ivec4) Load 19(ballot)
+ 861: 24(int) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 859 860
+ 862: 64(ptr) AccessChain 31(data) 857 63 35
+ Store 862 861
+ 863: 6(int) Load 8(invocation)
+ 864: 71(ptr) AccessChain 31(data) 63 63
+ 865: 25(ivec4) Load 864
+ 866: 70(ivec2) VectorShuffle 865 865 0 1
+ 867: 17(ivec4) Load 19(ballot)
+ 868: 70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 866 867
+ 869: 71(ptr) AccessChain 31(data) 863 63
+ 870: 25(ivec4) Load 869
+ 871: 25(ivec4) VectorShuffle 870 868 4 5 2 3
+ Store 869 871
+ 872: 6(int) Load 8(invocation)
+ 873: 71(ptr) AccessChain 31(data) 33 63
+ 874: 25(ivec4) Load 873
+ 875: 78(ivec3) VectorShuffle 874 874 0 1 2
+ 876: 17(ivec4) Load 19(ballot)
+ 877: 78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 875 876
+ 878: 71(ptr) AccessChain 31(data) 872 63
+ 879: 25(ivec4) Load 878
+ 880: 25(ivec4) VectorShuffle 879 877 4 5 6 3
+ Store 878 880
+ 881: 6(int) Load 8(invocation)
+ 882: 71(ptr) AccessChain 31(data) 115 63
+ 883: 25(ivec4) Load 882
+ 884: 17(ivec4) Load 19(ballot)
+ 885: 25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 883 884
+ 886: 71(ptr) AccessChain 31(data) 881 63
+ Store 886 885
+ 887: 6(int) Load 8(invocation)
+ 888: 90(ptr) AccessChain 31(data) 34 33 35
+ 889: 6(int) Load 888
+ 890: 17(ivec4) Load 19(ballot)
+ 891: 6(int) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 889 890
+ 892: 90(ptr) AccessChain 31(data) 887 33 35
+ Store 892 891
+ 893: 6(int) Load 8(invocation)
+ 894: 40(ptr) AccessChain 31(data) 63 33
+ 895: 17(ivec4) Load 894
+ 896: 96(ivec2) VectorShuffle 895 895 0 1
+ 897: 17(ivec4) Load 19(ballot)
+ 898: 96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 896 897
+ 899: 40(ptr) AccessChain 31(data) 893 33
+ 900: 17(ivec4) Load 899
+ 901: 17(ivec4) VectorShuffle 900 898 4 5 2 3
+ Store 899 901
+ 902: 6(int) Load 8(invocation)
+ 903: 40(ptr) AccessChain 31(data) 33 33
+ 904: 17(ivec4) Load 903
+ 905: 103(ivec3) VectorShuffle 904 904 0 1 2
+ 906: 17(ivec4) Load 19(ballot)
+ 907: 103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 905 906
+ 908: 40(ptr) AccessChain 31(data) 902 33
+ 909: 17(ivec4) Load 908
+ 910: 17(ivec4) VectorShuffle 909 907 4 5 6 3
+ Store 908 910
+ 911: 6(int) Load 8(invocation)
+ 912: 40(ptr) AccessChain 31(data) 115 33
+ 913: 17(ivec4) Load 912
+ 914: 17(ivec4) Load 19(ballot)
+ 915: 17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 913 914
+ 916: 40(ptr) AccessChain 31(data) 911 33
+ Store 916 915
+ 917: 6(int) Load 8(invocation)
+ 918: 64(ptr) AccessChain 31(data) 34 63 35
+ 919: 24(int) Load 918
+ 920: 144(bool) SLessThan 919 34
+ 921: 17(ivec4) Load 19(ballot)
+ 922: 144(bool) GroupNonUniformLogicalXor 178 PartitionedReduceNV 920 921
+ 923: 24(int) Select 922 63 34
+ 924: 64(ptr) AccessChain 31(data) 917 63 35
+ Store 924 923
+ 925: 6(int) Load 8(invocation)
+ 926: 71(ptr) AccessChain 31(data) 63 63
+ 927: 25(ivec4) Load 926
+ 928: 70(ivec2) VectorShuffle 927 927 0 1
+ 929: 152(bvec2) SLessThan 928 727
+ 930: 17(ivec4) Load 19(ballot)
+ 931: 152(bvec2) GroupNonUniformLogicalXor 178 PartitionedReduceNV 929 930
+ 932: 70(ivec2) Select 931 731 727
+ 933: 71(ptr) AccessChain 31(data) 925 63
+ 934: 25(ivec4) Load 933
+ 935: 25(ivec4) VectorShuffle 934 932 4 5 2 3
+ Store 933 935
+ 936: 6(int) Load 8(invocation)
+ 937: 71(ptr) AccessChain 31(data) 63 63
+ 938: 25(ivec4) Load 937
+ 939: 78(ivec3) VectorShuffle 938 938 0 1 2
+ 940: 161(bvec3) SLessThan 939 740
+ 941: 17(ivec4) Load 19(ballot)
+ 942: 161(bvec3) GroupNonUniformLogicalXor 178 PartitionedReduceNV 940 941
+ 943: 78(ivec3) Select 942 744 740
+ 944: 71(ptr) AccessChain 31(data) 936 63
+ 945: 25(ivec4) Load 944
+ 946: 25(ivec4) VectorShuffle 945 943 4 5 6 3
+ Store 944 946
+ 947: 6(int) Load 8(invocation)
+ 948: 71(ptr) AccessChain 31(data) 63 63
+ 949: 25(ivec4) Load 948
+ 950: 169(bvec4) SLessThan 949 752
+ 951: 17(ivec4) Load 19(ballot)
+ 952: 169(bvec4) GroupNonUniformLogicalXor 178 PartitionedReduceNV 950 951
+ 953: 25(ivec4) Select 952 756 752
+ 954: 71(ptr) AccessChain 31(data) 947 63
+ Store 954 953
+ 955: 6(int) Load 8(invocation)
+ 956: 36(ptr) AccessChain 31(data) 34 34 35
+ 957: 22(float) Load 956
+ 958: 17(ivec4) Load 19(ballot)
+ 959: 22(float) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 957 958
+ 960: 36(ptr) AccessChain 31(data) 955 34 35
+ Store 960 959
+ 961: 6(int) Load 8(invocation)
+ 962: 44(ptr) AccessChain 31(data) 63 34
+ 963: 23(fvec4) Load 962
+ 964: 43(fvec2) VectorShuffle 963 963 0 1
+ 965: 17(ivec4) Load 19(ballot)
+ 966: 43(fvec2) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 964 965
+ 967: 44(ptr) AccessChain 31(data) 961 34
+ 968: 23(fvec4) Load 967
+ 969: 23(fvec4) VectorShuffle 968 966 4 5 2 3
+ Store 967 969
+ 970: 6(int) Load 8(invocation)
+ 971: 44(ptr) AccessChain 31(data) 33 34
+ 972: 23(fvec4) Load 971
+ 973: 51(fvec3) VectorShuffle 972 972 0 1 2
+ 974: 17(ivec4) Load 19(ballot)
+ 975: 51(fvec3) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 973 974
+ 976: 44(ptr) AccessChain 31(data) 970 34
+ 977: 23(fvec4) Load 976
+ 978: 23(fvec4) VectorShuffle 977 975 4 5 6 3
+ Store 976 978
+ 979: 6(int) Load 8(invocation)
+ 980: 44(ptr) AccessChain 31(data) 115 34
+ 981: 23(fvec4) Load 980
+ 982: 17(ivec4) Load 19(ballot)
+ 983: 23(fvec4) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 981 982
+ 984: 44(ptr) AccessChain 31(data) 979 34
+ Store 984 983
+ 985: 6(int) Load 8(invocation)
+ 986: 64(ptr) AccessChain 31(data) 34 63 35
+ 987: 24(int) Load 986
+ 988: 17(ivec4) Load 19(ballot)
+ 989: 24(int) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 987 988
+ 990: 64(ptr) AccessChain 31(data) 985 63 35
+ Store 990 989
+ 991: 6(int) Load 8(invocation)
+ 992: 71(ptr) AccessChain 31(data) 63 63
+ 993: 25(ivec4) Load 992
+ 994: 70(ivec2) VectorShuffle 993 993 0 1
+ 995: 17(ivec4) Load 19(ballot)
+ 996: 70(ivec2) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 994 995
+ 997: 71(ptr) AccessChain 31(data) 991 63
+ 998: 25(ivec4) Load 997
+ 999: 25(ivec4) VectorShuffle 998 996 4 5 2 3
+ Store 997 999
+ 1000: 6(int) Load 8(invocation)
+ 1001: 71(ptr) AccessChain 31(data) 33 63
+ 1002: 25(ivec4) Load 1001
+ 1003: 78(ivec3) VectorShuffle 1002 1002 0 1 2
+ 1004: 17(ivec4) Load 19(ballot)
+ 1005: 78(ivec3) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1003 1004
+ 1006: 71(ptr) AccessChain 31(data) 1000 63
+ 1007: 25(ivec4) Load 1006
+ 1008: 25(ivec4) VectorShuffle 1007 1005 4 5 6 3
+ Store 1006 1008
+ 1009: 6(int) Load 8(invocation)
+ 1010: 71(ptr) AccessChain 31(data) 115 63
+ 1011: 25(ivec4) Load 1010
+ 1012: 17(ivec4) Load 19(ballot)
+ 1013: 25(ivec4) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1011 1012
+ 1014: 71(ptr) AccessChain 31(data) 1009 63
+ Store 1014 1013
+ 1015: 6(int) Load 8(invocation)
+ 1016: 90(ptr) AccessChain 31(data) 34 33 35
+ 1017: 6(int) Load 1016
+ 1018: 17(ivec4) Load 19(ballot)
+ 1019: 6(int) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1017 1018
+ 1020: 90(ptr) AccessChain 31(data) 1015 33 35
+ Store 1020 1019
+ 1021: 6(int) Load 8(invocation)
+ 1022: 40(ptr) AccessChain 31(data) 63 33
+ 1023: 17(ivec4) Load 1022
+ 1024: 96(ivec2) VectorShuffle 1023 1023 0 1
+ 1025: 17(ivec4) Load 19(ballot)
+ 1026: 96(ivec2) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1024 1025
+ 1027: 40(ptr) AccessChain 31(data) 1021 33
+ 1028: 17(ivec4) Load 1027
+ 1029: 17(ivec4) VectorShuffle 1028 1026 4 5 2 3
+ Store 1027 1029
+ 1030: 6(int) Load 8(invocation)
+ 1031: 40(ptr) AccessChain 31(data) 33 33
+ 1032: 17(ivec4) Load 1031
+ 1033: 103(ivec3) VectorShuffle 1032 1032 0 1 2
+ 1034: 17(ivec4) Load 19(ballot)
+ 1035: 103(ivec3) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1033 1034
+ 1036: 40(ptr) AccessChain 31(data) 1030 33
+ 1037: 17(ivec4) Load 1036
+ 1038: 17(ivec4) VectorShuffle 1037 1035 4 5 6 3
+ Store 1036 1038
+ 1039: 6(int) Load 8(invocation)
+ 1040: 40(ptr) AccessChain 31(data) 115 33
+ 1041: 17(ivec4) Load 1040
+ 1042: 17(ivec4) Load 19(ballot)
+ 1043: 17(ivec4) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1041 1042
+ 1044: 40(ptr) AccessChain 31(data) 1039 33
+ Store 1044 1043
+ 1045: 6(int) Load 8(invocation)
+ 1046: 116(ptr) AccessChain 31(data) 34 115 35
+ 1047: 26(float) Load 1046
+ 1048: 17(ivec4) Load 19(ballot)
+ 1049: 26(float) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1047 1048
+ 1050: 116(ptr) AccessChain 31(data) 1045 115 35
+ Store 1050 1049
+ 1051: 6(int) Load 8(invocation)
+ 1052: 123(ptr) AccessChain 31(data) 63 115
+ 1053: 27(fvec4) Load 1052
+ 1054: 122(fvec2) VectorShuffle 1053 1053 0 1
+ 1055: 17(ivec4) Load 19(ballot)
+ 1056: 122(fvec2) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1054 1055
+ 1057: 123(ptr) AccessChain 31(data) 1051 115
+ 1058: 27(fvec4) Load 1057
+ 1059: 27(fvec4) VectorShuffle 1058 1056 4 5 2 3
+ Store 1057 1059
+ 1060: 6(int) Load 8(invocation)
+ 1061: 123(ptr) AccessChain 31(data) 33 115
+ 1062: 27(fvec4) Load 1061
+ 1063: 130(fvec3) VectorShuffle 1062 1062 0 1 2
+ 1064: 17(ivec4) Load 19(ballot)
+ 1065: 130(fvec3) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1063 1064
+ 1066: 123(ptr) AccessChain 31(data) 1060 115
+ 1067: 27(fvec4) Load 1066
+ 1068: 27(fvec4) VectorShuffle 1067 1065 4 5 6 3
+ Store 1066 1068
+ 1069: 6(int) Load 8(invocation)
+ 1070: 123(ptr) AccessChain 31(data) 115 115
+ 1071: 27(fvec4) Load 1070
+ 1072: 17(ivec4) Load 19(ballot)
+ 1073: 27(fvec4) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1071 1072
+ 1074: 123(ptr) AccessChain 31(data) 1069 115
+ Store 1074 1073
+ 1075: 6(int) Load 8(invocation)
+ 1076: 36(ptr) AccessChain 31(data) 34 34 35
+ 1077: 22(float) Load 1076
+ 1078: 17(ivec4) Load 19(ballot)
+ 1079: 22(float) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1077 1078
+ 1080: 36(ptr) AccessChain 31(data) 1075 34 35
+ Store 1080 1079
+ 1081: 6(int) Load 8(invocation)
+ 1082: 44(ptr) AccessChain 31(data) 63 34
+ 1083: 23(fvec4) Load 1082
+ 1084: 43(fvec2) VectorShuffle 1083 1083 0 1
+ 1085: 17(ivec4) Load 19(ballot)
+ 1086: 43(fvec2) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1084 1085
+ 1087: 44(ptr) AccessChain 31(data) 1081 34
+ 1088: 23(fvec4) Load 1087
+ 1089: 23(fvec4) VectorShuffle 1088 1086 4 5 2 3
+ Store 1087 1089
+ 1090: 6(int) Load 8(invocation)
+ 1091: 44(ptr) AccessChain 31(data) 33 34
+ 1092: 23(fvec4) Load 1091
+ 1093: 51(fvec3) VectorShuffle 1092 1092 0 1 2
+ 1094: 17(ivec4) Load 19(ballot)
+ 1095: 51(fvec3) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1093 1094
+ 1096: 44(ptr) AccessChain 31(data) 1090 34
+ 1097: 23(fvec4) Load 1096
+ 1098: 23(fvec4) VectorShuffle 1097 1095 4 5 6 3
+ Store 1096 1098
+ 1099: 6(int) Load 8(invocation)
+ 1100: 44(ptr) AccessChain 31(data) 115 34
+ 1101: 23(fvec4) Load 1100
+ 1102: 17(ivec4) Load 19(ballot)
+ 1103: 23(fvec4) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1101 1102
+ 1104: 44(ptr) AccessChain 31(data) 1099 34
+ Store 1104 1103
+ 1105: 6(int) Load 8(invocation)
+ 1106: 64(ptr) AccessChain 31(data) 34 63 35
+ 1107: 24(int) Load 1106
+ 1108: 17(ivec4) Load 19(ballot)
+ 1109: 24(int) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1107 1108
+ 1110: 64(ptr) AccessChain 31(data) 1105 63 35
+ Store 1110 1109
+ 1111: 6(int) Load 8(invocation)
+ 1112: 71(ptr) AccessChain 31(data) 63 63
+ 1113: 25(ivec4) Load 1112
+ 1114: 70(ivec2) VectorShuffle 1113 1113 0 1
+ 1115: 17(ivec4) Load 19(ballot)
+ 1116: 70(ivec2) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1114 1115
+ 1117: 71(ptr) AccessChain 31(data) 1111 63
+ 1118: 25(ivec4) Load 1117
+ 1119: 25(ivec4) VectorShuffle 1118 1116 4 5 2 3
+ Store 1117 1119
+ 1120: 6(int) Load 8(invocation)
+ 1121: 71(ptr) AccessChain 31(data) 33 63
+ 1122: 25(ivec4) Load 1121
+ 1123: 78(ivec3) VectorShuffle 1122 1122 0 1 2
+ 1124: 17(ivec4) Load 19(ballot)
+ 1125: 78(ivec3) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1123 1124
+ 1126: 71(ptr) AccessChain 31(data) 1120 63
+ 1127: 25(ivec4) Load 1126
+ 1128: 25(ivec4) VectorShuffle 1127 1125 4 5 6 3
+ Store 1126 1128
+ 1129: 6(int) Load 8(invocation)
+ 1130: 71(ptr) AccessChain 31(data) 115 63
+ 1131: 25(ivec4) Load 1130
+ 1132: 17(ivec4) Load 19(ballot)
+ 1133: 25(ivec4) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1131 1132
+ 1134: 71(ptr) AccessChain 31(data) 1129 63
+ Store 1134 1133
+ 1135: 6(int) Load 8(invocation)
+ 1136: 90(ptr) AccessChain 31(data) 34 33 35
+ 1137: 6(int) Load 1136
+ 1138: 17(ivec4) Load 19(ballot)
+ 1139: 6(int) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1137 1138
+ 1140: 90(ptr) AccessChain 31(data) 1135 33 35
+ Store 1140 1139
+ 1141: 6(int) Load 8(invocation)
+ 1142: 40(ptr) AccessChain 31(data) 63 33
+ 1143: 17(ivec4) Load 1142
+ 1144: 96(ivec2) VectorShuffle 1143 1143 0 1
+ 1145: 17(ivec4) Load 19(ballot)
+ 1146: 96(ivec2) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1144 1145
+ 1147: 40(ptr) AccessChain 31(data) 1141 33
+ 1148: 17(ivec4) Load 1147
+ 1149: 17(ivec4) VectorShuffle 1148 1146 4 5 2 3
+ Store 1147 1149
+ 1150: 6(int) Load 8(invocation)
+ 1151: 40(ptr) AccessChain 31(data) 33 33
+ 1152: 17(ivec4) Load 1151
+ 1153: 103(ivec3) VectorShuffle 1152 1152 0 1 2
+ 1154: 17(ivec4) Load 19(ballot)
+ 1155: 103(ivec3) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1153 1154
+ 1156: 40(ptr) AccessChain 31(data) 1150 33
+ 1157: 17(ivec4) Load 1156
+ 1158: 17(ivec4) VectorShuffle 1157 1155 4 5 6 3
+ Store 1156 1158
+ 1159: 6(int) Load 8(invocation)
+ 1160: 40(ptr) AccessChain 31(data) 115 33
+ 1161: 17(ivec4) Load 1160
+ 1162: 17(ivec4) Load 19(ballot)
+ 1163: 17(ivec4) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1161 1162
+ 1164: 40(ptr) AccessChain 31(data) 1159 33
+ Store 1164 1163
+ 1165: 6(int) Load 8(invocation)
+ 1166: 116(ptr) AccessChain 31(data) 34 115 35
+ 1167: 26(float) Load 1166
+ 1168: 17(ivec4) Load 19(ballot)
+ 1169: 26(float) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1167 1168
+ 1170: 116(ptr) AccessChain 31(data) 1165 115 35
+ Store 1170 1169
+ 1171: 6(int) Load 8(invocation)
+ 1172: 123(ptr) AccessChain 31(data) 63 115
+ 1173: 27(fvec4) Load 1172
+ 1174: 122(fvec2) VectorShuffle 1173 1173 0 1
+ 1175: 17(ivec4) Load 19(ballot)
+ 1176: 122(fvec2) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1174 1175
+ 1177: 123(ptr) AccessChain 31(data) 1171 115
+ 1178: 27(fvec4) Load 1177
+ 1179: 27(fvec4) VectorShuffle 1178 1176 4 5 2 3
+ Store 1177 1179
+ 1180: 6(int) Load 8(invocation)
+ 1181: 123(ptr) AccessChain 31(data) 33 115
+ 1182: 27(fvec4) Load 1181
+ 1183: 130(fvec3) VectorShuffle 1182 1182 0 1 2
+ 1184: 17(ivec4) Load 19(ballot)
+ 1185: 130(fvec3) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1183 1184
+ 1186: 123(ptr) AccessChain 31(data) 1180 115
+ 1187: 27(fvec4) Load 1186
+ 1188: 27(fvec4) VectorShuffle 1187 1185 4 5 6 3
+ Store 1186 1188
+ 1189: 6(int) Load 8(invocation)
+ 1190: 123(ptr) AccessChain 31(data) 115 115
+ 1191: 27(fvec4) Load 1190
+ 1192: 17(ivec4) Load 19(ballot)
+ 1193: 27(fvec4) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1191 1192
+ 1194: 123(ptr) AccessChain 31(data) 1189 115
+ Store 1194 1193
+ 1195: 6(int) Load 8(invocation)
+ 1196: 36(ptr) AccessChain 31(data) 34 34 35
+ 1197: 22(float) Load 1196
+ 1198: 17(ivec4) Load 19(ballot)
+ 1199: 22(float) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1197 1198
+ 1200: 36(ptr) AccessChain 31(data) 1195 34 35
+ Store 1200 1199
+ 1201: 6(int) Load 8(invocation)
+ 1202: 44(ptr) AccessChain 31(data) 63 34
+ 1203: 23(fvec4) Load 1202
+ 1204: 43(fvec2) VectorShuffle 1203 1203 0 1
+ 1205: 17(ivec4) Load 19(ballot)
+ 1206: 43(fvec2) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1204 1205
+ 1207: 44(ptr) AccessChain 31(data) 1201 34
+ 1208: 23(fvec4) Load 1207
+ 1209: 23(fvec4) VectorShuffle 1208 1206 4 5 2 3
+ Store 1207 1209
+ 1210: 6(int) Load 8(invocation)
+ 1211: 44(ptr) AccessChain 31(data) 33 34
+ 1212: 23(fvec4) Load 1211
+ 1213: 51(fvec3) VectorShuffle 1212 1212 0 1 2
+ 1214: 17(ivec4) Load 19(ballot)
+ 1215: 51(fvec3) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1213 1214
+ 1216: 44(ptr) AccessChain 31(data) 1210 34
+ 1217: 23(fvec4) Load 1216
+ 1218: 23(fvec4) VectorShuffle 1217 1215 4 5 6 3
+ Store 1216 1218
+ 1219: 6(int) Load 8(invocation)
+ 1220: 44(ptr) AccessChain 31(data) 115 34
+ 1221: 23(fvec4) Load 1220
+ 1222: 17(ivec4) Load 19(ballot)
+ 1223: 23(fvec4) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1221 1222
+ 1224: 44(ptr) AccessChain 31(data) 1219 34
+ Store 1224 1223
+ 1225: 6(int) Load 8(invocation)
+ 1226: 64(ptr) AccessChain 31(data) 34 63 35
+ 1227: 24(int) Load 1226
+ 1228: 17(ivec4) Load 19(ballot)
+ 1229: 24(int) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1227 1228
+ 1230: 64(ptr) AccessChain 31(data) 1225 63 35
+ Store 1230 1229
+ 1231: 6(int) Load 8(invocation)
+ 1232: 71(ptr) AccessChain 31(data) 63 63
+ 1233: 25(ivec4) Load 1232
+ 1234: 70(ivec2) VectorShuffle 1233 1233 0 1
+ 1235: 17(ivec4) Load 19(ballot)
+ 1236: 70(ivec2) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1234 1235
+ 1237: 71(ptr) AccessChain 31(data) 1231 63
+ 1238: 25(ivec4) Load 1237
+ 1239: 25(ivec4) VectorShuffle 1238 1236 4 5 2 3
+ Store 1237 1239
+ 1240: 6(int) Load 8(invocation)
+ 1241: 71(ptr) AccessChain 31(data) 33 63
+ 1242: 25(ivec4) Load 1241
+ 1243: 78(ivec3) VectorShuffle 1242 1242 0 1 2
+ 1244: 17(ivec4) Load 19(ballot)
+ 1245: 78(ivec3) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1243 1244
+ 1246: 71(ptr) AccessChain 31(data) 1240 63
+ 1247: 25(ivec4) Load 1246
+ 1248: 25(ivec4) VectorShuffle 1247 1245 4 5 6 3
+ Store 1246 1248
+ 1249: 6(int) Load 8(invocation)
+ 1250: 71(ptr) AccessChain 31(data) 115 63
+ 1251: 25(ivec4) Load 1250
+ 1252: 17(ivec4) Load 19(ballot)
+ 1253: 25(ivec4) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1251 1252
+ 1254: 71(ptr) AccessChain 31(data) 1249 63
+ Store 1254 1253
+ 1255: 6(int) Load 8(invocation)
+ 1256: 90(ptr) AccessChain 31(data) 34 33 35
+ 1257: 6(int) Load 1256
+ 1258: 17(ivec4) Load 19(ballot)
+ 1259: 6(int) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1257 1258
+ 1260: 90(ptr) AccessChain 31(data) 1255 33 35
+ Store 1260 1259
+ 1261: 6(int) Load 8(invocation)
+ 1262: 40(ptr) AccessChain 31(data) 63 33
+ 1263: 17(ivec4) Load 1262
+ 1264: 96(ivec2) VectorShuffle 1263 1263 0 1
+ 1265: 17(ivec4) Load 19(ballot)
+ 1266: 96(ivec2) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1264 1265
+ 1267: 40(ptr) AccessChain 31(data) 1261 33
+ 1268: 17(ivec4) Load 1267
+ 1269: 17(ivec4) VectorShuffle 1268 1266 4 5 2 3
+ Store 1267 1269
+ 1270: 6(int) Load 8(invocation)
+ 1271: 40(ptr) AccessChain 31(data) 33 33
+ 1272: 17(ivec4) Load 1271
+ 1273: 103(ivec3) VectorShuffle 1272 1272 0 1 2
+ 1274: 17(ivec4) Load 19(ballot)
+ 1275: 103(ivec3) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1273 1274
+ 1276: 40(ptr) AccessChain 31(data) 1270 33
+ 1277: 17(ivec4) Load 1276
+ 1278: 17(ivec4) VectorShuffle 1277 1275 4 5 6 3
+ Store 1276 1278
+ 1279: 6(int) Load 8(invocation)
+ 1280: 40(ptr) AccessChain 31(data) 115 33
+ 1281: 17(ivec4) Load 1280
+ 1282: 17(ivec4) Load 19(ballot)
+ 1283: 17(ivec4) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1281 1282
+ 1284: 40(ptr) AccessChain 31(data) 1279 33
+ Store 1284 1283
+ 1285: 6(int) Load 8(invocation)
+ 1286: 116(ptr) AccessChain 31(data) 34 115 35
+ 1287: 26(float) Load 1286
+ 1288: 17(ivec4) Load 19(ballot)
+ 1289: 26(float) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1287 1288
+ 1290: 116(ptr) AccessChain 31(data) 1285 115 35
+ Store 1290 1289
+ 1291: 6(int) Load 8(invocation)
+ 1292: 123(ptr) AccessChain 31(data) 63 115
+ 1293: 27(fvec4) Load 1292
+ 1294: 122(fvec2) VectorShuffle 1293 1293 0 1
+ 1295: 17(ivec4) Load 19(ballot)
+ 1296: 122(fvec2) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1294 1295
+ 1297: 123(ptr) AccessChain 31(data) 1291 115
+ 1298: 27(fvec4) Load 1297
+ 1299: 27(fvec4) VectorShuffle 1298 1296 4 5 2 3
+ Store 1297 1299
+ 1300: 6(int) Load 8(invocation)
+ 1301: 123(ptr) AccessChain 31(data) 33 115
+ 1302: 27(fvec4) Load 1301
+ 1303: 130(fvec3) VectorShuffle 1302 1302 0 1 2
+ 1304: 17(ivec4) Load 19(ballot)
+ 1305: 130(fvec3) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1303 1304
+ 1306: 123(ptr) AccessChain 31(data) 1300 115
+ 1307: 27(fvec4) Load 1306
+ 1308: 27(fvec4) VectorShuffle 1307 1305 4 5 6 3
+ Store 1306 1308
+ 1309: 6(int) Load 8(invocation)
+ 1310: 123(ptr) AccessChain 31(data) 115 115
+ 1311: 27(fvec4) Load 1310
+ 1312: 17(ivec4) Load 19(ballot)
+ 1313: 27(fvec4) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1311 1312
+ 1314: 123(ptr) AccessChain 31(data) 1309 115
+ Store 1314 1313
+ 1315: 6(int) Load 8(invocation)
+ 1316: 36(ptr) AccessChain 31(data) 34 34 35
+ 1317: 22(float) Load 1316
+ 1318: 17(ivec4) Load 19(ballot)
+ 1319: 22(float) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1317 1318
+ 1320: 36(ptr) AccessChain 31(data) 1315 34 35
+ Store 1320 1319
+ 1321: 6(int) Load 8(invocation)
+ 1322: 44(ptr) AccessChain 31(data) 63 34
+ 1323: 23(fvec4) Load 1322
+ 1324: 43(fvec2) VectorShuffle 1323 1323 0 1
+ 1325: 17(ivec4) Load 19(ballot)
+ 1326: 43(fvec2) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1324 1325
+ 1327: 44(ptr) AccessChain 31(data) 1321 34
+ 1328: 23(fvec4) Load 1327
+ 1329: 23(fvec4) VectorShuffle 1328 1326 4 5 2 3
+ Store 1327 1329
+ 1330: 6(int) Load 8(invocation)
+ 1331: 44(ptr) AccessChain 31(data) 33 34
+ 1332: 23(fvec4) Load 1331
+ 1333: 51(fvec3) VectorShuffle 1332 1332 0 1 2
+ 1334: 17(ivec4) Load 19(ballot)
+ 1335: 51(fvec3) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1333 1334
+ 1336: 44(ptr) AccessChain 31(data) 1330 34
+ 1337: 23(fvec4) Load 1336
+ 1338: 23(fvec4) VectorShuffle 1337 1335 4 5 6 3
+ Store 1336 1338
+ 1339: 6(int) Load 8(invocation)
+ 1340: 44(ptr) AccessChain 31(data) 115 34
+ 1341: 23(fvec4) Load 1340
+ 1342: 17(ivec4) Load 19(ballot)
+ 1343: 23(fvec4) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1341 1342
+ 1344: 44(ptr) AccessChain 31(data) 1339 34
+ Store 1344 1343
+ 1345: 6(int) Load 8(invocation)
+ 1346: 64(ptr) AccessChain 31(data) 34 63 35
+ 1347: 24(int) Load 1346
+ 1348: 17(ivec4) Load 19(ballot)
+ 1349: 24(int) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1347 1348
+ 1350: 64(ptr) AccessChain 31(data) 1345 63 35
+ Store 1350 1349
+ 1351: 6(int) Load 8(invocation)
+ 1352: 71(ptr) AccessChain 31(data) 63 63
+ 1353: 25(ivec4) Load 1352
+ 1354: 70(ivec2) VectorShuffle 1353 1353 0 1
+ 1355: 17(ivec4) Load 19(ballot)
+ 1356: 70(ivec2) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1354 1355
+ 1357: 71(ptr) AccessChain 31(data) 1351 63
+ 1358: 25(ivec4) Load 1357
+ 1359: 25(ivec4) VectorShuffle 1358 1356 4 5 2 3
+ Store 1357 1359
+ 1360: 6(int) Load 8(invocation)
+ 1361: 71(ptr) AccessChain 31(data) 33 63
+ 1362: 25(ivec4) Load 1361
+ 1363: 78(ivec3) VectorShuffle 1362 1362 0 1 2
+ 1364: 17(ivec4) Load 19(ballot)
+ 1365: 78(ivec3) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1363 1364
+ 1366: 71(ptr) AccessChain 31(data) 1360 63
+ 1367: 25(ivec4) Load 1366
+ 1368: 25(ivec4) VectorShuffle 1367 1365 4 5 6 3
+ Store 1366 1368
+ 1369: 6(int) Load 8(invocation)
+ 1370: 71(ptr) AccessChain 31(data) 115 63
+ 1371: 25(ivec4) Load 1370
+ 1372: 17(ivec4) Load 19(ballot)
+ 1373: 25(ivec4) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1371 1372
+ 1374: 71(ptr) AccessChain 31(data) 1369 63
+ Store 1374 1373
+ 1375: 6(int) Load 8(invocation)
+ 1376: 90(ptr) AccessChain 31(data) 34 33 35
+ 1377: 6(int) Load 1376
+ 1378: 17(ivec4) Load 19(ballot)
+ 1379: 6(int) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1377 1378
+ 1380: 90(ptr) AccessChain 31(data) 1375 33 35
+ Store 1380 1379
+ 1381: 6(int) Load 8(invocation)
+ 1382: 40(ptr) AccessChain 31(data) 63 33
+ 1383: 17(ivec4) Load 1382
+ 1384: 96(ivec2) VectorShuffle 1383 1383 0 1
+ 1385: 17(ivec4) Load 19(ballot)
+ 1386: 96(ivec2) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1384 1385
+ 1387: 40(ptr) AccessChain 31(data) 1381 33
+ 1388: 17(ivec4) Load 1387
+ 1389: 17(ivec4) VectorShuffle 1388 1386 4 5 2 3
+ Store 1387 1389
+ 1390: 6(int) Load 8(invocation)
+ 1391: 40(ptr) AccessChain 31(data) 33 33
+ 1392: 17(ivec4) Load 1391
+ 1393: 103(ivec3) VectorShuffle 1392 1392 0 1 2
+ 1394: 17(ivec4) Load 19(ballot)
+ 1395: 103(ivec3) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1393 1394
+ 1396: 40(ptr) AccessChain 31(data) 1390 33
+ 1397: 17(ivec4) Load 1396
+ 1398: 17(ivec4) VectorShuffle 1397 1395 4 5 6 3
+ Store 1396 1398
+ 1399: 6(int) Load 8(invocation)
+ 1400: 40(ptr) AccessChain 31(data) 115 33
+ 1401: 17(ivec4) Load 1400
+ 1402: 17(ivec4) Load 19(ballot)
+ 1403: 17(ivec4) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1401 1402
+ 1404: 40(ptr) AccessChain 31(data) 1399 33
+ Store 1404 1403
+ 1405: 6(int) Load 8(invocation)
+ 1406: 116(ptr) AccessChain 31(data) 34 115 35
+ 1407: 26(float) Load 1406
+ 1408: 17(ivec4) Load 19(ballot)
+ 1409: 26(float) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1407 1408
+ 1410: 116(ptr) AccessChain 31(data) 1405 115 35
+ Store 1410 1409
+ 1411: 6(int) Load 8(invocation)
+ 1412: 123(ptr) AccessChain 31(data) 63 115
+ 1413: 27(fvec4) Load 1412
+ 1414: 122(fvec2) VectorShuffle 1413 1413 0 1
+ 1415: 17(ivec4) Load 19(ballot)
+ 1416: 122(fvec2) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1414 1415
+ 1417: 123(ptr) AccessChain 31(data) 1411 115
+ 1418: 27(fvec4) Load 1417
+ 1419: 27(fvec4) VectorShuffle 1418 1416 4 5 2 3
+ Store 1417 1419
+ 1420: 6(int) Load 8(invocation)
+ 1421: 123(ptr) AccessChain 31(data) 33 115
+ 1422: 27(fvec4) Load 1421
+ 1423: 130(fvec3) VectorShuffle 1422 1422 0 1 2
+ 1424: 17(ivec4) Load 19(ballot)
+ 1425: 130(fvec3) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1423 1424
+ 1426: 123(ptr) AccessChain 31(data) 1420 115
+ 1427: 27(fvec4) Load 1426
+ 1428: 27(fvec4) VectorShuffle 1427 1425 4 5 6 3
+ Store 1426 1428
+ 1429: 6(int) Load 8(invocation)
+ 1430: 123(ptr) AccessChain 31(data) 115 115
+ 1431: 27(fvec4) Load 1430
+ 1432: 17(ivec4) Load 19(ballot)
+ 1433: 27(fvec4) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1431 1432
+ 1434: 123(ptr) AccessChain 31(data) 1429 115
+ Store 1434 1433
+ 1435: 6(int) Load 8(invocation)
+ 1436: 64(ptr) AccessChain 31(data) 34 63 35
+ 1437: 24(int) Load 1436
+ 1438: 17(ivec4) Load 19(ballot)
+ 1439: 24(int) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1437 1438
+ 1440: 64(ptr) AccessChain 31(data) 1435 63 35
+ Store 1440 1439
+ 1441: 6(int) Load 8(invocation)
+ 1442: 71(ptr) AccessChain 31(data) 63 63
+ 1443: 25(ivec4) Load 1442
+ 1444: 70(ivec2) VectorShuffle 1443 1443 0 1
+ 1445: 17(ivec4) Load 19(ballot)
+ 1446: 70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1444 1445
+ 1447: 71(ptr) AccessChain 31(data) 1441 63
+ 1448: 25(ivec4) Load 1447
+ 1449: 25(ivec4) VectorShuffle 1448 1446 4 5 2 3
+ Store 1447 1449
+ 1450: 6(int) Load 8(invocation)
+ 1451: 71(ptr) AccessChain 31(data) 33 63
+ 1452: 25(ivec4) Load 1451
+ 1453: 78(ivec3) VectorShuffle 1452 1452 0 1 2
+ 1454: 17(ivec4) Load 19(ballot)
+ 1455: 78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1453 1454
+ 1456: 71(ptr) AccessChain 31(data) 1450 63
+ 1457: 25(ivec4) Load 1456
+ 1458: 25(ivec4) VectorShuffle 1457 1455 4 5 6 3
+ Store 1456 1458
+ 1459: 6(int) Load 8(invocation)
+ 1460: 71(ptr) AccessChain 31(data) 115 63
+ 1461: 25(ivec4) Load 1460
+ 1462: 17(ivec4) Load 19(ballot)
+ 1463: 25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1461 1462
+ 1464: 71(ptr) AccessChain 31(data) 1459 63
+ Store 1464 1463
+ 1465: 6(int) Load 8(invocation)
+ 1466: 90(ptr) AccessChain 31(data) 34 33 35
+ 1467: 6(int) Load 1466
+ 1468: 17(ivec4) Load 19(ballot)
+ 1469: 6(int) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1467 1468
+ 1470: 90(ptr) AccessChain 31(data) 1465 33 35
+ Store 1470 1469
+ 1471: 6(int) Load 8(invocation)
+ 1472: 40(ptr) AccessChain 31(data) 63 33
+ 1473: 17(ivec4) Load 1472
+ 1474: 96(ivec2) VectorShuffle 1473 1473 0 1
+ 1475: 17(ivec4) Load 19(ballot)
+ 1476: 96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1474 1475
+ 1477: 40(ptr) AccessChain 31(data) 1471 33
+ 1478: 17(ivec4) Load 1477
+ 1479: 17(ivec4) VectorShuffle 1478 1476 4 5 2 3
+ Store 1477 1479
+ 1480: 6(int) Load 8(invocation)
+ 1481: 40(ptr) AccessChain 31(data) 33 33
+ 1482: 17(ivec4) Load 1481
+ 1483: 103(ivec3) VectorShuffle 1482 1482 0 1 2
+ 1484: 17(ivec4) Load 19(ballot)
+ 1485: 103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1483 1484
+ 1486: 40(ptr) AccessChain 31(data) 1480 33
+ 1487: 17(ivec4) Load 1486
+ 1488: 17(ivec4) VectorShuffle 1487 1485 4 5 6 3
+ Store 1486 1488
+ 1489: 6(int) Load 8(invocation)
+ 1490: 40(ptr) AccessChain 31(data) 115 33
+ 1491: 17(ivec4) Load 1490
+ 1492: 17(ivec4) Load 19(ballot)
+ 1493: 17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1491 1492
+ 1494: 40(ptr) AccessChain 31(data) 1489 33
+ Store 1494 1493
+ 1495: 6(int) Load 8(invocation)
+ 1496: 64(ptr) AccessChain 31(data) 34 63 35
+ 1497: 24(int) Load 1496
+ 1498: 144(bool) SLessThan 1497 34
+ 1499: 17(ivec4) Load 19(ballot)
+ 1500: 144(bool) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1498 1499
+ 1501: 24(int) Select 1500 63 34
+ 1502: 64(ptr) AccessChain 31(data) 1495 63 35
+ Store 1502 1501
+ 1503: 6(int) Load 8(invocation)
+ 1504: 71(ptr) AccessChain 31(data) 63 63
+ 1505: 25(ivec4) Load 1504
+ 1506: 70(ivec2) VectorShuffle 1505 1505 0 1
+ 1507: 152(bvec2) SLessThan 1506 727
+ 1508: 17(ivec4) Load 19(ballot)
+ 1509: 152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1507 1508
+ 1510: 70(ivec2) Select 1509 731 727
+ 1511: 71(ptr) AccessChain 31(data) 1503 63
+ 1512: 25(ivec4) Load 1511
+ 1513: 25(ivec4) VectorShuffle 1512 1510 4 5 2 3
+ Store 1511 1513
+ 1514: 6(int) Load 8(invocation)
+ 1515: 71(ptr) AccessChain 31(data) 63 63
+ 1516: 25(ivec4) Load 1515
+ 1517: 78(ivec3) VectorShuffle 1516 1516 0 1 2
+ 1518: 161(bvec3) SLessThan 1517 740
+ 1519: 17(ivec4) Load 19(ballot)
+ 1520: 161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1518 1519
+ 1521: 78(ivec3) Select 1520 744 740
+ 1522: 71(ptr) AccessChain 31(data) 1514 63
+ 1523: 25(ivec4) Load 1522
+ 1524: 25(ivec4) VectorShuffle 1523 1521 4 5 6 3
+ Store 1522 1524
+ 1525: 6(int) Load 8(invocation)
+ 1526: 71(ptr) AccessChain 31(data) 63 63
+ 1527: 25(ivec4) Load 1526
+ 1528: 169(bvec4) SLessThan 1527 752
+ 1529: 17(ivec4) Load 19(ballot)
+ 1530: 169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1528 1529
+ 1531: 25(ivec4) Select 1530 756 752
+ 1532: 71(ptr) AccessChain 31(data) 1525 63
+ Store 1532 1531
+ 1533: 6(int) Load 8(invocation)
+ 1534: 64(ptr) AccessChain 31(data) 34 63 35
+ 1535: 24(int) Load 1534
+ 1536: 17(ivec4) Load 19(ballot)
+ 1537: 24(int) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1535 1536
+ 1538: 64(ptr) AccessChain 31(data) 1533 63 35
+ Store 1538 1537
+ 1539: 6(int) Load 8(invocation)
+ 1540: 71(ptr) AccessChain 31(data) 63 63
+ 1541: 25(ivec4) Load 1540
+ 1542: 70(ivec2) VectorShuffle 1541 1541 0 1
+ 1543: 17(ivec4) Load 19(ballot)
+ 1544: 70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1542 1543
+ 1545: 71(ptr) AccessChain 31(data) 1539 63
+ 1546: 25(ivec4) Load 1545
+ 1547: 25(ivec4) VectorShuffle 1546 1544 4 5 2 3
+ Store 1545 1547
+ 1548: 6(int) Load 8(invocation)
+ 1549: 71(ptr) AccessChain 31(data) 33 63
+ 1550: 25(ivec4) Load 1549
+ 1551: 78(ivec3) VectorShuffle 1550 1550 0 1 2
+ 1552: 17(ivec4) Load 19(ballot)
+ 1553: 78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1551 1552
+ 1554: 71(ptr) AccessChain 31(data) 1548 63
+ 1555: 25(ivec4) Load 1554
+ 1556: 25(ivec4) VectorShuffle 1555 1553 4 5 6 3
+ Store 1554 1556
+ 1557: 6(int) Load 8(invocation)
+ 1558: 71(ptr) AccessChain 31(data) 115 63
+ 1559: 25(ivec4) Load 1558
+ 1560: 17(ivec4) Load 19(ballot)
+ 1561: 25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1559 1560
+ 1562: 71(ptr) AccessChain 31(data) 1557 63
+ Store 1562 1561
+ 1563: 6(int) Load 8(invocation)
+ 1564: 90(ptr) AccessChain 31(data) 34 33 35
+ 1565: 6(int) Load 1564
+ 1566: 17(ivec4) Load 19(ballot)
+ 1567: 6(int) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1565 1566
+ 1568: 90(ptr) AccessChain 31(data) 1563 33 35
+ Store 1568 1567
+ 1569: 6(int) Load 8(invocation)
+ 1570: 40(ptr) AccessChain 31(data) 63 33
+ 1571: 17(ivec4) Load 1570
+ 1572: 96(ivec2) VectorShuffle 1571 1571 0 1
+ 1573: 17(ivec4) Load 19(ballot)
+ 1574: 96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1572 1573
+ 1575: 40(ptr) AccessChain 31(data) 1569 33
+ 1576: 17(ivec4) Load 1575
+ 1577: 17(ivec4) VectorShuffle 1576 1574 4 5 2 3
+ Store 1575 1577
+ 1578: 6(int) Load 8(invocation)
+ 1579: 40(ptr) AccessChain 31(data) 33 33
+ 1580: 17(ivec4) Load 1579
+ 1581: 103(ivec3) VectorShuffle 1580 1580 0 1 2
+ 1582: 17(ivec4) Load 19(ballot)
+ 1583: 103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1581 1582
+ 1584: 40(ptr) AccessChain 31(data) 1578 33
+ 1585: 17(ivec4) Load 1584
+ 1586: 17(ivec4) VectorShuffle 1585 1583 4 5 6 3
+ Store 1584 1586
+ 1587: 6(int) Load 8(invocation)
+ 1588: 40(ptr) AccessChain 31(data) 115 33
+ 1589: 17(ivec4) Load 1588
+ 1590: 17(ivec4) Load 19(ballot)
+ 1591: 17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1589 1590
+ 1592: 40(ptr) AccessChain 31(data) 1587 33
+ Store 1592 1591
+ 1593: 6(int) Load 8(invocation)
+ 1594: 64(ptr) AccessChain 31(data) 34 63 35
+ 1595: 24(int) Load 1594
+ 1596: 144(bool) SLessThan 1595 34
+ 1597: 17(ivec4) Load 19(ballot)
+ 1598: 144(bool) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1596 1597
+ 1599: 24(int) Select 1598 63 34
+ 1600: 64(ptr) AccessChain 31(data) 1593 63 35
+ Store 1600 1599
+ 1601: 6(int) Load 8(invocation)
+ 1602: 71(ptr) AccessChain 31(data) 63 63
+ 1603: 25(ivec4) Load 1602
+ 1604: 70(ivec2) VectorShuffle 1603 1603 0 1
+ 1605: 152(bvec2) SLessThan 1604 727
+ 1606: 17(ivec4) Load 19(ballot)
+ 1607: 152(bvec2) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1605 1606
+ 1608: 70(ivec2) Select 1607 731 727
+ 1609: 71(ptr) AccessChain 31(data) 1601 63
+ 1610: 25(ivec4) Load 1609
+ 1611: 25(ivec4) VectorShuffle 1610 1608 4 5 2 3
+ Store 1609 1611
+ 1612: 6(int) Load 8(invocation)
+ 1613: 71(ptr) AccessChain 31(data) 63 63
+ 1614: 25(ivec4) Load 1613
+ 1615: 78(ivec3) VectorShuffle 1614 1614 0 1 2
+ 1616: 161(bvec3) SLessThan 1615 740
+ 1617: 17(ivec4) Load 19(ballot)
+ 1618: 161(bvec3) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1616 1617
+ 1619: 78(ivec3) Select 1618 744 740
+ 1620: 71(ptr) AccessChain 31(data) 1612 63
+ 1621: 25(ivec4) Load 1620
+ 1622: 25(ivec4) VectorShuffle 1621 1619 4 5 6 3
+ Store 1620 1622
+ 1623: 6(int) Load 8(invocation)
+ 1624: 71(ptr) AccessChain 31(data) 63 63
+ 1625: 25(ivec4) Load 1624
+ 1626: 169(bvec4) SLessThan 1625 752
+ 1627: 17(ivec4) Load 19(ballot)
+ 1628: 169(bvec4) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1626 1627
+ 1629: 25(ivec4) Select 1628 756 752
+ 1630: 71(ptr) AccessChain 31(data) 1623 63
+ Store 1630 1629
+ 1631: 6(int) Load 8(invocation)
+ 1632: 64(ptr) AccessChain 31(data) 34 63 35
+ 1633: 24(int) Load 1632
+ 1634: 17(ivec4) Load 19(ballot)
+ 1635: 24(int) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1633 1634
+ 1636: 64(ptr) AccessChain 31(data) 1631 63 35
+ Store 1636 1635
+ 1637: 6(int) Load 8(invocation)
+ 1638: 71(ptr) AccessChain 31(data) 63 63
+ 1639: 25(ivec4) Load 1638
+ 1640: 70(ivec2) VectorShuffle 1639 1639 0 1
+ 1641: 17(ivec4) Load 19(ballot)
+ 1642: 70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1640 1641
+ 1643: 71(ptr) AccessChain 31(data) 1637 63
+ 1644: 25(ivec4) Load 1643
+ 1645: 25(ivec4) VectorShuffle 1644 1642 4 5 2 3
+ Store 1643 1645
+ 1646: 6(int) Load 8(invocation)
+ 1647: 71(ptr) AccessChain 31(data) 33 63
+ 1648: 25(ivec4) Load 1647
+ 1649: 78(ivec3) VectorShuffle 1648 1648 0 1 2
+ 1650: 17(ivec4) Load 19(ballot)
+ 1651: 78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1649 1650
+ 1652: 71(ptr) AccessChain 31(data) 1646 63
+ 1653: 25(ivec4) Load 1652
+ 1654: 25(ivec4) VectorShuffle 1653 1651 4 5 6 3
+ Store 1652 1654
+ 1655: 6(int) Load 8(invocation)
+ 1656: 71(ptr) AccessChain 31(data) 115 63
+ 1657: 25(ivec4) Load 1656
+ 1658: 17(ivec4) Load 19(ballot)
+ 1659: 25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1657 1658
+ 1660: 71(ptr) AccessChain 31(data) 1655 63
+ Store 1660 1659
+ 1661: 6(int) Load 8(invocation)
+ 1662: 90(ptr) AccessChain 31(data) 34 33 35
+ 1663: 6(int) Load 1662
+ 1664: 17(ivec4) Load 19(ballot)
+ 1665: 6(int) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1663 1664
+ 1666: 90(ptr) AccessChain 31(data) 1661 33 35
+ Store 1666 1665
+ 1667: 6(int) Load 8(invocation)
+ 1668: 40(ptr) AccessChain 31(data) 63 33
+ 1669: 17(ivec4) Load 1668
+ 1670: 96(ivec2) VectorShuffle 1669 1669 0 1
+ 1671: 17(ivec4) Load 19(ballot)
+ 1672: 96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1670 1671
+ 1673: 40(ptr) AccessChain 31(data) 1667 33
+ 1674: 17(ivec4) Load 1673
+ 1675: 17(ivec4) VectorShuffle 1674 1672 4 5 2 3
+ Store 1673 1675
+ 1676: 6(int) Load 8(invocation)
+ 1677: 40(ptr) AccessChain 31(data) 33 33
+ 1678: 17(ivec4) Load 1677
+ 1679: 103(ivec3) VectorShuffle 1678 1678 0 1 2
+ 1680: 17(ivec4) Load 19(ballot)
+ 1681: 103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1679 1680
+ 1682: 40(ptr) AccessChain 31(data) 1676 33
+ 1683: 17(ivec4) Load 1682
+ 1684: 17(ivec4) VectorShuffle 1683 1681 4 5 6 3
+ Store 1682 1684
+ 1685: 6(int) Load 8(invocation)
+ 1686: 40(ptr) AccessChain 31(data) 115 33
+ 1687: 17(ivec4) Load 1686
+ 1688: 17(ivec4) Load 19(ballot)
+ 1689: 17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1687 1688
+ 1690: 40(ptr) AccessChain 31(data) 1685 33
+ Store 1690 1689
+ 1691: 6(int) Load 8(invocation)
+ 1692: 64(ptr) AccessChain 31(data) 34 63 35
+ 1693: 24(int) Load 1692
+ 1694: 144(bool) SLessThan 1693 34
+ 1695: 17(ivec4) Load 19(ballot)
+ 1696: 144(bool) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1694 1695
+ 1697: 24(int) Select 1696 63 34
+ 1698: 64(ptr) AccessChain 31(data) 1691 63 35
+ Store 1698 1697
+ 1699: 6(int) Load 8(invocation)
+ 1700: 71(ptr) AccessChain 31(data) 63 63
+ 1701: 25(ivec4) Load 1700
+ 1702: 70(ivec2) VectorShuffle 1701 1701 0 1
+ 1703: 152(bvec2) SLessThan 1702 727
+ 1704: 17(ivec4) Load 19(ballot)
+ 1705: 152(bvec2) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1703 1704
+ 1706: 70(ivec2) Select 1705 731 727
+ 1707: 71(ptr) AccessChain 31(data) 1699 63
+ 1708: 25(ivec4) Load 1707
+ 1709: 25(ivec4) VectorShuffle 1708 1706 4 5 2 3
+ Store 1707 1709
+ 1710: 6(int) Load 8(invocation)
+ 1711: 71(ptr) AccessChain 31(data) 63 63
+ 1712: 25(ivec4) Load 1711
+ 1713: 78(ivec3) VectorShuffle 1712 1712 0 1 2
+ 1714: 161(bvec3) SLessThan 1713 740
+ 1715: 17(ivec4) Load 19(ballot)
+ 1716: 161(bvec3) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1714 1715
+ 1717: 78(ivec3) Select 1716 744 740
+ 1718: 71(ptr) AccessChain 31(data) 1710 63
+ 1719: 25(ivec4) Load 1718
+ 1720: 25(ivec4) VectorShuffle 1719 1717 4 5 6 3
+ Store 1718 1720
+ 1721: 6(int) Load 8(invocation)
+ 1722: 71(ptr) AccessChain 31(data) 63 63
+ 1723: 25(ivec4) Load 1722
+ 1724: 169(bvec4) SLessThan 1723 752
+ 1725: 17(ivec4) Load 19(ballot)
+ 1726: 169(bvec4) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1724 1725
+ 1727: 25(ivec4) Select 1726 756 752
+ 1728: 71(ptr) AccessChain 31(data) 1721 63
+ Store 1728 1727
+ 1729: 6(int) Load 8(invocation)
+ 1730: 36(ptr) AccessChain 31(data) 34 34 35
+ 1731: 22(float) Load 1730
+ 1732: 17(ivec4) Load 19(ballot)
+ 1733: 22(float) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1731 1732
+ 1734: 36(ptr) AccessChain 31(data) 1729 34 35
+ Store 1734 1733
+ 1735: 6(int) Load 8(invocation)
+ 1736: 44(ptr) AccessChain 31(data) 63 34
+ 1737: 23(fvec4) Load 1736
+ 1738: 43(fvec2) VectorShuffle 1737 1737 0 1
+ 1739: 17(ivec4) Load 19(ballot)
+ 1740: 43(fvec2) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1738 1739
+ 1741: 44(ptr) AccessChain 31(data) 1735 34
+ 1742: 23(fvec4) Load 1741
+ 1743: 23(fvec4) VectorShuffle 1742 1740 4 5 2 3
+ Store 1741 1743
+ 1744: 6(int) Load 8(invocation)
+ 1745: 44(ptr) AccessChain 31(data) 33 34
+ 1746: 23(fvec4) Load 1745
+ 1747: 51(fvec3) VectorShuffle 1746 1746 0 1 2
+ 1748: 17(ivec4) Load 19(ballot)
+ 1749: 51(fvec3) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1747 1748
+ 1750: 44(ptr) AccessChain 31(data) 1744 34
+ 1751: 23(fvec4) Load 1750
+ 1752: 23(fvec4) VectorShuffle 1751 1749 4 5 6 3
+ Store 1750 1752
+ 1753: 6(int) Load 8(invocation)
+ 1754: 44(ptr) AccessChain 31(data) 115 34
+ 1755: 23(fvec4) Load 1754
+ 1756: 17(ivec4) Load 19(ballot)
+ 1757: 23(fvec4) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1755 1756
+ 1758: 44(ptr) AccessChain 31(data) 1753 34
+ Store 1758 1757
+ 1759: 6(int) Load 8(invocation)
+ 1760: 64(ptr) AccessChain 31(data) 34 63 35
+ 1761: 24(int) Load 1760
+ 1762: 17(ivec4) Load 19(ballot)
+ 1763: 24(int) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1761 1762
+ 1764: 64(ptr) AccessChain 31(data) 1759 63 35
+ Store 1764 1763
+ 1765: 6(int) Load 8(invocation)
+ 1766: 71(ptr) AccessChain 31(data) 63 63
+ 1767: 25(ivec4) Load 1766
+ 1768: 70(ivec2) VectorShuffle 1767 1767 0 1
+ 1769: 17(ivec4) Load 19(ballot)
+ 1770: 70(ivec2) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1768 1769
+ 1771: 71(ptr) AccessChain 31(data) 1765 63
+ 1772: 25(ivec4) Load 1771
+ 1773: 25(ivec4) VectorShuffle 1772 1770 4 5 2 3
+ Store 1771 1773
+ 1774: 6(int) Load 8(invocation)
+ 1775: 71(ptr) AccessChain 31(data) 33 63
+ 1776: 25(ivec4) Load 1775
+ 1777: 78(ivec3) VectorShuffle 1776 1776 0 1 2
+ 1778: 17(ivec4) Load 19(ballot)
+ 1779: 78(ivec3) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1777 1778
+ 1780: 71(ptr) AccessChain 31(data) 1774 63
+ 1781: 25(ivec4) Load 1780
+ 1782: 25(ivec4) VectorShuffle 1781 1779 4 5 6 3
+ Store 1780 1782
+ 1783: 6(int) Load 8(invocation)
+ 1784: 71(ptr) AccessChain 31(data) 115 63
+ 1785: 25(ivec4) Load 1784
+ 1786: 17(ivec4) Load 19(ballot)
+ 1787: 25(ivec4) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1785 1786
+ 1788: 71(ptr) AccessChain 31(data) 1783 63
+ Store 1788 1787
+ 1789: 6(int) Load 8(invocation)
+ 1790: 90(ptr) AccessChain 31(data) 34 33 35
+ 1791: 6(int) Load 1790
+ 1792: 17(ivec4) Load 19(ballot)
+ 1793: 6(int) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1791 1792
+ 1794: 90(ptr) AccessChain 31(data) 1789 33 35
+ Store 1794 1793
+ 1795: 6(int) Load 8(invocation)
+ 1796: 40(ptr) AccessChain 31(data) 63 33
+ 1797: 17(ivec4) Load 1796
+ 1798: 96(ivec2) VectorShuffle 1797 1797 0 1
+ 1799: 17(ivec4) Load 19(ballot)
+ 1800: 96(ivec2) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1798 1799
+ 1801: 40(ptr) AccessChain 31(data) 1795 33
+ 1802: 17(ivec4) Load 1801
+ 1803: 17(ivec4) VectorShuffle 1802 1800 4 5 2 3
+ Store 1801 1803
+ 1804: 6(int) Load 8(invocation)
+ 1805: 40(ptr) AccessChain 31(data) 33 33
+ 1806: 17(ivec4) Load 1805
+ 1807: 103(ivec3) VectorShuffle 1806 1806 0 1 2
+ 1808: 17(ivec4) Load 19(ballot)
+ 1809: 103(ivec3) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1807 1808
+ 1810: 40(ptr) AccessChain 31(data) 1804 33
+ 1811: 17(ivec4) Load 1810
+ 1812: 17(ivec4) VectorShuffle 1811 1809 4 5 6 3
+ Store 1810 1812
+ 1813: 6(int) Load 8(invocation)
+ 1814: 40(ptr) AccessChain 31(data) 115 33
+ 1815: 17(ivec4) Load 1814
+ 1816: 17(ivec4) Load 19(ballot)
+ 1817: 17(ivec4) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1815 1816
+ 1818: 40(ptr) AccessChain 31(data) 1813 33
+ Store 1818 1817
+ 1819: 6(int) Load 8(invocation)
+ 1820: 116(ptr) AccessChain 31(data) 34 115 35
+ 1821: 26(float) Load 1820
+ 1822: 17(ivec4) Load 19(ballot)
+ 1823: 26(float) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1821 1822
+ 1824: 116(ptr) AccessChain 31(data) 1819 115 35
+ Store 1824 1823
+ 1825: 6(int) Load 8(invocation)
+ 1826: 123(ptr) AccessChain 31(data) 63 115
+ 1827: 27(fvec4) Load 1826
+ 1828: 122(fvec2) VectorShuffle 1827 1827 0 1
+ 1829: 17(ivec4) Load 19(ballot)
+ 1830: 122(fvec2) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1828 1829
+ 1831: 123(ptr) AccessChain 31(data) 1825 115
+ 1832: 27(fvec4) Load 1831
+ 1833: 27(fvec4) VectorShuffle 1832 1830 4 5 2 3
+ Store 1831 1833
+ 1834: 6(int) Load 8(invocation)
+ 1835: 123(ptr) AccessChain 31(data) 33 115
+ 1836: 27(fvec4) Load 1835
+ 1837: 130(fvec3) VectorShuffle 1836 1836 0 1 2
+ 1838: 17(ivec4) Load 19(ballot)
+ 1839: 130(fvec3) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1837 1838
+ 1840: 123(ptr) AccessChain 31(data) 1834 115
+ 1841: 27(fvec4) Load 1840
+ 1842: 27(fvec4) VectorShuffle 1841 1839 4 5 6 3
+ Store 1840 1842
+ 1843: 6(int) Load 8(invocation)
+ 1844: 123(ptr) AccessChain 31(data) 115 115
+ 1845: 27(fvec4) Load 1844
+ 1846: 17(ivec4) Load 19(ballot)
+ 1847: 27(fvec4) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1845 1846
+ 1848: 123(ptr) AccessChain 31(data) 1843 115
+ Store 1848 1847
+ 1849: 6(int) Load 8(invocation)
+ 1850: 36(ptr) AccessChain 31(data) 34 34 35
+ 1851: 22(float) Load 1850
+ 1852: 17(ivec4) Load 19(ballot)
+ 1853: 22(float) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1851 1852
+ 1854: 36(ptr) AccessChain 31(data) 1849 34 35
+ Store 1854 1853
+ 1855: 6(int) Load 8(invocation)
+ 1856: 44(ptr) AccessChain 31(data) 63 34
+ 1857: 23(fvec4) Load 1856
+ 1858: 43(fvec2) VectorShuffle 1857 1857 0 1
+ 1859: 17(ivec4) Load 19(ballot)
+ 1860: 43(fvec2) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1858 1859
+ 1861: 44(ptr) AccessChain 31(data) 1855 34
+ 1862: 23(fvec4) Load 1861
+ 1863: 23(fvec4) VectorShuffle 1862 1860 4 5 2 3
+ Store 1861 1863
+ 1864: 6(int) Load 8(invocation)
+ 1865: 44(ptr) AccessChain 31(data) 33 34
+ 1866: 23(fvec4) Load 1865
+ 1867: 51(fvec3) VectorShuffle 1866 1866 0 1 2
+ 1868: 17(ivec4) Load 19(ballot)
+ 1869: 51(fvec3) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1867 1868
+ 1870: 44(ptr) AccessChain 31(data) 1864 34
+ 1871: 23(fvec4) Load 1870
+ 1872: 23(fvec4) VectorShuffle 1871 1869 4 5 6 3
+ Store 1870 1872
+ 1873: 6(int) Load 8(invocation)
+ 1874: 44(ptr) AccessChain 31(data) 115 34
+ 1875: 23(fvec4) Load 1874
+ 1876: 17(ivec4) Load 19(ballot)
+ 1877: 23(fvec4) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1875 1876
+ 1878: 44(ptr) AccessChain 31(data) 1873 34
+ Store 1878 1877
+ 1879: 6(int) Load 8(invocation)
+ 1880: 64(ptr) AccessChain 31(data) 34 63 35
+ 1881: 24(int) Load 1880
+ 1882: 17(ivec4) Load 19(ballot)
+ 1883: 24(int) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1881 1882
+ 1884: 64(ptr) AccessChain 31(data) 1879 63 35
+ Store 1884 1883
+ 1885: 6(int) Load 8(invocation)
+ 1886: 71(ptr) AccessChain 31(data) 63 63
+ 1887: 25(ivec4) Load 1886
+ 1888: 70(ivec2) VectorShuffle 1887 1887 0 1
+ 1889: 17(ivec4) Load 19(ballot)
+ 1890: 70(ivec2) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1888 1889
+ 1891: 71(ptr) AccessChain 31(data) 1885 63
+ 1892: 25(ivec4) Load 1891
+ 1893: 25(ivec4) VectorShuffle 1892 1890 4 5 2 3
+ Store 1891 1893
+ 1894: 6(int) Load 8(invocation)
+ 1895: 71(ptr) AccessChain 31(data) 33 63
+ 1896: 25(ivec4) Load 1895
+ 1897: 78(ivec3) VectorShuffle 1896 1896 0 1 2
+ 1898: 17(ivec4) Load 19(ballot)
+ 1899: 78(ivec3) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1897 1898
+ 1900: 71(ptr) AccessChain 31(data) 1894 63
+ 1901: 25(ivec4) Load 1900
+ 1902: 25(ivec4) VectorShuffle 1901 1899 4 5 6 3
+ Store 1900 1902
+ 1903: 6(int) Load 8(invocation)
+ 1904: 71(ptr) AccessChain 31(data) 115 63
+ 1905: 25(ivec4) Load 1904
+ 1906: 17(ivec4) Load 19(ballot)
+ 1907: 25(ivec4) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1905 1906
+ 1908: 71(ptr) AccessChain 31(data) 1903 63
+ Store 1908 1907
+ 1909: 6(int) Load 8(invocation)
+ 1910: 90(ptr) AccessChain 31(data) 34 33 35
+ 1911: 6(int) Load 1910
+ 1912: 17(ivec4) Load 19(ballot)
+ 1913: 6(int) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1911 1912
+ 1914: 90(ptr) AccessChain 31(data) 1909 33 35
+ Store 1914 1913
+ 1915: 6(int) Load 8(invocation)
+ 1916: 40(ptr) AccessChain 31(data) 63 33
+ 1917: 17(ivec4) Load 1916
+ 1918: 96(ivec2) VectorShuffle 1917 1917 0 1
+ 1919: 17(ivec4) Load 19(ballot)
+ 1920: 96(ivec2) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1918 1919
+ 1921: 40(ptr) AccessChain 31(data) 1915 33
+ 1922: 17(ivec4) Load 1921
+ 1923: 17(ivec4) VectorShuffle 1922 1920 4 5 2 3
+ Store 1921 1923
+ 1924: 6(int) Load 8(invocation)
+ 1925: 40(ptr) AccessChain 31(data) 33 33
+ 1926: 17(ivec4) Load 1925
+ 1927: 103(ivec3) VectorShuffle 1926 1926 0 1 2
+ 1928: 17(ivec4) Load 19(ballot)
+ 1929: 103(ivec3) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1927 1928
+ 1930: 40(ptr) AccessChain 31(data) 1924 33
+ 1931: 17(ivec4) Load 1930
+ 1932: 17(ivec4) VectorShuffle 1931 1929 4 5 6 3
+ Store 1930 1932
+ 1933: 6(int) Load 8(invocation)
+ 1934: 40(ptr) AccessChain 31(data) 115 33
+ 1935: 17(ivec4) Load 1934
+ 1936: 17(ivec4) Load 19(ballot)
+ 1937: 17(ivec4) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1935 1936
+ 1938: 40(ptr) AccessChain 31(data) 1933 33
+ Store 1938 1937
+ 1939: 6(int) Load 8(invocation)
+ 1940: 116(ptr) AccessChain 31(data) 34 115 35
+ 1941: 26(float) Load 1940
+ 1942: 17(ivec4) Load 19(ballot)
+ 1943: 26(float) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1941 1942
+ 1944: 116(ptr) AccessChain 31(data) 1939 115 35
+ Store 1944 1943
+ 1945: 6(int) Load 8(invocation)
+ 1946: 123(ptr) AccessChain 31(data) 63 115
+ 1947: 27(fvec4) Load 1946
+ 1948: 122(fvec2) VectorShuffle 1947 1947 0 1
+ 1949: 17(ivec4) Load 19(ballot)
+ 1950: 122(fvec2) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1948 1949
+ 1951: 123(ptr) AccessChain 31(data) 1945 115
+ 1952: 27(fvec4) Load 1951
+ 1953: 27(fvec4) VectorShuffle 1952 1950 4 5 2 3
+ Store 1951 1953
+ 1954: 6(int) Load 8(invocation)
+ 1955: 123(ptr) AccessChain 31(data) 33 115
+ 1956: 27(fvec4) Load 1955
+ 1957: 130(fvec3) VectorShuffle 1956 1956 0 1 2
+ 1958: 17(ivec4) Load 19(ballot)
+ 1959: 130(fvec3) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1957 1958
+ 1960: 123(ptr) AccessChain 31(data) 1954 115
+ 1961: 27(fvec4) Load 1960
+ 1962: 27(fvec4) VectorShuffle 1961 1959 4 5 6 3
+ Store 1960 1962
+ 1963: 6(int) Load 8(invocation)
+ 1964: 123(ptr) AccessChain 31(data) 115 115
+ 1965: 27(fvec4) Load 1964
+ 1966: 17(ivec4) Load 19(ballot)
+ 1967: 27(fvec4) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1965 1966
+ 1968: 123(ptr) AccessChain 31(data) 1963 115
+ Store 1968 1967
+ 1969: 6(int) Load 8(invocation)
+ 1970: 36(ptr) AccessChain 31(data) 34 34 35
+ 1971: 22(float) Load 1970
+ 1972: 17(ivec4) Load 19(ballot)
+ 1973: 22(float) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 1971 1972
+ 1974: 36(ptr) AccessChain 31(data) 1969 34 35
+ Store 1974 1973
+ 1975: 6(int) Load 8(invocation)
+ 1976: 44(ptr) AccessChain 31(data) 63 34
+ 1977: 23(fvec4) Load 1976
+ 1978: 43(fvec2) VectorShuffle 1977 1977 0 1
+ 1979: 17(ivec4) Load 19(ballot)
+ 1980: 43(fvec2) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 1978 1979
+ 1981: 44(ptr) AccessChain 31(data) 1975 34
+ 1982: 23(fvec4) Load 1981
+ 1983: 23(fvec4) VectorShuffle 1982 1980 4 5 2 3
+ Store 1981 1983
+ 1984: 6(int) Load 8(invocation)
+ 1985: 44(ptr) AccessChain 31(data) 33 34
+ 1986: 23(fvec4) Load 1985
+ 1987: 51(fvec3) VectorShuffle 1986 1986 0 1 2
+ 1988: 17(ivec4) Load 19(ballot)
+ 1989: 51(fvec3) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 1987 1988
+ 1990: 44(ptr) AccessChain 31(data) 1984 34
+ 1991: 23(fvec4) Load 1990
+ 1992: 23(fvec4) VectorShuffle 1991 1989 4 5 6 3
+ Store 1990 1992
+ 1993: 6(int) Load 8(invocation)
+ 1994: 44(ptr) AccessChain 31(data) 115 34
+ 1995: 23(fvec4) Load 1994
+ 1996: 17(ivec4) Load 19(ballot)
+ 1997: 23(fvec4) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 1995 1996
+ 1998: 44(ptr) AccessChain 31(data) 1993 34
+ Store 1998 1997
+ 1999: 6(int) Load 8(invocation)
+ 2000: 64(ptr) AccessChain 31(data) 34 63 35
+ 2001: 24(int) Load 2000
+ 2002: 17(ivec4) Load 19(ballot)
+ 2003: 24(int) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2001 2002
+ 2004: 64(ptr) AccessChain 31(data) 1999 63 35
+ Store 2004 2003
+ 2005: 6(int) Load 8(invocation)
+ 2006: 71(ptr) AccessChain 31(data) 63 63
+ 2007: 25(ivec4) Load 2006
+ 2008: 70(ivec2) VectorShuffle 2007 2007 0 1
+ 2009: 17(ivec4) Load 19(ballot)
+ 2010: 70(ivec2) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2008 2009
+ 2011: 71(ptr) AccessChain 31(data) 2005 63
+ 2012: 25(ivec4) Load 2011
+ 2013: 25(ivec4) VectorShuffle 2012 2010 4 5 2 3
+ Store 2011 2013
+ 2014: 6(int) Load 8(invocation)
+ 2015: 71(ptr) AccessChain 31(data) 33 63
+ 2016: 25(ivec4) Load 2015
+ 2017: 78(ivec3) VectorShuffle 2016 2016 0 1 2
+ 2018: 17(ivec4) Load 19(ballot)
+ 2019: 78(ivec3) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2017 2018
+ 2020: 71(ptr) AccessChain 31(data) 2014 63
+ 2021: 25(ivec4) Load 2020
+ 2022: 25(ivec4) VectorShuffle 2021 2019 4 5 6 3
+ Store 2020 2022
+ 2023: 6(int) Load 8(invocation)
+ 2024: 71(ptr) AccessChain 31(data) 115 63
+ 2025: 25(ivec4) Load 2024
+ 2026: 17(ivec4) Load 19(ballot)
+ 2027: 25(ivec4) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2025 2026
+ 2028: 71(ptr) AccessChain 31(data) 2023 63
+ Store 2028 2027
+ 2029: 6(int) Load 8(invocation)
+ 2030: 90(ptr) AccessChain 31(data) 34 33 35
+ 2031: 6(int) Load 2030
+ 2032: 17(ivec4) Load 19(ballot)
+ 2033: 6(int) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2031 2032
+ 2034: 90(ptr) AccessChain 31(data) 2029 33 35
+ Store 2034 2033
+ 2035: 6(int) Load 8(invocation)
+ 2036: 40(ptr) AccessChain 31(data) 63 33
+ 2037: 17(ivec4) Load 2036
+ 2038: 96(ivec2) VectorShuffle 2037 2037 0 1
+ 2039: 17(ivec4) Load 19(ballot)
+ 2040: 96(ivec2) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2038 2039
+ 2041: 40(ptr) AccessChain 31(data) 2035 33
+ 2042: 17(ivec4) Load 2041
+ 2043: 17(ivec4) VectorShuffle 2042 2040 4 5 2 3
+ Store 2041 2043
+ 2044: 6(int) Load 8(invocation)
+ 2045: 40(ptr) AccessChain 31(data) 33 33
+ 2046: 17(ivec4) Load 2045
+ 2047: 103(ivec3) VectorShuffle 2046 2046 0 1 2
+ 2048: 17(ivec4) Load 19(ballot)
+ 2049: 103(ivec3) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2047 2048
+ 2050: 40(ptr) AccessChain 31(data) 2044 33
+ 2051: 17(ivec4) Load 2050
+ 2052: 17(ivec4) VectorShuffle 2051 2049 4 5 6 3
+ Store 2050 2052
+ 2053: 6(int) Load 8(invocation)
+ 2054: 40(ptr) AccessChain 31(data) 115 33
+ 2055: 17(ivec4) Load 2054
+ 2056: 17(ivec4) Load 19(ballot)
+ 2057: 17(ivec4) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2055 2056
+ 2058: 40(ptr) AccessChain 31(data) 2053 33
+ Store 2058 2057
+ 2059: 6(int) Load 8(invocation)
+ 2060: 116(ptr) AccessChain 31(data) 34 115 35
+ 2061: 26(float) Load 2060
+ 2062: 17(ivec4) Load 19(ballot)
+ 2063: 26(float) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2061 2062
+ 2064: 116(ptr) AccessChain 31(data) 2059 115 35
+ Store 2064 2063
+ 2065: 6(int) Load 8(invocation)
+ 2066: 123(ptr) AccessChain 31(data) 63 115
+ 2067: 27(fvec4) Load 2066
+ 2068: 122(fvec2) VectorShuffle 2067 2067 0 1
+ 2069: 17(ivec4) Load 19(ballot)
+ 2070: 122(fvec2) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2068 2069
+ 2071: 123(ptr) AccessChain 31(data) 2065 115
+ 2072: 27(fvec4) Load 2071
+ 2073: 27(fvec4) VectorShuffle 2072 2070 4 5 2 3
+ Store 2071 2073
+ 2074: 6(int) Load 8(invocation)
+ 2075: 123(ptr) AccessChain 31(data) 33 115
+ 2076: 27(fvec4) Load 2075
+ 2077: 130(fvec3) VectorShuffle 2076 2076 0 1 2
+ 2078: 17(ivec4) Load 19(ballot)
+ 2079: 130(fvec3) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2077 2078
+ 2080: 123(ptr) AccessChain 31(data) 2074 115
+ 2081: 27(fvec4) Load 2080
+ 2082: 27(fvec4) VectorShuffle 2081 2079 4 5 6 3
+ Store 2080 2082
+ 2083: 6(int) Load 8(invocation)
+ 2084: 123(ptr) AccessChain 31(data) 115 115
+ 2085: 27(fvec4) Load 2084
+ 2086: 17(ivec4) Load 19(ballot)
+ 2087: 27(fvec4) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2085 2086
+ 2088: 123(ptr) AccessChain 31(data) 2083 115
+ Store 2088 2087
+ 2089: 6(int) Load 8(invocation)
+ 2090: 36(ptr) AccessChain 31(data) 34 34 35
+ 2091: 22(float) Load 2090
+ 2092: 17(ivec4) Load 19(ballot)
+ 2093: 22(float) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2091 2092
+ 2094: 36(ptr) AccessChain 31(data) 2089 34 35
+ Store 2094 2093
+ 2095: 6(int) Load 8(invocation)
+ 2096: 44(ptr) AccessChain 31(data) 63 34
+ 2097: 23(fvec4) Load 2096
+ 2098: 43(fvec2) VectorShuffle 2097 2097 0 1
+ 2099: 17(ivec4) Load 19(ballot)
+ 2100: 43(fvec2) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2098 2099
+ 2101: 44(ptr) AccessChain 31(data) 2095 34
+ 2102: 23(fvec4) Load 2101
+ 2103: 23(fvec4) VectorShuffle 2102 2100 4 5 2 3
+ Store 2101 2103
+ 2104: 6(int) Load 8(invocation)
+ 2105: 44(ptr) AccessChain 31(data) 33 34
+ 2106: 23(fvec4) Load 2105
+ 2107: 51(fvec3) VectorShuffle 2106 2106 0 1 2
+ 2108: 17(ivec4) Load 19(ballot)
+ 2109: 51(fvec3) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2107 2108
+ 2110: 44(ptr) AccessChain 31(data) 2104 34
+ 2111: 23(fvec4) Load 2110
+ 2112: 23(fvec4) VectorShuffle 2111 2109 4 5 6 3
+ Store 2110 2112
+ 2113: 6(int) Load 8(invocation)
+ 2114: 44(ptr) AccessChain 31(data) 115 34
+ 2115: 23(fvec4) Load 2114
+ 2116: 17(ivec4) Load 19(ballot)
+ 2117: 23(fvec4) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2115 2116
+ 2118: 44(ptr) AccessChain 31(data) 2113 34
+ Store 2118 2117
+ 2119: 6(int) Load 8(invocation)
+ 2120: 64(ptr) AccessChain 31(data) 34 63 35
+ 2121: 24(int) Load 2120
+ 2122: 17(ivec4) Load 19(ballot)
+ 2123: 24(int) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2121 2122
+ 2124: 64(ptr) AccessChain 31(data) 2119 63 35
+ Store 2124 2123
+ 2125: 6(int) Load 8(invocation)
+ 2126: 71(ptr) AccessChain 31(data) 63 63
+ 2127: 25(ivec4) Load 2126
+ 2128: 70(ivec2) VectorShuffle 2127 2127 0 1
+ 2129: 17(ivec4) Load 19(ballot)
+ 2130: 70(ivec2) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2128 2129
+ 2131: 71(ptr) AccessChain 31(data) 2125 63
+ 2132: 25(ivec4) Load 2131
+ 2133: 25(ivec4) VectorShuffle 2132 2130 4 5 2 3
+ Store 2131 2133
+ 2134: 6(int) Load 8(invocation)
+ 2135: 71(ptr) AccessChain 31(data) 33 63
+ 2136: 25(ivec4) Load 2135
+ 2137: 78(ivec3) VectorShuffle 2136 2136 0 1 2
+ 2138: 17(ivec4) Load 19(ballot)
+ 2139: 78(ivec3) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2137 2138
+ 2140: 71(ptr) AccessChain 31(data) 2134 63
+ 2141: 25(ivec4) Load 2140
+ 2142: 25(ivec4) VectorShuffle 2141 2139 4 5 6 3
+ Store 2140 2142
+ 2143: 6(int) Load 8(invocation)
+ 2144: 71(ptr) AccessChain 31(data) 115 63
+ 2145: 25(ivec4) Load 2144
+ 2146: 17(ivec4) Load 19(ballot)
+ 2147: 25(ivec4) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2145 2146
+ 2148: 71(ptr) AccessChain 31(data) 2143 63
+ Store 2148 2147
+ 2149: 6(int) Load 8(invocation)
+ 2150: 90(ptr) AccessChain 31(data) 34 33 35
+ 2151: 6(int) Load 2150
+ 2152: 17(ivec4) Load 19(ballot)
+ 2153: 6(int) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2151 2152
+ 2154: 90(ptr) AccessChain 31(data) 2149 33 35
+ Store 2154 2153
+ 2155: 6(int) Load 8(invocation)
+ 2156: 40(ptr) AccessChain 31(data) 63 33
+ 2157: 17(ivec4) Load 2156
+ 2158: 96(ivec2) VectorShuffle 2157 2157 0 1
+ 2159: 17(ivec4) Load 19(ballot)
+ 2160: 96(ivec2) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2158 2159
+ 2161: 40(ptr) AccessChain 31(data) 2155 33
+ 2162: 17(ivec4) Load 2161
+ 2163: 17(ivec4) VectorShuffle 2162 2160 4 5 2 3
+ Store 2161 2163
+ 2164: 6(int) Load 8(invocation)
+ 2165: 40(ptr) AccessChain 31(data) 33 33
+ 2166: 17(ivec4) Load 2165
+ 2167: 103(ivec3) VectorShuffle 2166 2166 0 1 2
+ 2168: 17(ivec4) Load 19(ballot)
+ 2169: 103(ivec3) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2167 2168
+ 2170: 40(ptr) AccessChain 31(data) 2164 33
+ 2171: 17(ivec4) Load 2170
+ 2172: 17(ivec4) VectorShuffle 2171 2169 4 5 6 3
+ Store 2170 2172
+ 2173: 6(int) Load 8(invocation)
+ 2174: 40(ptr) AccessChain 31(data) 115 33
+ 2175: 17(ivec4) Load 2174
+ 2176: 17(ivec4) Load 19(ballot)
+ 2177: 17(ivec4) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2175 2176
+ 2178: 40(ptr) AccessChain 31(data) 2173 33
+ Store 2178 2177
+ 2179: 6(int) Load 8(invocation)
+ 2180: 116(ptr) AccessChain 31(data) 34 115 35
+ 2181: 26(float) Load 2180
+ 2182: 17(ivec4) Load 19(ballot)
+ 2183: 26(float) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2181 2182
+ 2184: 116(ptr) AccessChain 31(data) 2179 115 35
+ Store 2184 2183
+ 2185: 6(int) Load 8(invocation)
+ 2186: 123(ptr) AccessChain 31(data) 63 115
+ 2187: 27(fvec4) Load 2186
+ 2188: 122(fvec2) VectorShuffle 2187 2187 0 1
+ 2189: 17(ivec4) Load 19(ballot)
+ 2190: 122(fvec2) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2188 2189
+ 2191: 123(ptr) AccessChain 31(data) 2185 115
+ 2192: 27(fvec4) Load 2191
+ 2193: 27(fvec4) VectorShuffle 2192 2190 4 5 2 3
+ Store 2191 2193
+ 2194: 6(int) Load 8(invocation)
+ 2195: 123(ptr) AccessChain 31(data) 33 115
+ 2196: 27(fvec4) Load 2195
+ 2197: 130(fvec3) VectorShuffle 2196 2196 0 1 2
+ 2198: 17(ivec4) Load 19(ballot)
+ 2199: 130(fvec3) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2197 2198
+ 2200: 123(ptr) AccessChain 31(data) 2194 115
+ 2201: 27(fvec4) Load 2200
+ 2202: 27(fvec4) VectorShuffle 2201 2199 4 5 6 3
+ Store 2200 2202
+ 2203: 6(int) Load 8(invocation)
+ 2204: 123(ptr) AccessChain 31(data) 115 115
+ 2205: 27(fvec4) Load 2204
+ 2206: 17(ivec4) Load 19(ballot)
+ 2207: 27(fvec4) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2205 2206
+ 2208: 123(ptr) AccessChain 31(data) 2203 115
+ Store 2208 2207
+ 2209: 6(int) Load 8(invocation)
+ 2210: 64(ptr) AccessChain 31(data) 34 63 35
+ 2211: 24(int) Load 2210
+ 2212: 17(ivec4) Load 19(ballot)
+ 2213: 24(int) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2211 2212
+ 2214: 64(ptr) AccessChain 31(data) 2209 63 35
+ Store 2214 2213
+ 2215: 6(int) Load 8(invocation)
+ 2216: 71(ptr) AccessChain 31(data) 63 63
+ 2217: 25(ivec4) Load 2216
+ 2218: 70(ivec2) VectorShuffle 2217 2217 0 1
+ 2219: 17(ivec4) Load 19(ballot)
+ 2220: 70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2218 2219
+ 2221: 71(ptr) AccessChain 31(data) 2215 63
+ 2222: 25(ivec4) Load 2221
+ 2223: 25(ivec4) VectorShuffle 2222 2220 4 5 2 3
+ Store 2221 2223
+ 2224: 6(int) Load 8(invocation)
+ 2225: 71(ptr) AccessChain 31(data) 33 63
+ 2226: 25(ivec4) Load 2225
+ 2227: 78(ivec3) VectorShuffle 2226 2226 0 1 2
+ 2228: 17(ivec4) Load 19(ballot)
+ 2229: 78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2227 2228
+ 2230: 71(ptr) AccessChain 31(data) 2224 63
+ 2231: 25(ivec4) Load 2230
+ 2232: 25(ivec4) VectorShuffle 2231 2229 4 5 6 3
+ Store 2230 2232
+ 2233: 6(int) Load 8(invocation)
+ 2234: 71(ptr) AccessChain 31(data) 115 63
+ 2235: 25(ivec4) Load 2234
+ 2236: 17(ivec4) Load 19(ballot)
+ 2237: 25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2235 2236
+ 2238: 71(ptr) AccessChain 31(data) 2233 63
+ Store 2238 2237
+ 2239: 6(int) Load 8(invocation)
+ 2240: 90(ptr) AccessChain 31(data) 34 33 35
+ 2241: 6(int) Load 2240
+ 2242: 17(ivec4) Load 19(ballot)
+ 2243: 6(int) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2241 2242
+ 2244: 90(ptr) AccessChain 31(data) 2239 33 35
+ Store 2244 2243
+ 2245: 6(int) Load 8(invocation)
+ 2246: 40(ptr) AccessChain 31(data) 63 33
+ 2247: 17(ivec4) Load 2246
+ 2248: 96(ivec2) VectorShuffle 2247 2247 0 1
+ 2249: 17(ivec4) Load 19(ballot)
+ 2250: 96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2248 2249
+ 2251: 40(ptr) AccessChain 31(data) 2245 33
+ 2252: 17(ivec4) Load 2251
+ 2253: 17(ivec4) VectorShuffle 2252 2250 4 5 2 3
+ Store 2251 2253
+ 2254: 6(int) Load 8(invocation)
+ 2255: 40(ptr) AccessChain 31(data) 33 33
+ 2256: 17(ivec4) Load 2255
+ 2257: 103(ivec3) VectorShuffle 2256 2256 0 1 2
+ 2258: 17(ivec4) Load 19(ballot)
+ 2259: 103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2257 2258
+ 2260: 40(ptr) AccessChain 31(data) 2254 33
+ 2261: 17(ivec4) Load 2260
+ 2262: 17(ivec4) VectorShuffle 2261 2259 4 5 6 3
+ Store 2260 2262
+ 2263: 6(int) Load 8(invocation)
+ 2264: 40(ptr) AccessChain 31(data) 115 33
+ 2265: 17(ivec4) Load 2264
+ 2266: 17(ivec4) Load 19(ballot)
+ 2267: 17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2265 2266
+ 2268: 40(ptr) AccessChain 31(data) 2263 33
+ Store 2268 2267
+ 2269: 6(int) Load 8(invocation)
+ 2270: 64(ptr) AccessChain 31(data) 34 63 35
+ 2271: 24(int) Load 2270
+ 2272: 144(bool) SLessThan 2271 34
+ 2273: 17(ivec4) Load 19(ballot)
+ 2274: 144(bool) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2272 2273
+ 2275: 24(int) Select 2274 63 34
+ 2276: 64(ptr) AccessChain 31(data) 2269 63 35
+ Store 2276 2275
+ 2277: 6(int) Load 8(invocation)
+ 2278: 71(ptr) AccessChain 31(data) 63 63
+ 2279: 25(ivec4) Load 2278
+ 2280: 70(ivec2) VectorShuffle 2279 2279 0 1
+ 2281: 152(bvec2) SLessThan 2280 727
+ 2282: 17(ivec4) Load 19(ballot)
+ 2283: 152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2281 2282
+ 2284: 70(ivec2) Select 2283 731 727
+ 2285: 71(ptr) AccessChain 31(data) 2277 63
+ 2286: 25(ivec4) Load 2285
+ 2287: 25(ivec4) VectorShuffle 2286 2284 4 5 2 3
+ Store 2285 2287
+ 2288: 6(int) Load 8(invocation)
+ 2289: 71(ptr) AccessChain 31(data) 63 63
+ 2290: 25(ivec4) Load 2289
+ 2291: 78(ivec3) VectorShuffle 2290 2290 0 1 2
+ 2292: 161(bvec3) SLessThan 2291 740
+ 2293: 17(ivec4) Load 19(ballot)
+ 2294: 161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2292 2293
+ 2295: 78(ivec3) Select 2294 744 740
+ 2296: 71(ptr) AccessChain 31(data) 2288 63
+ 2297: 25(ivec4) Load 2296
+ 2298: 25(ivec4) VectorShuffle 2297 2295 4 5 6 3
+ Store 2296 2298
+ 2299: 6(int) Load 8(invocation)
+ 2300: 71(ptr) AccessChain 31(data) 63 63
+ 2301: 25(ivec4) Load 2300
+ 2302: 169(bvec4) SLessThan 2301 752
+ 2303: 17(ivec4) Load 19(ballot)
+ 2304: 169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2302 2303
+ 2305: 25(ivec4) Select 2304 756 752
+ 2306: 71(ptr) AccessChain 31(data) 2299 63
+ Store 2306 2305
+ 2307: 6(int) Load 8(invocation)
+ 2308: 64(ptr) AccessChain 31(data) 34 63 35
+ 2309: 24(int) Load 2308
+ 2310: 17(ivec4) Load 19(ballot)
+ 2311: 24(int) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2309 2310
+ 2312: 64(ptr) AccessChain 31(data) 2307 63 35
+ Store 2312 2311
+ 2313: 6(int) Load 8(invocation)
+ 2314: 71(ptr) AccessChain 31(data) 63 63
+ 2315: 25(ivec4) Load 2314
+ 2316: 70(ivec2) VectorShuffle 2315 2315 0 1
+ 2317: 17(ivec4) Load 19(ballot)
+ 2318: 70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2316 2317
+ 2319: 71(ptr) AccessChain 31(data) 2313 63
+ 2320: 25(ivec4) Load 2319
+ 2321: 25(ivec4) VectorShuffle 2320 2318 4 5 2 3
+ Store 2319 2321
+ 2322: 6(int) Load 8(invocation)
+ 2323: 71(ptr) AccessChain 31(data) 33 63
+ 2324: 25(ivec4) Load 2323
+ 2325: 78(ivec3) VectorShuffle 2324 2324 0 1 2
+ 2326: 17(ivec4) Load 19(ballot)
+ 2327: 78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2325 2326
+ 2328: 71(ptr) AccessChain 31(data) 2322 63
+ 2329: 25(ivec4) Load 2328
+ 2330: 25(ivec4) VectorShuffle 2329 2327 4 5 6 3
+ Store 2328 2330
+ 2331: 6(int) Load 8(invocation)
+ 2332: 71(ptr) AccessChain 31(data) 115 63
+ 2333: 25(ivec4) Load 2332
+ 2334: 17(ivec4) Load 19(ballot)
+ 2335: 25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2333 2334
+ 2336: 71(ptr) AccessChain 31(data) 2331 63
+ Store 2336 2335
+ 2337: 6(int) Load 8(invocation)
+ 2338: 90(ptr) AccessChain 31(data) 34 33 35
+ 2339: 6(int) Load 2338
+ 2340: 17(ivec4) Load 19(ballot)
+ 2341: 6(int) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2339 2340
+ 2342: 90(ptr) AccessChain 31(data) 2337 33 35
+ Store 2342 2341
+ 2343: 6(int) Load 8(invocation)
+ 2344: 40(ptr) AccessChain 31(data) 63 33
+ 2345: 17(ivec4) Load 2344
+ 2346: 96(ivec2) VectorShuffle 2345 2345 0 1
+ 2347: 17(ivec4) Load 19(ballot)
+ 2348: 96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2346 2347
+ 2349: 40(ptr) AccessChain 31(data) 2343 33
+ 2350: 17(ivec4) Load 2349
+ 2351: 17(ivec4) VectorShuffle 2350 2348 4 5 2 3
+ Store 2349 2351
+ 2352: 6(int) Load 8(invocation)
+ 2353: 40(ptr) AccessChain 31(data) 33 33
+ 2354: 17(ivec4) Load 2353
+ 2355: 103(ivec3) VectorShuffle 2354 2354 0 1 2
+ 2356: 17(ivec4) Load 19(ballot)
+ 2357: 103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2355 2356
+ 2358: 40(ptr) AccessChain 31(data) 2352 33
+ 2359: 17(ivec4) Load 2358
+ 2360: 17(ivec4) VectorShuffle 2359 2357 4 5 6 3
+ Store 2358 2360
+ 2361: 6(int) Load 8(invocation)
+ 2362: 40(ptr) AccessChain 31(data) 115 33
+ 2363: 17(ivec4) Load 2362
+ 2364: 17(ivec4) Load 19(ballot)
+ 2365: 17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2363 2364
+ 2366: 40(ptr) AccessChain 31(data) 2361 33
+ Store 2366 2365
+ 2367: 6(int) Load 8(invocation)
+ 2368: 64(ptr) AccessChain 31(data) 34 63 35
+ 2369: 24(int) Load 2368
+ 2370: 144(bool) SLessThan 2369 34
+ 2371: 17(ivec4) Load 19(ballot)
+ 2372: 144(bool) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2370 2371
+ 2373: 24(int) Select 2372 63 34
+ 2374: 64(ptr) AccessChain 31(data) 2367 63 35
+ Store 2374 2373
+ 2375: 6(int) Load 8(invocation)
+ 2376: 71(ptr) AccessChain 31(data) 63 63
+ 2377: 25(ivec4) Load 2376
+ 2378: 70(ivec2) VectorShuffle 2377 2377 0 1
+ 2379: 152(bvec2) SLessThan 2378 727
+ 2380: 17(ivec4) Load 19(ballot)
+ 2381: 152(bvec2) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2379 2380
+ 2382: 70(ivec2) Select 2381 731 727
+ 2383: 71(ptr) AccessChain 31(data) 2375 63
+ 2384: 25(ivec4) Load 2383
+ 2385: 25(ivec4) VectorShuffle 2384 2382 4 5 2 3
+ Store 2383 2385
+ 2386: 6(int) Load 8(invocation)
+ 2387: 71(ptr) AccessChain 31(data) 63 63
+ 2388: 25(ivec4) Load 2387
+ 2389: 78(ivec3) VectorShuffle 2388 2388 0 1 2
+ 2390: 161(bvec3) SLessThan 2389 740
+ 2391: 17(ivec4) Load 19(ballot)
+ 2392: 161(bvec3) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2390 2391
+ 2393: 78(ivec3) Select 2392 744 740
+ 2394: 71(ptr) AccessChain 31(data) 2386 63
+ 2395: 25(ivec4) Load 2394
+ 2396: 25(ivec4) VectorShuffle 2395 2393 4 5 6 3
+ Store 2394 2396
+ 2397: 6(int) Load 8(invocation)
+ 2398: 71(ptr) AccessChain 31(data) 63 63
+ 2399: 25(ivec4) Load 2398
+ 2400: 169(bvec4) SLessThan 2399 752
+ 2401: 17(ivec4) Load 19(ballot)
+ 2402: 169(bvec4) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2400 2401
+ 2403: 25(ivec4) Select 2402 756 752
+ 2404: 71(ptr) AccessChain 31(data) 2397 63
+ Store 2404 2403
+ 2405: 6(int) Load 8(invocation)
+ 2406: 64(ptr) AccessChain 31(data) 34 63 35
+ 2407: 24(int) Load 2406
+ 2408: 17(ivec4) Load 19(ballot)
+ 2409: 24(int) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2407 2408
+ 2410: 64(ptr) AccessChain 31(data) 2405 63 35
+ Store 2410 2409
+ 2411: 6(int) Load 8(invocation)
+ 2412: 71(ptr) AccessChain 31(data) 63 63
+ 2413: 25(ivec4) Load 2412
+ 2414: 70(ivec2) VectorShuffle 2413 2413 0 1
+ 2415: 17(ivec4) Load 19(ballot)
+ 2416: 70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2414 2415
+ 2417: 71(ptr) AccessChain 31(data) 2411 63
+ 2418: 25(ivec4) Load 2417
+ 2419: 25(ivec4) VectorShuffle 2418 2416 4 5 2 3
+ Store 2417 2419
+ 2420: 6(int) Load 8(invocation)
+ 2421: 71(ptr) AccessChain 31(data) 33 63
+ 2422: 25(ivec4) Load 2421
+ 2423: 78(ivec3) VectorShuffle 2422 2422 0 1 2
+ 2424: 17(ivec4) Load 19(ballot)
+ 2425: 78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2423 2424
+ 2426: 71(ptr) AccessChain 31(data) 2420 63
+ 2427: 25(ivec4) Load 2426
+ 2428: 25(ivec4) VectorShuffle 2427 2425 4 5 6 3
+ Store 2426 2428
+ 2429: 6(int) Load 8(invocation)
+ 2430: 71(ptr) AccessChain 31(data) 115 63
+ 2431: 25(ivec4) Load 2430
+ 2432: 17(ivec4) Load 19(ballot)
+ 2433: 25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2431 2432
+ 2434: 71(ptr) AccessChain 31(data) 2429 63
+ Store 2434 2433
+ 2435: 6(int) Load 8(invocation)
+ 2436: 90(ptr) AccessChain 31(data) 34 33 35
+ 2437: 6(int) Load 2436
+ 2438: 17(ivec4) Load 19(ballot)
+ 2439: 6(int) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2437 2438
+ 2440: 90(ptr) AccessChain 31(data) 2435 33 35
+ Store 2440 2439
+ 2441: 6(int) Load 8(invocation)
+ 2442: 40(ptr) AccessChain 31(data) 63 33
+ 2443: 17(ivec4) Load 2442
+ 2444: 96(ivec2) VectorShuffle 2443 2443 0 1
+ 2445: 17(ivec4) Load 19(ballot)
+ 2446: 96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2444 2445
+ 2447: 40(ptr) AccessChain 31(data) 2441 33
+ 2448: 17(ivec4) Load 2447
+ 2449: 17(ivec4) VectorShuffle 2448 2446 4 5 2 3
+ Store 2447 2449
+ 2450: 6(int) Load 8(invocation)
+ 2451: 40(ptr) AccessChain 31(data) 33 33
+ 2452: 17(ivec4) Load 2451
+ 2453: 103(ivec3) VectorShuffle 2452 2452 0 1 2
+ 2454: 17(ivec4) Load 19(ballot)
+ 2455: 103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2453 2454
+ 2456: 40(ptr) AccessChain 31(data) 2450 33
+ 2457: 17(ivec4) Load 2456
+ 2458: 17(ivec4) VectorShuffle 2457 2455 4 5 6 3
+ Store 2456 2458
+ 2459: 6(int) Load 8(invocation)
+ 2460: 40(ptr) AccessChain 31(data) 115 33
+ 2461: 17(ivec4) Load 2460
+ 2462: 17(ivec4) Load 19(ballot)
+ 2463: 17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2461 2462
+ 2464: 40(ptr) AccessChain 31(data) 2459 33
+ Store 2464 2463
+ 2465: 6(int) Load 8(invocation)
+ 2466: 64(ptr) AccessChain 31(data) 34 63 35
+ 2467: 24(int) Load 2466
+ 2468: 144(bool) SLessThan 2467 34
+ 2469: 17(ivec4) Load 19(ballot)
+ 2470: 144(bool) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2468 2469
+ 2471: 24(int) Select 2470 63 34
+ 2472: 64(ptr) AccessChain 31(data) 2465 63 35
+ Store 2472 2471
+ 2473: 6(int) Load 8(invocation)
+ 2474: 71(ptr) AccessChain 31(data) 63 63
+ 2475: 25(ivec4) Load 2474
+ 2476: 70(ivec2) VectorShuffle 2475 2475 0 1
+ 2477: 152(bvec2) SLessThan 2476 727
+ 2478: 17(ivec4) Load 19(ballot)
+ 2479: 152(bvec2) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2477 2478
+ 2480: 70(ivec2) Select 2479 731 727
+ 2481: 71(ptr) AccessChain 31(data) 2473 63
+ 2482: 25(ivec4) Load 2481
+ 2483: 25(ivec4) VectorShuffle 2482 2480 4 5 2 3
+ Store 2481 2483
+ 2484: 6(int) Load 8(invocation)
+ 2485: 71(ptr) AccessChain 31(data) 63 63
+ 2486: 25(ivec4) Load 2485
+ 2487: 78(ivec3) VectorShuffle 2486 2486 0 1 2
+ 2488: 161(bvec3) SLessThan 2487 740
+ 2489: 17(ivec4) Load 19(ballot)
+ 2490: 161(bvec3) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2488 2489
+ 2491: 78(ivec3) Select 2490 744 740
+ 2492: 71(ptr) AccessChain 31(data) 2484 63
+ 2493: 25(ivec4) Load 2492
+ 2494: 25(ivec4) VectorShuffle 2493 2491 4 5 6 3
+ Store 2492 2494
+ 2495: 6(int) Load 8(invocation)
+ 2496: 71(ptr) AccessChain 31(data) 63 63
+ 2497: 25(ivec4) Load 2496
+ 2498: 169(bvec4) SLessThan 2497 752
+ 2499: 17(ivec4) Load 19(ballot)
+ 2500: 169(bvec4) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2498 2499
+ 2501: 25(ivec4) Select 2500 756 752
+ 2502: 71(ptr) AccessChain 31(data) 2495 63
+ Store 2502 2501
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.vulkan100.subgroupPartitioned.comp.out b/Test/baseResults/spv.vulkan100.subgroupPartitioned.comp.out
new file mode 100755
index 0000000..3116ac1
--- /dev/null
+++ b/Test/baseResults/spv.vulkan100.subgroupPartitioned.comp.out
@@ -0,0 +1,326 @@
+spv.vulkan100.subgroupPartitioned.comp
+ERROR: 0:19: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:21: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:22: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:23: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:24: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:26: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:27: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:28: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:29: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:31: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:32: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:33: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:34: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:36: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:37: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:38: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:39: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:41: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:42: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:43: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:44: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:46: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:47: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:48: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:49: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:51: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:52: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:53: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:54: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:56: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:57: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:58: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:59: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:61: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:62: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:63: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:64: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:66: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:67: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:68: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:69: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:71: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:72: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:73: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:74: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:76: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:77: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:78: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:79: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:81: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:82: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:83: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:84: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:86: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:87: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:88: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:89: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:91: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:92: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:93: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:94: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:96: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:97: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:98: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:99: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:101: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:102: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:103: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:104: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:106: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:107: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:108: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:109: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:111: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:112: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:113: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:114: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:116: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:117: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:118: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:119: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:121: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:122: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:123: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:124: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:126: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:127: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:128: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:129: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:131: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:132: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:133: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:134: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:136: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:137: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:138: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:139: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:141: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:142: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:143: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:144: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:146: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:147: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:148: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:149: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:151: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:152: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:153: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:154: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:156: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:157: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:158: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:159: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:161: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:162: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:163: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:164: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:166: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:167: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:168: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:169: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:171: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:172: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:173: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:174: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:176: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:177: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:178: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:179: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:181: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:182: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:183: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:184: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:186: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:187: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:188: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:189: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:191: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:192: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:193: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:194: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:196: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:197: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:198: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:199: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:201: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:202: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:203: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:204: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:206: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:207: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:208: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:209: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:211: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:212: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:213: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:214: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:216: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:217: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:218: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:219: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:221: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:222: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:223: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:224: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:226: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:227: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:228: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:229: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:231: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:232: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:233: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:234: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:236: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:237: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:238: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:239: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:241: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:242: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:243: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:244: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:246: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:247: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:248: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:249: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:251: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:252: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:253: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:254: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:256: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:257: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:258: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:259: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:261: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:262: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:263: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:264: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:266: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:267: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:268: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:269: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:271: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:272: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:273: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:274: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:276: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:277: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:278: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:279: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:281: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:282: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:283: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:284: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:286: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:287: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:288: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:289: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:291: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:292: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:293: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:294: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:296: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:297: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:298: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:299: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:301: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:302: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:303: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:304: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:306: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:307: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:308: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:309: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:311: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:312: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:313: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:314: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:316: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:317: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:318: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:319: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:321: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:322: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:323: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:324: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:326: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:327: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:328: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:329: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:331: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:332: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:333: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:334: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:336: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:337: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:338: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:339: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:341: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:342: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:343: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:344: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:346: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:347: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:348: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:349: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:351: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:352: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:353: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:354: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:356: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:357: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:358: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:359: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:361: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:362: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:363: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:364: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:366: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:367: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:368: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:369: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:371: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:372: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:373: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:374: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:376: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:377: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:378: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:379: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:381: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:382: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:383: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:384: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:386: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:387: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:388: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:389: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:391: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:392: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:393: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:394: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:396: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:397: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:398: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:399: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:401: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:402: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:403: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:404: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:406: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:407: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:408: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:409: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:411: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:412: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:413: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:414: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:416: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:417: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:418: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:419: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 321 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/spv.subgroupPartitioned.comp b/Test/spv.subgroupPartitioned.comp
new file mode 100755
index 0000000..604833e
--- /dev/null
+++ b/Test/spv.subgroupPartitioned.comp
@@ -0,0 +1,420 @@
+#version 450
+
+#extension GL_NV_shader_subgroup_partitioned: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ vec4 f4;
+ ivec4 i4;
+ uvec4 u4;
+ dvec4 d4;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ uvec4 ballot = subgroupPartitionNV(invocation);
+
+ data[invocation].u4 = subgroupPartitionNV(data[0].f4.x);
+ data[invocation].u4 = subgroupPartitionNV(data[0].f4.xy);
+ data[invocation].u4 = subgroupPartitionNV(data[0].f4.xyz);
+ data[invocation].u4 = subgroupPartitionNV(data[0].f4);
+
+ data[invocation].u4 = subgroupPartitionNV(data[0].i4.x);
+ data[invocation].u4 = subgroupPartitionNV(data[0].i4.xy);
+ data[invocation].u4 = subgroupPartitionNV(data[0].i4.xyz);
+ data[invocation].u4 = subgroupPartitionNV(data[0].i4);
+
+ data[invocation].u4 = subgroupPartitionNV(data[0].u4.x);
+ data[invocation].u4 = subgroupPartitionNV(data[0].u4.xy);
+ data[invocation].u4 = subgroupPartitionNV(data[0].u4.xyz);
+ data[invocation].u4 = subgroupPartitionNV(data[0].u4);
+
+ data[invocation].u4 = subgroupPartitionNV(data[0].d4.x);
+ data[invocation].u4 = subgroupPartitionNV(data[0].d4.xy);
+ data[invocation].u4 = subgroupPartitionNV(data[0].d4.xyz);
+ data[invocation].u4 = subgroupPartitionNV(data[0].d4);
+
+ data[invocation].u4 = subgroupPartitionNV(bool(data[0].i4.x));
+ data[invocation].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy));
+ data[invocation].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz));
+ data[invocation].u4 = subgroupPartitionNV(bvec4(data[0].i4));
+
+ data[invocation].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedAddNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedAddNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedAddNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedAddNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedAddNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedAddNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedAddNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedMulNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedMulNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedMulNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedMulNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedMulNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedMulNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedMulNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedMinNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedMinNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedMinNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedMinNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedMinNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedMinNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedMinNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedMaxNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedMaxNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedMaxNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedMaxNV(data[3].d4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedAndNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedAndNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedOrNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedOrNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedXorNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedXorNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedInclusiveAddNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedInclusiveAddNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedInclusiveAddNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedInclusiveAddNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedInclusiveMulNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedInclusiveMulNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedInclusiveMulNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedInclusiveMulNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedInclusiveMinNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedInclusiveMinNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedInclusiveMinNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedInclusiveMinNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedInclusiveMaxNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedInclusiveMaxNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedInclusiveMaxNV(data[3].d4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedExclusiveAddNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedExclusiveAddNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedExclusiveAddNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedExclusiveAddNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedExclusiveMulNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedExclusiveMulNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedExclusiveMulNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedExclusiveMulNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedExclusiveMinNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedExclusiveMinNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedExclusiveMinNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedExclusiveMinNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedExclusiveMaxNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedExclusiveMaxNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedExclusiveMaxNV(data[3].d4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
+}
diff --git a/Test/spv.vulkan100.subgroupPartitioned.comp b/Test/spv.vulkan100.subgroupPartitioned.comp
new file mode 100755
index 0000000..604833e
--- /dev/null
+++ b/Test/spv.vulkan100.subgroupPartitioned.comp
@@ -0,0 +1,420 @@
+#version 450
+
+#extension GL_NV_shader_subgroup_partitioned: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ vec4 f4;
+ ivec4 i4;
+ uvec4 u4;
+ dvec4 d4;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ uvec4 ballot = subgroupPartitionNV(invocation);
+
+ data[invocation].u4 = subgroupPartitionNV(data[0].f4.x);
+ data[invocation].u4 = subgroupPartitionNV(data[0].f4.xy);
+ data[invocation].u4 = subgroupPartitionNV(data[0].f4.xyz);
+ data[invocation].u4 = subgroupPartitionNV(data[0].f4);
+
+ data[invocation].u4 = subgroupPartitionNV(data[0].i4.x);
+ data[invocation].u4 = subgroupPartitionNV(data[0].i4.xy);
+ data[invocation].u4 = subgroupPartitionNV(data[0].i4.xyz);
+ data[invocation].u4 = subgroupPartitionNV(data[0].i4);
+
+ data[invocation].u4 = subgroupPartitionNV(data[0].u4.x);
+ data[invocation].u4 = subgroupPartitionNV(data[0].u4.xy);
+ data[invocation].u4 = subgroupPartitionNV(data[0].u4.xyz);
+ data[invocation].u4 = subgroupPartitionNV(data[0].u4);
+
+ data[invocation].u4 = subgroupPartitionNV(data[0].d4.x);
+ data[invocation].u4 = subgroupPartitionNV(data[0].d4.xy);
+ data[invocation].u4 = subgroupPartitionNV(data[0].d4.xyz);
+ data[invocation].u4 = subgroupPartitionNV(data[0].d4);
+
+ data[invocation].u4 = subgroupPartitionNV(bool(data[0].i4.x));
+ data[invocation].u4 = subgroupPartitionNV(bvec2(data[0].i4.xy));
+ data[invocation].u4 = subgroupPartitionNV(bvec3(data[0].i4.xyz));
+ data[invocation].u4 = subgroupPartitionNV(bvec4(data[0].i4));
+
+ data[invocation].f4.x = subgroupPartitionedAddNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedAddNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedAddNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedAddNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedAddNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedAddNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedAddNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedAddNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedAddNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedAddNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedAddNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedAddNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedAddNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedAddNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedAddNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedAddNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedMulNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedMulNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedMulNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedMulNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedMulNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedMulNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedMulNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedMulNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedMulNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedMulNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedMulNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedMulNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedMulNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedMulNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedMulNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedMulNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedMinNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedMinNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedMinNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedMinNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedMinNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedMinNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedMinNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedMinNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedMinNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedMinNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedMinNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedMinNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedMinNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedMinNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedMinNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedMinNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedMaxNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedMaxNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedMaxNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedMaxNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedMaxNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedMaxNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedMaxNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedMaxNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedMaxNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedMaxNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedMaxNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedMaxNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedMaxNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedMaxNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedMaxNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedMaxNV(data[3].d4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedAndNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedAndNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedAndNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedAndNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedAndNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedAndNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedAndNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedAndNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedAndNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedOrNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedOrNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedOrNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedOrNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedOrNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedOrNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedOrNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedOrNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedOrNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedXorNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedXorNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedXorNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedXorNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedXorNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedXorNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedXorNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedXorNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedXorNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].f4.x = subgroupPartitionedInclusiveAddNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedInclusiveAddNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedInclusiveAddNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedInclusiveAddNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveAddNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveAddNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveAddNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveAddNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveAddNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveAddNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveAddNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveAddNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedInclusiveAddNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedInclusiveAddNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedInclusiveAddNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedInclusiveAddNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedInclusiveMulNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedInclusiveMulNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedInclusiveMulNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedInclusiveMulNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveMulNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveMulNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveMulNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveMulNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveMulNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveMulNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveMulNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveMulNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedInclusiveMulNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedInclusiveMulNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedInclusiveMulNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedInclusiveMulNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedInclusiveMinNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedInclusiveMinNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedInclusiveMinNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedInclusiveMinNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveMinNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveMinNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveMinNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveMinNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveMinNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveMinNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveMinNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveMinNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedInclusiveMinNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedInclusiveMinNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedInclusiveMinNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedInclusiveMinNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedInclusiveMaxNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedInclusiveMaxNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedInclusiveMaxNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveMaxNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveMaxNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveMaxNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveMaxNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveMaxNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveMaxNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedInclusiveMaxNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedInclusiveMaxNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedInclusiveMaxNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedInclusiveMaxNV(data[3].d4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveAndNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveAndNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveAndNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveAndNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveAndNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveAndNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveAndNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveAndNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedInclusiveAndNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedInclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveOrNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveOrNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveOrNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveOrNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveOrNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveOrNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveOrNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveOrNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedInclusiveOrNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedInclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedInclusiveXorNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedInclusiveXorNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedInclusiveXorNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedInclusiveXorNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedInclusiveXorNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedInclusiveXorNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedInclusiveXorNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedInclusiveXorNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedInclusiveXorNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedInclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].f4.x = subgroupPartitionedExclusiveAddNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedExclusiveAddNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedExclusiveAddNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedExclusiveAddNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveAddNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveAddNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveAddNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveAddNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveAddNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveAddNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveAddNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveAddNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedExclusiveAddNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedExclusiveAddNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedExclusiveAddNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedExclusiveAddNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedExclusiveMulNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedExclusiveMulNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedExclusiveMulNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedExclusiveMulNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveMulNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveMulNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveMulNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveMulNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveMulNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveMulNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveMulNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveMulNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedExclusiveMulNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedExclusiveMulNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedExclusiveMulNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedExclusiveMulNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedExclusiveMinNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedExclusiveMinNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedExclusiveMinNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedExclusiveMinNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveMinNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveMinNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveMinNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveMinNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveMinNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveMinNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveMinNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveMinNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedExclusiveMinNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedExclusiveMinNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedExclusiveMinNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedExclusiveMinNV(data[3].d4, ballot);
+
+ data[invocation].f4.x = subgroupPartitionedExclusiveMaxNV(data[0].f4.x, ballot);
+ data[invocation].f4.xy = subgroupPartitionedExclusiveMaxNV(data[1].f4.xy, ballot);
+ data[invocation].f4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].f4.xyz, ballot);
+ data[invocation].f4 = subgroupPartitionedExclusiveMaxNV(data[3].f4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveMaxNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveMaxNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveMaxNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveMaxNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveMaxNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveMaxNV(data[3].u4, ballot);
+
+ data[invocation].d4.x = subgroupPartitionedExclusiveMaxNV(data[0].d4.x, ballot);
+ data[invocation].d4.xy = subgroupPartitionedExclusiveMaxNV(data[1].d4.xy, ballot);
+ data[invocation].d4.xyz = subgroupPartitionedExclusiveMaxNV(data[2].d4.xyz, ballot);
+ data[invocation].d4 = subgroupPartitionedExclusiveMaxNV(data[3].d4, ballot);
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveAndNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveAndNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveAndNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveAndNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveAndNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveAndNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveAndNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveAndNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedExclusiveAndNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedExclusiveAndNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveOrNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveOrNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveOrNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveOrNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveOrNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveOrNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveOrNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveOrNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedExclusiveOrNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedExclusiveOrNV(lessThan(data[1].i4, ivec4(0)), ballot));
+
+ data[invocation].i4.x = subgroupPartitionedExclusiveXorNV(data[0].i4.x, ballot);
+ data[invocation].i4.xy = subgroupPartitionedExclusiveXorNV(data[1].i4.xy, ballot);
+ data[invocation].i4.xyz = subgroupPartitionedExclusiveXorNV(data[2].i4.xyz, ballot);
+ data[invocation].i4 = subgroupPartitionedExclusiveXorNV(data[3].i4, ballot);
+
+ data[invocation].u4.x = subgroupPartitionedExclusiveXorNV(data[0].u4.x, ballot);
+ data[invocation].u4.xy = subgroupPartitionedExclusiveXorNV(data[1].u4.xy, ballot);
+ data[invocation].u4.xyz = subgroupPartitionedExclusiveXorNV(data[2].u4.xyz, ballot);
+ data[invocation].u4 = subgroupPartitionedExclusiveXorNV(data[3].u4, ballot);
+
+ data[invocation].i4.x = int(subgroupPartitionedExclusiveXorNV(data[0].i4.x < 0, ballot));
+ data[invocation].i4.xy = ivec2(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xy, ivec2(0)), ballot));
+ data[invocation].i4.xyz = ivec3(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4.xyz, ivec3(0)), ballot));
+ data[invocation].i4 = ivec4(subgroupPartitionedExclusiveXorNV(lessThan(data[1].i4, ivec4(0)), ballot));
+}
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
old mode 100644
new mode 100755
index 935fc2c..abf37c6
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -527,6 +527,32 @@
EOpSubgroupQuadSwapHorizontal,
EOpSubgroupQuadSwapVertical,
EOpSubgroupQuadSwapDiagonal,
+
+#ifdef NV_EXTENSIONS
+ EOpSubgroupPartition,
+ EOpSubgroupPartitionedAdd,
+ EOpSubgroupPartitionedMul,
+ EOpSubgroupPartitionedMin,
+ EOpSubgroupPartitionedMax,
+ EOpSubgroupPartitionedAnd,
+ EOpSubgroupPartitionedOr,
+ EOpSubgroupPartitionedXor,
+ EOpSubgroupPartitionedInclusiveAdd,
+ EOpSubgroupPartitionedInclusiveMul,
+ EOpSubgroupPartitionedInclusiveMin,
+ EOpSubgroupPartitionedInclusiveMax,
+ EOpSubgroupPartitionedInclusiveAnd,
+ EOpSubgroupPartitionedInclusiveOr,
+ EOpSubgroupPartitionedInclusiveXor,
+ EOpSubgroupPartitionedExclusiveAdd,
+ EOpSubgroupPartitionedExclusiveMul,
+ EOpSubgroupPartitionedExclusiveMin,
+ EOpSubgroupPartitionedExclusiveMax,
+ EOpSubgroupPartitionedExclusiveAnd,
+ EOpSubgroupPartitionedExclusiveOr,
+ EOpSubgroupPartitionedExclusiveXor,
+#endif
+
EOpSubgroupGuardStop,
#ifdef AMD_EXTENSIONS
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
old mode 100644
new mode 100755
index c1b8b6b..5ae4dbd
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -2236,6 +2236,298 @@
"bvec3 subgroupQuadSwapDiagonal(bvec3);\n"
"bvec4 subgroupQuadSwapDiagonal(bvec4);\n"
+#ifdef NV_EXTENSIONS
+ "uvec4 subgroupPartitionNV(float);\n"
+ "uvec4 subgroupPartitionNV(vec2);\n"
+ "uvec4 subgroupPartitionNV(vec3);\n"
+ "uvec4 subgroupPartitionNV(vec4);\n"
+ "uvec4 subgroupPartitionNV(int);\n"
+ "uvec4 subgroupPartitionNV(ivec2);\n"
+ "uvec4 subgroupPartitionNV(ivec3);\n"
+ "uvec4 subgroupPartitionNV(ivec4);\n"
+ "uvec4 subgroupPartitionNV(uint);\n"
+ "uvec4 subgroupPartitionNV(uvec2);\n"
+ "uvec4 subgroupPartitionNV(uvec3);\n"
+ "uvec4 subgroupPartitionNV(uvec4);\n"
+ "uvec4 subgroupPartitionNV(bool);\n"
+ "uvec4 subgroupPartitionNV(bvec2);\n"
+ "uvec4 subgroupPartitionNV(bvec3);\n"
+ "uvec4 subgroupPartitionNV(bvec4);\n"
+
+ "float subgroupPartitionedAddNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedAddNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedAddNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedAddNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedAddNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedAddNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedAddNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedAddNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedAddNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedAddNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedAddNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedAddNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedMulNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedMulNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedMulNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedMulNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedMulNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedMulNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedMulNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedMulNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedMulNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedMulNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedMulNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedMulNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedMinNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedMinNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedMinNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedMinNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedMinNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedMinNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedMinNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedMinNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedMinNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedMinNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedMinNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedMinNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedMaxNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedMaxNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedMaxNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedMaxNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedMaxNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedMaxNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedMaxNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedMaxNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedMaxNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedMaxNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedMaxNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedMaxNV(uvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedAndNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedAndNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedAndNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedAndNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedAndNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedAndNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedAndNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedAndNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedAndNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedAndNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedAndNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedAndNV(bvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedOrNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedOrNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedOrNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedOrNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedOrNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedOrNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedOrNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedOrNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedOrNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedOrNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedOrNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedOrNV(bvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedXorNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedXorNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedXorNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedXorNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedXorNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedXorNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedXorNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedXorNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedXorNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedXorNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedXorNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedXorNV(bvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedInclusiveAddNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedInclusiveAddNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedInclusiveAddNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedInclusiveAddNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedInclusiveAddNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedInclusiveAddNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedInclusiveAddNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedInclusiveAddNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedInclusiveAddNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedInclusiveAddNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedInclusiveAddNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedInclusiveAddNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedInclusiveMulNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedInclusiveMulNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedInclusiveMulNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedInclusiveMulNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedInclusiveMulNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedInclusiveMulNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedInclusiveMulNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedInclusiveMulNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedInclusiveMulNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedInclusiveMulNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedInclusiveMulNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedInclusiveMulNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedInclusiveMinNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedInclusiveMinNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedInclusiveMinNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedInclusiveMinNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedInclusiveMinNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedInclusiveMinNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedInclusiveMinNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedInclusiveMinNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedInclusiveMinNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedInclusiveMinNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedInclusiveMinNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedInclusiveMinNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedInclusiveMaxNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedInclusiveMaxNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedInclusiveMaxNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedInclusiveMaxNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedInclusiveMaxNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedInclusiveMaxNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedInclusiveMaxNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedInclusiveMaxNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedInclusiveMaxNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedInclusiveMaxNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedInclusiveMaxNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedInclusiveMaxNV(uvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedInclusiveAndNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedInclusiveAndNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedInclusiveAndNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedInclusiveAndNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedInclusiveAndNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedInclusiveAndNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedInclusiveAndNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedInclusiveAndNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedInclusiveAndNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedInclusiveAndNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedInclusiveAndNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedInclusiveAndNV(bvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedInclusiveOrNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedInclusiveOrNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedInclusiveOrNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedInclusiveOrNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedInclusiveOrNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedInclusiveOrNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedInclusiveOrNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedInclusiveOrNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedInclusiveOrNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedInclusiveOrNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedInclusiveOrNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedInclusiveOrNV(bvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedInclusiveXorNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedInclusiveXorNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedInclusiveXorNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedInclusiveXorNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedInclusiveXorNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedInclusiveXorNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedInclusiveXorNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedInclusiveXorNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedInclusiveXorNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedInclusiveXorNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedInclusiveXorNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedInclusiveXorNV(bvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedExclusiveAddNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedExclusiveAddNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedExclusiveAddNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedExclusiveAddNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedExclusiveAddNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedExclusiveAddNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedExclusiveAddNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedExclusiveAddNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedExclusiveAddNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedExclusiveAddNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedExclusiveAddNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedExclusiveAddNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedExclusiveMulNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedExclusiveMulNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedExclusiveMulNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedExclusiveMulNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedExclusiveMulNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedExclusiveMulNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedExclusiveMulNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedExclusiveMulNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedExclusiveMulNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedExclusiveMulNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedExclusiveMulNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedExclusiveMulNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedExclusiveMinNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedExclusiveMinNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedExclusiveMinNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedExclusiveMinNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedExclusiveMinNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedExclusiveMinNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedExclusiveMinNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedExclusiveMinNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedExclusiveMinNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedExclusiveMinNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedExclusiveMinNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedExclusiveMinNV(uvec4, uvec4 ballot);\n"
+
+ "float subgroupPartitionedExclusiveMaxNV(float, uvec4 ballot);\n"
+ "vec2 subgroupPartitionedExclusiveMaxNV(vec2, uvec4 ballot);\n"
+ "vec3 subgroupPartitionedExclusiveMaxNV(vec3, uvec4 ballot);\n"
+ "vec4 subgroupPartitionedExclusiveMaxNV(vec4, uvec4 ballot);\n"
+ "int subgroupPartitionedExclusiveMaxNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedExclusiveMaxNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedExclusiveMaxNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedExclusiveMaxNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedExclusiveMaxNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedExclusiveMaxNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedExclusiveMaxNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedExclusiveMaxNV(uvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedExclusiveAndNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedExclusiveAndNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedExclusiveAndNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedExclusiveAndNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedExclusiveAndNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedExclusiveAndNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedExclusiveAndNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedExclusiveAndNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedExclusiveAndNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedExclusiveAndNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedExclusiveAndNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedExclusiveAndNV(bvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedExclusiveOrNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedExclusiveOrNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedExclusiveOrNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedExclusiveOrNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedExclusiveOrNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedExclusiveOrNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedExclusiveOrNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedExclusiveOrNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedExclusiveOrNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedExclusiveOrNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedExclusiveOrNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedExclusiveOrNV(bvec4, uvec4 ballot);\n"
+
+ "int subgroupPartitionedExclusiveXorNV(int, uvec4 ballot);\n"
+ "ivec2 subgroupPartitionedExclusiveXorNV(ivec2, uvec4 ballot);\n"
+ "ivec3 subgroupPartitionedExclusiveXorNV(ivec3, uvec4 ballot);\n"
+ "ivec4 subgroupPartitionedExclusiveXorNV(ivec4, uvec4 ballot);\n"
+ "uint subgroupPartitionedExclusiveXorNV(uint, uvec4 ballot);\n"
+ "uvec2 subgroupPartitionedExclusiveXorNV(uvec2, uvec4 ballot);\n"
+ "uvec3 subgroupPartitionedExclusiveXorNV(uvec3, uvec4 ballot);\n"
+ "uvec4 subgroupPartitionedExclusiveXorNV(uvec4, uvec4 ballot);\n"
+ "bool subgroupPartitionedExclusiveXorNV(bool, uvec4 ballot);\n"
+ "bvec2 subgroupPartitionedExclusiveXorNV(bvec2, uvec4 ballot);\n"
+ "bvec3 subgroupPartitionedExclusiveXorNV(bvec3, uvec4 ballot);\n"
+ "bvec4 subgroupPartitionedExclusiveXorNV(bvec4, uvec4 ballot);\n"
+#endif
+
"\n");
if (profile != EEsProfile && version >= 400) {
@@ -2375,6 +2667,74 @@
"dvec3 subgroupQuadSwapDiagonal(dvec3);\n"
"dvec4 subgroupQuadSwapDiagonal(dvec4);\n"
+
+#ifdef NV_EXTENSIONS
+ "uvec4 subgroupPartitionNV(double);\n"
+ "uvec4 subgroupPartitionNV(dvec2);\n"
+ "uvec4 subgroupPartitionNV(dvec3);\n"
+ "uvec4 subgroupPartitionNV(dvec4);\n"
+
+ "double subgroupPartitionedAddNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedAddNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedAddNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedAddNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedMulNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedMulNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedMulNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedMulNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedMinNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedMinNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedMinNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedMinNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedMaxNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedMaxNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedMaxNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedMaxNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedInclusiveAddNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedInclusiveAddNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedInclusiveAddNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedInclusiveAddNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedInclusiveMulNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedInclusiveMulNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedInclusiveMulNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedInclusiveMulNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedInclusiveMinNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedInclusiveMinNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedInclusiveMinNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedInclusiveMinNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedInclusiveMaxNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedInclusiveMaxNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedInclusiveMaxNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedInclusiveMaxNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedExclusiveAddNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedExclusiveAddNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedExclusiveAddNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedExclusiveAddNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedExclusiveMulNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedExclusiveMulNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedExclusiveMulNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedExclusiveMulNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedExclusiveMinNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedExclusiveMinNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedExclusiveMinNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedExclusiveMinNV(dvec4, uvec4 ballot);\n"
+
+ "double subgroupPartitionedExclusiveMaxNV(double, uvec4 ballot);\n"
+ "dvec2 subgroupPartitionedExclusiveMaxNV(dvec2, uvec4 ballot);\n"
+ "dvec3 subgroupPartitionedExclusiveMaxNV(dvec3, uvec4 ballot);\n"
+ "dvec4 subgroupPartitionedExclusiveMaxNV(dvec4, uvec4 ballot);\n"
+#endif
+
"\n");
}
@@ -7571,6 +7931,32 @@
symbolTable.setFunctionExtensions("subgroupQuadSwapHorizontal", 1, &E_GL_KHR_shader_subgroup_quad);
symbolTable.setFunctionExtensions("subgroupQuadSwapVertical", 1, &E_GL_KHR_shader_subgroup_quad);
symbolTable.setFunctionExtensions("subgroupQuadSwapDiagonal", 1, &E_GL_KHR_shader_subgroup_quad);
+
+#ifdef NV_EXTENSIONS
+ symbolTable.setFunctionExtensions("subgroupPartitionNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedAddNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedMulNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedMinNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedAndNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedOrNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedXorNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveAddNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMulNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMinNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveAndNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveOrNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveAddNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMulNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMinNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveAndNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveOrNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+ symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned);
+#endif
+
}
if (profile == EEsProfile) {
@@ -8107,6 +8493,31 @@
symbolTable.relateToOperator("subgroupQuadSwapHorizontal", EOpSubgroupQuadSwapHorizontal);
symbolTable.relateToOperator("subgroupQuadSwapVertical", EOpSubgroupQuadSwapVertical);
symbolTable.relateToOperator("subgroupQuadSwapDiagonal", EOpSubgroupQuadSwapDiagonal);
+
+#ifdef NV_EXTENSIONS
+ symbolTable.relateToOperator("subgroupPartitionNV", EOpSubgroupPartition);
+ symbolTable.relateToOperator("subgroupPartitionedAddNV", EOpSubgroupPartitionedAdd);
+ symbolTable.relateToOperator("subgroupPartitionedMulNV", EOpSubgroupPartitionedMul);
+ symbolTable.relateToOperator("subgroupPartitionedMinNV", EOpSubgroupPartitionedMin);
+ symbolTable.relateToOperator("subgroupPartitionedMaxNV", EOpSubgroupPartitionedMax);
+ symbolTable.relateToOperator("subgroupPartitionedAndNV", EOpSubgroupPartitionedAnd);
+ symbolTable.relateToOperator("subgroupPartitionedOrNV", EOpSubgroupPartitionedOr);
+ symbolTable.relateToOperator("subgroupPartitionedXorNV", EOpSubgroupPartitionedXor);
+ symbolTable.relateToOperator("subgroupPartitionedInclusiveAddNV", EOpSubgroupPartitionedInclusiveAdd);
+ symbolTable.relateToOperator("subgroupPartitionedInclusiveMulNV", EOpSubgroupPartitionedInclusiveMul);
+ symbolTable.relateToOperator("subgroupPartitionedInclusiveMinNV", EOpSubgroupPartitionedInclusiveMin);
+ symbolTable.relateToOperator("subgroupPartitionedInclusiveMaxNV", EOpSubgroupPartitionedInclusiveMax);
+ symbolTable.relateToOperator("subgroupPartitionedInclusiveAndNV", EOpSubgroupPartitionedInclusiveAnd);
+ symbolTable.relateToOperator("subgroupPartitionedInclusiveOrNV", EOpSubgroupPartitionedInclusiveOr);
+ symbolTable.relateToOperator("subgroupPartitionedInclusiveXorNV", EOpSubgroupPartitionedInclusiveXor);
+ symbolTable.relateToOperator("subgroupPartitionedExclusiveAddNV", EOpSubgroupPartitionedExclusiveAdd);
+ symbolTable.relateToOperator("subgroupPartitionedExclusiveMulNV", EOpSubgroupPartitionedExclusiveMul);
+ symbolTable.relateToOperator("subgroupPartitionedExclusiveMinNV", EOpSubgroupPartitionedExclusiveMin);
+ symbolTable.relateToOperator("subgroupPartitionedExclusiveMaxNV", EOpSubgroupPartitionedExclusiveMax);
+ symbolTable.relateToOperator("subgroupPartitionedExclusiveAndNV", EOpSubgroupPartitionedExclusiveAnd);
+ symbolTable.relateToOperator("subgroupPartitionedExclusiveOrNV", EOpSubgroupPartitionedExclusiveOr);
+ symbolTable.relateToOperator("subgroupPartitionedExclusiveXorNV", EOpSubgroupPartitionedExclusiveXor);
+#endif
}
if (profile == EEsProfile) {
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
old mode 100644
new mode 100755
index a9e81a7..462c63c
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -226,6 +226,7 @@
extensionBehavior[E_GL_NV_shader_atomic_int64] = EBhDisable;
extensionBehavior[E_GL_NV_conservative_raster_underestimation] = EBhDisable;
extensionBehavior[E_GL_NV_shader_noperspective_interpolation] = EBhDisable;
+ extensionBehavior[E_GL_NV_shader_subgroup_partitioned] = EBhDisable;
#endif
// AEP
@@ -389,6 +390,7 @@
"#define GL_NV_viewport_array2 1\n"
"#define GL_NV_shader_atomic_int64 1\n"
"#define GL_NV_conservative_raster_underestimation 1\n"
+ "#define GL_NV_shader_subgroup_partitioned 1\n"
#endif
"#define GL_KHX_shader_explicit_arithmetic_types 1\n"
"#define GL_KHX_shader_explicit_arithmetic_types_int8 1\n"
@@ -750,6 +752,10 @@
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
else if (strcmp(extension, "GL_KHR_shader_subgroup_quad") == 0)
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
+#ifdef NV_EXTENSIONS
+ else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0)
+ updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
+#endif
}
void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior)
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
old mode 100644
new mode 100755
index 9a7d9ca..7f0d657
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -197,6 +197,7 @@
const char* const E_GL_NV_shader_atomic_int64 = "GL_NV_shader_atomic_int64";
const char* const E_GL_NV_conservative_raster_underestimation = "GL_NV_conservative_raster_underestimation";
const char* const E_GL_NV_shader_noperspective_interpolation = "GL_NV_shader_noperspective_interpolation";
+const char* const E_GL_NV_shader_subgroup_partitioned = "GL_NV_shader_subgroup_partitioned";
// Arrays of extensions for the above viewportEXTs duplications
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index 1775e1d..4d6ad04 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -599,6 +599,31 @@
case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break;
case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break;
+#ifdef NV_EXTENSIONS
+ case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break;
+ case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break;
+ case EOpSubgroupPartitionedMul: out.debug << "subgroupPartitionedMulNV"; break;
+ case EOpSubgroupPartitionedMin: out.debug << "subgroupPartitionedMinNV"; break;
+ case EOpSubgroupPartitionedMax: out.debug << "subgroupPartitionedMaxNV"; break;
+ case EOpSubgroupPartitionedAnd: out.debug << "subgroupPartitionedAndNV"; break;
+ case EOpSubgroupPartitionedOr: out.debug << "subgroupPartitionedOrNV"; break;
+ case EOpSubgroupPartitionedXor: out.debug << "subgroupPartitionedXorNV"; break;
+ case EOpSubgroupPartitionedInclusiveAdd: out.debug << "subgroupPartitionedInclusiveAddNV"; break;
+ case EOpSubgroupPartitionedInclusiveMul: out.debug << "subgroupPartitionedInclusiveMulNV"; break;
+ case EOpSubgroupPartitionedInclusiveMin: out.debug << "subgroupPartitionedInclusiveMinNV"; break;
+ case EOpSubgroupPartitionedInclusiveMax: out.debug << "subgroupPartitionedInclusiveMaxNV"; break;
+ case EOpSubgroupPartitionedInclusiveAnd: out.debug << "subgroupPartitionedInclusiveAndNV"; break;
+ case EOpSubgroupPartitionedInclusiveOr: out.debug << "subgroupPartitionedInclusiveOrNV"; break;
+ case EOpSubgroupPartitionedInclusiveXor: out.debug << "subgroupPartitionedInclusiveXorNV"; break;
+ case EOpSubgroupPartitionedExclusiveAdd: out.debug << "subgroupPartitionedExclusiveAddNV"; break;
+ case EOpSubgroupPartitionedExclusiveMul: out.debug << "subgroupPartitionedExclusiveMulNV"; break;
+ case EOpSubgroupPartitionedExclusiveMin: out.debug << "subgroupPartitionedExclusiveMinNV"; break;
+ case EOpSubgroupPartitionedExclusiveMax: out.debug << "subgroupPartitionedExclusiveMaxNV"; break;
+ case EOpSubgroupPartitionedExclusiveAnd: out.debug << "subgroupPartitionedExclusiveAndNV"; break;
+ case EOpSubgroupPartitionedExclusiveOr: out.debug << "subgroupPartitionedExclusiveOrNV"; break;
+ case EOpSubgroupPartitionedExclusiveXor: out.debug << "subgroupPartitionedExclusiveXorNV"; break;
+#endif
+
case EOpClip: out.debug << "clip"; break;
case EOpIsFinite: out.debug << "isfinite"; break;
case EOpLog10: out.debug << "log10"; break;
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
old mode 100644
new mode 100755
index 5d4e620..462f192
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -338,6 +338,7 @@
"spv.precise.tese",
"spv.precise.tesc",
"spv.vulkan100.subgroupArithmetic.comp",
+ "spv.vulkan100.subgroupPartitioned.comp",
"spv.xfb.vert",
"spv.xfb2.vert",
"spv.xfb3.vert",
@@ -368,6 +369,7 @@
"spv.subgroupBallot.comp",
"spv.subgroupClustered.comp",
"spv.subgroupClusteredNeg.comp",
+ "spv.subgroupPartitioned.comp",
"spv.subgroupShuffle.comp",
"spv.subgroupShuffleRelative.comp",
"spv.subgroupQuad.comp",