Merge pull request #1277 from KhronosGroup/Vulkan_1_1
SPV: Implement Vulkan 1.1 features and extensions.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
old mode 100755
new mode 100644
index 21cd869..45e76ad
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2014-2016 LunarG, Inc.
// Copyright (C) 2015-2016 Google, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -172,10 +173,12 @@
spv::Id createUnaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id operand,glslang::TBasicType typeProxy);
spv::Id createUnaryMatrixOperation(spv::Op op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id operand,glslang::TBasicType typeProxy);
spv::Id createConversion(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id destTypeId, spv::Id operand, glslang::TBasicType typeProxy);
+ spv::Id createConversionOperation(glslang::TOperator op, spv::Id operand, int vectorSize);
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector<spv::Id>& operands);
+ spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId);
spv::Id getSymbolId(const glslang::TIntermSymbol* node);
@@ -191,6 +194,11 @@
#ifdef AMD_EXTENSIONS
spv::Id getExtBuiltins(const char* name);
#endif
+ void addPre13Extension(const char* ext)
+ {
+ if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3)
+ builder.addExtension(ext);
+ }
glslang::SpvOptions& options;
spv::Function* shaderEntry;
@@ -504,17 +512,17 @@
case glslang::EbvInstanceIndex: return spv::BuiltInInstanceIndex;
case glslang::EbvBaseVertex:
- builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters);
+ addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters);
builder.addCapability(spv::CapabilityDrawParameters);
return spv::BuiltInBaseVertex;
case glslang::EbvBaseInstance:
- builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters);
+ addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters);
builder.addCapability(spv::CapabilityDrawParameters);
return spv::BuiltInBaseInstance;
case glslang::EbvDrawId:
- builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters);
+ addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters);
builder.addCapability(spv::CapabilityDrawParameters);
return spv::BuiltInDrawIndex;
@@ -580,6 +588,46 @@
builder.addCapability(spv::CapabilitySubgroupBallotKHR);
return spv::BuiltInSubgroupLtMaskKHR;
+ case glslang::EbvNumSubgroups:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ return spv::BuiltInNumSubgroups;
+
+ case glslang::EbvSubgroupID:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ return spv::BuiltInSubgroupId;
+
+ case glslang::EbvSubgroupSize2:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ return spv::BuiltInSubgroupSize;
+
+ case glslang::EbvSubgroupInvocation2:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ return spv::BuiltInSubgroupLocalInvocationId;
+
+ case glslang::EbvSubgroupEqMask2:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformBallot);
+ return spv::BuiltInSubgroupEqMask;
+
+ case glslang::EbvSubgroupGeMask2:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformBallot);
+ return spv::BuiltInSubgroupGeMask;
+
+ case glslang::EbvSubgroupGtMask2:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformBallot);
+ return spv::BuiltInSubgroupGtMask;
+
+ case glslang::EbvSubgroupLeMask2:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformBallot);
+ return spv::BuiltInSubgroupLeMask;
+
+ case glslang::EbvSubgroupLtMask2:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformBallot);
+ return spv::BuiltInSubgroupLtMask;
#ifdef AMD_EXTENSIONS
case glslang::EbvBaryCoordNoPersp:
builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
@@ -611,12 +659,12 @@
#endif
case glslang::EbvDeviceIndex:
- builder.addExtension(spv::E_SPV_KHR_device_group);
+ addPre13Extension(spv::E_SPV_KHR_device_group);
builder.addCapability(spv::CapabilityDeviceGroup);
return spv::BuiltInDeviceIndex;
case glslang::EbvViewIndex:
- builder.addExtension(spv::E_SPV_KHR_multiview);
+ addPre13Extension(spv::E_SPV_KHR_multiview);
builder.addCapability(spv::CapabilityMultiView);
return spv::BuiltInViewIndex;
@@ -804,7 +852,7 @@
}
if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) {
- builder.addExtension(spv::E_SPV_KHR_storage_buffer_storage_class);
+ addPre13Extension(spv::E_SPV_KHR_storage_buffer_storage_class);
return spv::StorageClassStorageBuffer;
}
@@ -1436,16 +1484,14 @@
one = builder.makeFloatConstant(1.0F);
else if (node->getBasicType() == glslang::EbtDouble)
one = builder.makeDoubleConstant(1.0);
-#ifdef AMD_EXTENSIONS
else if (node->getBasicType() == glslang::EbtFloat16)
one = builder.makeFloat16Constant(1.0F);
-#endif
- else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64)
- one = builder.makeInt64Constant(1);
-#ifdef AMD_EXTENSIONS
+ else if (node->getBasicType() == glslang::EbtInt8 || node->getBasicType() == glslang::EbtUint8)
+ one = builder.makeInt8Constant(1);
else if (node->getBasicType() == glslang::EbtInt16 || node->getBasicType() == glslang::EbtUint16)
one = builder.makeInt16Constant(1);
-#endif
+ else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64)
+ one = builder.makeInt64Constant(1);
else
one = builder.makeIntConstant(1);
glslang::TOperator op;
@@ -1650,7 +1696,6 @@
case glslang::EOpConstructBMat4x2:
case glslang::EOpConstructBMat4x3:
case glslang::EOpConstructBMat4x4:
-#ifdef AMD_EXTENSIONS
case glslang::EOpConstructF16Mat2x2:
case glslang::EOpConstructF16Mat2x3:
case glslang::EOpConstructF16Mat2x4:
@@ -1660,7 +1705,6 @@
case glslang::EOpConstructF16Mat4x2:
case glslang::EOpConstructF16Mat4x3:
case glslang::EOpConstructF16Mat4x4:
-#endif
isMatrix = true;
// fall through
case glslang::EOpConstructFloat:
@@ -1671,16 +1715,30 @@
case glslang::EOpConstructDVec2:
case glslang::EOpConstructDVec3:
case glslang::EOpConstructDVec4:
-#ifdef AMD_EXTENSIONS
case glslang::EOpConstructFloat16:
case glslang::EOpConstructF16Vec2:
case glslang::EOpConstructF16Vec3:
case glslang::EOpConstructF16Vec4:
-#endif
case glslang::EOpConstructBool:
case glslang::EOpConstructBVec2:
case glslang::EOpConstructBVec3:
case glslang::EOpConstructBVec4:
+ case glslang::EOpConstructInt8:
+ case glslang::EOpConstructI8Vec2:
+ case glslang::EOpConstructI8Vec3:
+ case glslang::EOpConstructI8Vec4:
+ case glslang::EOpConstructUint8:
+ case glslang::EOpConstructU8Vec2:
+ case glslang::EOpConstructU8Vec3:
+ case glslang::EOpConstructU8Vec4:
+ case glslang::EOpConstructInt16:
+ case glslang::EOpConstructI16Vec2:
+ case glslang::EOpConstructI16Vec3:
+ case glslang::EOpConstructI16Vec4:
+ case glslang::EOpConstructUint16:
+ case glslang::EOpConstructU16Vec2:
+ case glslang::EOpConstructU16Vec3:
+ case glslang::EOpConstructU16Vec4:
case glslang::EOpConstructInt:
case glslang::EOpConstructIVec2:
case glslang::EOpConstructIVec3:
@@ -1697,16 +1755,6 @@
case glslang::EOpConstructU64Vec2:
case glslang::EOpConstructU64Vec3:
case glslang::EOpConstructU64Vec4:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConstructInt16:
- case glslang::EOpConstructI16Vec2:
- case glslang::EOpConstructI16Vec3:
- case glslang::EOpConstructI16Vec4:
- case glslang::EOpConstructUint16:
- case glslang::EOpConstructU16Vec2:
- case glslang::EOpConstructU16Vec3:
- case glslang::EOpConstructU16Vec4:
-#endif
case glslang::EOpConstructStruct:
case glslang::EOpConstructTextureSampler:
{
@@ -1787,6 +1835,11 @@
case glslang::EOpDeviceMemoryBarrierWithGroupSync:
case glslang::EOpWorkgroupMemoryBarrier:
case glslang::EOpWorkgroupMemoryBarrierWithGroupSync:
+ case glslang::EOpSubgroupBarrier:
+ case glslang::EOpSubgroupMemoryBarrier:
+ case glslang::EOpSubgroupMemoryBarrierBuffer:
+ case glslang::EOpSubgroupMemoryBarrierImage:
+ case glslang::EOpSubgroupMemoryBarrierShared:
noReturnValue = true;
// These all have 0 operands and will naturally finish up in the code below for 0 operands
break;
@@ -2308,25 +2361,23 @@
spv::StorageClass storageClass = TranslateStorageClass(node->getType());
spv::Id spvType = convertGlslangToSpvType(node->getType());
-#ifdef AMD_EXTENSIONS
const bool contains16BitType = node->getType().containsBasicType(glslang::EbtFloat16) ||
node->getType().containsBasicType(glslang::EbtInt16) ||
node->getType().containsBasicType(glslang::EbtUint16);
if (contains16BitType) {
if (storageClass == spv::StorageClassInput || storageClass == spv::StorageClassOutput) {
- builder.addExtension(spv::E_SPV_KHR_16bit_storage);
+ addPre13Extension(spv::E_SPV_KHR_16bit_storage);
builder.addCapability(spv::CapabilityStorageInputOutput16);
} else if (storageClass == spv::StorageClassPushConstant) {
- builder.addExtension(spv::E_SPV_KHR_16bit_storage);
+ addPre13Extension(spv::E_SPV_KHR_16bit_storage);
builder.addCapability(spv::CapabilityStoragePushConstant16);
} else if (storageClass == spv::StorageClassUniform) {
- builder.addExtension(spv::E_SPV_KHR_16bit_storage);
+ addPre13Extension(spv::E_SPV_KHR_16bit_storage);
builder.addCapability(spv::CapabilityStorageUniform16);
if (node->getType().getQualifier().storage == glslang::EvqBuffer)
builder.addCapability(spv::CapabilityStorageUniformBufferBlock16);
}
}
-#endif
const char* name = node->getName().c_str();
if (glslang::IsAnonymous(name))
@@ -2409,12 +2460,14 @@
case glslang::EbtDouble:
spvType = builder.makeFloatType(64);
break;
-#ifdef AMD_EXTENSIONS
case glslang::EbtFloat16:
- builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
+ builder.addCapability(spv::CapabilityFloat16);
+#if AMD_EXTENSIONS
+ if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3)
+ builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
+#endif
spvType = builder.makeFloatType(16);
break;
-#endif
case glslang::EbtBool:
// "transparent" bool doesn't exist in SPIR-V. The GLSL convention is
// a 32-bit int where non-0 means true.
@@ -2423,6 +2476,30 @@
else
spvType = builder.makeBoolType();
break;
+ case glslang::EbtInt8:
+ builder.addCapability(spv::CapabilityInt8);
+ spvType = builder.makeIntType(8);
+ break;
+ case glslang::EbtUint8:
+ builder.addCapability(spv::CapabilityInt8);
+ spvType = builder.makeUintType(8);
+ break;
+ case glslang::EbtInt16:
+ builder.addCapability(spv::CapabilityInt16);
+#ifdef AMD_EXTENSIONS
+ if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3)
+ builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16);
+#endif
+ spvType = builder.makeIntType(16);
+ break;
+ case glslang::EbtUint16:
+ builder.addCapability(spv::CapabilityInt16);
+#ifdef AMD_EXTENSIONS
+ if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3)
+ builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16);
+#endif
+ spvType = builder.makeUintType(16);
+ break;
case glslang::EbtInt:
spvType = builder.makeIntType(32);
break;
@@ -2435,16 +2512,6 @@
case glslang::EbtUint64:
spvType = builder.makeUintType(64);
break;
-#ifdef AMD_EXTENSIONS
- case glslang::EbtInt16:
- builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16);
- spvType = builder.makeIntType(16);
- break;
- case glslang::EbtUint16:
- builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16);
- spvType = builder.makeUintType(16);
- break;
-#endif
case glslang::EbtAtomicUint:
builder.addCapability(spv::CapabilityAtomicStorage);
spvType = builder.makeUintType(32);
@@ -3830,13 +3897,8 @@
spv::Id typeId, spv::Id left, spv::Id right,
glslang::TBasicType typeProxy, bool reduceComparison)
{
-#ifdef AMD_EXTENSIONS
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16;
- bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16;
-#else
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
- bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
-#endif
+ bool isUnsigned = isTypeUnsignedInt(typeProxy);
+ bool isFloat = isTypeFloat(typeProxy);
bool isBool = typeProxy == glslang::EbtBool;
spv::Op binOp = spv::OpNop;
@@ -4161,13 +4223,8 @@
spv::Op unaryOp = spv::OpNop;
int extBuiltins = -1;
int libCall = -1;
-#ifdef AMD_EXTENSIONS
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16;
- bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16;
-#else
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
- bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
-#endif
+ bool isUnsigned = isTypeUnsignedInt(typeProxy);
+ bool isFloat = isTypeFloat(typeProxy);
switch (op) {
case glslang::EOpNegative:
@@ -4304,12 +4361,10 @@
case glslang::EOpDoubleBitsToUint64:
case glslang::EOpInt64BitsToDouble:
case glslang::EOpUint64BitsToDouble:
-#ifdef AMD_EXTENSIONS
case glslang::EOpFloat16BitsToInt16:
case glslang::EOpFloat16BitsToUint16:
case glslang::EOpInt16BitsToFloat16:
case glslang::EOpUint16BitsToFloat16:
-#endif
unaryOp = spv::OpBitcast;
break;
@@ -4354,10 +4409,12 @@
case glslang::EOpUnpackInt2x32:
case glslang::EOpPackUint2x32:
case glslang::EOpUnpackUint2x32:
- unaryOp = spv::OpBitcast;
- break;
-
-#ifdef AMD_EXTENSIONS
+ case glslang::EOpPack16:
+ case glslang::EOpPack32:
+ case glslang::EOpPack64:
+ case glslang::EOpUnpack32:
+ case glslang::EOpUnpack16:
+ case glslang::EOpUnpack8:
case glslang::EOpPackInt2x16:
case glslang::EOpUnpackInt2x16:
case glslang::EOpPackUint2x16:
@@ -4370,7 +4427,6 @@
case glslang::EOpUnpackFloat2x16:
unaryOp = spv::OpBitcast;
break;
-#endif
case glslang::EOpDPdx:
unaryOp = spv::OpDPdx;
@@ -4485,7 +4541,45 @@
operands.push_back(operand);
return createInvocationsOperation(op, typeId, operands, typeProxy);
}
-
+ case glslang::EOpSubgroupAll:
+ case glslang::EOpSubgroupAny:
+ case glslang::EOpSubgroupAllEqual:
+ case glslang::EOpSubgroupBroadcastFirst:
+ case glslang::EOpSubgroupBallot:
+ case glslang::EOpSubgroupInverseBallot:
+ case glslang::EOpSubgroupBallotBitCount:
+ case glslang::EOpSubgroupBallotInclusiveBitCount:
+ case glslang::EOpSubgroupBallotExclusiveBitCount:
+ case glslang::EOpSubgroupBallotFindLSB:
+ case glslang::EOpSubgroupBallotFindMSB:
+ case glslang::EOpSubgroupAdd:
+ case glslang::EOpSubgroupMul:
+ case glslang::EOpSubgroupMin:
+ case glslang::EOpSubgroupMax:
+ case glslang::EOpSubgroupAnd:
+ case glslang::EOpSubgroupOr:
+ case glslang::EOpSubgroupXor:
+ case glslang::EOpSubgroupInclusiveAdd:
+ case glslang::EOpSubgroupInclusiveMul:
+ case glslang::EOpSubgroupInclusiveMin:
+ case glslang::EOpSubgroupInclusiveMax:
+ case glslang::EOpSubgroupInclusiveAnd:
+ case glslang::EOpSubgroupInclusiveOr:
+ case glslang::EOpSubgroupInclusiveXor:
+ case glslang::EOpSubgroupExclusiveAdd:
+ case glslang::EOpSubgroupExclusiveMul:
+ case glslang::EOpSubgroupExclusiveMin:
+ case glslang::EOpSubgroupExclusiveMax:
+ case glslang::EOpSubgroupExclusiveAnd:
+ case glslang::EOpSubgroupExclusiveOr:
+ case glslang::EOpSubgroupExclusiveXor:
+ case glslang::EOpSubgroupQuadSwapHorizontal:
+ case glslang::EOpSubgroupQuadSwapVertical:
+ case glslang::EOpSubgroupQuadSwapDiagonal: {
+ std::vector<spv::Id> operands;
+ operands.push_back(operand);
+ return createSubgroupOperation(op, typeId, operands, typeProxy);
+ }
#ifdef AMD_EXTENSIONS
case glslang::EOpMbcnt:
extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot);
@@ -4551,32 +4645,150 @@
return builder.setPrecision(builder.createCompositeConstruct(typeId, results), precision);
}
+spv::Id TGlslangToSpvTraverser::createConversionOperation(glslang::TOperator op, spv::Id operand, int vectorSize)
+{
+ spv::Op convOp = spv::OpNop;
+ spv::Id type = 0;
+
+ spv::Id result = 0;
+
+ switch(op) {
+ case glslang::EOpConvInt8ToUint16:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(16);
+ break;
+ case glslang::EOpConvInt8ToUint:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(32);
+ break;
+ case glslang::EOpConvInt8ToUint64:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(64);
+ break;
+ case glslang::EOpConvInt16ToUint8:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(8);
+ break;
+ case glslang::EOpConvInt16ToUint:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(32);
+ break;
+ case glslang::EOpConvInt16ToUint64:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(64);
+ break;
+ case glslang::EOpConvIntToUint8:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(8);
+ break;
+ case glslang::EOpConvIntToUint16:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(16);
+ break;
+ case glslang::EOpConvIntToUint64:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(64);
+ break;
+ case glslang::EOpConvInt64ToUint8:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(8);
+ break;
+ case glslang::EOpConvInt64ToUint16:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(16);
+ break;
+ case glslang::EOpConvInt64ToUint:
+ convOp = spv::OpSConvert;
+ type = builder.makeIntType(32);
+ break;
+ case glslang::EOpConvUint8ToInt16:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(16);
+ break;
+ case glslang::EOpConvUint8ToInt:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(32);
+ break;
+ case glslang::EOpConvUint8ToInt64:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(64);
+ break;
+ case glslang::EOpConvUint16ToInt8:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(8);
+ break;
+ case glslang::EOpConvUint16ToInt:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(32);
+ break;
+ case glslang::EOpConvUint16ToInt64:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(64);
+ break;
+ case glslang::EOpConvUintToInt8:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(8);
+ break;
+ case glslang::EOpConvUintToInt16:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(16);
+ break;
+ case glslang::EOpConvUintToInt64:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(64);
+ break;
+ case glslang::EOpConvUint64ToInt8:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(8);
+ break;
+ case glslang::EOpConvUint64ToInt16:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(16);
+ break;
+ case glslang::EOpConvUint64ToInt:
+ convOp = spv::OpUConvert;
+ type = builder.makeIntType(32);
+ break;
+
+ default:
+ assert(false && "Default missing");
+ break;
+ }
+
+ if (vectorSize > 0)
+ type = builder.makeVectorType(type, vectorSize);
+
+ result = builder.createUnaryOp(convOp, type, operand);
+ return result;
+}
+
spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id destType, spv::Id operand, glslang::TBasicType typeProxy)
{
spv::Op convOp = spv::OpNop;
spv::Id zero = 0;
spv::Id one = 0;
- spv::Id type = 0;
int vectorSize = builder.isVectorType(destType) ? builder.getNumTypeComponents(destType) : 0;
switch (op) {
- case glslang::EOpConvIntToBool:
- case glslang::EOpConvUintToBool:
- case glslang::EOpConvInt64ToBool:
- case glslang::EOpConvUint64ToBool:
-#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvInt8ToBool:
+ case glslang::EOpConvUint8ToBool:
+ zero = builder.makeUint8Constant(0);
+ zero = makeSmearedConstant(zero, vectorSize);
+ return builder.createBinOp(spv::OpINotEqual, destType, operand, zero);
case glslang::EOpConvInt16ToBool:
case glslang::EOpConvUint16ToBool:
-#endif
- if (op == glslang::EOpConvInt64ToBool || op == glslang::EOpConvUint64ToBool)
- zero = builder.makeUint64Constant(0);
-#ifdef AMD_EXTENSIONS
- else if (op == glslang::EOpConvInt16ToBool || op == glslang::EOpConvUint16ToBool)
- zero = builder.makeUint16Constant(0);
-#endif
- else
- zero = builder.makeUintConstant(0);
+ zero = builder.makeUint16Constant(0);
+ zero = makeSmearedConstant(zero, vectorSize);
+ return builder.createBinOp(spv::OpINotEqual, destType, operand, zero);
+ case glslang::EOpConvIntToBool:
+ case glslang::EOpConvUintToBool:
+ zero = builder.makeUintConstant(0);
+ zero = makeSmearedConstant(zero, vectorSize);
+ return builder.createBinOp(spv::OpINotEqual, destType, operand, zero);
+ case glslang::EOpConvInt64ToBool:
+ case glslang::EOpConvUint64ToBool:
+ zero = builder.makeUint64Constant(0);
zero = makeSmearedConstant(zero, vectorSize);
return builder.createBinOp(spv::OpINotEqual, destType, operand, zero);
@@ -4590,12 +4802,10 @@
zero = makeSmearedConstant(zero, vectorSize);
return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero);
-#ifdef AMD_EXTENSIONS
case glslang::EOpConvFloat16ToBool:
zero = builder.makeFloat16Constant(0.0F);
zero = makeSmearedConstant(zero, vectorSize);
return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero);
-#endif
case glslang::EOpConvBoolToFloat:
convOp = spv::OpSelect;
@@ -4609,34 +4819,45 @@
one = builder.makeDoubleConstant(1.0);
break;
-#ifdef AMD_EXTENSIONS
case glslang::EOpConvBoolToFloat16:
convOp = spv::OpSelect;
zero = builder.makeFloat16Constant(0.0F);
one = builder.makeFloat16Constant(1.0F);
break;
-#endif
+
+ case glslang::EOpConvBoolToInt8:
+ zero = builder.makeInt8Constant(0);
+ one = builder.makeInt8Constant(1);
+ convOp = spv::OpSelect;
+ break;
+
+ case glslang::EOpConvBoolToUint8:
+ zero = builder.makeUint8Constant(0);
+ one = builder.makeUint8Constant(1);
+ convOp = spv::OpSelect;
+ break;
+
+ case glslang::EOpConvBoolToInt16:
+ zero = builder.makeInt16Constant(0);
+ one = builder.makeInt16Constant(1);
+ convOp = spv::OpSelect;
+ break;
+
+ case glslang::EOpConvBoolToUint16:
+ zero = builder.makeUint16Constant(0);
+ one = builder.makeUint16Constant(1);
+ convOp = spv::OpSelect;
+ break;
case glslang::EOpConvBoolToInt:
case glslang::EOpConvBoolToInt64:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvBoolToInt16:
-#endif
if (op == glslang::EOpConvBoolToInt64)
zero = builder.makeInt64Constant(0);
-#ifdef AMD_EXTENSIONS
- else if (op == glslang::EOpConvBoolToInt16)
- zero = builder.makeInt16Constant(0);
-#endif
else
zero = builder.makeIntConstant(0);
if (op == glslang::EOpConvBoolToInt64)
one = builder.makeInt64Constant(1);
-#ifdef AMD_EXTENSIONS
- else if (op == glslang::EOpConvBoolToInt16)
- one = builder.makeInt16Constant(1);
-#endif
else
one = builder.makeIntConstant(1);
@@ -4645,104 +4866,94 @@
case glslang::EOpConvBoolToUint:
case glslang::EOpConvBoolToUint64:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvBoolToUint16:
-#endif
if (op == glslang::EOpConvBoolToUint64)
zero = builder.makeUint64Constant(0);
-#ifdef AMD_EXTENSIONS
- else if (op == glslang::EOpConvBoolToUint16)
- zero = builder.makeUint16Constant(0);
-#endif
else
zero = builder.makeUintConstant(0);
if (op == glslang::EOpConvBoolToUint64)
one = builder.makeUint64Constant(1);
-#ifdef AMD_EXTENSIONS
- else if (op == glslang::EOpConvBoolToUint16)
- one = builder.makeUint16Constant(1);
-#endif
else
one = builder.makeUintConstant(1);
convOp = spv::OpSelect;
break;
+ case glslang::EOpConvInt8ToFloat16:
+ case glslang::EOpConvInt8ToFloat:
+ case glslang::EOpConvInt8ToDouble:
+ case glslang::EOpConvInt16ToFloat16:
+ case glslang::EOpConvInt16ToFloat:
+ case glslang::EOpConvInt16ToDouble:
+ case glslang::EOpConvIntToFloat16:
case glslang::EOpConvIntToFloat:
case glslang::EOpConvIntToDouble:
case glslang::EOpConvInt64ToFloat:
case glslang::EOpConvInt64ToDouble:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvInt16ToFloat:
- case glslang::EOpConvInt16ToDouble:
- case glslang::EOpConvInt16ToFloat16:
- case glslang::EOpConvIntToFloat16:
case glslang::EOpConvInt64ToFloat16:
-#endif
convOp = spv::OpConvertSToF;
break;
+ case glslang::EOpConvUint8ToFloat16:
+ case glslang::EOpConvUint8ToFloat:
+ case glslang::EOpConvUint8ToDouble:
+ case glslang::EOpConvUint16ToFloat16:
+ case glslang::EOpConvUint16ToFloat:
+ case glslang::EOpConvUint16ToDouble:
+ case glslang::EOpConvUintToFloat16:
case glslang::EOpConvUintToFloat:
case glslang::EOpConvUintToDouble:
case glslang::EOpConvUint64ToFloat:
case glslang::EOpConvUint64ToDouble:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvUint16ToFloat:
- case glslang::EOpConvUint16ToDouble:
- case glslang::EOpConvUint16ToFloat16:
- case glslang::EOpConvUintToFloat16:
case glslang::EOpConvUint64ToFloat16:
-#endif
convOp = spv::OpConvertUToF;
break;
case glslang::EOpConvDoubleToFloat:
case glslang::EOpConvFloatToDouble:
-#ifdef AMD_EXTENSIONS
case glslang::EOpConvDoubleToFloat16:
case glslang::EOpConvFloat16ToDouble:
case glslang::EOpConvFloatToFloat16:
case glslang::EOpConvFloat16ToFloat:
-#endif
convOp = spv::OpFConvert;
if (builder.isMatrixType(destType))
return createUnaryMatrixOperation(convOp, precision, noContraction, destType, operand, typeProxy);
break;
- case glslang::EOpConvFloatToInt:
- case glslang::EOpConvDoubleToInt:
- case glslang::EOpConvFloatToInt64:
- case glslang::EOpConvDoubleToInt64:
-#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvFloat16ToInt8:
+ case glslang::EOpConvFloatToInt8:
+ case glslang::EOpConvDoubleToInt8:
+ case glslang::EOpConvFloat16ToInt16:
case glslang::EOpConvFloatToInt16:
case glslang::EOpConvDoubleToInt16:
- case glslang::EOpConvFloat16ToInt16:
case glslang::EOpConvFloat16ToInt:
+ case glslang::EOpConvFloatToInt:
+ case glslang::EOpConvDoubleToInt:
case glslang::EOpConvFloat16ToInt64:
-#endif
+ case glslang::EOpConvFloatToInt64:
+ case glslang::EOpConvDoubleToInt64:
convOp = spv::OpConvertFToS;
break;
+ case glslang::EOpConvUint8ToInt8:
+ case glslang::EOpConvInt8ToUint8:
+ case glslang::EOpConvUint16ToInt16:
+ case glslang::EOpConvInt16ToUint16:
case glslang::EOpConvUintToInt:
case glslang::EOpConvIntToUint:
case glslang::EOpConvUint64ToInt64:
case glslang::EOpConvInt64ToUint64:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvUint16ToInt16:
- case glslang::EOpConvInt16ToUint16:
-#endif
if (builder.isInSpecConstCodeGenMode()) {
// Build zero scalar or vector for OpIAdd.
- if (op == glslang::EOpConvUint64ToInt64 || op == glslang::EOpConvInt64ToUint64)
- zero = builder.makeUint64Constant(0);
-#ifdef AMD_EXTENSIONS
- else if (op == glslang::EOpConvUint16ToInt16 || op == glslang::EOpConvInt16ToUint16)
+ if(op == glslang::EOpConvUint8ToInt8 || op == glslang::EOpConvInt8ToUint8) {
+ zero = builder.makeUint8Constant(0);
+ } else if (op == glslang::EOpConvUint16ToInt16 || op == glslang::EOpConvInt16ToUint16) {
zero = builder.makeUint16Constant(0);
-#endif
- else
+ } else if (op == glslang::EOpConvUint64ToInt64 || op == glslang::EOpConvInt64ToUint64) {
+ zero = builder.makeUint64Constant(0);
+ } else {
zero = builder.makeUintConstant(0);
-
+ }
zero = makeSmearedConstant(zero, vectorSize);
// Use OpIAdd, instead of OpBitcast to do the conversion when
// generating for OpSpecConstantOp instruction.
@@ -4752,126 +4963,117 @@
convOp = spv::OpBitcast;
break;
+ case glslang::EOpConvFloat16ToUint8:
+ case glslang::EOpConvFloatToUint8:
+ case glslang::EOpConvDoubleToUint8:
+ case glslang::EOpConvFloat16ToUint16:
+ case glslang::EOpConvFloatToUint16:
+ case glslang::EOpConvDoubleToUint16:
+ case glslang::EOpConvFloat16ToUint:
case glslang::EOpConvFloatToUint:
case glslang::EOpConvDoubleToUint:
case glslang::EOpConvFloatToUint64:
case glslang::EOpConvDoubleToUint64:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvFloatToUint16:
- case glslang::EOpConvDoubleToUint16:
- case glslang::EOpConvFloat16ToUint16:
- case glslang::EOpConvFloat16ToUint:
case glslang::EOpConvFloat16ToUint64:
-#endif
convOp = spv::OpConvertFToU;
break;
- case glslang::EOpConvIntToInt64:
- case glslang::EOpConvInt64ToInt:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvIntToInt16:
+ case glslang::EOpConvInt8ToInt16:
+ case glslang::EOpConvInt8ToInt:
+ case glslang::EOpConvInt8ToInt64:
+ case glslang::EOpConvInt16ToInt8:
case glslang::EOpConvInt16ToInt:
- case glslang::EOpConvInt64ToInt16:
case glslang::EOpConvInt16ToInt64:
-#endif
+ case glslang::EOpConvIntToInt8:
+ case glslang::EOpConvIntToInt16:
+ case glslang::EOpConvIntToInt64:
+ case glslang::EOpConvInt64ToInt8:
+ case glslang::EOpConvInt64ToInt16:
+ case glslang::EOpConvInt64ToInt:
convOp = spv::OpSConvert;
break;
- case glslang::EOpConvUintToUint64:
- case glslang::EOpConvUint64ToUint:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvUintToUint16:
+ case glslang::EOpConvUint8ToUint16:
+ case glslang::EOpConvUint8ToUint:
+ case glslang::EOpConvUint8ToUint64:
+ case glslang::EOpConvUint16ToUint8:
case glslang::EOpConvUint16ToUint:
- case glslang::EOpConvUint64ToUint16:
case glslang::EOpConvUint16ToUint64:
-#endif
+ case glslang::EOpConvUintToUint8:
+ case glslang::EOpConvUintToUint16:
+ case glslang::EOpConvUintToUint64:
+ case glslang::EOpConvUint64ToUint8:
+ case glslang::EOpConvUint64ToUint16:
+ case glslang::EOpConvUint64ToUint:
convOp = spv::OpUConvert;
break;
- case glslang::EOpConvIntToUint64:
- case glslang::EOpConvInt64ToUint:
- case glslang::EOpConvUint64ToInt:
- case glslang::EOpConvUintToInt64:
-#ifdef AMD_EXTENSIONS
+ case glslang::EOpConvInt8ToUint16:
+ case glslang::EOpConvInt8ToUint:
+ case glslang::EOpConvInt8ToUint64:
+ case glslang::EOpConvInt16ToUint8:
case glslang::EOpConvInt16ToUint:
- case glslang::EOpConvUintToInt16:
case glslang::EOpConvInt16ToUint64:
- case glslang::EOpConvUint64ToInt16:
- case glslang::EOpConvUint16ToInt:
+ case glslang::EOpConvIntToUint8:
case glslang::EOpConvIntToUint16:
- case glslang::EOpConvUint16ToInt64:
+ case glslang::EOpConvIntToUint64:
+ case glslang::EOpConvInt64ToUint8:
case glslang::EOpConvInt64ToUint16:
-#endif
+ case glslang::EOpConvInt64ToUint:
+ case glslang::EOpConvUint8ToInt16:
+ case glslang::EOpConvUint8ToInt:
+ case glslang::EOpConvUint8ToInt64:
+ case glslang::EOpConvUint16ToInt8:
+ case glslang::EOpConvUint16ToInt:
+ case glslang::EOpConvUint16ToInt64:
+ case glslang::EOpConvUintToInt8:
+ case glslang::EOpConvUintToInt16:
+ case glslang::EOpConvUintToInt64:
+ case glslang::EOpConvUint64ToInt8:
+ case glslang::EOpConvUint64ToInt16:
+ case glslang::EOpConvUint64ToInt:
// OpSConvert/OpUConvert + OpBitCast
- switch (op) {
- case glslang::EOpConvIntToUint64:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvInt16ToUint64:
-#endif
- convOp = spv::OpSConvert;
- type = builder.makeIntType(64);
- break;
- case glslang::EOpConvInt64ToUint:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvInt16ToUint:
-#endif
- convOp = spv::OpSConvert;
- type = builder.makeIntType(32);
- break;
- case glslang::EOpConvUint64ToInt:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvUint16ToInt:
-#endif
- convOp = spv::OpUConvert;
- type = builder.makeUintType(32);
- break;
- case glslang::EOpConvUintToInt64:
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvUint16ToInt64:
-#endif
- convOp = spv::OpUConvert;
- type = builder.makeUintType(64);
- break;
-#ifdef AMD_EXTENSIONS
- case glslang::EOpConvUintToInt16:
- case glslang::EOpConvUint64ToInt16:
- convOp = spv::OpUConvert;
- type = builder.makeUintType(16);
- break;
- case glslang::EOpConvIntToUint16:
- case glslang::EOpConvInt64ToUint16:
- convOp = spv::OpSConvert;
- type = builder.makeIntType(16);
- break;
-#endif
- default:
- assert(0);
- break;
- }
-
- if (vectorSize > 0)
- type = builder.makeVectorType(type, vectorSize);
-
- operand = builder.createUnaryOp(convOp, type, operand);
+ operand = createConversionOperation(op, operand, vectorSize);
if (builder.isInSpecConstCodeGenMode()) {
// Build zero scalar or vector for OpIAdd.
-#ifdef AMD_EXTENSIONS
- if (op == glslang::EOpConvIntToUint64 || op == glslang::EOpConvUintToInt64 ||
- op == glslang::EOpConvInt16ToUint64 || op == glslang::EOpConvUint16ToInt64)
- zero = builder.makeUint64Constant(0);
- else if (op == glslang::EOpConvIntToUint16 || op == glslang::EOpConvUintToInt16 ||
- op == glslang::EOpConvInt64ToUint16 || op == glslang::EOpConvUint64ToInt16)
+ switch(op) {
+ case glslang::EOpConvInt16ToUint8:
+ case glslang::EOpConvIntToUint8:
+ case glslang::EOpConvInt64ToUint8:
+ case glslang::EOpConvUint16ToInt8:
+ case glslang::EOpConvUintToInt8:
+ case glslang::EOpConvUint64ToInt8:
+ zero = builder.makeUint8Constant(0);
+ break;
+ case glslang::EOpConvInt8ToUint16:
+ case glslang::EOpConvIntToUint16:
+ case glslang::EOpConvInt64ToUint16:
+ case glslang::EOpConvUint8ToInt16:
+ case glslang::EOpConvUintToInt16:
+ case glslang::EOpConvUint64ToInt16:
zero = builder.makeUint16Constant(0);
- else
+ break;
+ case glslang::EOpConvInt8ToUint:
+ case glslang::EOpConvInt16ToUint:
+ case glslang::EOpConvInt64ToUint:
+ case glslang::EOpConvUint8ToInt:
+ case glslang::EOpConvUint16ToInt:
+ case glslang::EOpConvUint64ToInt:
zero = builder.makeUintConstant(0);
-#else
- if (op == glslang::EOpConvIntToUint64 || op == glslang::EOpConvUintToInt64)
+ break;
+ case glslang::EOpConvInt8ToUint64:
+ case glslang::EOpConvInt16ToUint64:
+ case glslang::EOpConvIntToUint64:
+ case glslang::EOpConvUint8ToInt64:
+ case glslang::EOpConvUint16ToInt64:
+ case glslang::EOpConvUintToInt64:
zero = builder.makeUint64Constant(0);
- else
- zero = builder.makeUintConstant(0);
-#endif
-
+ break;
+ default:
+ assert(false && "Default missing");
+ break;
+ }
zero = makeSmearedConstant(zero, vectorSize);
// Use OpIAdd, instead of OpBitcast to do the conversion when
// generating for OpSpecConstantOp instruction.
@@ -5013,10 +5215,8 @@
// Create group invocation operations.
spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
{
-#ifdef AMD_EXTENSIONS
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
- bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16;
-#endif
+ bool isUnsigned = isTypeUnsignedInt(typeProxy);
+ bool isFloat = isTypeFloat(typeProxy);
spv::Op opCode = spv::OpNop;
std::vector<spv::Id> spvGroupOperands;
@@ -5277,15 +5477,263 @@
return builder.createCompositeConstruct(typeId, results);
}
+// Create subgroup invocation operations.
+spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
+{
+ // Add the required capabilities.
+ switch (op) {
+ case glslang::EOpSubgroupElect:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ break;
+ case glslang::EOpSubgroupAll:
+ case glslang::EOpSubgroupAny:
+ case glslang::EOpSubgroupAllEqual:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformVote);
+ break;
+ case glslang::EOpSubgroupBroadcast:
+ case glslang::EOpSubgroupBroadcastFirst:
+ case glslang::EOpSubgroupBallot:
+ case glslang::EOpSubgroupInverseBallot:
+ case glslang::EOpSubgroupBallotBitExtract:
+ case glslang::EOpSubgroupBallotBitCount:
+ case glslang::EOpSubgroupBallotInclusiveBitCount:
+ case glslang::EOpSubgroupBallotExclusiveBitCount:
+ case glslang::EOpSubgroupBallotFindLSB:
+ case glslang::EOpSubgroupBallotFindMSB:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformBallot);
+ break;
+ case glslang::EOpSubgroupShuffle:
+ case glslang::EOpSubgroupShuffleXor:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformShuffle);
+ break;
+ case glslang::EOpSubgroupShuffleUp:
+ case glslang::EOpSubgroupShuffleDown:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformShuffleRelative);
+ break;
+ case glslang::EOpSubgroupAdd:
+ case glslang::EOpSubgroupMul:
+ case glslang::EOpSubgroupMin:
+ case glslang::EOpSubgroupMax:
+ case glslang::EOpSubgroupAnd:
+ case glslang::EOpSubgroupOr:
+ case glslang::EOpSubgroupXor:
+ case glslang::EOpSubgroupInclusiveAdd:
+ case glslang::EOpSubgroupInclusiveMul:
+ case glslang::EOpSubgroupInclusiveMin:
+ case glslang::EOpSubgroupInclusiveMax:
+ case glslang::EOpSubgroupInclusiveAnd:
+ case glslang::EOpSubgroupInclusiveOr:
+ case glslang::EOpSubgroupInclusiveXor:
+ case glslang::EOpSubgroupExclusiveAdd:
+ case glslang::EOpSubgroupExclusiveMul:
+ case glslang::EOpSubgroupExclusiveMin:
+ case glslang::EOpSubgroupExclusiveMax:
+ case glslang::EOpSubgroupExclusiveAnd:
+ case glslang::EOpSubgroupExclusiveOr:
+ case glslang::EOpSubgroupExclusiveXor:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformArithmetic);
+ break;
+ case glslang::EOpSubgroupClusteredAdd:
+ case glslang::EOpSubgroupClusteredMul:
+ case glslang::EOpSubgroupClusteredMin:
+ case glslang::EOpSubgroupClusteredMax:
+ case glslang::EOpSubgroupClusteredAnd:
+ case glslang::EOpSubgroupClusteredOr:
+ case glslang::EOpSubgroupClusteredXor:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformClustered);
+ break;
+ case glslang::EOpSubgroupQuadBroadcast:
+ case glslang::EOpSubgroupQuadSwapHorizontal:
+ case glslang::EOpSubgroupQuadSwapVertical:
+ case glslang::EOpSubgroupQuadSwapDiagonal:
+ builder.addCapability(spv::CapabilityGroupNonUniform);
+ builder.addCapability(spv::CapabilityGroupNonUniformQuad);
+ break;
+ default: assert(0 && "Unhandled subgroup operation!");
+ }
+
+ const bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
+ const bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
+ const bool isBool = typeProxy == glslang::EbtBool;
+
+ spv::Op opCode = spv::OpNop;
+
+ // Figure out which opcode to use.
+ switch (op) {
+ case glslang::EOpSubgroupElect: opCode = spv::OpGroupNonUniformElect; break;
+ case glslang::EOpSubgroupAll: opCode = spv::OpGroupNonUniformAll; break;
+ case glslang::EOpSubgroupAny: opCode = spv::OpGroupNonUniformAny; break;
+ case glslang::EOpSubgroupAllEqual: opCode = spv::OpGroupNonUniformAllEqual; break;
+ case glslang::EOpSubgroupBroadcast: opCode = spv::OpGroupNonUniformBroadcast; break;
+ case glslang::EOpSubgroupBroadcastFirst: opCode = spv::OpGroupNonUniformBroadcastFirst; break;
+ case glslang::EOpSubgroupBallot: opCode = spv::OpGroupNonUniformBallot; break;
+ case glslang::EOpSubgroupInverseBallot: opCode = spv::OpGroupNonUniformInverseBallot; break;
+ case glslang::EOpSubgroupBallotBitExtract: opCode = spv::OpGroupNonUniformBallotBitExtract; break;
+ case glslang::EOpSubgroupBallotBitCount:
+ case glslang::EOpSubgroupBallotInclusiveBitCount:
+ case glslang::EOpSubgroupBallotExclusiveBitCount: opCode = spv::OpGroupNonUniformBallotBitCount; break;
+ case glslang::EOpSubgroupBallotFindLSB: opCode = spv::OpGroupNonUniformBallotFindLSB; break;
+ case glslang::EOpSubgroupBallotFindMSB: opCode = spv::OpGroupNonUniformBallotFindMSB; break;
+ case glslang::EOpSubgroupShuffle: opCode = spv::OpGroupNonUniformShuffle; break;
+ case glslang::EOpSubgroupShuffleXor: opCode = spv::OpGroupNonUniformShuffleXor; break;
+ case glslang::EOpSubgroupShuffleUp: opCode = spv::OpGroupNonUniformShuffleUp; break;
+ case glslang::EOpSubgroupShuffleDown: opCode = spv::OpGroupNonUniformShuffleDown; break;
+ case glslang::EOpSubgroupAdd:
+ case glslang::EOpSubgroupInclusiveAdd:
+ case glslang::EOpSubgroupExclusiveAdd:
+ case glslang::EOpSubgroupClusteredAdd:
+ if (isFloat) {
+ opCode = spv::OpGroupNonUniformFAdd;
+ } else {
+ opCode = spv::OpGroupNonUniformIAdd;
+ }
+ break;
+ case glslang::EOpSubgroupMul:
+ case glslang::EOpSubgroupInclusiveMul:
+ case glslang::EOpSubgroupExclusiveMul:
+ case glslang::EOpSubgroupClusteredMul:
+ if (isFloat) {
+ opCode = spv::OpGroupNonUniformFMul;
+ } else {
+ opCode = spv::OpGroupNonUniformIMul;
+ }
+ break;
+ case glslang::EOpSubgroupMin:
+ case glslang::EOpSubgroupInclusiveMin:
+ case glslang::EOpSubgroupExclusiveMin:
+ case glslang::EOpSubgroupClusteredMin:
+ if (isFloat) {
+ opCode = spv::OpGroupNonUniformFMin;
+ } else if (isUnsigned) {
+ opCode = spv::OpGroupNonUniformUMin;
+ } else {
+ opCode = spv::OpGroupNonUniformSMin;
+ }
+ break;
+ case glslang::EOpSubgroupMax:
+ case glslang::EOpSubgroupInclusiveMax:
+ case glslang::EOpSubgroupExclusiveMax:
+ case glslang::EOpSubgroupClusteredMax:
+ if (isFloat) {
+ opCode = spv::OpGroupNonUniformFMax;
+ } else if (isUnsigned) {
+ opCode = spv::OpGroupNonUniformUMax;
+ } else {
+ opCode = spv::OpGroupNonUniformSMax;
+ }
+ break;
+ case glslang::EOpSubgroupAnd:
+ case glslang::EOpSubgroupInclusiveAnd:
+ case glslang::EOpSubgroupExclusiveAnd:
+ case glslang::EOpSubgroupClusteredAnd:
+ if (isBool) {
+ opCode = spv::OpGroupNonUniformLogicalAnd;
+ } else {
+ opCode = spv::OpGroupNonUniformBitwiseAnd;
+ }
+ break;
+ case glslang::EOpSubgroupOr:
+ case glslang::EOpSubgroupInclusiveOr:
+ case glslang::EOpSubgroupExclusiveOr:
+ case glslang::EOpSubgroupClusteredOr:
+ if (isBool) {
+ opCode = spv::OpGroupNonUniformLogicalOr;
+ } else {
+ opCode = spv::OpGroupNonUniformBitwiseOr;
+ }
+ break;
+ case glslang::EOpSubgroupXor:
+ case glslang::EOpSubgroupInclusiveXor:
+ case glslang::EOpSubgroupExclusiveXor:
+ case glslang::EOpSubgroupClusteredXor:
+ if (isBool) {
+ opCode = spv::OpGroupNonUniformLogicalXor;
+ } else {
+ opCode = spv::OpGroupNonUniformBitwiseXor;
+ }
+ break;
+ case glslang::EOpSubgroupQuadBroadcast: opCode = spv::OpGroupNonUniformQuadBroadcast; break;
+ case glslang::EOpSubgroupQuadSwapHorizontal:
+ case glslang::EOpSubgroupQuadSwapVertical:
+ case glslang::EOpSubgroupQuadSwapDiagonal: opCode = spv::OpGroupNonUniformQuadSwap; break;
+ default: assert(0 && "Unhandled subgroup operation!");
+ }
+
+ std::vector<spv::Id> spvGroupOperands;
+
+ // Every operation begins with the Execution Scope operand.
+ spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
+
+ // Next, for all operations that use a Group Operation, push that as an operand.
+ switch (op) {
+ default: break;
+ case glslang::EOpSubgroupBallotBitCount:
+ case glslang::EOpSubgroupAdd:
+ case glslang::EOpSubgroupMul:
+ case glslang::EOpSubgroupMin:
+ case glslang::EOpSubgroupMax:
+ case glslang::EOpSubgroupAnd:
+ case glslang::EOpSubgroupOr:
+ case glslang::EOpSubgroupXor:
+ spvGroupOperands.push_back(spv::GroupOperationReduce);
+ break;
+ case glslang::EOpSubgroupBallotInclusiveBitCount:
+ case glslang::EOpSubgroupInclusiveAdd:
+ case glslang::EOpSubgroupInclusiveMul:
+ case glslang::EOpSubgroupInclusiveMin:
+ case glslang::EOpSubgroupInclusiveMax:
+ case glslang::EOpSubgroupInclusiveAnd:
+ case glslang::EOpSubgroupInclusiveOr:
+ case glslang::EOpSubgroupInclusiveXor:
+ spvGroupOperands.push_back(spv::GroupOperationInclusiveScan);
+ break;
+ case glslang::EOpSubgroupBallotExclusiveBitCount:
+ case glslang::EOpSubgroupExclusiveAdd:
+ case glslang::EOpSubgroupExclusiveMul:
+ case glslang::EOpSubgroupExclusiveMin:
+ case glslang::EOpSubgroupExclusiveMax:
+ case glslang::EOpSubgroupExclusiveAnd:
+ case glslang::EOpSubgroupExclusiveOr:
+ case glslang::EOpSubgroupExclusiveXor:
+ spvGroupOperands.push_back(spv::GroupOperationExclusiveScan);
+ break;
+ case glslang::EOpSubgroupClusteredAdd:
+ case glslang::EOpSubgroupClusteredMul:
+ case glslang::EOpSubgroupClusteredMin:
+ case glslang::EOpSubgroupClusteredMax:
+ case glslang::EOpSubgroupClusteredAnd:
+ case glslang::EOpSubgroupClusteredOr:
+ case glslang::EOpSubgroupClusteredXor:
+ spvGroupOperands.push_back(spv::GroupOperationClusteredReduce);
+ break;
+ }
+
+ // Push back the operands next.
+ for (auto opIt : operands) {
+ spvGroupOperands.push_back(opIt);
+ }
+
+ // Some opcodes have additional operands.
+ switch (op) {
+ default: break;
+ case glslang::EOpSubgroupQuadSwapHorizontal: spvGroupOperands.push_back(builder.makeUintConstant(0)); break;
+ case glslang::EOpSubgroupQuadSwapVertical: spvGroupOperands.push_back(builder.makeUintConstant(1)); break;
+ case glslang::EOpSubgroupQuadSwapDiagonal: spvGroupOperands.push_back(builder.makeUintConstant(2)); break;
+ }
+
+ return builder.createOp(opCode, typeId, spvGroupOperands);
+}
+
spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
{
-#ifdef AMD_EXTENSIONS
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16;
- bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16;
-#else
- bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
- bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
-#endif
+ bool isUnsigned = isTypeUnsignedInt(typeProxy);
+ bool isFloat = isTypeFloat(typeProxy);
spv::Op opCode = spv::OpNop;
int extBuiltins = -1;
@@ -5422,11 +5870,7 @@
libCall = spv::GLSLstd450FrexpStruct;
assert(builder.isPointerType(typeId1));
typeId1 = builder.getContainedTypeId(typeId1);
-#ifdef AMD_EXTENSIONS
int width = builder.getScalarTypeWidth(typeId1);
-#else
- int width = 32;
-#endif
if (builder.getNumComponents(operands[0]) == 1)
frexpIntType = builder.makeIntegerType(width, true);
else
@@ -5442,6 +5886,22 @@
case glslang::EOpReadInvocation:
return createInvocationsOperation(op, typeId, operands, typeProxy);
+ case glslang::EOpSubgroupBroadcast:
+ case glslang::EOpSubgroupBallotBitExtract:
+ case glslang::EOpSubgroupShuffle:
+ case glslang::EOpSubgroupShuffleXor:
+ case glslang::EOpSubgroupShuffleUp:
+ case glslang::EOpSubgroupShuffleDown:
+ case glslang::EOpSubgroupClusteredAdd:
+ case glslang::EOpSubgroupClusteredMul:
+ case glslang::EOpSubgroupClusteredMin:
+ case glslang::EOpSubgroupClusteredMax:
+ case glslang::EOpSubgroupClusteredAnd:
+ case glslang::EOpSubgroupClusteredOr:
+ case glslang::EOpSubgroupClusteredXor:
+ case glslang::EOpSubgroupQuadBroadcast:
+ return createSubgroupOperation(op, typeId, operands, typeProxy);
+
#ifdef AMD_EXTENSIONS
case glslang::EOpSwizzleInvocations:
extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot);
@@ -5634,6 +6094,30 @@
spv::MemorySemanticsWorkgroupMemoryMask |
spv::MemorySemanticsAcquireReleaseMask);
return 0;
+ case glslang::EOpSubgroupBarrier:
+ builder.createControlBarrier(spv::ScopeSubgroup, spv::ScopeSubgroup, spv::MemorySemanticsAllMemory |
+ spv::MemorySemanticsAcquireReleaseMask);
+ return spv::NoResult;
+ case glslang::EOpSubgroupMemoryBarrier:
+ builder.createMemoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsAllMemory |
+ spv::MemorySemanticsAcquireReleaseMask);
+ return spv::NoResult;
+ case glslang::EOpSubgroupMemoryBarrierBuffer:
+ builder.createMemoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsUniformMemoryMask |
+ spv::MemorySemanticsAcquireReleaseMask);
+ return spv::NoResult;
+ case glslang::EOpSubgroupMemoryBarrierImage:
+ builder.createMemoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsImageMemoryMask |
+ spv::MemorySemanticsAcquireReleaseMask);
+ return spv::NoResult;
+ case glslang::EOpSubgroupMemoryBarrierShared:
+ builder.createMemoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsWorkgroupMemoryMask |
+ spv::MemorySemanticsAcquireReleaseMask);
+ return spv::NoResult;
+ case glslang::EOpSubgroupElect: {
+ std::vector<spv::Id> operands;
+ return createSubgroupOperation(op, typeId, operands, glslang::EbtVoid);
+ }
#ifdef AMD_EXTENSIONS
case glslang::EOpTime:
{
@@ -5876,6 +6360,18 @@
for (unsigned int i = 0; i < (unsigned int)glslangType.getVectorSize(); ++i) {
bool zero = nextConst >= consts.size();
switch (glslangType.getBasicType()) {
+ case glslang::EbtInt8:
+ spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const()));
+ break;
+ case glslang::EbtUint8:
+ spvConsts.push_back(builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const()));
+ break;
+ case glslang::EbtInt16:
+ spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const()));
+ break;
+ case glslang::EbtUint16:
+ spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const()));
+ break;
case glslang::EbtInt:
spvConsts.push_back(builder.makeIntConstant(zero ? 0 : consts[nextConst].getIConst()));
break;
@@ -5888,25 +6384,15 @@
case glslang::EbtUint64:
spvConsts.push_back(builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const()));
break;
-#ifdef AMD_EXTENSIONS
- case glslang::EbtInt16:
- spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : (short)consts[nextConst].getIConst()));
- break;
- case glslang::EbtUint16:
- spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : (unsigned short)consts[nextConst].getUConst()));
- break;
-#endif
case glslang::EbtFloat:
spvConsts.push_back(builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst()));
break;
case glslang::EbtDouble:
spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst()));
break;
-#ifdef AMD_EXTENSIONS
case glslang::EbtFloat16:
spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst()));
break;
-#endif
case glslang::EbtBool:
spvConsts.push_back(builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst()));
break;
@@ -5921,6 +6407,18 @@
bool zero = nextConst >= consts.size();
spv::Id scalar = 0;
switch (glslangType.getBasicType()) {
+ case glslang::EbtInt8:
+ scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant);
+ break;
+ case glslang::EbtUint8:
+ scalar = builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const(), specConstant);
+ break;
+ case glslang::EbtInt16:
+ scalar = builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const(), specConstant);
+ break;
+ case glslang::EbtUint16:
+ scalar = builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const(), specConstant);
+ break;
case glslang::EbtInt:
scalar = builder.makeIntConstant(zero ? 0 : consts[nextConst].getIConst(), specConstant);
break;
@@ -5933,25 +6431,15 @@
case glslang::EbtUint64:
scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant);
break;
-#ifdef AMD_EXTENSIONS
- case glslang::EbtInt16:
- scalar = builder.makeInt16Constant(zero ? 0 : (short)consts[nextConst].getIConst(), specConstant);
- break;
- case glslang::EbtUint16:
- scalar = builder.makeUint16Constant(zero ? 0 : (unsigned short)consts[nextConst].getUConst(), specConstant);
- break;
-#endif
case glslang::EbtFloat:
scalar = builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant);
break;
case glslang::EbtDouble:
scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant);
break;
-#ifdef AMD_EXTENSIONS
case glslang::EbtFloat16:
scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant);
break;
-#endif
case glslang::EbtBool:
scalar = builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst(), specConstant);
break;
diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp
index 4e45cbb..4bac145 100755
--- a/SPIRV/SPVRemapper.cpp
+++ b/SPIRV/SPVRemapper.cpp
@@ -256,7 +256,7 @@
spv::Id spirvbin_t::localId(spv::Id id, spv::Id newId)
{
- assert(id != spv::NoResult && newId != spv::NoResult);
+ //assert(id != spv::NoResult && newId != spv::NoResult);
if (id > bound()) {
error(std::string("ID out of range: ") + std::to_string(id));
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index 245102b..081f198 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -46,9 +46,7 @@
#include "SpvBuilder.h"
-#ifdef AMD_EXTENSIONS
- #include "hex_float.h"
-#endif
+#include "hex_float.h"
#ifndef _WIN32
#include <cstdio>
@@ -194,6 +192,9 @@
// deal with capabilities
switch (width) {
+ case 8:
+ addCapability(CapabilityInt8);
+ break;
case 16:
addCapability(CapabilityInt16);
break;
@@ -819,7 +820,6 @@
return c->getResultId();
}
-#ifdef AMD_EXTENSIONS
Id Builder::makeFloat16Constant(float f16, bool specConstant)
{
Op opcode = specConstant ? OpSpecConstant : OpConstant;
@@ -847,7 +847,6 @@
return c->getResultId();
}
-#endif
Id Builder::findCompositeConstant(Op typeClass, const std::vector<Id>& comps)
{
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index 154687d..d4d2719 100755
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -1,6 +1,7 @@
//
// Copyright (C) 2014-2015 LunarG, Inc.
// Copyright (C) 2015-2016 Google, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -66,6 +67,8 @@
static const int maxMatrixSize = 4;
+ unsigned int getSpvVersion() const { return spvVersion; }
+
void setSource(spv::SourceLanguage lang, int version)
{
source = lang;
@@ -212,19 +215,17 @@
// For making new constants (will return old constant if the requested one was already made).
Id makeBoolConstant(bool b, bool specConstant = false);
+ Id makeInt8Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); }
+ Id makeUint8Constant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(8), u, specConstant); }
+ Id makeInt16Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(16), (unsigned)i, specConstant); }
+ Id makeUint16Constant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(16), u, specConstant); }
Id makeIntConstant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(32), (unsigned)i, specConstant); }
Id makeUintConstant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(32), u, specConstant); }
Id makeInt64Constant(long long i, bool specConstant = false) { return makeInt64Constant(makeIntType(64), (unsigned long long)i, specConstant); }
Id makeUint64Constant(unsigned long long u, bool specConstant = false) { return makeInt64Constant(makeUintType(64), u, specConstant); }
-#ifdef AMD_EXTENSIONS
- Id makeInt16Constant(short i, bool specConstant = false) { return makeIntConstant(makeIntType(16), (unsigned)((unsigned short)i), specConstant); }
- Id makeUint16Constant(unsigned short u, bool specConstant = false) { return makeIntConstant(makeUintType(16), (unsigned)u, specConstant); }
-#endif
Id makeFloatConstant(float f, bool specConstant = false);
Id makeDoubleConstant(double d, bool specConstant = false);
-#ifdef AMD_EXTENSIONS
Id makeFloat16Constant(float f16, bool specConstant = false);
-#endif
// Turn the array of constants into a proper spv constant of the requested type.
Id makeCompositeConstant(Id type, const std::vector<Id>& comps, bool specConst = false);
@@ -331,7 +332,7 @@
// Generally, the type of 'scalar' does not need to be the same type as the components in 'vector'.
// The type of the created vector is a vector of components of the same type as the scalar.
//
- // Note: One of the arguments will change, with the result coming back that way rather than
+ // Note: One of the arguments will change, with the result coming back that way rather than
// through the return value.
void promoteScalar(Decoration precision, Id& left, Id& right);
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
index c950a66..c07dfc7 100644
--- a/SPIRV/disassemble.cpp
+++ b/SPIRV/disassemble.cpp
@@ -54,6 +54,7 @@
#ifdef AMD_EXTENSIONS
#include "GLSL.ext.AMD.h"
#endif
+
#ifdef NV_EXTENSIONS
#include "GLSL.ext.NV.h"
#endif
@@ -80,12 +81,15 @@
// used to identify the extended instruction library imported when printing
enum ExtInstSet {
GLSL450Inst,
+
#ifdef AMD_EXTENSIONS
GLSLextAMDInst,
#endif
+
#ifdef NV_EXTENSIONS
GLSLextNVInst,
#endif
+
OpenCLExtInst,
};
@@ -653,7 +657,6 @@
}
#endif
-
#ifdef NV_EXTENSIONS
static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint)
{
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
old mode 100755
new mode 100644
index 3629396..6171873
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -725,7 +725,7 @@
}
}
-const int GroupOperationCeiling = 3;
+const int GroupOperationCeiling = 4;
const char* GroupOperationString(int gop)
{
@@ -735,6 +735,7 @@
case 0: return "Reduce";
case 1: return "InclusiveScan";
case 2: return "ExclusiveScan";
+ case 3: return "ClusteredReduce";
case GroupOperationCeiling:
default: return "Bad";
@@ -833,6 +834,14 @@
case 55: return "StorageImageReadWithoutFormat";
case 56: return "StorageImageWriteWithoutFormat";
case 57: return "MultiViewport";
+ case 61: return "GroupNonUniform";
+ case 62: return "GroupNonUniformVote";
+ case 63: return "GroupNonUniformArithmetic";
+ case 64: return "GroupNonUniformBallot";
+ case 65: return "GroupNonUniformShuffle";
+ case 66: return "GroupNonUniformShuffleRelative";
+ case 67: return "GroupNonUniformClustered";
+ case 68: return "GroupNonUniformQuad";
case 4423: return "SubgroupBallotKHR";
case 4427: return "DrawParameters";
@@ -1200,6 +1209,41 @@
case OpModuleProcessed: return "OpModuleProcessed";
+ case 333: return "OpGroupNonUniformElect";
+ case 334: return "OpGroupNonUniformAll";
+ case 335: return "OpGroupNonUniformAny";
+ case 336: return "OpGroupNonUniformAllEqual";
+ case 337: return "OpGroupNonUniformBroadcast";
+ case 338: return "OpGroupNonUniformBroadcastFirst";
+ case 339: return "OpGroupNonUniformBallot";
+ case 340: return "OpGroupNonUniformInverseBallot";
+ case 341: return "OpGroupNonUniformBallotBitExtract";
+ case 342: return "OpGroupNonUniformBallotBitCount";
+ case 343: return "OpGroupNonUniformBallotFindLSB";
+ case 344: return "OpGroupNonUniformBallotFindMSB";
+ case 345: return "OpGroupNonUniformShuffle";
+ case 346: return "OpGroupNonUniformShuffleXor";
+ case 347: return "OpGroupNonUniformShuffleUp";
+ case 348: return "OpGroupNonUniformShuffleDown";
+ case 349: return "OpGroupNonUniformIAdd";
+ case 350: return "OpGroupNonUniformFAdd";
+ case 351: return "OpGroupNonUniformIMul";
+ case 352: return "OpGroupNonUniformFMul";
+ case 353: return "OpGroupNonUniformSMin";
+ case 354: return "OpGroupNonUniformUMin";
+ case 355: return "OpGroupNonUniformFMin";
+ case 356: return "OpGroupNonUniformSMax";
+ case 357: return "OpGroupNonUniformUMax";
+ case 358: return "OpGroupNonUniformFMax";
+ case 359: return "OpGroupNonUniformBitwiseAnd";
+ case 360: return "OpGroupNonUniformBitwiseOr";
+ case 361: return "OpGroupNonUniformBitwiseXor";
+ case 362: return "OpGroupNonUniformLogicalAnd";
+ case 363: return "OpGroupNonUniformLogicalOr";
+ case 364: return "OpGroupNonUniformLogicalXor";
+ case 365: return "OpGroupNonUniformQuadBroadcast";
+ case 366: return "OpGroupNonUniformQuadSwap";
+
case 4421: return "OpSubgroupBallotKHR";
case 4422: return "OpSubgroupFirstInvocationKHR";
case 4428: return "OpSubgroupAllKHR";
@@ -2823,6 +2867,182 @@
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
+ InstructionDesc[OpGroupNonUniformElect].capabilities.push_back(CapabilityGroupNonUniform);
+ InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'");
+
+ InstructionDesc[OpGroupNonUniformAll].capabilities.push_back(CapabilityGroupNonUniformVote);
+ InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformAny].capabilities.push_back(CapabilityGroupNonUniformVote);
+ InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformAllEqual].capabilities.push_back(CapabilityGroupNonUniformVote);
+ InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBroadcast].capabilities.push_back(CapabilityGroupNonUniformBallot);
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID");
+
+ InstructionDesc[OpGroupNonUniformBroadcastFirst].capabilities.push_back(CapabilityGroupNonUniformBallot);
+ InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBallot].capabilities.push_back(CapabilityGroupNonUniformBallot);
+ InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformInverseBallot].capabilities.push_back(CapabilityGroupNonUniformBallot);
+ InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].capabilities.push_back(CapabilityGroupNonUniformBallot);
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit");
+
+ InstructionDesc[OpGroupNonUniformBallotBitCount].capabilities.push_back(CapabilityGroupNonUniformBallot);
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBallotFindLSB].capabilities.push_back(CapabilityGroupNonUniformBallot);
+ InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBallotFindMSB].capabilities.push_back(CapabilityGroupNonUniformBallot);
+ InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformShuffle].capabilities.push_back(CapabilityGroupNonUniformShuffle);
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'");
+
+ InstructionDesc[OpGroupNonUniformShuffleXor].capabilities.push_back(CapabilityGroupNonUniformShuffle);
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask");
+
+ InstructionDesc[OpGroupNonUniformShuffleUp].capabilities.push_back(CapabilityGroupNonUniformShuffleRelative);
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset");
+
+ InstructionDesc[OpGroupNonUniformShuffleDown].capabilities.push_back(CapabilityGroupNonUniformShuffleRelative);
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset");
+
+ InstructionDesc[OpGroupNonUniformIAdd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformFAdd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformIMul].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformFMul].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformSMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformUMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformFMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformSMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformUMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformFMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformBitwiseOr].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformBitwiseXor].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformLogicalAnd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformLogicalOr].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformLogicalXor].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].capabilities.push_back(CapabilityGroupNonUniformQuad);
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'");
+
+ InstructionDesc[OpGroupNonUniformQuadSwap].capabilities.push_back(CapabilityGroupNonUniformQuad);
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandLiteralNumber, "'Direction'");
+
InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'");
InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'");
diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp
index f6227a1..1fc24fb 100755
--- a/SPIRV/spirv.hpp
+++ b/SPIRV/spirv.hpp
@@ -46,12 +46,12 @@
typedef unsigned int Id;
-#define SPV_VERSION 0x10200
-#define SPV_REVISION 3
+#define SPV_VERSION 0x10300
+#define SPV_REVISION 1
static const unsigned int MagicNumber = 0x07230203;
-static const unsigned int Version = 0x00010200;
-static const unsigned int Revision = 3;
+static const unsigned int Version = 0x00010300;
+static const unsigned int Revision = 1;
static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16;
@@ -440,10 +440,15 @@
BuiltInSubgroupLocalInvocationId = 41,
BuiltInVertexIndex = 42,
BuiltInInstanceIndex = 43,
+ BuiltInSubgroupEqMask = 4416,
BuiltInSubgroupEqMaskKHR = 4416,
+ BuiltInSubgroupGeMask = 4417,
BuiltInSubgroupGeMaskKHR = 4417,
+ BuiltInSubgroupGtMask = 4418,
BuiltInSubgroupGtMaskKHR = 4418,
+ BuiltInSubgroupLeMask = 4419,
BuiltInSubgroupLeMaskKHR = 4419,
+ BuiltInSubgroupLtMask = 4420,
BuiltInSubgroupLtMaskKHR = 4420,
BuiltInBaseVertex = 4424,
BuiltInBaseInstance = 4425,
@@ -566,6 +571,7 @@
GroupOperationReduce = 0,
GroupOperationInclusiveScan = 1,
GroupOperationExclusiveScan = 2,
+ GroupOperationClusteredReduce = 3,
GroupOperationMax = 0x7fffffff,
};
@@ -646,6 +652,14 @@
CapabilitySubgroupDispatch = 58,
CapabilityNamedBarrier = 59,
CapabilityPipeStorage = 60,
+ CapabilityGroupNonUniform = 61,
+ CapabilityGroupNonUniformVote = 62,
+ CapabilityGroupNonUniformArithmetic = 63,
+ CapabilityGroupNonUniformBallot = 64,
+ CapabilityGroupNonUniformShuffle = 65,
+ CapabilityGroupNonUniformShuffleRelative = 66,
+ CapabilityGroupNonUniformClustered = 67,
+ CapabilityGroupNonUniformQuad = 68,
CapabilitySubgroupBallotKHR = 4423,
CapabilityDrawParameters = 4427,
CapabilitySubgroupVoteKHR = 4431,
@@ -987,6 +1001,40 @@
OpModuleProcessed = 330,
OpExecutionModeId = 331,
OpDecorateId = 332,
+ OpGroupNonUniformElect = 333,
+ OpGroupNonUniformAll = 334,
+ OpGroupNonUniformAny = 335,
+ OpGroupNonUniformAllEqual = 336,
+ OpGroupNonUniformBroadcast = 337,
+ OpGroupNonUniformBroadcastFirst = 338,
+ OpGroupNonUniformBallot = 339,
+ OpGroupNonUniformInverseBallot = 340,
+ OpGroupNonUniformBallotBitExtract = 341,
+ OpGroupNonUniformBallotBitCount = 342,
+ OpGroupNonUniformBallotFindLSB = 343,
+ OpGroupNonUniformBallotFindMSB = 344,
+ OpGroupNonUniformShuffle = 345,
+ OpGroupNonUniformShuffleXor = 346,
+ OpGroupNonUniformShuffleUp = 347,
+ OpGroupNonUniformShuffleDown = 348,
+ OpGroupNonUniformIAdd = 349,
+ OpGroupNonUniformFAdd = 350,
+ OpGroupNonUniformIMul = 351,
+ OpGroupNonUniformFMul = 352,
+ OpGroupNonUniformSMin = 353,
+ OpGroupNonUniformUMin = 354,
+ OpGroupNonUniformFMin = 355,
+ OpGroupNonUniformSMax = 356,
+ OpGroupNonUniformUMax = 357,
+ OpGroupNonUniformFMax = 358,
+ OpGroupNonUniformBitwiseAnd = 359,
+ OpGroupNonUniformBitwiseOr = 360,
+ OpGroupNonUniformBitwiseXor = 361,
+ OpGroupNonUniformLogicalAnd = 362,
+ OpGroupNonUniformLogicalOr = 363,
+ OpGroupNonUniformLogicalXor = 364,
+ OpGroupNonUniformQuadBroadcast = 365,
+ OpGroupNonUniformQuadSwap = 366,
OpSubgroupBallotKHR = 4421,
OpSubgroupFirstInvocationKHR = 4422,
OpSubgroupAllKHR = 4428,
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 8452a68..e96680d 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -157,11 +157,14 @@
const char* shaderStageName = nullptr;
const char* variableName = nullptr;
std::vector<std::string> IncludeDirectoryList;
-int ClientInputSemanticsVersion = 100; // maps to, say, #define VULKAN 100
-int VulkanClientVersion = 100; // would map to, say, Vulkan 1.0
-int OpenGLClientVersion = 450; // doesn't influence anything yet, but maps to OpenGL 4.50
-unsigned int TargetVersion = 0x00010000; // maps to, say, SPIR-V 1.0
-std::vector<std::string> Processes; // what should be recorded by OpModuleProcessed, or equivalent
+int ClientInputSemanticsVersion = 100; // maps to, say, #define VULKAN 100
+glslang::EshTargetClientVersion VulkanClientVersion =
+ glslang::EShTargetVulkan_1_0; // would map to, say, Vulkan 1.0
+glslang::EshTargetClientVersion OpenGLClientVersion =
+ glslang::EShTargetOpenGL_450; // doesn't influence anything yet, but maps to OpenGL 4.50
+glslang::EShTargetLanguageVersion TargetVersion =
+ glslang::EShTargetSpv_1_0; // maps to, say, SPIR-V 1.0
+std::vector<std::string> Processes; // what should be recorded by OpModuleProcessed, or equivalent
// Per descriptor-set binding base data
typedef std::map<unsigned int, unsigned int> TPerSetBaseBinding;
@@ -508,16 +511,20 @@
if (argc > 1) {
if (strcmp(argv[1], "vulkan1.0") == 0) {
setVulkanSpv();
- VulkanClientVersion = 100;
+ VulkanClientVersion = glslang::EShTargetVulkan_1_0;
+ } else if (strcmp(argv[1], "vulkan1.1") == 0) {
+ setVulkanSpv();
+ TargetVersion = glslang::EShTargetSpv_1_3;
+ VulkanClientVersion = glslang::EShTargetVulkan_1_1;
} else if (strcmp(argv[1], "opengl") == 0) {
setOpenGlSpv();
- OpenGLClientVersion = 450;
+ OpenGLClientVersion = glslang::EShTargetOpenGL_450;
} else
Error("--target-env expected vulkan1.0 or opengl");
}
bumpArg();
} else if (lowerword == "variable-name" || // synonyms
- lowerword == "vn") {
+ lowerword == "vn") {
Options |= EOptionOutputHexadecimal;
if (argc <= 1)
Error("no <C-variable-name> provided for --variable-name");
@@ -1373,8 +1380,9 @@
" using -S.\n"
" --suppress-warnings suppress GLSL warnings\n"
" (except as required by #extension : warn)\n"
- " --target-env {vulkan1.0|opengl} set the execution environment code will\n"
- " execute in (as opposed to language\n"
+ " --target-env {vulkan1.0 | vulkan1.1 | opengl} \n"
+ " set execution environment that emitted code\n"
+ " will execute in (as opposed to the language\n"
" semantics selected by --client) defaults:\n"
" 'vulkan1.0' under '--client vulkan<ver>'\n"
" 'opengl' under '--client opengl<ver>'\n"
diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out
index 4f0b925..e63c001 100644
--- a/Test/baseResults/120.frag.out
+++ b/Test/baseResults/120.frag.out
@@ -52,7 +52,10 @@
ERROR: 0:212: 'sampler2DRect' : Reserved word.
ERROR: 0:244: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' global void' and a right operand of type ' const int' (or there is no acceptable conversion)
ERROR: 0:245: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' const int' and a right operand of type ' global void' (or there is no acceptable conversion)
-ERROR: 0:248: 'half floating-point suffix' : required extension not requested: GL_AMD_gpu_shader_half_float
+ERROR: 0:248: 'explicit types' : required extension not requested: Possible extensions include:
+GL_AMD_gpu_shader_half_float
+GL_KHX_shader_explicit_arithmetic_types
+GL_KHX_shader_explicit_arithmetic_types_float16
ERROR: 0:248: 'half floating-point suffix' : not supported with this profile: none
ERROR: 0:248: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON
ERROR: 56 compilation errors. No code generated.
diff --git a/Test/baseResults/constFoldIntMin.frag.out b/Test/baseResults/constFoldIntMin.frag.out
index da5bc26..2c45ca8 100644
--- a/Test/baseResults/constFoldIntMin.frag.out
+++ b/Test/baseResults/constFoldIntMin.frag.out
@@ -10,7 +10,7 @@
0:6 move second child to first child ( temp int16_t)
0:6 'u' ( temp int16_t)
0:6 Constant:
-0:6 32768 (const int)
+0:6 -32768 (const int16_t)
0:7 Sequence
0:7 move second child to first child ( temp int)
0:7 'v' ( temp int)
@@ -25,7 +25,7 @@
0:9 move second child to first child ( temp int16_t)
0:9 'x' ( temp int16_t)
0:9 Constant:
-0:9 0 (const int)
+0:9 0 (const int8_t)
0:10 Sequence
0:10 move second child to first child ( temp int)
0:10 'y' ( temp int)
diff --git a/Test/baseResults/findFunction.frag.out b/Test/baseResults/findFunction.frag.out
new file mode 100644
index 0000000..ec4f3e4
--- /dev/null
+++ b/Test/baseResults/findFunction.frag.out
@@ -0,0 +1,233 @@
+findFunction.frag
+ERROR: 0:39: 'func' : ambiguous best function under implicit type conversion
+ERROR: 0:40: 'func' : no matching overloaded function found
+ERROR: 0:40: '=' : cannot convert from ' const float' to ' temp int64_t'
+ERROR: 0:41: 'func' : no matching overloaded function found
+ERROR: 0:41: '=' : cannot convert from ' const float' to ' temp int64_t'
+ERROR: 0:44: 'func' : no matching overloaded function found
+ERROR: 0:44: '=' : cannot convert from ' const float' to ' temp int64_t'
+ERROR: 0:45: 'func' : ambiguous best function under implicit type conversion
+ERROR: 8 compilation errors. No code generated.
+
+
+Shader version: 450
+Requested GL_KHX_shader_explicit_arithmetic_types
+ERROR: node is still EOpNull!
+0:5 Function Definition: func(i81;i161;i161; ( global int64_t)
+0:5 Function Parameters:
+0:5 'a' ( in int8_t)
+0:5 'b' ( in int16_t)
+0:5 'c' ( in int16_t)
+0:7 Sequence
+0:7 Branch: Return with expression
+0:7 Convert int16_t to int64 ( temp int64_t)
+0:7 inclusive-or ( temp int16_t)
+0:7 Convert int8_t to int16_t ( temp int16_t)
+0:7 'a' ( in int8_t)
+0:7 add ( temp int16_t)
+0:7 'b' ( in int16_t)
+0:7 'c' ( in int16_t)
+0:10 Function Definition: func(i81;i161;i1; ( global int64_t)
+0:10 Function Parameters:
+0:10 'a' ( in int8_t)
+0:10 'b' ( in int16_t)
+0:10 'c' ( in int)
+0:12 Sequence
+0:12 Branch: Return with expression
+0:12 Convert int to int64 ( temp int64_t)
+0:12 inclusive-or ( temp int)
+0:12 Convert int8_t to int ( temp int)
+0:12 'a' ( in int8_t)
+0:12 subtract ( temp int)
+0:12 Convert int16_t to int ( temp int)
+0:12 'b' ( in int16_t)
+0:12 'c' ( in int)
+0:15 Function Definition: func(i1;i1;i1; ( global int64_t)
+0:15 Function Parameters:
+0:15 'a' ( in int)
+0:15 'b' ( in int)
+0:15 'c' ( in int)
+0:17 Sequence
+0:17 Branch: Return with expression
+0:17 Convert int to int64 ( temp int64_t)
+0:17 add ( temp int)
+0:17 divide ( temp int)
+0:17 'a' ( in int)
+0:17 'b' ( in int)
+0:17 'c' ( in int)
+0:20 Function Definition: func(f161;f161;f1; ( global int64_t)
+0:20 Function Parameters:
+0:20 'a' ( in float16_t)
+0:20 'b' ( in float16_t)
+0:20 'c' ( in float)
+0:22 Sequence
+0:22 Branch: Return with expression
+0:22 Convert float to int64 ( temp int64_t)
+0:22 subtract ( temp float)
+0:22 Convert float16_t to float ( temp float)
+0:22 'a' ( in float16_t)
+0:22 component-wise multiply ( temp float)
+0:22 Convert float16_t to float ( temp float)
+0:22 'b' ( in float16_t)
+0:22 'c' ( in float)
+0:25 Function Definition: func(f161;i161;f1; ( global int64_t)
+0:25 Function Parameters:
+0:25 'a' ( in float16_t)
+0:25 'b' ( in int16_t)
+0:25 'c' ( in float)
+0:27 Sequence
+0:27 Branch: Return with expression
+0:27 Convert float to int64 ( temp int64_t)
+0:27 subtract ( temp float)
+0:27 Convert float16_t to float ( temp float)
+0:27 'a' ( in float16_t)
+0:27 component-wise multiply ( temp float)
+0:27 Convert int16_t to float ( temp float)
+0:27 'b' ( in int16_t)
+0:27 'c' ( in float)
+0:30 Function Definition: main( ( global void)
+0:30 Function Parameters:
+0:? Sequence
+0:38 Sequence
+0:38 move second child to first child ( temp int64_t)
+0:38 'b1' ( temp int64_t)
+0:38 Function Call: func(i81;i161;i1; ( global int64_t)
+0:38 'x' ( temp int8_t)
+0:38 'y' ( temp int16_t)
+0:38 'z' ( temp int)
+0:39 Sequence
+0:39 move second child to first child ( temp int64_t)
+0:39 'b2' ( temp int64_t)
+0:39 Function Call: func(f161;i161;f1; ( global int64_t)
+0:39 Convert int16_t to float16_t ( temp float16_t)
+0:39 'y' ( temp int16_t)
+0:39 'y' ( temp int16_t)
+0:39 Convert int to float ( temp float)
+0:39 'z' ( temp int)
+0:42 Sequence
+0:42 move second child to first child ( temp int64_t)
+0:42 'b5' ( temp int64_t)
+0:42 Function Call: func(f161;i161;f1; ( global int64_t)
+0:42 Convert int16_t to float16_t ( temp float16_t)
+0:42 'y' ( temp int16_t)
+0:42 'y' ( temp int16_t)
+0:42 Convert float16_t to float ( temp float)
+0:42 'f16' ( temp float16_t)
+0:43 Sequence
+0:43 move second child to first child ( temp int64_t)
+0:43 'b7' ( temp int64_t)
+0:43 Function Call: func(f161;f161;f1; ( global int64_t)
+0:43 'f16' ( temp float16_t)
+0:43 'f16' ( temp float16_t)
+0:43 Convert int16_t to float ( temp float)
+0:43 'y' ( temp int16_t)
+0:45 Sequence
+0:45 move second child to first child ( temp int64_t)
+0:45 'b9' ( temp int64_t)
+0:45 Function Call: func(f161;f161;f1; ( global int64_t)
+0:45 'f16' ( temp float16_t)
+0:45 Convert int8_t to float16_t ( temp float16_t)
+0:45 'x' ( temp int8_t)
+0:45 Convert float16_t to float ( temp float)
+0:45 'f16' ( temp float16_t)
+0:? Linker Objects
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+Requested GL_KHX_shader_explicit_arithmetic_types
+ERROR: node is still EOpNull!
+0:10 Function Definition: func(i81;i161;i1; ( global int64_t)
+0:10 Function Parameters:
+0:10 'a' ( in int8_t)
+0:10 'b' ( in int16_t)
+0:10 'c' ( in int)
+0:12 Sequence
+0:12 Branch: Return with expression
+0:12 Convert int to int64 ( temp int64_t)
+0:12 inclusive-or ( temp int)
+0:12 Convert int8_t to int ( temp int)
+0:12 'a' ( in int8_t)
+0:12 subtract ( temp int)
+0:12 Convert int16_t to int ( temp int)
+0:12 'b' ( in int16_t)
+0:12 'c' ( in int)
+0:20 Function Definition: func(f161;f161;f1; ( global int64_t)
+0:20 Function Parameters:
+0:20 'a' ( in float16_t)
+0:20 'b' ( in float16_t)
+0:20 'c' ( in float)
+0:22 Sequence
+0:22 Branch: Return with expression
+0:22 Convert float to int64 ( temp int64_t)
+0:22 subtract ( temp float)
+0:22 Convert float16_t to float ( temp float)
+0:22 'a' ( in float16_t)
+0:22 component-wise multiply ( temp float)
+0:22 Convert float16_t to float ( temp float)
+0:22 'b' ( in float16_t)
+0:22 'c' ( in float)
+0:25 Function Definition: func(f161;i161;f1; ( global int64_t)
+0:25 Function Parameters:
+0:25 'a' ( in float16_t)
+0:25 'b' ( in int16_t)
+0:25 'c' ( in float)
+0:27 Sequence
+0:27 Branch: Return with expression
+0:27 Convert float to int64 ( temp int64_t)
+0:27 subtract ( temp float)
+0:27 Convert float16_t to float ( temp float)
+0:27 'a' ( in float16_t)
+0:27 component-wise multiply ( temp float)
+0:27 Convert int16_t to float ( temp float)
+0:27 'b' ( in int16_t)
+0:27 'c' ( in float)
+0:30 Function Definition: main( ( global void)
+0:30 Function Parameters:
+0:? Sequence
+0:38 Sequence
+0:38 move second child to first child ( temp int64_t)
+0:38 'b1' ( temp int64_t)
+0:38 Function Call: func(i81;i161;i1; ( global int64_t)
+0:38 'x' ( temp int8_t)
+0:38 'y' ( temp int16_t)
+0:38 'z' ( temp int)
+0:39 Sequence
+0:39 move second child to first child ( temp int64_t)
+0:39 'b2' ( temp int64_t)
+0:39 Function Call: func(f161;i161;f1; ( global int64_t)
+0:39 Convert int16_t to float16_t ( temp float16_t)
+0:39 'y' ( temp int16_t)
+0:39 'y' ( temp int16_t)
+0:39 Convert int to float ( temp float)
+0:39 'z' ( temp int)
+0:42 Sequence
+0:42 move second child to first child ( temp int64_t)
+0:42 'b5' ( temp int64_t)
+0:42 Function Call: func(f161;i161;f1; ( global int64_t)
+0:42 Convert int16_t to float16_t ( temp float16_t)
+0:42 'y' ( temp int16_t)
+0:42 'y' ( temp int16_t)
+0:42 Convert float16_t to float ( temp float)
+0:42 'f16' ( temp float16_t)
+0:43 Sequence
+0:43 move second child to first child ( temp int64_t)
+0:43 'b7' ( temp int64_t)
+0:43 Function Call: func(f161;f161;f1; ( global int64_t)
+0:43 'f16' ( temp float16_t)
+0:43 'f16' ( temp float16_t)
+0:43 Convert int16_t to float ( temp float)
+0:43 'y' ( temp int16_t)
+0:45 Sequence
+0:45 move second child to first child ( temp int64_t)
+0:45 'b9' ( temp int64_t)
+0:45 Function Call: func(f161;f161;f1; ( global int64_t)
+0:45 'f16' ( temp float16_t)
+0:45 Convert int8_t to float16_t ( temp float16_t)
+0:45 'x' ( temp int8_t)
+0:45 Convert float16_t to float ( temp float)
+0:45 'f16' ( temp float16_t)
+0:? Linker Objects
+
diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out
new file mode 100644
index 0000000..e64dd45
--- /dev/null
+++ b/Test/baseResults/hlsl.wavebroadcast.comp.out
@@ -0,0 +1,2731 @@
+hlsl.wavebroadcast.comp
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:13 Function Definition: @CSMain(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 subgroupShuffle ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 13 (const uint)
+0:15 move second child to first child ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 subgroupShuffle ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 13 (const uint)
+0:16 move second child to first child ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 subgroupShuffle ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 13 (const uint)
+0:17 move second child to first child ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 subgroupShuffle ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 13 (const uint)
+0:19 move second child to first child ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 subgroupShuffle ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 Constant:
+0:19 13 (const uint)
+0:20 move second child to first child ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 subgroupShuffle ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 13 (const uint)
+0:21 move second child to first child ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 subgroupShuffle ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Constant:
+0:21 13 (const uint)
+0:22 move second child to first child ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 subgroupShuffle ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 Constant:
+0:22 13 (const uint)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 subgroupShuffle ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 Constant:
+0:24 13 (const uint)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 subgroupShuffle ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 13 (const uint)
+0:26 move second child to first child ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 subgroupShuffle ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 Constant:
+0:26 13 (const uint)
+0:27 move second child to first child ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 subgroupShuffle ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Constant:
+0:27 13 (const uint)
+0:29 move second child to first child ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 subgroupBroadcastFirst ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:30 move second child to first child ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 subgroupBroadcastFirst ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:31 move second child to first child ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 subgroupBroadcastFirst ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:32 move second child to first child ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 subgroupBroadcastFirst ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:34 move second child to first child ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 subgroupBroadcastFirst ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:35 move second child to first child ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 subgroupBroadcastFirst ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:36 move second child to first child ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 subgroupBroadcastFirst ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:37 move second child to first child ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 subgroupBroadcastFirst ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:39 move second child to first child ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 subgroupBroadcastFirst ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:40 move second child to first child ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 subgroupBroadcastFirst ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:41 move second child to first child ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 subgroupBroadcastFirst ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:42 move second child to first child ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 subgroupBroadcastFirst ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 subgroupBroadcastFirst ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 subgroupBroadcastFirst ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:46 move second child to first child ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 subgroupBroadcastFirst ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 subgroupBroadcastFirst ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:49 move second child to first child ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 subgroupBroadcastFirst ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:50 move second child to first child ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 subgroupBroadcastFirst ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:51 move second child to first child ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 subgroupBroadcastFirst ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:52 move second child to first child ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 subgroupBroadcastFirst ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:13 Function Definition: CSMain( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:13 Function Definition: @CSMain(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 subgroupShuffle ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 13 (const uint)
+0:15 move second child to first child ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 subgroupShuffle ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 13 (const uint)
+0:16 move second child to first child ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 subgroupShuffle ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 13 (const uint)
+0:17 move second child to first child ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 subgroupShuffle ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 13 (const uint)
+0:19 move second child to first child ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 subgroupShuffle ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 Constant:
+0:19 13 (const uint)
+0:20 move second child to first child ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 subgroupShuffle ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 13 (const uint)
+0:21 move second child to first child ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 subgroupShuffle ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Constant:
+0:21 13 (const uint)
+0:22 move second child to first child ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 subgroupShuffle ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 Constant:
+0:22 13 (const uint)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 subgroupShuffle ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 Constant:
+0:24 13 (const uint)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 subgroupShuffle ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 13 (const uint)
+0:26 move second child to first child ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 subgroupShuffle ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 Constant:
+0:26 13 (const uint)
+0:27 move second child to first child ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 subgroupShuffle ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Constant:
+0:27 13 (const uint)
+0:29 move second child to first child ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 subgroupBroadcastFirst ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:30 move second child to first child ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 subgroupBroadcastFirst ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:31 move second child to first child ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 subgroupBroadcastFirst ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:32 move second child to first child ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 subgroupBroadcastFirst ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:34 move second child to first child ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 subgroupBroadcastFirst ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:35 move second child to first child ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 subgroupBroadcastFirst ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:36 move second child to first child ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 subgroupBroadcastFirst ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:37 move second child to first child ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 subgroupBroadcastFirst ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:39 move second child to first child ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 subgroupBroadcastFirst ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:40 move second child to first child ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 subgroupBroadcastFirst ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:41 move second child to first child ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 subgroupBroadcastFirst ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:42 move second child to first child ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 subgroupBroadcastFirst ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 subgroupBroadcastFirst ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 subgroupBroadcastFirst ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:46 move second child to first child ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 subgroupBroadcastFirst ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 subgroupBroadcastFirst ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:49 move second child to first child ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 subgroupBroadcastFirst ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:50 move second child to first child ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 subgroupBroadcastFirst ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:51 move second child to first child ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 subgroupBroadcastFirst ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:52 move second child to first child ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 subgroupBroadcastFirst ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:13 Function Definition: CSMain( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 359
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformBallot
+ Capability GroupNonUniformShuffle
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "CSMain" 354
+ ExecutionMode 4 LocalSize 32 16 1
+ Source HLSL 500
+ Name 4 "CSMain"
+ Name 11 "@CSMain(vu3;"
+ Name 10 "dti"
+ Name 20 "Types"
+ MemberName 20(Types) 0 "u"
+ MemberName 20(Types) 1 "i"
+ MemberName 20(Types) 2 "f"
+ MemberName 20(Types) 3 "d"
+ Name 22 "data"
+ MemberName 22(data) 0 "@data"
+ Name 24 "data"
+ Name 352 "dti"
+ Name 354 "dti"
+ Name 356 "param"
+ MemberDecorate 20(Types) 0 Offset 0
+ MemberDecorate 20(Types) 1 Offset 16
+ MemberDecorate 20(Types) 2 Offset 32
+ MemberDecorate 20(Types) 3 Offset 64
+ Decorate 21 ArrayStride 96
+ MemberDecorate 22(data) 0 Offset 0
+ Decorate 22(data) BufferBlock
+ Decorate 24(data) DescriptorSet 0
+ Decorate 354(dti) BuiltIn GlobalInvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeVector 6(int) 4
+ 14: TypeInt 32 1
+ 15: TypeVector 14(int) 4
+ 16: TypeFloat 32
+ 17: TypeVector 16(float) 4
+ 18: TypeFloat 64
+ 19: TypeVector 18(float) 4
+ 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(fvec4)
+ 21: TypeRuntimeArray 20(Types)
+ 22(data): TypeStruct 21
+ 23: TypePointer Uniform 22(data)
+ 24(data): 23(ptr) Variable Uniform
+ 25: 14(int) Constant 0
+ 26: 6(int) Constant 0
+ 27: TypePointer Function 6(int)
+ 32: TypePointer Uniform 13(ivec4)
+ 35: 6(int) Constant 13
+ 36: 6(int) Constant 3
+ 43: TypePointer Uniform 6(int)
+ 52: TypeVector 6(int) 2
+ 73: 14(int) Constant 1
+ 76: TypePointer Uniform 15(ivec4)
+ 85: TypePointer Uniform 14(int)
+ 94: TypeVector 14(int) 2
+ 106: TypeVector 14(int) 3
+ 116: 14(int) Constant 2
+ 119: TypePointer Uniform 17(fvec4)
+ 128: TypePointer Uniform 16(float)
+ 137: TypeVector 16(float) 2
+ 149: TypeVector 16(float) 3
+ 159: 14(int) Constant 3
+ 162: TypePointer Uniform 19(fvec4)
+ 171: TypePointer Uniform 18(float)
+ 180: TypeVector 18(float) 2
+ 192: TypeVector 18(float) 3
+ 353: TypePointer Input 7(ivec3)
+ 354(dti): 353(ptr) Variable Input
+ 4(CSMain): 2 Function None 3
+ 5: Label
+ 352(dti): 8(ptr) Variable Function
+ 356(param): 8(ptr) Variable Function
+ 355: 7(ivec3) Load 354(dti)
+ Store 352(dti) 355
+ 357: 7(ivec3) Load 352(dti)
+ Store 356(param) 357
+ 358: 2 FunctionCall 11(@CSMain(vu3;) 356(param)
+ Return
+ FunctionEnd
+11(@CSMain(vu3;): 2 Function None 9
+ 10(dti): 8(ptr) FunctionParameter
+ 12: Label
+ 28: 27(ptr) AccessChain 10(dti) 26
+ 29: 6(int) Load 28
+ 30: 27(ptr) AccessChain 10(dti) 26
+ 31: 6(int) Load 30
+ 33: 32(ptr) AccessChain 24(data) 25 31 25
+ 34: 13(ivec4) Load 33
+ 37: 13(ivec4) GroupNonUniformShuffle 36 34 35
+ 38: 32(ptr) AccessChain 24(data) 25 29 25
+ Store 38 37
+ 39: 27(ptr) AccessChain 10(dti) 26
+ 40: 6(int) Load 39
+ 41: 27(ptr) AccessChain 10(dti) 26
+ 42: 6(int) Load 41
+ 44: 43(ptr) AccessChain 24(data) 25 42 25 26
+ 45: 6(int) Load 44
+ 46: 6(int) GroupNonUniformShuffle 36 45 35
+ 47: 43(ptr) AccessChain 24(data) 25 40 25 26
+ Store 47 46
+ 48: 27(ptr) AccessChain 10(dti) 26
+ 49: 6(int) Load 48
+ 50: 27(ptr) AccessChain 10(dti) 26
+ 51: 6(int) Load 50
+ 53: 32(ptr) AccessChain 24(data) 25 51 25
+ 54: 13(ivec4) Load 53
+ 55: 52(ivec2) VectorShuffle 54 54 0 1
+ 56: 52(ivec2) GroupNonUniformShuffle 36 55 35
+ 57: 32(ptr) AccessChain 24(data) 25 49 25
+ 58: 13(ivec4) Load 57
+ 59: 13(ivec4) VectorShuffle 58 56 4 5 2 3
+ Store 57 59
+ 60: 27(ptr) AccessChain 10(dti) 26
+ 61: 6(int) Load 60
+ 62: 27(ptr) AccessChain 10(dti) 26
+ 63: 6(int) Load 62
+ 64: 32(ptr) AccessChain 24(data) 25 63 25
+ 65: 13(ivec4) Load 64
+ 66: 7(ivec3) VectorShuffle 65 65 0 1 2
+ 67: 7(ivec3) GroupNonUniformShuffle 36 66 35
+ 68: 32(ptr) AccessChain 24(data) 25 61 25
+ 69: 13(ivec4) Load 68
+ 70: 13(ivec4) VectorShuffle 69 67 4 5 6 3
+ Store 68 70
+ 71: 27(ptr) AccessChain 10(dti) 26
+ 72: 6(int) Load 71
+ 74: 27(ptr) AccessChain 10(dti) 26
+ 75: 6(int) Load 74
+ 77: 76(ptr) AccessChain 24(data) 25 75 73
+ 78: 15(ivec4) Load 77
+ 79: 15(ivec4) GroupNonUniformShuffle 36 78 35
+ 80: 76(ptr) AccessChain 24(data) 25 72 73
+ Store 80 79
+ 81: 27(ptr) AccessChain 10(dti) 26
+ 82: 6(int) Load 81
+ 83: 27(ptr) AccessChain 10(dti) 26
+ 84: 6(int) Load 83
+ 86: 85(ptr) AccessChain 24(data) 25 84 73 26
+ 87: 14(int) Load 86
+ 88: 14(int) GroupNonUniformShuffle 36 87 35
+ 89: 85(ptr) AccessChain 24(data) 25 82 73 26
+ Store 89 88
+ 90: 27(ptr) AccessChain 10(dti) 26
+ 91: 6(int) Load 90
+ 92: 27(ptr) AccessChain 10(dti) 26
+ 93: 6(int) Load 92
+ 95: 76(ptr) AccessChain 24(data) 25 93 73
+ 96: 15(ivec4) Load 95
+ 97: 94(ivec2) VectorShuffle 96 96 0 1
+ 98: 94(ivec2) GroupNonUniformShuffle 36 97 35
+ 99: 76(ptr) AccessChain 24(data) 25 91 73
+ 100: 15(ivec4) Load 99
+ 101: 15(ivec4) VectorShuffle 100 98 4 5 2 3
+ Store 99 101
+ 102: 27(ptr) AccessChain 10(dti) 26
+ 103: 6(int) Load 102
+ 104: 27(ptr) AccessChain 10(dti) 26
+ 105: 6(int) Load 104
+ 107: 76(ptr) AccessChain 24(data) 25 105 73
+ 108: 15(ivec4) Load 107
+ 109: 106(ivec3) VectorShuffle 108 108 0 1 2
+ 110: 106(ivec3) GroupNonUniformShuffle 36 109 35
+ 111: 76(ptr) AccessChain 24(data) 25 103 73
+ 112: 15(ivec4) Load 111
+ 113: 15(ivec4) VectorShuffle 112 110 4 5 6 3
+ Store 111 113
+ 114: 27(ptr) AccessChain 10(dti) 26
+ 115: 6(int) Load 114
+ 117: 27(ptr) AccessChain 10(dti) 26
+ 118: 6(int) Load 117
+ 120: 119(ptr) AccessChain 24(data) 25 118 116
+ 121: 17(fvec4) Load 120
+ 122: 17(fvec4) GroupNonUniformShuffle 36 121 35
+ 123: 119(ptr) AccessChain 24(data) 25 115 116
+ Store 123 122
+ 124: 27(ptr) AccessChain 10(dti) 26
+ 125: 6(int) Load 124
+ 126: 27(ptr) AccessChain 10(dti) 26
+ 127: 6(int) Load 126
+ 129: 128(ptr) AccessChain 24(data) 25 127 116 26
+ 130: 16(float) Load 129
+ 131: 16(float) GroupNonUniformShuffle 36 130 35
+ 132: 128(ptr) AccessChain 24(data) 25 125 116 26
+ Store 132 131
+ 133: 27(ptr) AccessChain 10(dti) 26
+ 134: 6(int) Load 133
+ 135: 27(ptr) AccessChain 10(dti) 26
+ 136: 6(int) Load 135
+ 138: 119(ptr) AccessChain 24(data) 25 136 116
+ 139: 17(fvec4) Load 138
+ 140: 137(fvec2) VectorShuffle 139 139 0 1
+ 141: 137(fvec2) GroupNonUniformShuffle 36 140 35
+ 142: 119(ptr) AccessChain 24(data) 25 134 116
+ 143: 17(fvec4) Load 142
+ 144: 17(fvec4) VectorShuffle 143 141 4 5 2 3
+ Store 142 144
+ 145: 27(ptr) AccessChain 10(dti) 26
+ 146: 6(int) Load 145
+ 147: 27(ptr) AccessChain 10(dti) 26
+ 148: 6(int) Load 147
+ 150: 119(ptr) AccessChain 24(data) 25 148 116
+ 151: 17(fvec4) Load 150
+ 152: 149(fvec3) VectorShuffle 151 151 0 1 2
+ 153: 149(fvec3) GroupNonUniformShuffle 36 152 35
+ 154: 119(ptr) AccessChain 24(data) 25 146 116
+ 155: 17(fvec4) Load 154
+ 156: 17(fvec4) VectorShuffle 155 153 4 5 6 3
+ Store 154 156
+ 157: 27(ptr) AccessChain 10(dti) 26
+ 158: 6(int) Load 157
+ 160: 27(ptr) AccessChain 10(dti) 26
+ 161: 6(int) Load 160
+ 163: 162(ptr) AccessChain 24(data) 25 161 159
+ 164: 19(fvec4) Load 163
+ 165: 19(fvec4) GroupNonUniformBroadcastFirst 36 164
+ 166: 162(ptr) AccessChain 24(data) 25 158 159
+ Store 166 165
+ 167: 27(ptr) AccessChain 10(dti) 26
+ 168: 6(int) Load 167
+ 169: 27(ptr) AccessChain 10(dti) 26
+ 170: 6(int) Load 169
+ 172: 171(ptr) AccessChain 24(data) 25 170 159 26
+ 173: 18(float) Load 172
+ 174: 18(float) GroupNonUniformBroadcastFirst 36 173
+ 175: 171(ptr) AccessChain 24(data) 25 168 159 26
+ Store 175 174
+ 176: 27(ptr) AccessChain 10(dti) 26
+ 177: 6(int) Load 176
+ 178: 27(ptr) AccessChain 10(dti) 26
+ 179: 6(int) Load 178
+ 181: 162(ptr) AccessChain 24(data) 25 179 159
+ 182: 19(fvec4) Load 181
+ 183: 180(fvec2) VectorShuffle 182 182 0 1
+ 184: 180(fvec2) GroupNonUniformBroadcastFirst 36 183
+ 185: 162(ptr) AccessChain 24(data) 25 177 159
+ 186: 19(fvec4) Load 185
+ 187: 19(fvec4) VectorShuffle 186 184 4 5 2 3
+ Store 185 187
+ 188: 27(ptr) AccessChain 10(dti) 26
+ 189: 6(int) Load 188
+ 190: 27(ptr) AccessChain 10(dti) 26
+ 191: 6(int) Load 190
+ 193: 162(ptr) AccessChain 24(data) 25 191 159
+ 194: 19(fvec4) Load 193
+ 195: 192(fvec3) VectorShuffle 194 194 0 1 2
+ 196: 192(fvec3) GroupNonUniformBroadcastFirst 36 195
+ 197: 162(ptr) AccessChain 24(data) 25 189 159
+ 198: 19(fvec4) Load 197
+ 199: 19(fvec4) VectorShuffle 198 196 4 5 6 3
+ Store 197 199
+ 200: 27(ptr) AccessChain 10(dti) 26
+ 201: 6(int) Load 200
+ 202: 27(ptr) AccessChain 10(dti) 26
+ 203: 6(int) Load 202
+ 204: 32(ptr) AccessChain 24(data) 25 203 25
+ 205: 13(ivec4) Load 204
+ 206: 13(ivec4) GroupNonUniformBroadcastFirst 36 205
+ 207: 32(ptr) AccessChain 24(data) 25 201 25
+ Store 207 206
+ 208: 27(ptr) AccessChain 10(dti) 26
+ 209: 6(int) Load 208
+ 210: 27(ptr) AccessChain 10(dti) 26
+ 211: 6(int) Load 210
+ 212: 43(ptr) AccessChain 24(data) 25 211 25 26
+ 213: 6(int) Load 212
+ 214: 6(int) GroupNonUniformBroadcastFirst 36 213
+ 215: 43(ptr) AccessChain 24(data) 25 209 25 26
+ Store 215 214
+ 216: 27(ptr) AccessChain 10(dti) 26
+ 217: 6(int) Load 216
+ 218: 27(ptr) AccessChain 10(dti) 26
+ 219: 6(int) Load 218
+ 220: 32(ptr) AccessChain 24(data) 25 219 25
+ 221: 13(ivec4) Load 220
+ 222: 52(ivec2) VectorShuffle 221 221 0 1
+ 223: 52(ivec2) GroupNonUniformBroadcastFirst 36 222
+ 224: 32(ptr) AccessChain 24(data) 25 217 25
+ 225: 13(ivec4) Load 224
+ 226: 13(ivec4) VectorShuffle 225 223 4 5 2 3
+ Store 224 226
+ 227: 27(ptr) AccessChain 10(dti) 26
+ 228: 6(int) Load 227
+ 229: 27(ptr) AccessChain 10(dti) 26
+ 230: 6(int) Load 229
+ 231: 32(ptr) AccessChain 24(data) 25 230 25
+ 232: 13(ivec4) Load 231
+ 233: 7(ivec3) VectorShuffle 232 232 0 1 2
+ 234: 7(ivec3) GroupNonUniformBroadcastFirst 36 233
+ 235: 32(ptr) AccessChain 24(data) 25 228 25
+ 236: 13(ivec4) Load 235
+ 237: 13(ivec4) VectorShuffle 236 234 4 5 6 3
+ Store 235 237
+ 238: 27(ptr) AccessChain 10(dti) 26
+ 239: 6(int) Load 238
+ 240: 27(ptr) AccessChain 10(dti) 26
+ 241: 6(int) Load 240
+ 242: 76(ptr) AccessChain 24(data) 25 241 73
+ 243: 15(ivec4) Load 242
+ 244: 15(ivec4) GroupNonUniformBroadcastFirst 36 243
+ 245: 76(ptr) AccessChain 24(data) 25 239 73
+ Store 245 244
+ 246: 27(ptr) AccessChain 10(dti) 26
+ 247: 6(int) Load 246
+ 248: 27(ptr) AccessChain 10(dti) 26
+ 249: 6(int) Load 248
+ 250: 85(ptr) AccessChain 24(data) 25 249 73 26
+ 251: 14(int) Load 250
+ 252: 14(int) GroupNonUniformBroadcastFirst 36 251
+ 253: 85(ptr) AccessChain 24(data) 25 247 73 26
+ Store 253 252
+ 254: 27(ptr) AccessChain 10(dti) 26
+ 255: 6(int) Load 254
+ 256: 27(ptr) AccessChain 10(dti) 26
+ 257: 6(int) Load 256
+ 258: 76(ptr) AccessChain 24(data) 25 257 73
+ 259: 15(ivec4) Load 258
+ 260: 94(ivec2) VectorShuffle 259 259 0 1
+ 261: 94(ivec2) GroupNonUniformBroadcastFirst 36 260
+ 262: 76(ptr) AccessChain 24(data) 25 255 73
+ 263: 15(ivec4) Load 262
+ 264: 15(ivec4) VectorShuffle 263 261 4 5 2 3
+ Store 262 264
+ 265: 27(ptr) AccessChain 10(dti) 26
+ 266: 6(int) Load 265
+ 267: 27(ptr) AccessChain 10(dti) 26
+ 268: 6(int) Load 267
+ 269: 76(ptr) AccessChain 24(data) 25 268 73
+ 270: 15(ivec4) Load 269
+ 271: 106(ivec3) VectorShuffle 270 270 0 1 2
+ 272: 106(ivec3) GroupNonUniformBroadcastFirst 36 271
+ 273: 76(ptr) AccessChain 24(data) 25 266 73
+ 274: 15(ivec4) Load 273
+ 275: 15(ivec4) VectorShuffle 274 272 4 5 6 3
+ Store 273 275
+ 276: 27(ptr) AccessChain 10(dti) 26
+ 277: 6(int) Load 276
+ 278: 27(ptr) AccessChain 10(dti) 26
+ 279: 6(int) Load 278
+ 280: 119(ptr) AccessChain 24(data) 25 279 116
+ 281: 17(fvec4) Load 280
+ 282: 17(fvec4) GroupNonUniformBroadcastFirst 36 281
+ 283: 119(ptr) AccessChain 24(data) 25 277 116
+ Store 283 282
+ 284: 27(ptr) AccessChain 10(dti) 26
+ 285: 6(int) Load 284
+ 286: 27(ptr) AccessChain 10(dti) 26
+ 287: 6(int) Load 286
+ 288: 128(ptr) AccessChain 24(data) 25 287 116 26
+ 289: 16(float) Load 288
+ 290: 16(float) GroupNonUniformBroadcastFirst 36 289
+ 291: 128(ptr) AccessChain 24(data) 25 285 116 26
+ Store 291 290
+ 292: 27(ptr) AccessChain 10(dti) 26
+ 293: 6(int) Load 292
+ 294: 27(ptr) AccessChain 10(dti) 26
+ 295: 6(int) Load 294
+ 296: 119(ptr) AccessChain 24(data) 25 295 116
+ 297: 17(fvec4) Load 296
+ 298: 137(fvec2) VectorShuffle 297 297 0 1
+ 299: 137(fvec2) GroupNonUniformBroadcastFirst 36 298
+ 300: 119(ptr) AccessChain 24(data) 25 293 116
+ 301: 17(fvec4) Load 300
+ 302: 17(fvec4) VectorShuffle 301 299 4 5 2 3
+ Store 300 302
+ 303: 27(ptr) AccessChain 10(dti) 26
+ 304: 6(int) Load 303
+ 305: 27(ptr) AccessChain 10(dti) 26
+ 306: 6(int) Load 305
+ 307: 119(ptr) AccessChain 24(data) 25 306 116
+ 308: 17(fvec4) Load 307
+ 309: 149(fvec3) VectorShuffle 308 308 0 1 2
+ 310: 149(fvec3) GroupNonUniformBroadcastFirst 36 309
+ 311: 119(ptr) AccessChain 24(data) 25 304 116
+ 312: 17(fvec4) Load 311
+ 313: 17(fvec4) VectorShuffle 312 310 4 5 6 3
+ Store 311 313
+ 314: 27(ptr) AccessChain 10(dti) 26
+ 315: 6(int) Load 314
+ 316: 27(ptr) AccessChain 10(dti) 26
+ 317: 6(int) Load 316
+ 318: 162(ptr) AccessChain 24(data) 25 317 159
+ 319: 19(fvec4) Load 318
+ 320: 19(fvec4) GroupNonUniformBroadcastFirst 36 319
+ 321: 162(ptr) AccessChain 24(data) 25 315 159
+ Store 321 320
+ 322: 27(ptr) AccessChain 10(dti) 26
+ 323: 6(int) Load 322
+ 324: 27(ptr) AccessChain 10(dti) 26
+ 325: 6(int) Load 324
+ 326: 171(ptr) AccessChain 24(data) 25 325 159 26
+ 327: 18(float) Load 326
+ 328: 18(float) GroupNonUniformBroadcastFirst 36 327
+ 329: 171(ptr) AccessChain 24(data) 25 323 159 26
+ Store 329 328
+ 330: 27(ptr) AccessChain 10(dti) 26
+ 331: 6(int) Load 330
+ 332: 27(ptr) AccessChain 10(dti) 26
+ 333: 6(int) Load 332
+ 334: 162(ptr) AccessChain 24(data) 25 333 159
+ 335: 19(fvec4) Load 334
+ 336: 180(fvec2) VectorShuffle 335 335 0 1
+ 337: 180(fvec2) GroupNonUniformBroadcastFirst 36 336
+ 338: 162(ptr) AccessChain 24(data) 25 331 159
+ 339: 19(fvec4) Load 338
+ 340: 19(fvec4) VectorShuffle 339 337 4 5 2 3
+ Store 338 340
+ 341: 27(ptr) AccessChain 10(dti) 26
+ 342: 6(int) Load 341
+ 343: 27(ptr) AccessChain 10(dti) 26
+ 344: 6(int) Load 343
+ 345: 162(ptr) AccessChain 24(data) 25 344 159
+ 346: 19(fvec4) Load 345
+ 347: 192(fvec3) VectorShuffle 346 346 0 1 2
+ 348: 192(fvec3) GroupNonUniformBroadcastFirst 36 347
+ 349: 162(ptr) AccessChain 24(data) 25 342 159
+ 350: 19(fvec4) Load 349
+ 351: 19(fvec4) VectorShuffle 350 348 4 5 6 3
+ Store 349 351
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out
new file mode 100644
index 0000000..ce5fd9f
--- /dev/null
+++ b/Test/baseResults/hlsl.waveprefix.comp.out
@@ -0,0 +1,2766 @@
+hlsl.waveprefix.comp
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:13 Function Definition: @CSMain(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 subgroupInclusiveAdd ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 subgroupInclusiveAdd ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 subgroupInclusiveAdd ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:17 move second child to first child ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 subgroupInclusiveAdd ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:19 move second child to first child ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 subgroupInclusiveAdd ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:20 move second child to first child ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 subgroupInclusiveAdd ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:21 move second child to first child ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 subgroupInclusiveAdd ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:22 move second child to first child ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 subgroupInclusiveAdd ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 subgroupInclusiveAdd ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 subgroupInclusiveAdd ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:26 move second child to first child ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 subgroupInclusiveAdd ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:27 move second child to first child ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 subgroupInclusiveAdd ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:29 move second child to first child ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 subgroupInclusiveAdd ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:30 move second child to first child ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 subgroupInclusiveAdd ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:31 move second child to first child ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 subgroupInclusiveAdd ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:32 move second child to first child ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 subgroupInclusiveAdd ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:34 move second child to first child ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 subgroupInclusiveMul ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:35 move second child to first child ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 subgroupInclusiveMul ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:36 move second child to first child ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 subgroupInclusiveMul ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:37 move second child to first child ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 subgroupInclusiveMul ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:39 move second child to first child ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 subgroupInclusiveMul ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:40 move second child to first child ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 subgroupInclusiveMul ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:41 move second child to first child ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 subgroupInclusiveMul ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:42 move second child to first child ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 subgroupInclusiveMul ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 subgroupInclusiveMul ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 subgroupInclusiveMul ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:46 move second child to first child ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 subgroupInclusiveMul ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 subgroupInclusiveMul ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:49 move second child to first child ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 subgroupInclusiveMul ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:50 move second child to first child ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 subgroupInclusiveMul ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:51 move second child to first child ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 subgroupInclusiveMul ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:52 move second child to first child ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 subgroupInclusiveMul ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:54 move second child to first child ( temp uint)
+0:54 direct index ( temp uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 subgroupBallotInclusiveBitCount ( temp uint)
+0:54 subgroupBallot ( temp 4-component vector of uint)
+0:54 Compare Equal ( temp bool)
+0:54 direct index ( temp uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const uint)
+0:13 Function Definition: CSMain( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:13 Function Definition: @CSMain(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 subgroupInclusiveAdd ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 subgroupInclusiveAdd ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 subgroupInclusiveAdd ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:17 move second child to first child ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 subgroupInclusiveAdd ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:19 move second child to first child ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 subgroupInclusiveAdd ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:20 move second child to first child ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 subgroupInclusiveAdd ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:21 move second child to first child ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 subgroupInclusiveAdd ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:22 move second child to first child ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 subgroupInclusiveAdd ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 subgroupInclusiveAdd ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 subgroupInclusiveAdd ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:26 move second child to first child ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 subgroupInclusiveAdd ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:27 move second child to first child ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 subgroupInclusiveAdd ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:29 move second child to first child ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 subgroupInclusiveAdd ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:30 move second child to first child ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 subgroupInclusiveAdd ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:31 move second child to first child ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 subgroupInclusiveAdd ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:32 move second child to first child ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 subgroupInclusiveAdd ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:34 move second child to first child ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 subgroupInclusiveMul ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:35 move second child to first child ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 subgroupInclusiveMul ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:36 move second child to first child ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 subgroupInclusiveMul ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:37 move second child to first child ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 subgroupInclusiveMul ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:39 move second child to first child ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 subgroupInclusiveMul ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:40 move second child to first child ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 subgroupInclusiveMul ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:41 move second child to first child ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 subgroupInclusiveMul ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:42 move second child to first child ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 subgroupInclusiveMul ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 subgroupInclusiveMul ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 subgroupInclusiveMul ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:46 move second child to first child ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 subgroupInclusiveMul ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 subgroupInclusiveMul ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:49 move second child to first child ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 subgroupInclusiveMul ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:50 move second child to first child ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 subgroupInclusiveMul ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:51 move second child to first child ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 subgroupInclusiveMul ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:52 move second child to first child ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 subgroupInclusiveMul ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:54 move second child to first child ( temp uint)
+0:54 direct index ( temp uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 subgroupBallotInclusiveBitCount ( temp uint)
+0:54 subgroupBallot ( temp 4-component vector of uint)
+0:54 Compare Equal ( temp bool)
+0:54 direct index ( temp uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const uint)
+0:13 Function Definition: CSMain( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 369
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformArithmetic
+ Capability GroupNonUniformBallot
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "CSMain" 364
+ ExecutionMode 4 LocalSize 32 16 1
+ Source HLSL 500
+ Name 4 "CSMain"
+ Name 11 "@CSMain(vu3;"
+ Name 10 "dti"
+ Name 20 "Types"
+ MemberName 20(Types) 0 "u"
+ MemberName 20(Types) 1 "i"
+ MemberName 20(Types) 2 "f"
+ MemberName 20(Types) 3 "d"
+ Name 22 "data"
+ MemberName 22(data) 0 "@data"
+ Name 24 "data"
+ Name 362 "dti"
+ Name 364 "dti"
+ Name 366 "param"
+ MemberDecorate 20(Types) 0 Offset 0
+ MemberDecorate 20(Types) 1 Offset 16
+ MemberDecorate 20(Types) 2 Offset 32
+ MemberDecorate 20(Types) 3 Offset 64
+ Decorate 21 ArrayStride 96
+ MemberDecorate 22(data) 0 Offset 0
+ Decorate 22(data) BufferBlock
+ Decorate 24(data) DescriptorSet 0
+ Decorate 364(dti) BuiltIn GlobalInvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeVector 6(int) 4
+ 14: TypeInt 32 1
+ 15: TypeVector 14(int) 4
+ 16: TypeFloat 32
+ 17: TypeVector 16(float) 4
+ 18: TypeFloat 64
+ 19: TypeVector 18(float) 4
+ 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(fvec4)
+ 21: TypeRuntimeArray 20(Types)
+ 22(data): TypeStruct 21
+ 23: TypePointer Uniform 22(data)
+ 24(data): 23(ptr) Variable Uniform
+ 25: 14(int) Constant 0
+ 26: 6(int) Constant 0
+ 27: TypePointer Function 6(int)
+ 32: TypePointer Uniform 13(ivec4)
+ 35: 6(int) Constant 3
+ 42: TypePointer Uniform 6(int)
+ 51: TypeVector 6(int) 2
+ 72: 14(int) Constant 1
+ 75: TypePointer Uniform 15(ivec4)
+ 84: TypePointer Uniform 14(int)
+ 93: TypeVector 14(int) 2
+ 105: TypeVector 14(int) 3
+ 115: 14(int) Constant 2
+ 118: TypePointer Uniform 17(fvec4)
+ 127: TypePointer Uniform 16(float)
+ 136: TypeVector 16(float) 2
+ 148: TypeVector 16(float) 3
+ 158: 14(int) Constant 3
+ 161: TypePointer Uniform 19(fvec4)
+ 170: TypePointer Uniform 18(float)
+ 179: TypeVector 18(float) 2
+ 191: TypeVector 18(float) 3
+ 357: TypeBool
+ 363: TypePointer Input 7(ivec3)
+ 364(dti): 363(ptr) Variable Input
+ 4(CSMain): 2 Function None 3
+ 5: Label
+ 362(dti): 8(ptr) Variable Function
+ 366(param): 8(ptr) Variable Function
+ 365: 7(ivec3) Load 364(dti)
+ Store 362(dti) 365
+ 367: 7(ivec3) Load 362(dti)
+ Store 366(param) 367
+ 368: 2 FunctionCall 11(@CSMain(vu3;) 366(param)
+ Return
+ FunctionEnd
+11(@CSMain(vu3;): 2 Function None 9
+ 10(dti): 8(ptr) FunctionParameter
+ 12: Label
+ 28: 27(ptr) AccessChain 10(dti) 26
+ 29: 6(int) Load 28
+ 30: 27(ptr) AccessChain 10(dti) 26
+ 31: 6(int) Load 30
+ 33: 32(ptr) AccessChain 24(data) 25 31 25
+ 34: 13(ivec4) Load 33
+ 36: 13(ivec4) GroupNonUniformIAdd 35 InclusiveScan 34
+ 37: 32(ptr) AccessChain 24(data) 25 29 25
+ Store 37 36
+ 38: 27(ptr) AccessChain 10(dti) 26
+ 39: 6(int) Load 38
+ 40: 27(ptr) AccessChain 10(dti) 26
+ 41: 6(int) Load 40
+ 43: 42(ptr) AccessChain 24(data) 25 41 25 26
+ 44: 6(int) Load 43
+ 45: 6(int) GroupNonUniformIAdd 35 InclusiveScan 44
+ 46: 42(ptr) AccessChain 24(data) 25 39 25 26
+ Store 46 45
+ 47: 27(ptr) AccessChain 10(dti) 26
+ 48: 6(int) Load 47
+ 49: 27(ptr) AccessChain 10(dti) 26
+ 50: 6(int) Load 49
+ 52: 32(ptr) AccessChain 24(data) 25 50 25
+ 53: 13(ivec4) Load 52
+ 54: 51(ivec2) VectorShuffle 53 53 0 1
+ 55: 51(ivec2) GroupNonUniformIAdd 35 InclusiveScan 54
+ 56: 32(ptr) AccessChain 24(data) 25 48 25
+ 57: 13(ivec4) Load 56
+ 58: 13(ivec4) VectorShuffle 57 55 4 5 2 3
+ Store 56 58
+ 59: 27(ptr) AccessChain 10(dti) 26
+ 60: 6(int) Load 59
+ 61: 27(ptr) AccessChain 10(dti) 26
+ 62: 6(int) Load 61
+ 63: 32(ptr) AccessChain 24(data) 25 62 25
+ 64: 13(ivec4) Load 63
+ 65: 7(ivec3) VectorShuffle 64 64 0 1 2
+ 66: 7(ivec3) GroupNonUniformIAdd 35 InclusiveScan 65
+ 67: 32(ptr) AccessChain 24(data) 25 60 25
+ 68: 13(ivec4) Load 67
+ 69: 13(ivec4) VectorShuffle 68 66 4 5 6 3
+ Store 67 69
+ 70: 27(ptr) AccessChain 10(dti) 26
+ 71: 6(int) Load 70
+ 73: 27(ptr) AccessChain 10(dti) 26
+ 74: 6(int) Load 73
+ 76: 75(ptr) AccessChain 24(data) 25 74 72
+ 77: 15(ivec4) Load 76
+ 78: 15(ivec4) GroupNonUniformIAdd 35 InclusiveScan 77
+ 79: 75(ptr) AccessChain 24(data) 25 71 72
+ Store 79 78
+ 80: 27(ptr) AccessChain 10(dti) 26
+ 81: 6(int) Load 80
+ 82: 27(ptr) AccessChain 10(dti) 26
+ 83: 6(int) Load 82
+ 85: 84(ptr) AccessChain 24(data) 25 83 72 26
+ 86: 14(int) Load 85
+ 87: 14(int) GroupNonUniformIAdd 35 InclusiveScan 86
+ 88: 84(ptr) AccessChain 24(data) 25 81 72 26
+ Store 88 87
+ 89: 27(ptr) AccessChain 10(dti) 26
+ 90: 6(int) Load 89
+ 91: 27(ptr) AccessChain 10(dti) 26
+ 92: 6(int) Load 91
+ 94: 75(ptr) AccessChain 24(data) 25 92 72
+ 95: 15(ivec4) Load 94
+ 96: 93(ivec2) VectorShuffle 95 95 0 1
+ 97: 93(ivec2) GroupNonUniformIAdd 35 InclusiveScan 96
+ 98: 75(ptr) AccessChain 24(data) 25 90 72
+ 99: 15(ivec4) Load 98
+ 100: 15(ivec4) VectorShuffle 99 97 4 5 2 3
+ Store 98 100
+ 101: 27(ptr) AccessChain 10(dti) 26
+ 102: 6(int) Load 101
+ 103: 27(ptr) AccessChain 10(dti) 26
+ 104: 6(int) Load 103
+ 106: 75(ptr) AccessChain 24(data) 25 104 72
+ 107: 15(ivec4) Load 106
+ 108: 105(ivec3) VectorShuffle 107 107 0 1 2
+ 109: 105(ivec3) GroupNonUniformIAdd 35 InclusiveScan 108
+ 110: 75(ptr) AccessChain 24(data) 25 102 72
+ 111: 15(ivec4) Load 110
+ 112: 15(ivec4) VectorShuffle 111 109 4 5 6 3
+ Store 110 112
+ 113: 27(ptr) AccessChain 10(dti) 26
+ 114: 6(int) Load 113
+ 116: 27(ptr) AccessChain 10(dti) 26
+ 117: 6(int) Load 116
+ 119: 118(ptr) AccessChain 24(data) 25 117 115
+ 120: 17(fvec4) Load 119
+ 121: 17(fvec4) GroupNonUniformFAdd 35 InclusiveScan 120
+ 122: 118(ptr) AccessChain 24(data) 25 114 115
+ Store 122 121
+ 123: 27(ptr) AccessChain 10(dti) 26
+ 124: 6(int) Load 123
+ 125: 27(ptr) AccessChain 10(dti) 26
+ 126: 6(int) Load 125
+ 128: 127(ptr) AccessChain 24(data) 25 126 115 26
+ 129: 16(float) Load 128
+ 130: 16(float) GroupNonUniformFAdd 35 InclusiveScan 129
+ 131: 127(ptr) AccessChain 24(data) 25 124 115 26
+ Store 131 130
+ 132: 27(ptr) AccessChain 10(dti) 26
+ 133: 6(int) Load 132
+ 134: 27(ptr) AccessChain 10(dti) 26
+ 135: 6(int) Load 134
+ 137: 118(ptr) AccessChain 24(data) 25 135 115
+ 138: 17(fvec4) Load 137
+ 139: 136(fvec2) VectorShuffle 138 138 0 1
+ 140: 136(fvec2) GroupNonUniformFAdd 35 InclusiveScan 139
+ 141: 118(ptr) AccessChain 24(data) 25 133 115
+ 142: 17(fvec4) Load 141
+ 143: 17(fvec4) VectorShuffle 142 140 4 5 2 3
+ Store 141 143
+ 144: 27(ptr) AccessChain 10(dti) 26
+ 145: 6(int) Load 144
+ 146: 27(ptr) AccessChain 10(dti) 26
+ 147: 6(int) Load 146
+ 149: 118(ptr) AccessChain 24(data) 25 147 115
+ 150: 17(fvec4) Load 149
+ 151: 148(fvec3) VectorShuffle 150 150 0 1 2
+ 152: 148(fvec3) GroupNonUniformFAdd 35 InclusiveScan 151
+ 153: 118(ptr) AccessChain 24(data) 25 145 115
+ 154: 17(fvec4) Load 153
+ 155: 17(fvec4) VectorShuffle 154 152 4 5 6 3
+ Store 153 155
+ 156: 27(ptr) AccessChain 10(dti) 26
+ 157: 6(int) Load 156
+ 159: 27(ptr) AccessChain 10(dti) 26
+ 160: 6(int) Load 159
+ 162: 161(ptr) AccessChain 24(data) 25 160 158
+ 163: 19(fvec4) Load 162
+ 164: 19(fvec4) GroupNonUniformFAdd 35 InclusiveScan 163
+ 165: 161(ptr) AccessChain 24(data) 25 157 158
+ Store 165 164
+ 166: 27(ptr) AccessChain 10(dti) 26
+ 167: 6(int) Load 166
+ 168: 27(ptr) AccessChain 10(dti) 26
+ 169: 6(int) Load 168
+ 171: 170(ptr) AccessChain 24(data) 25 169 158 26
+ 172: 18(float) Load 171
+ 173: 18(float) GroupNonUniformFAdd 35 InclusiveScan 172
+ 174: 170(ptr) AccessChain 24(data) 25 167 158 26
+ Store 174 173
+ 175: 27(ptr) AccessChain 10(dti) 26
+ 176: 6(int) Load 175
+ 177: 27(ptr) AccessChain 10(dti) 26
+ 178: 6(int) Load 177
+ 180: 161(ptr) AccessChain 24(data) 25 178 158
+ 181: 19(fvec4) Load 180
+ 182: 179(fvec2) VectorShuffle 181 181 0 1
+ 183: 179(fvec2) GroupNonUniformFAdd 35 InclusiveScan 182
+ 184: 161(ptr) AccessChain 24(data) 25 176 158
+ 185: 19(fvec4) Load 184
+ 186: 19(fvec4) VectorShuffle 185 183 4 5 2 3
+ Store 184 186
+ 187: 27(ptr) AccessChain 10(dti) 26
+ 188: 6(int) Load 187
+ 189: 27(ptr) AccessChain 10(dti) 26
+ 190: 6(int) Load 189
+ 192: 161(ptr) AccessChain 24(data) 25 190 158
+ 193: 19(fvec4) Load 192
+ 194: 191(fvec3) VectorShuffle 193 193 0 1 2
+ 195: 191(fvec3) GroupNonUniformFAdd 35 InclusiveScan 194
+ 196: 161(ptr) AccessChain 24(data) 25 188 158
+ 197: 19(fvec4) Load 196
+ 198: 19(fvec4) VectorShuffle 197 195 4 5 6 3
+ Store 196 198
+ 199: 27(ptr) AccessChain 10(dti) 26
+ 200: 6(int) Load 199
+ 201: 27(ptr) AccessChain 10(dti) 26
+ 202: 6(int) Load 201
+ 203: 32(ptr) AccessChain 24(data) 25 202 25
+ 204: 13(ivec4) Load 203
+ 205: 13(ivec4) GroupNonUniformIMul 35 InclusiveScan 204
+ 206: 32(ptr) AccessChain 24(data) 25 200 25
+ Store 206 205
+ 207: 27(ptr) AccessChain 10(dti) 26
+ 208: 6(int) Load 207
+ 209: 27(ptr) AccessChain 10(dti) 26
+ 210: 6(int) Load 209
+ 211: 42(ptr) AccessChain 24(data) 25 210 25 26
+ 212: 6(int) Load 211
+ 213: 6(int) GroupNonUniformIMul 35 InclusiveScan 212
+ 214: 42(ptr) AccessChain 24(data) 25 208 25 26
+ Store 214 213
+ 215: 27(ptr) AccessChain 10(dti) 26
+ 216: 6(int) Load 215
+ 217: 27(ptr) AccessChain 10(dti) 26
+ 218: 6(int) Load 217
+ 219: 32(ptr) AccessChain 24(data) 25 218 25
+ 220: 13(ivec4) Load 219
+ 221: 51(ivec2) VectorShuffle 220 220 0 1
+ 222: 51(ivec2) GroupNonUniformIMul 35 InclusiveScan 221
+ 223: 32(ptr) AccessChain 24(data) 25 216 25
+ 224: 13(ivec4) Load 223
+ 225: 13(ivec4) VectorShuffle 224 222 4 5 2 3
+ Store 223 225
+ 226: 27(ptr) AccessChain 10(dti) 26
+ 227: 6(int) Load 226
+ 228: 27(ptr) AccessChain 10(dti) 26
+ 229: 6(int) Load 228
+ 230: 32(ptr) AccessChain 24(data) 25 229 25
+ 231: 13(ivec4) Load 230
+ 232: 7(ivec3) VectorShuffle 231 231 0 1 2
+ 233: 7(ivec3) GroupNonUniformIMul 35 InclusiveScan 232
+ 234: 32(ptr) AccessChain 24(data) 25 227 25
+ 235: 13(ivec4) Load 234
+ 236: 13(ivec4) VectorShuffle 235 233 4 5 6 3
+ Store 234 236
+ 237: 27(ptr) AccessChain 10(dti) 26
+ 238: 6(int) Load 237
+ 239: 27(ptr) AccessChain 10(dti) 26
+ 240: 6(int) Load 239
+ 241: 75(ptr) AccessChain 24(data) 25 240 72
+ 242: 15(ivec4) Load 241
+ 243: 15(ivec4) GroupNonUniformIMul 35 InclusiveScan 242
+ 244: 75(ptr) AccessChain 24(data) 25 238 72
+ Store 244 243
+ 245: 27(ptr) AccessChain 10(dti) 26
+ 246: 6(int) Load 245
+ 247: 27(ptr) AccessChain 10(dti) 26
+ 248: 6(int) Load 247
+ 249: 84(ptr) AccessChain 24(data) 25 248 72 26
+ 250: 14(int) Load 249
+ 251: 14(int) GroupNonUniformIMul 35 InclusiveScan 250
+ 252: 84(ptr) AccessChain 24(data) 25 246 72 26
+ Store 252 251
+ 253: 27(ptr) AccessChain 10(dti) 26
+ 254: 6(int) Load 253
+ 255: 27(ptr) AccessChain 10(dti) 26
+ 256: 6(int) Load 255
+ 257: 75(ptr) AccessChain 24(data) 25 256 72
+ 258: 15(ivec4) Load 257
+ 259: 93(ivec2) VectorShuffle 258 258 0 1
+ 260: 93(ivec2) GroupNonUniformIMul 35 InclusiveScan 259
+ 261: 75(ptr) AccessChain 24(data) 25 254 72
+ 262: 15(ivec4) Load 261
+ 263: 15(ivec4) VectorShuffle 262 260 4 5 2 3
+ Store 261 263
+ 264: 27(ptr) AccessChain 10(dti) 26
+ 265: 6(int) Load 264
+ 266: 27(ptr) AccessChain 10(dti) 26
+ 267: 6(int) Load 266
+ 268: 75(ptr) AccessChain 24(data) 25 267 72
+ 269: 15(ivec4) Load 268
+ 270: 105(ivec3) VectorShuffle 269 269 0 1 2
+ 271: 105(ivec3) GroupNonUniformIMul 35 InclusiveScan 270
+ 272: 75(ptr) AccessChain 24(data) 25 265 72
+ 273: 15(ivec4) Load 272
+ 274: 15(ivec4) VectorShuffle 273 271 4 5 6 3
+ Store 272 274
+ 275: 27(ptr) AccessChain 10(dti) 26
+ 276: 6(int) Load 275
+ 277: 27(ptr) AccessChain 10(dti) 26
+ 278: 6(int) Load 277
+ 279: 118(ptr) AccessChain 24(data) 25 278 115
+ 280: 17(fvec4) Load 279
+ 281: 17(fvec4) GroupNonUniformFMul 35 InclusiveScan 280
+ 282: 118(ptr) AccessChain 24(data) 25 276 115
+ Store 282 281
+ 283: 27(ptr) AccessChain 10(dti) 26
+ 284: 6(int) Load 283
+ 285: 27(ptr) AccessChain 10(dti) 26
+ 286: 6(int) Load 285
+ 287: 127(ptr) AccessChain 24(data) 25 286 115 26
+ 288: 16(float) Load 287
+ 289: 16(float) GroupNonUniformFMul 35 InclusiveScan 288
+ 290: 127(ptr) AccessChain 24(data) 25 284 115 26
+ Store 290 289
+ 291: 27(ptr) AccessChain 10(dti) 26
+ 292: 6(int) Load 291
+ 293: 27(ptr) AccessChain 10(dti) 26
+ 294: 6(int) Load 293
+ 295: 118(ptr) AccessChain 24(data) 25 294 115
+ 296: 17(fvec4) Load 295
+ 297: 136(fvec2) VectorShuffle 296 296 0 1
+ 298: 136(fvec2) GroupNonUniformFMul 35 InclusiveScan 297
+ 299: 118(ptr) AccessChain 24(data) 25 292 115
+ 300: 17(fvec4) Load 299
+ 301: 17(fvec4) VectorShuffle 300 298 4 5 2 3
+ Store 299 301
+ 302: 27(ptr) AccessChain 10(dti) 26
+ 303: 6(int) Load 302
+ 304: 27(ptr) AccessChain 10(dti) 26
+ 305: 6(int) Load 304
+ 306: 118(ptr) AccessChain 24(data) 25 305 115
+ 307: 17(fvec4) Load 306
+ 308: 148(fvec3) VectorShuffle 307 307 0 1 2
+ 309: 148(fvec3) GroupNonUniformFMul 35 InclusiveScan 308
+ 310: 118(ptr) AccessChain 24(data) 25 303 115
+ 311: 17(fvec4) Load 310
+ 312: 17(fvec4) VectorShuffle 311 309 4 5 6 3
+ Store 310 312
+ 313: 27(ptr) AccessChain 10(dti) 26
+ 314: 6(int) Load 313
+ 315: 27(ptr) AccessChain 10(dti) 26
+ 316: 6(int) Load 315
+ 317: 161(ptr) AccessChain 24(data) 25 316 158
+ 318: 19(fvec4) Load 317
+ 319: 19(fvec4) GroupNonUniformFMul 35 InclusiveScan 318
+ 320: 161(ptr) AccessChain 24(data) 25 314 158
+ Store 320 319
+ 321: 27(ptr) AccessChain 10(dti) 26
+ 322: 6(int) Load 321
+ 323: 27(ptr) AccessChain 10(dti) 26
+ 324: 6(int) Load 323
+ 325: 170(ptr) AccessChain 24(data) 25 324 158 26
+ 326: 18(float) Load 325
+ 327: 18(float) GroupNonUniformFMul 35 InclusiveScan 326
+ 328: 170(ptr) AccessChain 24(data) 25 322 158 26
+ Store 328 327
+ 329: 27(ptr) AccessChain 10(dti) 26
+ 330: 6(int) Load 329
+ 331: 27(ptr) AccessChain 10(dti) 26
+ 332: 6(int) Load 331
+ 333: 161(ptr) AccessChain 24(data) 25 332 158
+ 334: 19(fvec4) Load 333
+ 335: 179(fvec2) VectorShuffle 334 334 0 1
+ 336: 179(fvec2) GroupNonUniformFMul 35 InclusiveScan 335
+ 337: 161(ptr) AccessChain 24(data) 25 330 158
+ 338: 19(fvec4) Load 337
+ 339: 19(fvec4) VectorShuffle 338 336 4 5 2 3
+ Store 337 339
+ 340: 27(ptr) AccessChain 10(dti) 26
+ 341: 6(int) Load 340
+ 342: 27(ptr) AccessChain 10(dti) 26
+ 343: 6(int) Load 342
+ 344: 161(ptr) AccessChain 24(data) 25 343 158
+ 345: 19(fvec4) Load 344
+ 346: 191(fvec3) VectorShuffle 345 345 0 1 2
+ 347: 191(fvec3) GroupNonUniformFMul 35 InclusiveScan 346
+ 348: 161(ptr) AccessChain 24(data) 25 341 158
+ 349: 19(fvec4) Load 348
+ 350: 19(fvec4) VectorShuffle 349 347 4 5 6 3
+ Store 348 350
+ 351: 27(ptr) AccessChain 10(dti) 26
+ 352: 6(int) Load 351
+ 353: 27(ptr) AccessChain 10(dti) 26
+ 354: 6(int) Load 353
+ 355: 42(ptr) AccessChain 24(data) 25 354 25 26
+ 356: 6(int) Load 355
+ 358: 357(bool) IEqual 356 26
+ 359: 13(ivec4) GroupNonUniformBallot 35 358
+ 360: 6(int) GroupNonUniformBallotBitCount 35 InclusiveScan 359
+ 361: 42(ptr) AccessChain 24(data) 25 352 25 26
+ Store 361 360
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out
new file mode 100644
index 0000000..125a2c4
--- /dev/null
+++ b/Test/baseResults/hlsl.wavequad.comp.out
@@ -0,0 +1,9299 @@
+hlsl.wavequad.comp
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:13 Function Definition: @CSMain(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 subgroupQuadBroadcast ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const uint)
+0:15 move second child to first child ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 subgroupQuadBroadcast ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const uint)
+0:16 move second child to first child ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 subgroupQuadBroadcast ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 0 (const uint)
+0:17 move second child to first child ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 subgroupQuadBroadcast ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 0 (const uint)
+0:19 move second child to first child ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 subgroupQuadBroadcast ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 Constant:
+0:19 0 (const uint)
+0:20 move second child to first child ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 subgroupQuadBroadcast ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 0 (const uint)
+0:21 move second child to first child ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 subgroupQuadBroadcast ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Constant:
+0:21 0 (const uint)
+0:22 move second child to first child ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 subgroupQuadBroadcast ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 Constant:
+0:22 0 (const uint)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 subgroupQuadBroadcast ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 Constant:
+0:24 0 (const uint)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 subgroupQuadBroadcast ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 0 (const uint)
+0:26 move second child to first child ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 subgroupQuadBroadcast ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 Constant:
+0:26 0 (const uint)
+0:27 move second child to first child ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 subgroupQuadBroadcast ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Constant:
+0:27 0 (const uint)
+0:29 move second child to first child ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 subgroupQuadBroadcast ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 Constant:
+0:29 0 (const uint)
+0:30 move second child to first child ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 subgroupQuadBroadcast ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 0 (const uint)
+0:31 move second child to first child ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 subgroupQuadBroadcast ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 Constant:
+0:31 0 (const uint)
+0:32 move second child to first child ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 subgroupQuadBroadcast ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 Constant:
+0:32 0 (const uint)
+0:34 move second child to first child ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 subgroupQuadBroadcast ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const uint)
+0:35 move second child to first child ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 subgroupQuadBroadcast ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 1 (const uint)
+0:36 move second child to first child ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 subgroupQuadBroadcast ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 Constant:
+0:36 1 (const uint)
+0:37 move second child to first child ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 subgroupQuadBroadcast ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 Constant:
+0:37 1 (const uint)
+0:39 move second child to first child ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 subgroupQuadBroadcast ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 Constant:
+0:39 1 (const uint)
+0:40 move second child to first child ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 subgroupQuadBroadcast ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const uint)
+0:41 move second child to first child ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 subgroupQuadBroadcast ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Constant:
+0:41 1 (const uint)
+0:42 move second child to first child ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 subgroupQuadBroadcast ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 Constant:
+0:42 1 (const uint)
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 subgroupQuadBroadcast ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 Constant:
+0:44 1 (const uint)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 subgroupQuadBroadcast ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 1 (const uint)
+0:46 move second child to first child ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 subgroupQuadBroadcast ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 Constant:
+0:46 1 (const uint)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 subgroupQuadBroadcast ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Constant:
+0:47 1 (const uint)
+0:49 move second child to first child ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 subgroupQuadBroadcast ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 Constant:
+0:49 1 (const uint)
+0:50 move second child to first child ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 subgroupQuadBroadcast ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 1 (const uint)
+0:51 move second child to first child ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 subgroupQuadBroadcast ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 Constant:
+0:51 1 (const uint)
+0:52 move second child to first child ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 subgroupQuadBroadcast ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 Constant:
+0:52 1 (const uint)
+0:54 move second child to first child ( temp 4-component vector of uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 subgroupQuadBroadcast ( temp 4-component vector of uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 2 (const uint)
+0:55 move second child to first child ( temp uint)
+0:55 direct index ( temp uint)
+0:55 u: direct index for structure ( temp 4-component vector of uint)
+0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:55 Constant:
+0:55 0 (const uint)
+0:55 direct index ( temp uint)
+0:55 'dti' ( in 3-component vector of uint)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 subgroupQuadBroadcast ( temp uint)
+0:55 direct index ( temp uint)
+0:55 u: direct index for structure ( temp 4-component vector of uint)
+0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:55 Constant:
+0:55 0 (const uint)
+0:55 direct index ( temp uint)
+0:55 'dti' ( in 3-component vector of uint)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 2 (const uint)
+0:56 move second child to first child ( temp 2-component vector of uint)
+0:56 vector swizzle ( temp 2-component vector of uint)
+0:56 u: direct index for structure ( temp 4-component vector of uint)
+0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 direct index ( temp uint)
+0:56 'dti' ( in 3-component vector of uint)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Sequence
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 1 (const int)
+0:56 subgroupQuadBroadcast ( temp 2-component vector of uint)
+0:56 vector swizzle ( temp 2-component vector of uint)
+0:56 u: direct index for structure ( temp 4-component vector of uint)
+0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 direct index ( temp uint)
+0:56 'dti' ( in 3-component vector of uint)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Sequence
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 1 (const int)
+0:56 Constant:
+0:56 2 (const uint)
+0:57 move second child to first child ( temp 3-component vector of uint)
+0:57 vector swizzle ( temp 3-component vector of uint)
+0:57 u: direct index for structure ( temp 4-component vector of uint)
+0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:57 Constant:
+0:57 0 (const uint)
+0:57 direct index ( temp uint)
+0:57 'dti' ( in 3-component vector of uint)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Sequence
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 Constant:
+0:57 2 (const int)
+0:57 subgroupQuadBroadcast ( temp 3-component vector of uint)
+0:57 vector swizzle ( temp 3-component vector of uint)
+0:57 u: direct index for structure ( temp 4-component vector of uint)
+0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:57 Constant:
+0:57 0 (const uint)
+0:57 direct index ( temp uint)
+0:57 'dti' ( in 3-component vector of uint)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Sequence
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 Constant:
+0:57 2 (const int)
+0:57 Constant:
+0:57 2 (const uint)
+0:59 move second child to first child ( temp 4-component vector of int)
+0:59 i: direct index for structure ( temp 4-component vector of int)
+0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:59 Constant:
+0:59 0 (const uint)
+0:59 direct index ( temp uint)
+0:59 'dti' ( in 3-component vector of uint)
+0:59 Constant:
+0:59 0 (const int)
+0:59 Constant:
+0:59 1 (const int)
+0:59 subgroupQuadBroadcast ( temp 4-component vector of int)
+0:59 i: direct index for structure ( temp 4-component vector of int)
+0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:59 Constant:
+0:59 0 (const uint)
+0:59 direct index ( temp uint)
+0:59 'dti' ( in 3-component vector of uint)
+0:59 Constant:
+0:59 0 (const int)
+0:59 Constant:
+0:59 1 (const int)
+0:59 Constant:
+0:59 2 (const uint)
+0:60 move second child to first child ( temp int)
+0:60 direct index ( temp int)
+0:60 i: direct index for structure ( temp 4-component vector of int)
+0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:60 Constant:
+0:60 0 (const uint)
+0:60 direct index ( temp uint)
+0:60 'dti' ( in 3-component vector of uint)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 1 (const int)
+0:60 Constant:
+0:60 0 (const int)
+0:60 subgroupQuadBroadcast ( temp int)
+0:60 direct index ( temp int)
+0:60 i: direct index for structure ( temp 4-component vector of int)
+0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:60 Constant:
+0:60 0 (const uint)
+0:60 direct index ( temp uint)
+0:60 'dti' ( in 3-component vector of uint)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 1 (const int)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 2 (const uint)
+0:61 move second child to first child ( temp 2-component vector of int)
+0:61 vector swizzle ( temp 2-component vector of int)
+0:61 i: direct index for structure ( temp 4-component vector of int)
+0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:61 Constant:
+0:61 0 (const uint)
+0:61 direct index ( temp uint)
+0:61 'dti' ( in 3-component vector of uint)
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Sequence
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 subgroupQuadBroadcast ( temp 2-component vector of int)
+0:61 vector swizzle ( temp 2-component vector of int)
+0:61 i: direct index for structure ( temp 4-component vector of int)
+0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:61 Constant:
+0:61 0 (const uint)
+0:61 direct index ( temp uint)
+0:61 'dti' ( in 3-component vector of uint)
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Sequence
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Constant:
+0:61 2 (const uint)
+0:62 move second child to first child ( temp 3-component vector of int)
+0:62 vector swizzle ( temp 3-component vector of int)
+0:62 i: direct index for structure ( temp 4-component vector of int)
+0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:62 Constant:
+0:62 0 (const uint)
+0:62 direct index ( temp uint)
+0:62 'dti' ( in 3-component vector of uint)
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Sequence
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Constant:
+0:62 2 (const int)
+0:62 subgroupQuadBroadcast ( temp 3-component vector of int)
+0:62 vector swizzle ( temp 3-component vector of int)
+0:62 i: direct index for structure ( temp 4-component vector of int)
+0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:62 Constant:
+0:62 0 (const uint)
+0:62 direct index ( temp uint)
+0:62 'dti' ( in 3-component vector of uint)
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Sequence
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Constant:
+0:62 2 (const int)
+0:62 Constant:
+0:62 2 (const uint)
+0:64 move second child to first child ( temp 4-component vector of float)
+0:64 f: direct index for structure ( temp 4-component vector of float)
+0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:64 Constant:
+0:64 0 (const uint)
+0:64 direct index ( temp uint)
+0:64 'dti' ( in 3-component vector of uint)
+0:64 Constant:
+0:64 0 (const int)
+0:64 Constant:
+0:64 2 (const int)
+0:64 subgroupQuadBroadcast ( temp 4-component vector of float)
+0:64 f: direct index for structure ( temp 4-component vector of float)
+0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:64 Constant:
+0:64 0 (const uint)
+0:64 direct index ( temp uint)
+0:64 'dti' ( in 3-component vector of uint)
+0:64 Constant:
+0:64 0 (const int)
+0:64 Constant:
+0:64 2 (const int)
+0:64 Constant:
+0:64 2 (const uint)
+0:65 move second child to first child ( temp float)
+0:65 direct index ( temp float)
+0:65 f: direct index for structure ( temp 4-component vector of float)
+0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:65 Constant:
+0:65 0 (const uint)
+0:65 direct index ( temp uint)
+0:65 'dti' ( in 3-component vector of uint)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const int)
+0:65 Constant:
+0:65 0 (const int)
+0:65 subgroupQuadBroadcast ( temp float)
+0:65 direct index ( temp float)
+0:65 f: direct index for structure ( temp 4-component vector of float)
+0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:65 Constant:
+0:65 0 (const uint)
+0:65 direct index ( temp uint)
+0:65 'dti' ( in 3-component vector of uint)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const int)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const uint)
+0:66 move second child to first child ( temp 2-component vector of float)
+0:66 vector swizzle ( temp 2-component vector of float)
+0:66 f: direct index for structure ( temp 4-component vector of float)
+0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:66 Constant:
+0:66 0 (const uint)
+0:66 direct index ( temp uint)
+0:66 'dti' ( in 3-component vector of uint)
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 2 (const int)
+0:66 Sequence
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 1 (const int)
+0:66 subgroupQuadBroadcast ( temp 2-component vector of float)
+0:66 vector swizzle ( temp 2-component vector of float)
+0:66 f: direct index for structure ( temp 4-component vector of float)
+0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:66 Constant:
+0:66 0 (const uint)
+0:66 direct index ( temp uint)
+0:66 'dti' ( in 3-component vector of uint)
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 2 (const int)
+0:66 Sequence
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 1 (const int)
+0:66 Constant:
+0:66 2 (const uint)
+0:67 move second child to first child ( temp 3-component vector of float)
+0:67 vector swizzle ( temp 3-component vector of float)
+0:67 f: direct index for structure ( temp 4-component vector of float)
+0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:67 Constant:
+0:67 0 (const uint)
+0:67 direct index ( temp uint)
+0:67 'dti' ( in 3-component vector of uint)
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Sequence
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 1 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 subgroupQuadBroadcast ( temp 3-component vector of float)
+0:67 vector swizzle ( temp 3-component vector of float)
+0:67 f: direct index for structure ( temp 4-component vector of float)
+0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:67 Constant:
+0:67 0 (const uint)
+0:67 direct index ( temp uint)
+0:67 'dti' ( in 3-component vector of uint)
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Sequence
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 1 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Constant:
+0:67 2 (const uint)
+0:69 move second child to first child ( temp 4-component vector of double)
+0:69 d: direct index for structure ( temp 4-component vector of double)
+0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:69 Constant:
+0:69 0 (const uint)
+0:69 direct index ( temp uint)
+0:69 'dti' ( in 3-component vector of uint)
+0:69 Constant:
+0:69 0 (const int)
+0:69 Constant:
+0:69 3 (const int)
+0:69 subgroupQuadBroadcast ( temp 4-component vector of double)
+0:69 d: direct index for structure ( temp 4-component vector of double)
+0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:69 Constant:
+0:69 0 (const uint)
+0:69 direct index ( temp uint)
+0:69 'dti' ( in 3-component vector of uint)
+0:69 Constant:
+0:69 0 (const int)
+0:69 Constant:
+0:69 3 (const int)
+0:69 Constant:
+0:69 2 (const uint)
+0:70 move second child to first child ( temp double)
+0:70 direct index ( temp double)
+0:70 d: direct index for structure ( temp 4-component vector of double)
+0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:70 Constant:
+0:70 0 (const uint)
+0:70 direct index ( temp uint)
+0:70 'dti' ( in 3-component vector of uint)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 3 (const int)
+0:70 Constant:
+0:70 0 (const int)
+0:70 subgroupQuadBroadcast ( temp double)
+0:70 direct index ( temp double)
+0:70 d: direct index for structure ( temp 4-component vector of double)
+0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:70 Constant:
+0:70 0 (const uint)
+0:70 direct index ( temp uint)
+0:70 'dti' ( in 3-component vector of uint)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 3 (const int)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 2 (const uint)
+0:71 move second child to first child ( temp 2-component vector of double)
+0:71 vector swizzle ( temp 2-component vector of double)
+0:71 d: direct index for structure ( temp 4-component vector of double)
+0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:71 Constant:
+0:71 0 (const uint)
+0:71 direct index ( temp uint)
+0:71 'dti' ( in 3-component vector of uint)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 3 (const int)
+0:71 Sequence
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 1 (const int)
+0:71 subgroupQuadBroadcast ( temp 2-component vector of double)
+0:71 vector swizzle ( temp 2-component vector of double)
+0:71 d: direct index for structure ( temp 4-component vector of double)
+0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:71 Constant:
+0:71 0 (const uint)
+0:71 direct index ( temp uint)
+0:71 'dti' ( in 3-component vector of uint)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 3 (const int)
+0:71 Sequence
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 1 (const int)
+0:71 Constant:
+0:71 2 (const uint)
+0:72 move second child to first child ( temp 3-component vector of double)
+0:72 vector swizzle ( temp 3-component vector of double)
+0:72 d: direct index for structure ( temp 4-component vector of double)
+0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:72 Constant:
+0:72 0 (const uint)
+0:72 direct index ( temp uint)
+0:72 'dti' ( in 3-component vector of uint)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 3 (const int)
+0:72 Sequence
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 1 (const int)
+0:72 Constant:
+0:72 2 (const int)
+0:72 subgroupQuadBroadcast ( temp 3-component vector of double)
+0:72 vector swizzle ( temp 3-component vector of double)
+0:72 d: direct index for structure ( temp 4-component vector of double)
+0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:72 Constant:
+0:72 0 (const uint)
+0:72 direct index ( temp uint)
+0:72 'dti' ( in 3-component vector of uint)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 3 (const int)
+0:72 Sequence
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 1 (const int)
+0:72 Constant:
+0:72 2 (const int)
+0:72 Constant:
+0:72 2 (const uint)
+0:74 move second child to first child ( temp 4-component vector of uint)
+0:74 u: direct index for structure ( temp 4-component vector of uint)
+0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:74 Constant:
+0:74 0 (const uint)
+0:74 direct index ( temp uint)
+0:74 'dti' ( in 3-component vector of uint)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 0 (const int)
+0:74 subgroupQuadBroadcast ( temp 4-component vector of uint)
+0:74 u: direct index for structure ( temp 4-component vector of uint)
+0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:74 Constant:
+0:74 0 (const uint)
+0:74 direct index ( temp uint)
+0:74 'dti' ( in 3-component vector of uint)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 3 (const uint)
+0:75 move second child to first child ( temp uint)
+0:75 direct index ( temp uint)
+0:75 u: direct index for structure ( temp 4-component vector of uint)
+0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:75 Constant:
+0:75 0 (const uint)
+0:75 direct index ( temp uint)
+0:75 'dti' ( in 3-component vector of uint)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 subgroupQuadBroadcast ( temp uint)
+0:75 direct index ( temp uint)
+0:75 u: direct index for structure ( temp 4-component vector of uint)
+0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:75 Constant:
+0:75 0 (const uint)
+0:75 direct index ( temp uint)
+0:75 'dti' ( in 3-component vector of uint)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 3 (const uint)
+0:76 move second child to first child ( temp 2-component vector of uint)
+0:76 vector swizzle ( temp 2-component vector of uint)
+0:76 u: direct index for structure ( temp 4-component vector of uint)
+0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:76 Constant:
+0:76 0 (const uint)
+0:76 direct index ( temp uint)
+0:76 'dti' ( in 3-component vector of uint)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Sequence
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 1 (const int)
+0:76 subgroupQuadBroadcast ( temp 2-component vector of uint)
+0:76 vector swizzle ( temp 2-component vector of uint)
+0:76 u: direct index for structure ( temp 4-component vector of uint)
+0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:76 Constant:
+0:76 0 (const uint)
+0:76 direct index ( temp uint)
+0:76 'dti' ( in 3-component vector of uint)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Sequence
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 1 (const int)
+0:76 Constant:
+0:76 3 (const uint)
+0:77 move second child to first child ( temp 3-component vector of uint)
+0:77 vector swizzle ( temp 3-component vector of uint)
+0:77 u: direct index for structure ( temp 4-component vector of uint)
+0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:77 Constant:
+0:77 0 (const uint)
+0:77 direct index ( temp uint)
+0:77 'dti' ( in 3-component vector of uint)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Sequence
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 1 (const int)
+0:77 Constant:
+0:77 2 (const int)
+0:77 subgroupQuadBroadcast ( temp 3-component vector of uint)
+0:77 vector swizzle ( temp 3-component vector of uint)
+0:77 u: direct index for structure ( temp 4-component vector of uint)
+0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:77 Constant:
+0:77 0 (const uint)
+0:77 direct index ( temp uint)
+0:77 'dti' ( in 3-component vector of uint)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Sequence
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 1 (const int)
+0:77 Constant:
+0:77 2 (const int)
+0:77 Constant:
+0:77 3 (const uint)
+0:79 move second child to first child ( temp 4-component vector of int)
+0:79 i: direct index for structure ( temp 4-component vector of int)
+0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:79 Constant:
+0:79 0 (const uint)
+0:79 direct index ( temp uint)
+0:79 'dti' ( in 3-component vector of uint)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 1 (const int)
+0:79 subgroupQuadBroadcast ( temp 4-component vector of int)
+0:79 i: direct index for structure ( temp 4-component vector of int)
+0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:79 Constant:
+0:79 0 (const uint)
+0:79 direct index ( temp uint)
+0:79 'dti' ( in 3-component vector of uint)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 1 (const int)
+0:79 Constant:
+0:79 3 (const uint)
+0:80 move second child to first child ( temp int)
+0:80 direct index ( temp int)
+0:80 i: direct index for structure ( temp 4-component vector of int)
+0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:80 Constant:
+0:80 0 (const uint)
+0:80 direct index ( temp uint)
+0:80 'dti' ( in 3-component vector of uint)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 1 (const int)
+0:80 Constant:
+0:80 0 (const int)
+0:80 subgroupQuadBroadcast ( temp int)
+0:80 direct index ( temp int)
+0:80 i: direct index for structure ( temp 4-component vector of int)
+0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:80 Constant:
+0:80 0 (const uint)
+0:80 direct index ( temp uint)
+0:80 'dti' ( in 3-component vector of uint)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 1 (const int)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 3 (const uint)
+0:81 move second child to first child ( temp 2-component vector of int)
+0:81 vector swizzle ( temp 2-component vector of int)
+0:81 i: direct index for structure ( temp 4-component vector of int)
+0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:81 Constant:
+0:81 0 (const uint)
+0:81 direct index ( temp uint)
+0:81 'dti' ( in 3-component vector of uint)
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Sequence
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 subgroupQuadBroadcast ( temp 2-component vector of int)
+0:81 vector swizzle ( temp 2-component vector of int)
+0:81 i: direct index for structure ( temp 4-component vector of int)
+0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:81 Constant:
+0:81 0 (const uint)
+0:81 direct index ( temp uint)
+0:81 'dti' ( in 3-component vector of uint)
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Sequence
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Constant:
+0:81 3 (const uint)
+0:82 move second child to first child ( temp 3-component vector of int)
+0:82 vector swizzle ( temp 3-component vector of int)
+0:82 i: direct index for structure ( temp 4-component vector of int)
+0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:82 Constant:
+0:82 0 (const uint)
+0:82 direct index ( temp uint)
+0:82 'dti' ( in 3-component vector of uint)
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Sequence
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Constant:
+0:82 2 (const int)
+0:82 subgroupQuadBroadcast ( temp 3-component vector of int)
+0:82 vector swizzle ( temp 3-component vector of int)
+0:82 i: direct index for structure ( temp 4-component vector of int)
+0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:82 Constant:
+0:82 0 (const uint)
+0:82 direct index ( temp uint)
+0:82 'dti' ( in 3-component vector of uint)
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Sequence
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Constant:
+0:82 2 (const int)
+0:82 Constant:
+0:82 3 (const uint)
+0:84 move second child to first child ( temp 4-component vector of float)
+0:84 f: direct index for structure ( temp 4-component vector of float)
+0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:84 Constant:
+0:84 0 (const uint)
+0:84 direct index ( temp uint)
+0:84 'dti' ( in 3-component vector of uint)
+0:84 Constant:
+0:84 0 (const int)
+0:84 Constant:
+0:84 2 (const int)
+0:84 subgroupQuadBroadcast ( temp 4-component vector of float)
+0:84 f: direct index for structure ( temp 4-component vector of float)
+0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:84 Constant:
+0:84 0 (const uint)
+0:84 direct index ( temp uint)
+0:84 'dti' ( in 3-component vector of uint)
+0:84 Constant:
+0:84 0 (const int)
+0:84 Constant:
+0:84 2 (const int)
+0:84 Constant:
+0:84 3 (const uint)
+0:85 move second child to first child ( temp float)
+0:85 direct index ( temp float)
+0:85 f: direct index for structure ( temp 4-component vector of float)
+0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:85 Constant:
+0:85 0 (const uint)
+0:85 direct index ( temp uint)
+0:85 'dti' ( in 3-component vector of uint)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 2 (const int)
+0:85 Constant:
+0:85 0 (const int)
+0:85 subgroupQuadBroadcast ( temp float)
+0:85 direct index ( temp float)
+0:85 f: direct index for structure ( temp 4-component vector of float)
+0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:85 Constant:
+0:85 0 (const uint)
+0:85 direct index ( temp uint)
+0:85 'dti' ( in 3-component vector of uint)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 2 (const int)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 3 (const uint)
+0:86 move second child to first child ( temp 2-component vector of float)
+0:86 vector swizzle ( temp 2-component vector of float)
+0:86 f: direct index for structure ( temp 4-component vector of float)
+0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:86 Constant:
+0:86 0 (const uint)
+0:86 direct index ( temp uint)
+0:86 'dti' ( in 3-component vector of uint)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:86 subgroupQuadBroadcast ( temp 2-component vector of float)
+0:86 vector swizzle ( temp 2-component vector of float)
+0:86 f: direct index for structure ( temp 4-component vector of float)
+0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:86 Constant:
+0:86 0 (const uint)
+0:86 direct index ( temp uint)
+0:86 'dti' ( in 3-component vector of uint)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:86 Constant:
+0:86 3 (const uint)
+0:87 move second child to first child ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 f: direct index for structure ( temp 4-component vector of float)
+0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:87 Constant:
+0:87 0 (const uint)
+0:87 direct index ( temp uint)
+0:87 'dti' ( in 3-component vector of uint)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 subgroupQuadBroadcast ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 f: direct index for structure ( temp 4-component vector of float)
+0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:87 Constant:
+0:87 0 (const uint)
+0:87 direct index ( temp uint)
+0:87 'dti' ( in 3-component vector of uint)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Constant:
+0:87 3 (const uint)
+0:89 move second child to first child ( temp 4-component vector of double)
+0:89 d: direct index for structure ( temp 4-component vector of double)
+0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:89 Constant:
+0:89 0 (const uint)
+0:89 direct index ( temp uint)
+0:89 'dti' ( in 3-component vector of uint)
+0:89 Constant:
+0:89 0 (const int)
+0:89 Constant:
+0:89 3 (const int)
+0:89 subgroupQuadBroadcast ( temp 4-component vector of double)
+0:89 d: direct index for structure ( temp 4-component vector of double)
+0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:89 Constant:
+0:89 0 (const uint)
+0:89 direct index ( temp uint)
+0:89 'dti' ( in 3-component vector of uint)
+0:89 Constant:
+0:89 0 (const int)
+0:89 Constant:
+0:89 3 (const int)
+0:89 Constant:
+0:89 3 (const uint)
+0:90 move second child to first child ( temp double)
+0:90 direct index ( temp double)
+0:90 d: direct index for structure ( temp 4-component vector of double)
+0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:90 Constant:
+0:90 0 (const uint)
+0:90 direct index ( temp uint)
+0:90 'dti' ( in 3-component vector of uint)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const int)
+0:90 Constant:
+0:90 0 (const int)
+0:90 subgroupQuadBroadcast ( temp double)
+0:90 direct index ( temp double)
+0:90 d: direct index for structure ( temp 4-component vector of double)
+0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:90 Constant:
+0:90 0 (const uint)
+0:90 direct index ( temp uint)
+0:90 'dti' ( in 3-component vector of uint)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const int)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const uint)
+0:91 move second child to first child ( temp 2-component vector of double)
+0:91 vector swizzle ( temp 2-component vector of double)
+0:91 d: direct index for structure ( temp 4-component vector of double)
+0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:91 Constant:
+0:91 0 (const uint)
+0:91 direct index ( temp uint)
+0:91 'dti' ( in 3-component vector of uint)
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 3 (const int)
+0:91 Sequence
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 1 (const int)
+0:91 subgroupQuadBroadcast ( temp 2-component vector of double)
+0:91 vector swizzle ( temp 2-component vector of double)
+0:91 d: direct index for structure ( temp 4-component vector of double)
+0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:91 Constant:
+0:91 0 (const uint)
+0:91 direct index ( temp uint)
+0:91 'dti' ( in 3-component vector of uint)
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 3 (const int)
+0:91 Sequence
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 1 (const int)
+0:91 Constant:
+0:91 3 (const uint)
+0:92 move second child to first child ( temp 3-component vector of double)
+0:92 vector swizzle ( temp 3-component vector of double)
+0:92 d: direct index for structure ( temp 4-component vector of double)
+0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:92 Constant:
+0:92 0 (const uint)
+0:92 direct index ( temp uint)
+0:92 'dti' ( in 3-component vector of uint)
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 3 (const int)
+0:92 Sequence
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 1 (const int)
+0:92 Constant:
+0:92 2 (const int)
+0:92 subgroupQuadBroadcast ( temp 3-component vector of double)
+0:92 vector swizzle ( temp 3-component vector of double)
+0:92 d: direct index for structure ( temp 4-component vector of double)
+0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:92 Constant:
+0:92 0 (const uint)
+0:92 direct index ( temp uint)
+0:92 'dti' ( in 3-component vector of uint)
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 3 (const int)
+0:92 Sequence
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 1 (const int)
+0:92 Constant:
+0:92 2 (const int)
+0:92 Constant:
+0:92 3 (const uint)
+0:94 move second child to first child ( temp 4-component vector of uint)
+0:94 u: direct index for structure ( temp 4-component vector of uint)
+0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:94 Constant:
+0:94 0 (const uint)
+0:94 direct index ( temp uint)
+0:94 'dti' ( in 3-component vector of uint)
+0:94 Constant:
+0:94 0 (const int)
+0:94 Constant:
+0:94 0 (const int)
+0:94 subgroupQuadSwapHorizontal ( temp 4-component vector of uint)
+0:94 u: direct index for structure ( temp 4-component vector of uint)
+0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:94 Constant:
+0:94 0 (const uint)
+0:94 direct index ( temp uint)
+0:94 'dti' ( in 3-component vector of uint)
+0:94 Constant:
+0:94 0 (const int)
+0:94 Constant:
+0:94 0 (const int)
+0:95 move second child to first child ( temp uint)
+0:95 direct index ( temp uint)
+0:95 u: direct index for structure ( temp 4-component vector of uint)
+0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:95 Constant:
+0:95 0 (const uint)
+0:95 direct index ( temp uint)
+0:95 'dti' ( in 3-component vector of uint)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 subgroupQuadSwapHorizontal ( temp uint)
+0:95 direct index ( temp uint)
+0:95 u: direct index for structure ( temp 4-component vector of uint)
+0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:95 Constant:
+0:95 0 (const uint)
+0:95 direct index ( temp uint)
+0:95 'dti' ( in 3-component vector of uint)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:96 move second child to first child ( temp 2-component vector of uint)
+0:96 vector swizzle ( temp 2-component vector of uint)
+0:96 u: direct index for structure ( temp 4-component vector of uint)
+0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:96 Constant:
+0:96 0 (const uint)
+0:96 direct index ( temp uint)
+0:96 'dti' ( in 3-component vector of uint)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Sequence
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 1 (const int)
+0:96 subgroupQuadSwapHorizontal ( temp 2-component vector of uint)
+0:96 vector swizzle ( temp 2-component vector of uint)
+0:96 u: direct index for structure ( temp 4-component vector of uint)
+0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:96 Constant:
+0:96 0 (const uint)
+0:96 direct index ( temp uint)
+0:96 'dti' ( in 3-component vector of uint)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Sequence
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 1 (const int)
+0:97 move second child to first child ( temp 3-component vector of uint)
+0:97 vector swizzle ( temp 3-component vector of uint)
+0:97 u: direct index for structure ( temp 4-component vector of uint)
+0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:97 Constant:
+0:97 0 (const uint)
+0:97 direct index ( temp uint)
+0:97 'dti' ( in 3-component vector of uint)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Sequence
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 1 (const int)
+0:97 Constant:
+0:97 2 (const int)
+0:97 subgroupQuadSwapHorizontal ( temp 3-component vector of uint)
+0:97 vector swizzle ( temp 3-component vector of uint)
+0:97 u: direct index for structure ( temp 4-component vector of uint)
+0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:97 Constant:
+0:97 0 (const uint)
+0:97 direct index ( temp uint)
+0:97 'dti' ( in 3-component vector of uint)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Sequence
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 1 (const int)
+0:97 Constant:
+0:97 2 (const int)
+0:99 move second child to first child ( temp 4-component vector of int)
+0:99 i: direct index for structure ( temp 4-component vector of int)
+0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:99 Constant:
+0:99 0 (const uint)
+0:99 direct index ( temp uint)
+0:99 'dti' ( in 3-component vector of uint)
+0:99 Constant:
+0:99 0 (const int)
+0:99 Constant:
+0:99 1 (const int)
+0:99 subgroupQuadSwapHorizontal ( temp 4-component vector of int)
+0:99 i: direct index for structure ( temp 4-component vector of int)
+0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:99 Constant:
+0:99 0 (const uint)
+0:99 direct index ( temp uint)
+0:99 'dti' ( in 3-component vector of uint)
+0:99 Constant:
+0:99 0 (const int)
+0:99 Constant:
+0:99 1 (const int)
+0:100 move second child to first child ( temp int)
+0:100 direct index ( temp int)
+0:100 i: direct index for structure ( temp 4-component vector of int)
+0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:100 Constant:
+0:100 0 (const uint)
+0:100 direct index ( temp uint)
+0:100 'dti' ( in 3-component vector of uint)
+0:100 Constant:
+0:100 0 (const int)
+0:100 Constant:
+0:100 1 (const int)
+0:100 Constant:
+0:100 0 (const int)
+0:100 subgroupQuadSwapHorizontal ( temp int)
+0:100 direct index ( temp int)
+0:100 i: direct index for structure ( temp 4-component vector of int)
+0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:100 Constant:
+0:100 0 (const uint)
+0:100 direct index ( temp uint)
+0:100 'dti' ( in 3-component vector of uint)
+0:100 Constant:
+0:100 0 (const int)
+0:100 Constant:
+0:100 1 (const int)
+0:100 Constant:
+0:100 0 (const int)
+0:101 move second child to first child ( temp 2-component vector of int)
+0:101 vector swizzle ( temp 2-component vector of int)
+0:101 i: direct index for structure ( temp 4-component vector of int)
+0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:101 Constant:
+0:101 0 (const uint)
+0:101 direct index ( temp uint)
+0:101 'dti' ( in 3-component vector of uint)
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 Sequence
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 subgroupQuadSwapHorizontal ( temp 2-component vector of int)
+0:101 vector swizzle ( temp 2-component vector of int)
+0:101 i: direct index for structure ( temp 4-component vector of int)
+0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:101 Constant:
+0:101 0 (const uint)
+0:101 direct index ( temp uint)
+0:101 'dti' ( in 3-component vector of uint)
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 Sequence
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:102 move second child to first child ( temp 3-component vector of int)
+0:102 vector swizzle ( temp 3-component vector of int)
+0:102 i: direct index for structure ( temp 4-component vector of int)
+0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:102 Constant:
+0:102 0 (const uint)
+0:102 direct index ( temp uint)
+0:102 'dti' ( in 3-component vector of uint)
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Sequence
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Constant:
+0:102 2 (const int)
+0:102 subgroupQuadSwapHorizontal ( temp 3-component vector of int)
+0:102 vector swizzle ( temp 3-component vector of int)
+0:102 i: direct index for structure ( temp 4-component vector of int)
+0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:102 Constant:
+0:102 0 (const uint)
+0:102 direct index ( temp uint)
+0:102 'dti' ( in 3-component vector of uint)
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Sequence
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Constant:
+0:102 2 (const int)
+0:104 move second child to first child ( temp 4-component vector of float)
+0:104 f: direct index for structure ( temp 4-component vector of float)
+0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:104 Constant:
+0:104 0 (const uint)
+0:104 direct index ( temp uint)
+0:104 'dti' ( in 3-component vector of uint)
+0:104 Constant:
+0:104 0 (const int)
+0:104 Constant:
+0:104 2 (const int)
+0:104 subgroupQuadSwapHorizontal ( temp 4-component vector of float)
+0:104 f: direct index for structure ( temp 4-component vector of float)
+0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:104 Constant:
+0:104 0 (const uint)
+0:104 direct index ( temp uint)
+0:104 'dti' ( in 3-component vector of uint)
+0:104 Constant:
+0:104 0 (const int)
+0:104 Constant:
+0:104 2 (const int)
+0:105 move second child to first child ( temp float)
+0:105 direct index ( temp float)
+0:105 f: direct index for structure ( temp 4-component vector of float)
+0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:105 Constant:
+0:105 0 (const uint)
+0:105 direct index ( temp uint)
+0:105 'dti' ( in 3-component vector of uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 2 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:105 subgroupQuadSwapHorizontal ( temp float)
+0:105 direct index ( temp float)
+0:105 f: direct index for structure ( temp 4-component vector of float)
+0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:105 Constant:
+0:105 0 (const uint)
+0:105 direct index ( temp uint)
+0:105 'dti' ( in 3-component vector of uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 2 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:106 move second child to first child ( temp 2-component vector of float)
+0:106 vector swizzle ( temp 2-component vector of float)
+0:106 f: direct index for structure ( temp 4-component vector of float)
+0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:106 Constant:
+0:106 0 (const uint)
+0:106 direct index ( temp uint)
+0:106 'dti' ( in 3-component vector of uint)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 2 (const int)
+0:106 Sequence
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 1 (const int)
+0:106 subgroupQuadSwapHorizontal ( temp 2-component vector of float)
+0:106 vector swizzle ( temp 2-component vector of float)
+0:106 f: direct index for structure ( temp 4-component vector of float)
+0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:106 Constant:
+0:106 0 (const uint)
+0:106 direct index ( temp uint)
+0:106 'dti' ( in 3-component vector of uint)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 2 (const int)
+0:106 Sequence
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 1 (const int)
+0:107 move second child to first child ( temp 3-component vector of float)
+0:107 vector swizzle ( temp 3-component vector of float)
+0:107 f: direct index for structure ( temp 4-component vector of float)
+0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:107 Constant:
+0:107 0 (const uint)
+0:107 direct index ( temp uint)
+0:107 'dti' ( in 3-component vector of uint)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:107 subgroupQuadSwapHorizontal ( temp 3-component vector of float)
+0:107 vector swizzle ( temp 3-component vector of float)
+0:107 f: direct index for structure ( temp 4-component vector of float)
+0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:107 Constant:
+0:107 0 (const uint)
+0:107 direct index ( temp uint)
+0:107 'dti' ( in 3-component vector of uint)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:109 move second child to first child ( temp 4-component vector of double)
+0:109 d: direct index for structure ( temp 4-component vector of double)
+0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:109 Constant:
+0:109 0 (const uint)
+0:109 direct index ( temp uint)
+0:109 'dti' ( in 3-component vector of uint)
+0:109 Constant:
+0:109 0 (const int)
+0:109 Constant:
+0:109 3 (const int)
+0:109 subgroupQuadSwapHorizontal ( temp 4-component vector of double)
+0:109 d: direct index for structure ( temp 4-component vector of double)
+0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:109 Constant:
+0:109 0 (const uint)
+0:109 direct index ( temp uint)
+0:109 'dti' ( in 3-component vector of uint)
+0:109 Constant:
+0:109 0 (const int)
+0:109 Constant:
+0:109 3 (const int)
+0:110 move second child to first child ( temp double)
+0:110 direct index ( temp double)
+0:110 d: direct index for structure ( temp 4-component vector of double)
+0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:110 Constant:
+0:110 0 (const uint)
+0:110 direct index ( temp uint)
+0:110 'dti' ( in 3-component vector of uint)
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 3 (const int)
+0:110 Constant:
+0:110 0 (const int)
+0:110 subgroupQuadSwapHorizontal ( temp double)
+0:110 direct index ( temp double)
+0:110 d: direct index for structure ( temp 4-component vector of double)
+0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:110 Constant:
+0:110 0 (const uint)
+0:110 direct index ( temp uint)
+0:110 'dti' ( in 3-component vector of uint)
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 3 (const int)
+0:110 Constant:
+0:110 0 (const int)
+0:111 move second child to first child ( temp 2-component vector of double)
+0:111 vector swizzle ( temp 2-component vector of double)
+0:111 d: direct index for structure ( temp 4-component vector of double)
+0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:111 Constant:
+0:111 0 (const uint)
+0:111 direct index ( temp uint)
+0:111 'dti' ( in 3-component vector of uint)
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 3 (const int)
+0:111 Sequence
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:111 subgroupQuadSwapHorizontal ( temp 2-component vector of double)
+0:111 vector swizzle ( temp 2-component vector of double)
+0:111 d: direct index for structure ( temp 4-component vector of double)
+0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:111 Constant:
+0:111 0 (const uint)
+0:111 direct index ( temp uint)
+0:111 'dti' ( in 3-component vector of uint)
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 3 (const int)
+0:111 Sequence
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:112 move second child to first child ( temp 3-component vector of double)
+0:112 vector swizzle ( temp 3-component vector of double)
+0:112 d: direct index for structure ( temp 4-component vector of double)
+0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:112 Constant:
+0:112 0 (const uint)
+0:112 direct index ( temp uint)
+0:112 'dti' ( in 3-component vector of uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 3 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:112 subgroupQuadSwapHorizontal ( temp 3-component vector of double)
+0:112 vector swizzle ( temp 3-component vector of double)
+0:112 d: direct index for structure ( temp 4-component vector of double)
+0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:112 Constant:
+0:112 0 (const uint)
+0:112 direct index ( temp uint)
+0:112 'dti' ( in 3-component vector of uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 3 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:114 move second child to first child ( temp 4-component vector of uint)
+0:114 u: direct index for structure ( temp 4-component vector of uint)
+0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:114 Constant:
+0:114 0 (const uint)
+0:114 direct index ( temp uint)
+0:114 'dti' ( in 3-component vector of uint)
+0:114 Constant:
+0:114 0 (const int)
+0:114 Constant:
+0:114 0 (const int)
+0:114 subgroupQuadSwapVertical ( temp 4-component vector of uint)
+0:114 u: direct index for structure ( temp 4-component vector of uint)
+0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:114 Constant:
+0:114 0 (const uint)
+0:114 direct index ( temp uint)
+0:114 'dti' ( in 3-component vector of uint)
+0:114 Constant:
+0:114 0 (const int)
+0:114 Constant:
+0:114 0 (const int)
+0:115 move second child to first child ( temp uint)
+0:115 direct index ( temp uint)
+0:115 u: direct index for structure ( temp 4-component vector of uint)
+0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:115 Constant:
+0:115 0 (const uint)
+0:115 direct index ( temp uint)
+0:115 'dti' ( in 3-component vector of uint)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 subgroupQuadSwapVertical ( temp uint)
+0:115 direct index ( temp uint)
+0:115 u: direct index for structure ( temp 4-component vector of uint)
+0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:115 Constant:
+0:115 0 (const uint)
+0:115 direct index ( temp uint)
+0:115 'dti' ( in 3-component vector of uint)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:116 move second child to first child ( temp 2-component vector of uint)
+0:116 vector swizzle ( temp 2-component vector of uint)
+0:116 u: direct index for structure ( temp 4-component vector of uint)
+0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:116 Constant:
+0:116 0 (const uint)
+0:116 direct index ( temp uint)
+0:116 'dti' ( in 3-component vector of uint)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Sequence
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 1 (const int)
+0:116 subgroupQuadSwapVertical ( temp 2-component vector of uint)
+0:116 vector swizzle ( temp 2-component vector of uint)
+0:116 u: direct index for structure ( temp 4-component vector of uint)
+0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:116 Constant:
+0:116 0 (const uint)
+0:116 direct index ( temp uint)
+0:116 'dti' ( in 3-component vector of uint)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Sequence
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 1 (const int)
+0:117 move second child to first child ( temp 3-component vector of uint)
+0:117 vector swizzle ( temp 3-component vector of uint)
+0:117 u: direct index for structure ( temp 4-component vector of uint)
+0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:117 Constant:
+0:117 0 (const uint)
+0:117 direct index ( temp uint)
+0:117 'dti' ( in 3-component vector of uint)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Sequence
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 1 (const int)
+0:117 Constant:
+0:117 2 (const int)
+0:117 subgroupQuadSwapVertical ( temp 3-component vector of uint)
+0:117 vector swizzle ( temp 3-component vector of uint)
+0:117 u: direct index for structure ( temp 4-component vector of uint)
+0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:117 Constant:
+0:117 0 (const uint)
+0:117 direct index ( temp uint)
+0:117 'dti' ( in 3-component vector of uint)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Sequence
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 1 (const int)
+0:117 Constant:
+0:117 2 (const int)
+0:119 move second child to first child ( temp 4-component vector of int)
+0:119 i: direct index for structure ( temp 4-component vector of int)
+0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:119 Constant:
+0:119 0 (const uint)
+0:119 direct index ( temp uint)
+0:119 'dti' ( in 3-component vector of uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 1 (const int)
+0:119 subgroupQuadSwapVertical ( temp 4-component vector of int)
+0:119 i: direct index for structure ( temp 4-component vector of int)
+0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:119 Constant:
+0:119 0 (const uint)
+0:119 direct index ( temp uint)
+0:119 'dti' ( in 3-component vector of uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 1 (const int)
+0:120 move second child to first child ( temp int)
+0:120 direct index ( temp int)
+0:120 i: direct index for structure ( temp 4-component vector of int)
+0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:120 Constant:
+0:120 0 (const uint)
+0:120 direct index ( temp uint)
+0:120 'dti' ( in 3-component vector of uint)
+0:120 Constant:
+0:120 0 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 0 (const int)
+0:120 subgroupQuadSwapVertical ( temp int)
+0:120 direct index ( temp int)
+0:120 i: direct index for structure ( temp 4-component vector of int)
+0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:120 Constant:
+0:120 0 (const uint)
+0:120 direct index ( temp uint)
+0:120 'dti' ( in 3-component vector of uint)
+0:120 Constant:
+0:120 0 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 0 (const int)
+0:121 move second child to first child ( temp 2-component vector of int)
+0:121 vector swizzle ( temp 2-component vector of int)
+0:121 i: direct index for structure ( temp 4-component vector of int)
+0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:121 Constant:
+0:121 0 (const uint)
+0:121 direct index ( temp uint)
+0:121 'dti' ( in 3-component vector of uint)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 subgroupQuadSwapVertical ( temp 2-component vector of int)
+0:121 vector swizzle ( temp 2-component vector of int)
+0:121 i: direct index for structure ( temp 4-component vector of int)
+0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:121 Constant:
+0:121 0 (const uint)
+0:121 direct index ( temp uint)
+0:121 'dti' ( in 3-component vector of uint)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:122 move second child to first child ( temp 3-component vector of int)
+0:122 vector swizzle ( temp 3-component vector of int)
+0:122 i: direct index for structure ( temp 4-component vector of int)
+0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:122 Constant:
+0:122 0 (const uint)
+0:122 direct index ( temp uint)
+0:122 'dti' ( in 3-component vector of uint)
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:122 subgroupQuadSwapVertical ( temp 3-component vector of int)
+0:122 vector swizzle ( temp 3-component vector of int)
+0:122 i: direct index for structure ( temp 4-component vector of int)
+0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:122 Constant:
+0:122 0 (const uint)
+0:122 direct index ( temp uint)
+0:122 'dti' ( in 3-component vector of uint)
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:124 move second child to first child ( temp 4-component vector of float)
+0:124 f: direct index for structure ( temp 4-component vector of float)
+0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:124 Constant:
+0:124 0 (const uint)
+0:124 direct index ( temp uint)
+0:124 'dti' ( in 3-component vector of uint)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 2 (const int)
+0:124 subgroupQuadSwapVertical ( temp 4-component vector of float)
+0:124 f: direct index for structure ( temp 4-component vector of float)
+0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:124 Constant:
+0:124 0 (const uint)
+0:124 direct index ( temp uint)
+0:124 'dti' ( in 3-component vector of uint)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 2 (const int)
+0:125 move second child to first child ( temp float)
+0:125 direct index ( temp float)
+0:125 f: direct index for structure ( temp 4-component vector of float)
+0:125 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:125 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:125 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:125 Constant:
+0:125 0 (const uint)
+0:125 direct index ( temp uint)
+0:125 'dti' ( in 3-component vector of uint)
+0:125 Constant:
+0:125 0 (const int)
+0:125 Constant:
+0:125 2 (const int)
+0:125 Constant:
+0:125 0 (const int)
+0:125 subgroupQuadSwapVertical ( temp float)
+0:125 direct index ( temp float)
+0:125 f: direct index for structure ( temp 4-component vector of float)
+0:125 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:125 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:125 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:125 Constant:
+0:125 0 (const uint)
+0:125 direct index ( temp uint)
+0:125 'dti' ( in 3-component vector of uint)
+0:125 Constant:
+0:125 0 (const int)
+0:125 Constant:
+0:125 2 (const int)
+0:125 Constant:
+0:125 0 (const int)
+0:126 move second child to first child ( temp 2-component vector of float)
+0:126 vector swizzle ( temp 2-component vector of float)
+0:126 f: direct index for structure ( temp 4-component vector of float)
+0:126 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:126 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:126 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:126 Constant:
+0:126 0 (const uint)
+0:126 direct index ( temp uint)
+0:126 'dti' ( in 3-component vector of uint)
+0:126 Constant:
+0:126 0 (const int)
+0:126 Constant:
+0:126 2 (const int)
+0:126 Sequence
+0:126 Constant:
+0:126 0 (const int)
+0:126 Constant:
+0:126 1 (const int)
+0:126 subgroupQuadSwapVertical ( temp 2-component vector of float)
+0:126 vector swizzle ( temp 2-component vector of float)
+0:126 f: direct index for structure ( temp 4-component vector of float)
+0:126 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:126 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:126 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:126 Constant:
+0:126 0 (const uint)
+0:126 direct index ( temp uint)
+0:126 'dti' ( in 3-component vector of uint)
+0:126 Constant:
+0:126 0 (const int)
+0:126 Constant:
+0:126 2 (const int)
+0:126 Sequence
+0:126 Constant:
+0:126 0 (const int)
+0:126 Constant:
+0:126 1 (const int)
+0:127 move second child to first child ( temp 3-component vector of float)
+0:127 vector swizzle ( temp 3-component vector of float)
+0:127 f: direct index for structure ( temp 4-component vector of float)
+0:127 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:127 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:127 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:127 Constant:
+0:127 0 (const uint)
+0:127 direct index ( temp uint)
+0:127 'dti' ( in 3-component vector of uint)
+0:127 Constant:
+0:127 0 (const int)
+0:127 Constant:
+0:127 2 (const int)
+0:127 Sequence
+0:127 Constant:
+0:127 0 (const int)
+0:127 Constant:
+0:127 1 (const int)
+0:127 Constant:
+0:127 2 (const int)
+0:127 subgroupQuadSwapVertical ( temp 3-component vector of float)
+0:127 vector swizzle ( temp 3-component vector of float)
+0:127 f: direct index for structure ( temp 4-component vector of float)
+0:127 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:127 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:127 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:127 Constant:
+0:127 0 (const uint)
+0:127 direct index ( temp uint)
+0:127 'dti' ( in 3-component vector of uint)
+0:127 Constant:
+0:127 0 (const int)
+0:127 Constant:
+0:127 2 (const int)
+0:127 Sequence
+0:127 Constant:
+0:127 0 (const int)
+0:127 Constant:
+0:127 1 (const int)
+0:127 Constant:
+0:127 2 (const int)
+0:129 move second child to first child ( temp 4-component vector of double)
+0:129 d: direct index for structure ( temp 4-component vector of double)
+0:129 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:129 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:129 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:129 Constant:
+0:129 0 (const uint)
+0:129 direct index ( temp uint)
+0:129 'dti' ( in 3-component vector of uint)
+0:129 Constant:
+0:129 0 (const int)
+0:129 Constant:
+0:129 3 (const int)
+0:129 subgroupQuadSwapVertical ( temp 4-component vector of double)
+0:129 d: direct index for structure ( temp 4-component vector of double)
+0:129 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:129 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:129 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:129 Constant:
+0:129 0 (const uint)
+0:129 direct index ( temp uint)
+0:129 'dti' ( in 3-component vector of uint)
+0:129 Constant:
+0:129 0 (const int)
+0:129 Constant:
+0:129 3 (const int)
+0:130 move second child to first child ( temp double)
+0:130 direct index ( temp double)
+0:130 d: direct index for structure ( temp 4-component vector of double)
+0:130 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:130 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:130 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:130 Constant:
+0:130 0 (const uint)
+0:130 direct index ( temp uint)
+0:130 'dti' ( in 3-component vector of uint)
+0:130 Constant:
+0:130 0 (const int)
+0:130 Constant:
+0:130 3 (const int)
+0:130 Constant:
+0:130 0 (const int)
+0:130 subgroupQuadSwapVertical ( temp double)
+0:130 direct index ( temp double)
+0:130 d: direct index for structure ( temp 4-component vector of double)
+0:130 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:130 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:130 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:130 Constant:
+0:130 0 (const uint)
+0:130 direct index ( temp uint)
+0:130 'dti' ( in 3-component vector of uint)
+0:130 Constant:
+0:130 0 (const int)
+0:130 Constant:
+0:130 3 (const int)
+0:130 Constant:
+0:130 0 (const int)
+0:131 move second child to first child ( temp 2-component vector of double)
+0:131 vector swizzle ( temp 2-component vector of double)
+0:131 d: direct index for structure ( temp 4-component vector of double)
+0:131 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:131 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:131 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:131 Constant:
+0:131 0 (const uint)
+0:131 direct index ( temp uint)
+0:131 'dti' ( in 3-component vector of uint)
+0:131 Constant:
+0:131 0 (const int)
+0:131 Constant:
+0:131 3 (const int)
+0:131 Sequence
+0:131 Constant:
+0:131 0 (const int)
+0:131 Constant:
+0:131 1 (const int)
+0:131 subgroupQuadSwapVertical ( temp 2-component vector of double)
+0:131 vector swizzle ( temp 2-component vector of double)
+0:131 d: direct index for structure ( temp 4-component vector of double)
+0:131 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:131 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:131 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:131 Constant:
+0:131 0 (const uint)
+0:131 direct index ( temp uint)
+0:131 'dti' ( in 3-component vector of uint)
+0:131 Constant:
+0:131 0 (const int)
+0:131 Constant:
+0:131 3 (const int)
+0:131 Sequence
+0:131 Constant:
+0:131 0 (const int)
+0:131 Constant:
+0:131 1 (const int)
+0:132 move second child to first child ( temp 3-component vector of double)
+0:132 vector swizzle ( temp 3-component vector of double)
+0:132 d: direct index for structure ( temp 4-component vector of double)
+0:132 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:132 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:132 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:132 Constant:
+0:132 0 (const uint)
+0:132 direct index ( temp uint)
+0:132 'dti' ( in 3-component vector of uint)
+0:132 Constant:
+0:132 0 (const int)
+0:132 Constant:
+0:132 3 (const int)
+0:132 Sequence
+0:132 Constant:
+0:132 0 (const int)
+0:132 Constant:
+0:132 1 (const int)
+0:132 Constant:
+0:132 2 (const int)
+0:132 subgroupQuadSwapVertical ( temp 3-component vector of double)
+0:132 vector swizzle ( temp 3-component vector of double)
+0:132 d: direct index for structure ( temp 4-component vector of double)
+0:132 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:132 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:132 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:132 Constant:
+0:132 0 (const uint)
+0:132 direct index ( temp uint)
+0:132 'dti' ( in 3-component vector of uint)
+0:132 Constant:
+0:132 0 (const int)
+0:132 Constant:
+0:132 3 (const int)
+0:132 Sequence
+0:132 Constant:
+0:132 0 (const int)
+0:132 Constant:
+0:132 1 (const int)
+0:132 Constant:
+0:132 2 (const int)
+0:134 move second child to first child ( temp 4-component vector of uint)
+0:134 u: direct index for structure ( temp 4-component vector of uint)
+0:134 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:134 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:134 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:134 Constant:
+0:134 0 (const uint)
+0:134 direct index ( temp uint)
+0:134 'dti' ( in 3-component vector of uint)
+0:134 Constant:
+0:134 0 (const int)
+0:134 Constant:
+0:134 0 (const int)
+0:134 subgroupQuadSwapDiagonal ( temp 4-component vector of uint)
+0:134 u: direct index for structure ( temp 4-component vector of uint)
+0:134 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:134 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:134 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:134 Constant:
+0:134 0 (const uint)
+0:134 direct index ( temp uint)
+0:134 'dti' ( in 3-component vector of uint)
+0:134 Constant:
+0:134 0 (const int)
+0:134 Constant:
+0:134 0 (const int)
+0:135 move second child to first child ( temp uint)
+0:135 direct index ( temp uint)
+0:135 u: direct index for structure ( temp 4-component vector of uint)
+0:135 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:135 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:135 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:135 Constant:
+0:135 0 (const uint)
+0:135 direct index ( temp uint)
+0:135 'dti' ( in 3-component vector of uint)
+0:135 Constant:
+0:135 0 (const int)
+0:135 Constant:
+0:135 0 (const int)
+0:135 Constant:
+0:135 0 (const int)
+0:135 subgroupQuadSwapDiagonal ( temp uint)
+0:135 direct index ( temp uint)
+0:135 u: direct index for structure ( temp 4-component vector of uint)
+0:135 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:135 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:135 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:135 Constant:
+0:135 0 (const uint)
+0:135 direct index ( temp uint)
+0:135 'dti' ( in 3-component vector of uint)
+0:135 Constant:
+0:135 0 (const int)
+0:135 Constant:
+0:135 0 (const int)
+0:135 Constant:
+0:135 0 (const int)
+0:136 move second child to first child ( temp 2-component vector of uint)
+0:136 vector swizzle ( temp 2-component vector of uint)
+0:136 u: direct index for structure ( temp 4-component vector of uint)
+0:136 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:136 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:136 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:136 Constant:
+0:136 0 (const uint)
+0:136 direct index ( temp uint)
+0:136 'dti' ( in 3-component vector of uint)
+0:136 Constant:
+0:136 0 (const int)
+0:136 Constant:
+0:136 0 (const int)
+0:136 Sequence
+0:136 Constant:
+0:136 0 (const int)
+0:136 Constant:
+0:136 1 (const int)
+0:136 subgroupQuadSwapDiagonal ( temp 2-component vector of uint)
+0:136 vector swizzle ( temp 2-component vector of uint)
+0:136 u: direct index for structure ( temp 4-component vector of uint)
+0:136 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:136 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:136 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:136 Constant:
+0:136 0 (const uint)
+0:136 direct index ( temp uint)
+0:136 'dti' ( in 3-component vector of uint)
+0:136 Constant:
+0:136 0 (const int)
+0:136 Constant:
+0:136 0 (const int)
+0:136 Sequence
+0:136 Constant:
+0:136 0 (const int)
+0:136 Constant:
+0:136 1 (const int)
+0:137 move second child to first child ( temp 3-component vector of uint)
+0:137 vector swizzle ( temp 3-component vector of uint)
+0:137 u: direct index for structure ( temp 4-component vector of uint)
+0:137 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:137 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:137 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:137 Constant:
+0:137 0 (const uint)
+0:137 direct index ( temp uint)
+0:137 'dti' ( in 3-component vector of uint)
+0:137 Constant:
+0:137 0 (const int)
+0:137 Constant:
+0:137 0 (const int)
+0:137 Sequence
+0:137 Constant:
+0:137 0 (const int)
+0:137 Constant:
+0:137 1 (const int)
+0:137 Constant:
+0:137 2 (const int)
+0:137 subgroupQuadSwapDiagonal ( temp 3-component vector of uint)
+0:137 vector swizzle ( temp 3-component vector of uint)
+0:137 u: direct index for structure ( temp 4-component vector of uint)
+0:137 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:137 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:137 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:137 Constant:
+0:137 0 (const uint)
+0:137 direct index ( temp uint)
+0:137 'dti' ( in 3-component vector of uint)
+0:137 Constant:
+0:137 0 (const int)
+0:137 Constant:
+0:137 0 (const int)
+0:137 Sequence
+0:137 Constant:
+0:137 0 (const int)
+0:137 Constant:
+0:137 1 (const int)
+0:137 Constant:
+0:137 2 (const int)
+0:139 move second child to first child ( temp 4-component vector of int)
+0:139 i: direct index for structure ( temp 4-component vector of int)
+0:139 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:139 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:139 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:139 Constant:
+0:139 0 (const uint)
+0:139 direct index ( temp uint)
+0:139 'dti' ( in 3-component vector of uint)
+0:139 Constant:
+0:139 0 (const int)
+0:139 Constant:
+0:139 1 (const int)
+0:139 subgroupQuadSwapDiagonal ( temp 4-component vector of int)
+0:139 i: direct index for structure ( temp 4-component vector of int)
+0:139 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:139 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:139 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:139 Constant:
+0:139 0 (const uint)
+0:139 direct index ( temp uint)
+0:139 'dti' ( in 3-component vector of uint)
+0:139 Constant:
+0:139 0 (const int)
+0:139 Constant:
+0:139 1 (const int)
+0:140 move second child to first child ( temp int)
+0:140 direct index ( temp int)
+0:140 i: direct index for structure ( temp 4-component vector of int)
+0:140 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:140 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:140 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:140 Constant:
+0:140 0 (const uint)
+0:140 direct index ( temp uint)
+0:140 'dti' ( in 3-component vector of uint)
+0:140 Constant:
+0:140 0 (const int)
+0:140 Constant:
+0:140 1 (const int)
+0:140 Constant:
+0:140 0 (const int)
+0:140 subgroupQuadSwapDiagonal ( temp int)
+0:140 direct index ( temp int)
+0:140 i: direct index for structure ( temp 4-component vector of int)
+0:140 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:140 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:140 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:140 Constant:
+0:140 0 (const uint)
+0:140 direct index ( temp uint)
+0:140 'dti' ( in 3-component vector of uint)
+0:140 Constant:
+0:140 0 (const int)
+0:140 Constant:
+0:140 1 (const int)
+0:140 Constant:
+0:140 0 (const int)
+0:141 move second child to first child ( temp 2-component vector of int)
+0:141 vector swizzle ( temp 2-component vector of int)
+0:141 i: direct index for structure ( temp 4-component vector of int)
+0:141 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:141 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:141 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:141 Constant:
+0:141 0 (const uint)
+0:141 direct index ( temp uint)
+0:141 'dti' ( in 3-component vector of uint)
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 1 (const int)
+0:141 Sequence
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 1 (const int)
+0:141 subgroupQuadSwapDiagonal ( temp 2-component vector of int)
+0:141 vector swizzle ( temp 2-component vector of int)
+0:141 i: direct index for structure ( temp 4-component vector of int)
+0:141 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:141 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:141 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:141 Constant:
+0:141 0 (const uint)
+0:141 direct index ( temp uint)
+0:141 'dti' ( in 3-component vector of uint)
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 1 (const int)
+0:141 Sequence
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 1 (const int)
+0:142 move second child to first child ( temp 3-component vector of int)
+0:142 vector swizzle ( temp 3-component vector of int)
+0:142 i: direct index for structure ( temp 4-component vector of int)
+0:142 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:142 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:142 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:142 Constant:
+0:142 0 (const uint)
+0:142 direct index ( temp uint)
+0:142 'dti' ( in 3-component vector of uint)
+0:142 Constant:
+0:142 0 (const int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Sequence
+0:142 Constant:
+0:142 0 (const int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Constant:
+0:142 2 (const int)
+0:142 subgroupQuadSwapDiagonal ( temp 3-component vector of int)
+0:142 vector swizzle ( temp 3-component vector of int)
+0:142 i: direct index for structure ( temp 4-component vector of int)
+0:142 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:142 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:142 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:142 Constant:
+0:142 0 (const uint)
+0:142 direct index ( temp uint)
+0:142 'dti' ( in 3-component vector of uint)
+0:142 Constant:
+0:142 0 (const int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Sequence
+0:142 Constant:
+0:142 0 (const int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Constant:
+0:142 2 (const int)
+0:144 move second child to first child ( temp 4-component vector of float)
+0:144 f: direct index for structure ( temp 4-component vector of float)
+0:144 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:144 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:144 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:144 Constant:
+0:144 0 (const uint)
+0:144 direct index ( temp uint)
+0:144 'dti' ( in 3-component vector of uint)
+0:144 Constant:
+0:144 0 (const int)
+0:144 Constant:
+0:144 2 (const int)
+0:144 subgroupQuadSwapDiagonal ( temp 4-component vector of float)
+0:144 f: direct index for structure ( temp 4-component vector of float)
+0:144 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:144 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:144 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:144 Constant:
+0:144 0 (const uint)
+0:144 direct index ( temp uint)
+0:144 'dti' ( in 3-component vector of uint)
+0:144 Constant:
+0:144 0 (const int)
+0:144 Constant:
+0:144 2 (const int)
+0:145 move second child to first child ( temp float)
+0:145 direct index ( temp float)
+0:145 f: direct index for structure ( temp 4-component vector of float)
+0:145 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:145 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:145 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:145 Constant:
+0:145 0 (const uint)
+0:145 direct index ( temp uint)
+0:145 'dti' ( in 3-component vector of uint)
+0:145 Constant:
+0:145 0 (const int)
+0:145 Constant:
+0:145 2 (const int)
+0:145 Constant:
+0:145 0 (const int)
+0:145 subgroupQuadSwapDiagonal ( temp float)
+0:145 direct index ( temp float)
+0:145 f: direct index for structure ( temp 4-component vector of float)
+0:145 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:145 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:145 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:145 Constant:
+0:145 0 (const uint)
+0:145 direct index ( temp uint)
+0:145 'dti' ( in 3-component vector of uint)
+0:145 Constant:
+0:145 0 (const int)
+0:145 Constant:
+0:145 2 (const int)
+0:145 Constant:
+0:145 0 (const int)
+0:146 move second child to first child ( temp 2-component vector of float)
+0:146 vector swizzle ( temp 2-component vector of float)
+0:146 f: direct index for structure ( temp 4-component vector of float)
+0:146 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:146 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:146 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:146 Constant:
+0:146 0 (const uint)
+0:146 direct index ( temp uint)
+0:146 'dti' ( in 3-component vector of uint)
+0:146 Constant:
+0:146 0 (const int)
+0:146 Constant:
+0:146 2 (const int)
+0:146 Sequence
+0:146 Constant:
+0:146 0 (const int)
+0:146 Constant:
+0:146 1 (const int)
+0:146 subgroupQuadSwapDiagonal ( temp 2-component vector of float)
+0:146 vector swizzle ( temp 2-component vector of float)
+0:146 f: direct index for structure ( temp 4-component vector of float)
+0:146 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:146 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:146 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:146 Constant:
+0:146 0 (const uint)
+0:146 direct index ( temp uint)
+0:146 'dti' ( in 3-component vector of uint)
+0:146 Constant:
+0:146 0 (const int)
+0:146 Constant:
+0:146 2 (const int)
+0:146 Sequence
+0:146 Constant:
+0:146 0 (const int)
+0:146 Constant:
+0:146 1 (const int)
+0:147 move second child to first child ( temp 3-component vector of float)
+0:147 vector swizzle ( temp 3-component vector of float)
+0:147 f: direct index for structure ( temp 4-component vector of float)
+0:147 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:147 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:147 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:147 Constant:
+0:147 0 (const uint)
+0:147 direct index ( temp uint)
+0:147 'dti' ( in 3-component vector of uint)
+0:147 Constant:
+0:147 0 (const int)
+0:147 Constant:
+0:147 2 (const int)
+0:147 Sequence
+0:147 Constant:
+0:147 0 (const int)
+0:147 Constant:
+0:147 1 (const int)
+0:147 Constant:
+0:147 2 (const int)
+0:147 subgroupQuadSwapDiagonal ( temp 3-component vector of float)
+0:147 vector swizzle ( temp 3-component vector of float)
+0:147 f: direct index for structure ( temp 4-component vector of float)
+0:147 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:147 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:147 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:147 Constant:
+0:147 0 (const uint)
+0:147 direct index ( temp uint)
+0:147 'dti' ( in 3-component vector of uint)
+0:147 Constant:
+0:147 0 (const int)
+0:147 Constant:
+0:147 2 (const int)
+0:147 Sequence
+0:147 Constant:
+0:147 0 (const int)
+0:147 Constant:
+0:147 1 (const int)
+0:147 Constant:
+0:147 2 (const int)
+0:149 move second child to first child ( temp 4-component vector of double)
+0:149 d: direct index for structure ( temp 4-component vector of double)
+0:149 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:149 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:149 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:149 Constant:
+0:149 0 (const uint)
+0:149 direct index ( temp uint)
+0:149 'dti' ( in 3-component vector of uint)
+0:149 Constant:
+0:149 0 (const int)
+0:149 Constant:
+0:149 3 (const int)
+0:149 subgroupQuadSwapDiagonal ( temp 4-component vector of double)
+0:149 d: direct index for structure ( temp 4-component vector of double)
+0:149 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:149 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:149 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:149 Constant:
+0:149 0 (const uint)
+0:149 direct index ( temp uint)
+0:149 'dti' ( in 3-component vector of uint)
+0:149 Constant:
+0:149 0 (const int)
+0:149 Constant:
+0:149 3 (const int)
+0:150 move second child to first child ( temp double)
+0:150 direct index ( temp double)
+0:150 d: direct index for structure ( temp 4-component vector of double)
+0:150 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:150 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:150 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:150 Constant:
+0:150 0 (const uint)
+0:150 direct index ( temp uint)
+0:150 'dti' ( in 3-component vector of uint)
+0:150 Constant:
+0:150 0 (const int)
+0:150 Constant:
+0:150 3 (const int)
+0:150 Constant:
+0:150 0 (const int)
+0:150 subgroupQuadSwapDiagonal ( temp double)
+0:150 direct index ( temp double)
+0:150 d: direct index for structure ( temp 4-component vector of double)
+0:150 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:150 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:150 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:150 Constant:
+0:150 0 (const uint)
+0:150 direct index ( temp uint)
+0:150 'dti' ( in 3-component vector of uint)
+0:150 Constant:
+0:150 0 (const int)
+0:150 Constant:
+0:150 3 (const int)
+0:150 Constant:
+0:150 0 (const int)
+0:151 move second child to first child ( temp 2-component vector of double)
+0:151 vector swizzle ( temp 2-component vector of double)
+0:151 d: direct index for structure ( temp 4-component vector of double)
+0:151 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:151 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:151 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:151 Constant:
+0:151 0 (const uint)
+0:151 direct index ( temp uint)
+0:151 'dti' ( in 3-component vector of uint)
+0:151 Constant:
+0:151 0 (const int)
+0:151 Constant:
+0:151 3 (const int)
+0:151 Sequence
+0:151 Constant:
+0:151 0 (const int)
+0:151 Constant:
+0:151 1 (const int)
+0:151 subgroupQuadSwapDiagonal ( temp 2-component vector of double)
+0:151 vector swizzle ( temp 2-component vector of double)
+0:151 d: direct index for structure ( temp 4-component vector of double)
+0:151 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:151 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:151 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:151 Constant:
+0:151 0 (const uint)
+0:151 direct index ( temp uint)
+0:151 'dti' ( in 3-component vector of uint)
+0:151 Constant:
+0:151 0 (const int)
+0:151 Constant:
+0:151 3 (const int)
+0:151 Sequence
+0:151 Constant:
+0:151 0 (const int)
+0:151 Constant:
+0:151 1 (const int)
+0:152 move second child to first child ( temp 3-component vector of double)
+0:152 vector swizzle ( temp 3-component vector of double)
+0:152 d: direct index for structure ( temp 4-component vector of double)
+0:152 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:152 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:152 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:152 Constant:
+0:152 0 (const uint)
+0:152 direct index ( temp uint)
+0:152 'dti' ( in 3-component vector of uint)
+0:152 Constant:
+0:152 0 (const int)
+0:152 Constant:
+0:152 3 (const int)
+0:152 Sequence
+0:152 Constant:
+0:152 0 (const int)
+0:152 Constant:
+0:152 1 (const int)
+0:152 Constant:
+0:152 2 (const int)
+0:152 subgroupQuadSwapDiagonal ( temp 3-component vector of double)
+0:152 vector swizzle ( temp 3-component vector of double)
+0:152 d: direct index for structure ( temp 4-component vector of double)
+0:152 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:152 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:152 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:152 Constant:
+0:152 0 (const uint)
+0:152 direct index ( temp uint)
+0:152 'dti' ( in 3-component vector of uint)
+0:152 Constant:
+0:152 0 (const int)
+0:152 Constant:
+0:152 3 (const int)
+0:152 Sequence
+0:152 Constant:
+0:152 0 (const int)
+0:152 Constant:
+0:152 1 (const int)
+0:152 Constant:
+0:152 2 (const int)
+0:13 Function Definition: CSMain( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:13 Function Definition: @CSMain(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 subgroupQuadBroadcast ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const uint)
+0:15 move second child to first child ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 subgroupQuadBroadcast ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const uint)
+0:16 move second child to first child ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 subgroupQuadBroadcast ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 0 (const uint)
+0:17 move second child to first child ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 subgroupQuadBroadcast ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 Constant:
+0:17 0 (const uint)
+0:19 move second child to first child ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 subgroupQuadBroadcast ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 Constant:
+0:19 0 (const uint)
+0:20 move second child to first child ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 subgroupQuadBroadcast ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 0 (const uint)
+0:21 move second child to first child ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 subgroupQuadBroadcast ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Constant:
+0:21 0 (const uint)
+0:22 move second child to first child ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 subgroupQuadBroadcast ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 Constant:
+0:22 0 (const uint)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 subgroupQuadBroadcast ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 Constant:
+0:24 0 (const uint)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 subgroupQuadBroadcast ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 0 (const uint)
+0:26 move second child to first child ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 subgroupQuadBroadcast ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 Constant:
+0:26 0 (const uint)
+0:27 move second child to first child ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 subgroupQuadBroadcast ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Constant:
+0:27 0 (const uint)
+0:29 move second child to first child ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 subgroupQuadBroadcast ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 Constant:
+0:29 0 (const uint)
+0:30 move second child to first child ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 subgroupQuadBroadcast ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 0 (const uint)
+0:31 move second child to first child ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 subgroupQuadBroadcast ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 Constant:
+0:31 0 (const uint)
+0:32 move second child to first child ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 subgroupQuadBroadcast ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 Constant:
+0:32 0 (const uint)
+0:34 move second child to first child ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 subgroupQuadBroadcast ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const uint)
+0:35 move second child to first child ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 subgroupQuadBroadcast ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 1 (const uint)
+0:36 move second child to first child ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 subgroupQuadBroadcast ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 Constant:
+0:36 1 (const uint)
+0:37 move second child to first child ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 subgroupQuadBroadcast ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 Constant:
+0:37 1 (const uint)
+0:39 move second child to first child ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 subgroupQuadBroadcast ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 Constant:
+0:39 1 (const uint)
+0:40 move second child to first child ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 subgroupQuadBroadcast ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const uint)
+0:41 move second child to first child ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 subgroupQuadBroadcast ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Constant:
+0:41 1 (const uint)
+0:42 move second child to first child ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 subgroupQuadBroadcast ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 Constant:
+0:42 1 (const uint)
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 subgroupQuadBroadcast ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 Constant:
+0:44 1 (const uint)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 subgroupQuadBroadcast ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 1 (const uint)
+0:46 move second child to first child ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 subgroupQuadBroadcast ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 Constant:
+0:46 1 (const uint)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 subgroupQuadBroadcast ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Constant:
+0:47 1 (const uint)
+0:49 move second child to first child ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 subgroupQuadBroadcast ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 Constant:
+0:49 1 (const uint)
+0:50 move second child to first child ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 subgroupQuadBroadcast ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 1 (const uint)
+0:51 move second child to first child ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 subgroupQuadBroadcast ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 Constant:
+0:51 1 (const uint)
+0:52 move second child to first child ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 subgroupQuadBroadcast ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 Constant:
+0:52 1 (const uint)
+0:54 move second child to first child ( temp 4-component vector of uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 subgroupQuadBroadcast ( temp 4-component vector of uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 2 (const uint)
+0:55 move second child to first child ( temp uint)
+0:55 direct index ( temp uint)
+0:55 u: direct index for structure ( temp 4-component vector of uint)
+0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:55 Constant:
+0:55 0 (const uint)
+0:55 direct index ( temp uint)
+0:55 'dti' ( in 3-component vector of uint)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 subgroupQuadBroadcast ( temp uint)
+0:55 direct index ( temp uint)
+0:55 u: direct index for structure ( temp 4-component vector of uint)
+0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:55 Constant:
+0:55 0 (const uint)
+0:55 direct index ( temp uint)
+0:55 'dti' ( in 3-component vector of uint)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 2 (const uint)
+0:56 move second child to first child ( temp 2-component vector of uint)
+0:56 vector swizzle ( temp 2-component vector of uint)
+0:56 u: direct index for structure ( temp 4-component vector of uint)
+0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 direct index ( temp uint)
+0:56 'dti' ( in 3-component vector of uint)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Sequence
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 1 (const int)
+0:56 subgroupQuadBroadcast ( temp 2-component vector of uint)
+0:56 vector swizzle ( temp 2-component vector of uint)
+0:56 u: direct index for structure ( temp 4-component vector of uint)
+0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 direct index ( temp uint)
+0:56 'dti' ( in 3-component vector of uint)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Sequence
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 1 (const int)
+0:56 Constant:
+0:56 2 (const uint)
+0:57 move second child to first child ( temp 3-component vector of uint)
+0:57 vector swizzle ( temp 3-component vector of uint)
+0:57 u: direct index for structure ( temp 4-component vector of uint)
+0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:57 Constant:
+0:57 0 (const uint)
+0:57 direct index ( temp uint)
+0:57 'dti' ( in 3-component vector of uint)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Sequence
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 Constant:
+0:57 2 (const int)
+0:57 subgroupQuadBroadcast ( temp 3-component vector of uint)
+0:57 vector swizzle ( temp 3-component vector of uint)
+0:57 u: direct index for structure ( temp 4-component vector of uint)
+0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:57 Constant:
+0:57 0 (const uint)
+0:57 direct index ( temp uint)
+0:57 'dti' ( in 3-component vector of uint)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Sequence
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 Constant:
+0:57 2 (const int)
+0:57 Constant:
+0:57 2 (const uint)
+0:59 move second child to first child ( temp 4-component vector of int)
+0:59 i: direct index for structure ( temp 4-component vector of int)
+0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:59 Constant:
+0:59 0 (const uint)
+0:59 direct index ( temp uint)
+0:59 'dti' ( in 3-component vector of uint)
+0:59 Constant:
+0:59 0 (const int)
+0:59 Constant:
+0:59 1 (const int)
+0:59 subgroupQuadBroadcast ( temp 4-component vector of int)
+0:59 i: direct index for structure ( temp 4-component vector of int)
+0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:59 Constant:
+0:59 0 (const uint)
+0:59 direct index ( temp uint)
+0:59 'dti' ( in 3-component vector of uint)
+0:59 Constant:
+0:59 0 (const int)
+0:59 Constant:
+0:59 1 (const int)
+0:59 Constant:
+0:59 2 (const uint)
+0:60 move second child to first child ( temp int)
+0:60 direct index ( temp int)
+0:60 i: direct index for structure ( temp 4-component vector of int)
+0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:60 Constant:
+0:60 0 (const uint)
+0:60 direct index ( temp uint)
+0:60 'dti' ( in 3-component vector of uint)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 1 (const int)
+0:60 Constant:
+0:60 0 (const int)
+0:60 subgroupQuadBroadcast ( temp int)
+0:60 direct index ( temp int)
+0:60 i: direct index for structure ( temp 4-component vector of int)
+0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:60 Constant:
+0:60 0 (const uint)
+0:60 direct index ( temp uint)
+0:60 'dti' ( in 3-component vector of uint)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 1 (const int)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 2 (const uint)
+0:61 move second child to first child ( temp 2-component vector of int)
+0:61 vector swizzle ( temp 2-component vector of int)
+0:61 i: direct index for structure ( temp 4-component vector of int)
+0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:61 Constant:
+0:61 0 (const uint)
+0:61 direct index ( temp uint)
+0:61 'dti' ( in 3-component vector of uint)
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Sequence
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 subgroupQuadBroadcast ( temp 2-component vector of int)
+0:61 vector swizzle ( temp 2-component vector of int)
+0:61 i: direct index for structure ( temp 4-component vector of int)
+0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:61 Constant:
+0:61 0 (const uint)
+0:61 direct index ( temp uint)
+0:61 'dti' ( in 3-component vector of uint)
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Sequence
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Constant:
+0:61 2 (const uint)
+0:62 move second child to first child ( temp 3-component vector of int)
+0:62 vector swizzle ( temp 3-component vector of int)
+0:62 i: direct index for structure ( temp 4-component vector of int)
+0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:62 Constant:
+0:62 0 (const uint)
+0:62 direct index ( temp uint)
+0:62 'dti' ( in 3-component vector of uint)
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Sequence
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Constant:
+0:62 2 (const int)
+0:62 subgroupQuadBroadcast ( temp 3-component vector of int)
+0:62 vector swizzle ( temp 3-component vector of int)
+0:62 i: direct index for structure ( temp 4-component vector of int)
+0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:62 Constant:
+0:62 0 (const uint)
+0:62 direct index ( temp uint)
+0:62 'dti' ( in 3-component vector of uint)
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Sequence
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Constant:
+0:62 2 (const int)
+0:62 Constant:
+0:62 2 (const uint)
+0:64 move second child to first child ( temp 4-component vector of float)
+0:64 f: direct index for structure ( temp 4-component vector of float)
+0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:64 Constant:
+0:64 0 (const uint)
+0:64 direct index ( temp uint)
+0:64 'dti' ( in 3-component vector of uint)
+0:64 Constant:
+0:64 0 (const int)
+0:64 Constant:
+0:64 2 (const int)
+0:64 subgroupQuadBroadcast ( temp 4-component vector of float)
+0:64 f: direct index for structure ( temp 4-component vector of float)
+0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:64 Constant:
+0:64 0 (const uint)
+0:64 direct index ( temp uint)
+0:64 'dti' ( in 3-component vector of uint)
+0:64 Constant:
+0:64 0 (const int)
+0:64 Constant:
+0:64 2 (const int)
+0:64 Constant:
+0:64 2 (const uint)
+0:65 move second child to first child ( temp float)
+0:65 direct index ( temp float)
+0:65 f: direct index for structure ( temp 4-component vector of float)
+0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:65 Constant:
+0:65 0 (const uint)
+0:65 direct index ( temp uint)
+0:65 'dti' ( in 3-component vector of uint)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const int)
+0:65 Constant:
+0:65 0 (const int)
+0:65 subgroupQuadBroadcast ( temp float)
+0:65 direct index ( temp float)
+0:65 f: direct index for structure ( temp 4-component vector of float)
+0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:65 Constant:
+0:65 0 (const uint)
+0:65 direct index ( temp uint)
+0:65 'dti' ( in 3-component vector of uint)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const int)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const uint)
+0:66 move second child to first child ( temp 2-component vector of float)
+0:66 vector swizzle ( temp 2-component vector of float)
+0:66 f: direct index for structure ( temp 4-component vector of float)
+0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:66 Constant:
+0:66 0 (const uint)
+0:66 direct index ( temp uint)
+0:66 'dti' ( in 3-component vector of uint)
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 2 (const int)
+0:66 Sequence
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 1 (const int)
+0:66 subgroupQuadBroadcast ( temp 2-component vector of float)
+0:66 vector swizzle ( temp 2-component vector of float)
+0:66 f: direct index for structure ( temp 4-component vector of float)
+0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:66 Constant:
+0:66 0 (const uint)
+0:66 direct index ( temp uint)
+0:66 'dti' ( in 3-component vector of uint)
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 2 (const int)
+0:66 Sequence
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 1 (const int)
+0:66 Constant:
+0:66 2 (const uint)
+0:67 move second child to first child ( temp 3-component vector of float)
+0:67 vector swizzle ( temp 3-component vector of float)
+0:67 f: direct index for structure ( temp 4-component vector of float)
+0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:67 Constant:
+0:67 0 (const uint)
+0:67 direct index ( temp uint)
+0:67 'dti' ( in 3-component vector of uint)
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Sequence
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 1 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 subgroupQuadBroadcast ( temp 3-component vector of float)
+0:67 vector swizzle ( temp 3-component vector of float)
+0:67 f: direct index for structure ( temp 4-component vector of float)
+0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:67 Constant:
+0:67 0 (const uint)
+0:67 direct index ( temp uint)
+0:67 'dti' ( in 3-component vector of uint)
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Sequence
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 1 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Constant:
+0:67 2 (const uint)
+0:69 move second child to first child ( temp 4-component vector of double)
+0:69 d: direct index for structure ( temp 4-component vector of double)
+0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:69 Constant:
+0:69 0 (const uint)
+0:69 direct index ( temp uint)
+0:69 'dti' ( in 3-component vector of uint)
+0:69 Constant:
+0:69 0 (const int)
+0:69 Constant:
+0:69 3 (const int)
+0:69 subgroupQuadBroadcast ( temp 4-component vector of double)
+0:69 d: direct index for structure ( temp 4-component vector of double)
+0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:69 Constant:
+0:69 0 (const uint)
+0:69 direct index ( temp uint)
+0:69 'dti' ( in 3-component vector of uint)
+0:69 Constant:
+0:69 0 (const int)
+0:69 Constant:
+0:69 3 (const int)
+0:69 Constant:
+0:69 2 (const uint)
+0:70 move second child to first child ( temp double)
+0:70 direct index ( temp double)
+0:70 d: direct index for structure ( temp 4-component vector of double)
+0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:70 Constant:
+0:70 0 (const uint)
+0:70 direct index ( temp uint)
+0:70 'dti' ( in 3-component vector of uint)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 3 (const int)
+0:70 Constant:
+0:70 0 (const int)
+0:70 subgroupQuadBroadcast ( temp double)
+0:70 direct index ( temp double)
+0:70 d: direct index for structure ( temp 4-component vector of double)
+0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:70 Constant:
+0:70 0 (const uint)
+0:70 direct index ( temp uint)
+0:70 'dti' ( in 3-component vector of uint)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 3 (const int)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 2 (const uint)
+0:71 move second child to first child ( temp 2-component vector of double)
+0:71 vector swizzle ( temp 2-component vector of double)
+0:71 d: direct index for structure ( temp 4-component vector of double)
+0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:71 Constant:
+0:71 0 (const uint)
+0:71 direct index ( temp uint)
+0:71 'dti' ( in 3-component vector of uint)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 3 (const int)
+0:71 Sequence
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 1 (const int)
+0:71 subgroupQuadBroadcast ( temp 2-component vector of double)
+0:71 vector swizzle ( temp 2-component vector of double)
+0:71 d: direct index for structure ( temp 4-component vector of double)
+0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:71 Constant:
+0:71 0 (const uint)
+0:71 direct index ( temp uint)
+0:71 'dti' ( in 3-component vector of uint)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 3 (const int)
+0:71 Sequence
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 1 (const int)
+0:71 Constant:
+0:71 2 (const uint)
+0:72 move second child to first child ( temp 3-component vector of double)
+0:72 vector swizzle ( temp 3-component vector of double)
+0:72 d: direct index for structure ( temp 4-component vector of double)
+0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:72 Constant:
+0:72 0 (const uint)
+0:72 direct index ( temp uint)
+0:72 'dti' ( in 3-component vector of uint)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 3 (const int)
+0:72 Sequence
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 1 (const int)
+0:72 Constant:
+0:72 2 (const int)
+0:72 subgroupQuadBroadcast ( temp 3-component vector of double)
+0:72 vector swizzle ( temp 3-component vector of double)
+0:72 d: direct index for structure ( temp 4-component vector of double)
+0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:72 Constant:
+0:72 0 (const uint)
+0:72 direct index ( temp uint)
+0:72 'dti' ( in 3-component vector of uint)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 3 (const int)
+0:72 Sequence
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 1 (const int)
+0:72 Constant:
+0:72 2 (const int)
+0:72 Constant:
+0:72 2 (const uint)
+0:74 move second child to first child ( temp 4-component vector of uint)
+0:74 u: direct index for structure ( temp 4-component vector of uint)
+0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:74 Constant:
+0:74 0 (const uint)
+0:74 direct index ( temp uint)
+0:74 'dti' ( in 3-component vector of uint)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 0 (const int)
+0:74 subgroupQuadBroadcast ( temp 4-component vector of uint)
+0:74 u: direct index for structure ( temp 4-component vector of uint)
+0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:74 Constant:
+0:74 0 (const uint)
+0:74 direct index ( temp uint)
+0:74 'dti' ( in 3-component vector of uint)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 3 (const uint)
+0:75 move second child to first child ( temp uint)
+0:75 direct index ( temp uint)
+0:75 u: direct index for structure ( temp 4-component vector of uint)
+0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:75 Constant:
+0:75 0 (const uint)
+0:75 direct index ( temp uint)
+0:75 'dti' ( in 3-component vector of uint)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 subgroupQuadBroadcast ( temp uint)
+0:75 direct index ( temp uint)
+0:75 u: direct index for structure ( temp 4-component vector of uint)
+0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:75 Constant:
+0:75 0 (const uint)
+0:75 direct index ( temp uint)
+0:75 'dti' ( in 3-component vector of uint)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 3 (const uint)
+0:76 move second child to first child ( temp 2-component vector of uint)
+0:76 vector swizzle ( temp 2-component vector of uint)
+0:76 u: direct index for structure ( temp 4-component vector of uint)
+0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:76 Constant:
+0:76 0 (const uint)
+0:76 direct index ( temp uint)
+0:76 'dti' ( in 3-component vector of uint)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Sequence
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 1 (const int)
+0:76 subgroupQuadBroadcast ( temp 2-component vector of uint)
+0:76 vector swizzle ( temp 2-component vector of uint)
+0:76 u: direct index for structure ( temp 4-component vector of uint)
+0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:76 Constant:
+0:76 0 (const uint)
+0:76 direct index ( temp uint)
+0:76 'dti' ( in 3-component vector of uint)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Sequence
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 1 (const int)
+0:76 Constant:
+0:76 3 (const uint)
+0:77 move second child to first child ( temp 3-component vector of uint)
+0:77 vector swizzle ( temp 3-component vector of uint)
+0:77 u: direct index for structure ( temp 4-component vector of uint)
+0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:77 Constant:
+0:77 0 (const uint)
+0:77 direct index ( temp uint)
+0:77 'dti' ( in 3-component vector of uint)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Sequence
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 1 (const int)
+0:77 Constant:
+0:77 2 (const int)
+0:77 subgroupQuadBroadcast ( temp 3-component vector of uint)
+0:77 vector swizzle ( temp 3-component vector of uint)
+0:77 u: direct index for structure ( temp 4-component vector of uint)
+0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:77 Constant:
+0:77 0 (const uint)
+0:77 direct index ( temp uint)
+0:77 'dti' ( in 3-component vector of uint)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Sequence
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 1 (const int)
+0:77 Constant:
+0:77 2 (const int)
+0:77 Constant:
+0:77 3 (const uint)
+0:79 move second child to first child ( temp 4-component vector of int)
+0:79 i: direct index for structure ( temp 4-component vector of int)
+0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:79 Constant:
+0:79 0 (const uint)
+0:79 direct index ( temp uint)
+0:79 'dti' ( in 3-component vector of uint)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 1 (const int)
+0:79 subgroupQuadBroadcast ( temp 4-component vector of int)
+0:79 i: direct index for structure ( temp 4-component vector of int)
+0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:79 Constant:
+0:79 0 (const uint)
+0:79 direct index ( temp uint)
+0:79 'dti' ( in 3-component vector of uint)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 1 (const int)
+0:79 Constant:
+0:79 3 (const uint)
+0:80 move second child to first child ( temp int)
+0:80 direct index ( temp int)
+0:80 i: direct index for structure ( temp 4-component vector of int)
+0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:80 Constant:
+0:80 0 (const uint)
+0:80 direct index ( temp uint)
+0:80 'dti' ( in 3-component vector of uint)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 1 (const int)
+0:80 Constant:
+0:80 0 (const int)
+0:80 subgroupQuadBroadcast ( temp int)
+0:80 direct index ( temp int)
+0:80 i: direct index for structure ( temp 4-component vector of int)
+0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:80 Constant:
+0:80 0 (const uint)
+0:80 direct index ( temp uint)
+0:80 'dti' ( in 3-component vector of uint)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 1 (const int)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 3 (const uint)
+0:81 move second child to first child ( temp 2-component vector of int)
+0:81 vector swizzle ( temp 2-component vector of int)
+0:81 i: direct index for structure ( temp 4-component vector of int)
+0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:81 Constant:
+0:81 0 (const uint)
+0:81 direct index ( temp uint)
+0:81 'dti' ( in 3-component vector of uint)
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Sequence
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 subgroupQuadBroadcast ( temp 2-component vector of int)
+0:81 vector swizzle ( temp 2-component vector of int)
+0:81 i: direct index for structure ( temp 4-component vector of int)
+0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:81 Constant:
+0:81 0 (const uint)
+0:81 direct index ( temp uint)
+0:81 'dti' ( in 3-component vector of uint)
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Sequence
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Constant:
+0:81 3 (const uint)
+0:82 move second child to first child ( temp 3-component vector of int)
+0:82 vector swizzle ( temp 3-component vector of int)
+0:82 i: direct index for structure ( temp 4-component vector of int)
+0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:82 Constant:
+0:82 0 (const uint)
+0:82 direct index ( temp uint)
+0:82 'dti' ( in 3-component vector of uint)
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Sequence
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Constant:
+0:82 2 (const int)
+0:82 subgroupQuadBroadcast ( temp 3-component vector of int)
+0:82 vector swizzle ( temp 3-component vector of int)
+0:82 i: direct index for structure ( temp 4-component vector of int)
+0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:82 Constant:
+0:82 0 (const uint)
+0:82 direct index ( temp uint)
+0:82 'dti' ( in 3-component vector of uint)
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Sequence
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Constant:
+0:82 2 (const int)
+0:82 Constant:
+0:82 3 (const uint)
+0:84 move second child to first child ( temp 4-component vector of float)
+0:84 f: direct index for structure ( temp 4-component vector of float)
+0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:84 Constant:
+0:84 0 (const uint)
+0:84 direct index ( temp uint)
+0:84 'dti' ( in 3-component vector of uint)
+0:84 Constant:
+0:84 0 (const int)
+0:84 Constant:
+0:84 2 (const int)
+0:84 subgroupQuadBroadcast ( temp 4-component vector of float)
+0:84 f: direct index for structure ( temp 4-component vector of float)
+0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:84 Constant:
+0:84 0 (const uint)
+0:84 direct index ( temp uint)
+0:84 'dti' ( in 3-component vector of uint)
+0:84 Constant:
+0:84 0 (const int)
+0:84 Constant:
+0:84 2 (const int)
+0:84 Constant:
+0:84 3 (const uint)
+0:85 move second child to first child ( temp float)
+0:85 direct index ( temp float)
+0:85 f: direct index for structure ( temp 4-component vector of float)
+0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:85 Constant:
+0:85 0 (const uint)
+0:85 direct index ( temp uint)
+0:85 'dti' ( in 3-component vector of uint)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 2 (const int)
+0:85 Constant:
+0:85 0 (const int)
+0:85 subgroupQuadBroadcast ( temp float)
+0:85 direct index ( temp float)
+0:85 f: direct index for structure ( temp 4-component vector of float)
+0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:85 Constant:
+0:85 0 (const uint)
+0:85 direct index ( temp uint)
+0:85 'dti' ( in 3-component vector of uint)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 2 (const int)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 3 (const uint)
+0:86 move second child to first child ( temp 2-component vector of float)
+0:86 vector swizzle ( temp 2-component vector of float)
+0:86 f: direct index for structure ( temp 4-component vector of float)
+0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:86 Constant:
+0:86 0 (const uint)
+0:86 direct index ( temp uint)
+0:86 'dti' ( in 3-component vector of uint)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:86 subgroupQuadBroadcast ( temp 2-component vector of float)
+0:86 vector swizzle ( temp 2-component vector of float)
+0:86 f: direct index for structure ( temp 4-component vector of float)
+0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:86 Constant:
+0:86 0 (const uint)
+0:86 direct index ( temp uint)
+0:86 'dti' ( in 3-component vector of uint)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:86 Constant:
+0:86 3 (const uint)
+0:87 move second child to first child ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 f: direct index for structure ( temp 4-component vector of float)
+0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:87 Constant:
+0:87 0 (const uint)
+0:87 direct index ( temp uint)
+0:87 'dti' ( in 3-component vector of uint)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 subgroupQuadBroadcast ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 f: direct index for structure ( temp 4-component vector of float)
+0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:87 Constant:
+0:87 0 (const uint)
+0:87 direct index ( temp uint)
+0:87 'dti' ( in 3-component vector of uint)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Constant:
+0:87 3 (const uint)
+0:89 move second child to first child ( temp 4-component vector of double)
+0:89 d: direct index for structure ( temp 4-component vector of double)
+0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:89 Constant:
+0:89 0 (const uint)
+0:89 direct index ( temp uint)
+0:89 'dti' ( in 3-component vector of uint)
+0:89 Constant:
+0:89 0 (const int)
+0:89 Constant:
+0:89 3 (const int)
+0:89 subgroupQuadBroadcast ( temp 4-component vector of double)
+0:89 d: direct index for structure ( temp 4-component vector of double)
+0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:89 Constant:
+0:89 0 (const uint)
+0:89 direct index ( temp uint)
+0:89 'dti' ( in 3-component vector of uint)
+0:89 Constant:
+0:89 0 (const int)
+0:89 Constant:
+0:89 3 (const int)
+0:89 Constant:
+0:89 3 (const uint)
+0:90 move second child to first child ( temp double)
+0:90 direct index ( temp double)
+0:90 d: direct index for structure ( temp 4-component vector of double)
+0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:90 Constant:
+0:90 0 (const uint)
+0:90 direct index ( temp uint)
+0:90 'dti' ( in 3-component vector of uint)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const int)
+0:90 Constant:
+0:90 0 (const int)
+0:90 subgroupQuadBroadcast ( temp double)
+0:90 direct index ( temp double)
+0:90 d: direct index for structure ( temp 4-component vector of double)
+0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:90 Constant:
+0:90 0 (const uint)
+0:90 direct index ( temp uint)
+0:90 'dti' ( in 3-component vector of uint)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const int)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const uint)
+0:91 move second child to first child ( temp 2-component vector of double)
+0:91 vector swizzle ( temp 2-component vector of double)
+0:91 d: direct index for structure ( temp 4-component vector of double)
+0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:91 Constant:
+0:91 0 (const uint)
+0:91 direct index ( temp uint)
+0:91 'dti' ( in 3-component vector of uint)
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 3 (const int)
+0:91 Sequence
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 1 (const int)
+0:91 subgroupQuadBroadcast ( temp 2-component vector of double)
+0:91 vector swizzle ( temp 2-component vector of double)
+0:91 d: direct index for structure ( temp 4-component vector of double)
+0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:91 Constant:
+0:91 0 (const uint)
+0:91 direct index ( temp uint)
+0:91 'dti' ( in 3-component vector of uint)
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 3 (const int)
+0:91 Sequence
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 1 (const int)
+0:91 Constant:
+0:91 3 (const uint)
+0:92 move second child to first child ( temp 3-component vector of double)
+0:92 vector swizzle ( temp 3-component vector of double)
+0:92 d: direct index for structure ( temp 4-component vector of double)
+0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:92 Constant:
+0:92 0 (const uint)
+0:92 direct index ( temp uint)
+0:92 'dti' ( in 3-component vector of uint)
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 3 (const int)
+0:92 Sequence
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 1 (const int)
+0:92 Constant:
+0:92 2 (const int)
+0:92 subgroupQuadBroadcast ( temp 3-component vector of double)
+0:92 vector swizzle ( temp 3-component vector of double)
+0:92 d: direct index for structure ( temp 4-component vector of double)
+0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:92 Constant:
+0:92 0 (const uint)
+0:92 direct index ( temp uint)
+0:92 'dti' ( in 3-component vector of uint)
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 3 (const int)
+0:92 Sequence
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 1 (const int)
+0:92 Constant:
+0:92 2 (const int)
+0:92 Constant:
+0:92 3 (const uint)
+0:94 move second child to first child ( temp 4-component vector of uint)
+0:94 u: direct index for structure ( temp 4-component vector of uint)
+0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:94 Constant:
+0:94 0 (const uint)
+0:94 direct index ( temp uint)
+0:94 'dti' ( in 3-component vector of uint)
+0:94 Constant:
+0:94 0 (const int)
+0:94 Constant:
+0:94 0 (const int)
+0:94 subgroupQuadSwapHorizontal ( temp 4-component vector of uint)
+0:94 u: direct index for structure ( temp 4-component vector of uint)
+0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:94 Constant:
+0:94 0 (const uint)
+0:94 direct index ( temp uint)
+0:94 'dti' ( in 3-component vector of uint)
+0:94 Constant:
+0:94 0 (const int)
+0:94 Constant:
+0:94 0 (const int)
+0:95 move second child to first child ( temp uint)
+0:95 direct index ( temp uint)
+0:95 u: direct index for structure ( temp 4-component vector of uint)
+0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:95 Constant:
+0:95 0 (const uint)
+0:95 direct index ( temp uint)
+0:95 'dti' ( in 3-component vector of uint)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 subgroupQuadSwapHorizontal ( temp uint)
+0:95 direct index ( temp uint)
+0:95 u: direct index for structure ( temp 4-component vector of uint)
+0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:95 Constant:
+0:95 0 (const uint)
+0:95 direct index ( temp uint)
+0:95 'dti' ( in 3-component vector of uint)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:96 move second child to first child ( temp 2-component vector of uint)
+0:96 vector swizzle ( temp 2-component vector of uint)
+0:96 u: direct index for structure ( temp 4-component vector of uint)
+0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:96 Constant:
+0:96 0 (const uint)
+0:96 direct index ( temp uint)
+0:96 'dti' ( in 3-component vector of uint)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Sequence
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 1 (const int)
+0:96 subgroupQuadSwapHorizontal ( temp 2-component vector of uint)
+0:96 vector swizzle ( temp 2-component vector of uint)
+0:96 u: direct index for structure ( temp 4-component vector of uint)
+0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:96 Constant:
+0:96 0 (const uint)
+0:96 direct index ( temp uint)
+0:96 'dti' ( in 3-component vector of uint)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Sequence
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 1 (const int)
+0:97 move second child to first child ( temp 3-component vector of uint)
+0:97 vector swizzle ( temp 3-component vector of uint)
+0:97 u: direct index for structure ( temp 4-component vector of uint)
+0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:97 Constant:
+0:97 0 (const uint)
+0:97 direct index ( temp uint)
+0:97 'dti' ( in 3-component vector of uint)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Sequence
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 1 (const int)
+0:97 Constant:
+0:97 2 (const int)
+0:97 subgroupQuadSwapHorizontal ( temp 3-component vector of uint)
+0:97 vector swizzle ( temp 3-component vector of uint)
+0:97 u: direct index for structure ( temp 4-component vector of uint)
+0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:97 Constant:
+0:97 0 (const uint)
+0:97 direct index ( temp uint)
+0:97 'dti' ( in 3-component vector of uint)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Sequence
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 1 (const int)
+0:97 Constant:
+0:97 2 (const int)
+0:99 move second child to first child ( temp 4-component vector of int)
+0:99 i: direct index for structure ( temp 4-component vector of int)
+0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:99 Constant:
+0:99 0 (const uint)
+0:99 direct index ( temp uint)
+0:99 'dti' ( in 3-component vector of uint)
+0:99 Constant:
+0:99 0 (const int)
+0:99 Constant:
+0:99 1 (const int)
+0:99 subgroupQuadSwapHorizontal ( temp 4-component vector of int)
+0:99 i: direct index for structure ( temp 4-component vector of int)
+0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:99 Constant:
+0:99 0 (const uint)
+0:99 direct index ( temp uint)
+0:99 'dti' ( in 3-component vector of uint)
+0:99 Constant:
+0:99 0 (const int)
+0:99 Constant:
+0:99 1 (const int)
+0:100 move second child to first child ( temp int)
+0:100 direct index ( temp int)
+0:100 i: direct index for structure ( temp 4-component vector of int)
+0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:100 Constant:
+0:100 0 (const uint)
+0:100 direct index ( temp uint)
+0:100 'dti' ( in 3-component vector of uint)
+0:100 Constant:
+0:100 0 (const int)
+0:100 Constant:
+0:100 1 (const int)
+0:100 Constant:
+0:100 0 (const int)
+0:100 subgroupQuadSwapHorizontal ( temp int)
+0:100 direct index ( temp int)
+0:100 i: direct index for structure ( temp 4-component vector of int)
+0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:100 Constant:
+0:100 0 (const uint)
+0:100 direct index ( temp uint)
+0:100 'dti' ( in 3-component vector of uint)
+0:100 Constant:
+0:100 0 (const int)
+0:100 Constant:
+0:100 1 (const int)
+0:100 Constant:
+0:100 0 (const int)
+0:101 move second child to first child ( temp 2-component vector of int)
+0:101 vector swizzle ( temp 2-component vector of int)
+0:101 i: direct index for structure ( temp 4-component vector of int)
+0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:101 Constant:
+0:101 0 (const uint)
+0:101 direct index ( temp uint)
+0:101 'dti' ( in 3-component vector of uint)
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 Sequence
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 subgroupQuadSwapHorizontal ( temp 2-component vector of int)
+0:101 vector swizzle ( temp 2-component vector of int)
+0:101 i: direct index for structure ( temp 4-component vector of int)
+0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:101 Constant:
+0:101 0 (const uint)
+0:101 direct index ( temp uint)
+0:101 'dti' ( in 3-component vector of uint)
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 Sequence
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:102 move second child to first child ( temp 3-component vector of int)
+0:102 vector swizzle ( temp 3-component vector of int)
+0:102 i: direct index for structure ( temp 4-component vector of int)
+0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:102 Constant:
+0:102 0 (const uint)
+0:102 direct index ( temp uint)
+0:102 'dti' ( in 3-component vector of uint)
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Sequence
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Constant:
+0:102 2 (const int)
+0:102 subgroupQuadSwapHorizontal ( temp 3-component vector of int)
+0:102 vector swizzle ( temp 3-component vector of int)
+0:102 i: direct index for structure ( temp 4-component vector of int)
+0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:102 Constant:
+0:102 0 (const uint)
+0:102 direct index ( temp uint)
+0:102 'dti' ( in 3-component vector of uint)
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Sequence
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Constant:
+0:102 2 (const int)
+0:104 move second child to first child ( temp 4-component vector of float)
+0:104 f: direct index for structure ( temp 4-component vector of float)
+0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:104 Constant:
+0:104 0 (const uint)
+0:104 direct index ( temp uint)
+0:104 'dti' ( in 3-component vector of uint)
+0:104 Constant:
+0:104 0 (const int)
+0:104 Constant:
+0:104 2 (const int)
+0:104 subgroupQuadSwapHorizontal ( temp 4-component vector of float)
+0:104 f: direct index for structure ( temp 4-component vector of float)
+0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:104 Constant:
+0:104 0 (const uint)
+0:104 direct index ( temp uint)
+0:104 'dti' ( in 3-component vector of uint)
+0:104 Constant:
+0:104 0 (const int)
+0:104 Constant:
+0:104 2 (const int)
+0:105 move second child to first child ( temp float)
+0:105 direct index ( temp float)
+0:105 f: direct index for structure ( temp 4-component vector of float)
+0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:105 Constant:
+0:105 0 (const uint)
+0:105 direct index ( temp uint)
+0:105 'dti' ( in 3-component vector of uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 2 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:105 subgroupQuadSwapHorizontal ( temp float)
+0:105 direct index ( temp float)
+0:105 f: direct index for structure ( temp 4-component vector of float)
+0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:105 Constant:
+0:105 0 (const uint)
+0:105 direct index ( temp uint)
+0:105 'dti' ( in 3-component vector of uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 2 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:106 move second child to first child ( temp 2-component vector of float)
+0:106 vector swizzle ( temp 2-component vector of float)
+0:106 f: direct index for structure ( temp 4-component vector of float)
+0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:106 Constant:
+0:106 0 (const uint)
+0:106 direct index ( temp uint)
+0:106 'dti' ( in 3-component vector of uint)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 2 (const int)
+0:106 Sequence
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 1 (const int)
+0:106 subgroupQuadSwapHorizontal ( temp 2-component vector of float)
+0:106 vector swizzle ( temp 2-component vector of float)
+0:106 f: direct index for structure ( temp 4-component vector of float)
+0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:106 Constant:
+0:106 0 (const uint)
+0:106 direct index ( temp uint)
+0:106 'dti' ( in 3-component vector of uint)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 2 (const int)
+0:106 Sequence
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 1 (const int)
+0:107 move second child to first child ( temp 3-component vector of float)
+0:107 vector swizzle ( temp 3-component vector of float)
+0:107 f: direct index for structure ( temp 4-component vector of float)
+0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:107 Constant:
+0:107 0 (const uint)
+0:107 direct index ( temp uint)
+0:107 'dti' ( in 3-component vector of uint)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:107 subgroupQuadSwapHorizontal ( temp 3-component vector of float)
+0:107 vector swizzle ( temp 3-component vector of float)
+0:107 f: direct index for structure ( temp 4-component vector of float)
+0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:107 Constant:
+0:107 0 (const uint)
+0:107 direct index ( temp uint)
+0:107 'dti' ( in 3-component vector of uint)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:109 move second child to first child ( temp 4-component vector of double)
+0:109 d: direct index for structure ( temp 4-component vector of double)
+0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:109 Constant:
+0:109 0 (const uint)
+0:109 direct index ( temp uint)
+0:109 'dti' ( in 3-component vector of uint)
+0:109 Constant:
+0:109 0 (const int)
+0:109 Constant:
+0:109 3 (const int)
+0:109 subgroupQuadSwapHorizontal ( temp 4-component vector of double)
+0:109 d: direct index for structure ( temp 4-component vector of double)
+0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:109 Constant:
+0:109 0 (const uint)
+0:109 direct index ( temp uint)
+0:109 'dti' ( in 3-component vector of uint)
+0:109 Constant:
+0:109 0 (const int)
+0:109 Constant:
+0:109 3 (const int)
+0:110 move second child to first child ( temp double)
+0:110 direct index ( temp double)
+0:110 d: direct index for structure ( temp 4-component vector of double)
+0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:110 Constant:
+0:110 0 (const uint)
+0:110 direct index ( temp uint)
+0:110 'dti' ( in 3-component vector of uint)
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 3 (const int)
+0:110 Constant:
+0:110 0 (const int)
+0:110 subgroupQuadSwapHorizontal ( temp double)
+0:110 direct index ( temp double)
+0:110 d: direct index for structure ( temp 4-component vector of double)
+0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:110 Constant:
+0:110 0 (const uint)
+0:110 direct index ( temp uint)
+0:110 'dti' ( in 3-component vector of uint)
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 3 (const int)
+0:110 Constant:
+0:110 0 (const int)
+0:111 move second child to first child ( temp 2-component vector of double)
+0:111 vector swizzle ( temp 2-component vector of double)
+0:111 d: direct index for structure ( temp 4-component vector of double)
+0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:111 Constant:
+0:111 0 (const uint)
+0:111 direct index ( temp uint)
+0:111 'dti' ( in 3-component vector of uint)
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 3 (const int)
+0:111 Sequence
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:111 subgroupQuadSwapHorizontal ( temp 2-component vector of double)
+0:111 vector swizzle ( temp 2-component vector of double)
+0:111 d: direct index for structure ( temp 4-component vector of double)
+0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:111 Constant:
+0:111 0 (const uint)
+0:111 direct index ( temp uint)
+0:111 'dti' ( in 3-component vector of uint)
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 3 (const int)
+0:111 Sequence
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:112 move second child to first child ( temp 3-component vector of double)
+0:112 vector swizzle ( temp 3-component vector of double)
+0:112 d: direct index for structure ( temp 4-component vector of double)
+0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:112 Constant:
+0:112 0 (const uint)
+0:112 direct index ( temp uint)
+0:112 'dti' ( in 3-component vector of uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 3 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:112 subgroupQuadSwapHorizontal ( temp 3-component vector of double)
+0:112 vector swizzle ( temp 3-component vector of double)
+0:112 d: direct index for structure ( temp 4-component vector of double)
+0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:112 Constant:
+0:112 0 (const uint)
+0:112 direct index ( temp uint)
+0:112 'dti' ( in 3-component vector of uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 3 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:114 move second child to first child ( temp 4-component vector of uint)
+0:114 u: direct index for structure ( temp 4-component vector of uint)
+0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:114 Constant:
+0:114 0 (const uint)
+0:114 direct index ( temp uint)
+0:114 'dti' ( in 3-component vector of uint)
+0:114 Constant:
+0:114 0 (const int)
+0:114 Constant:
+0:114 0 (const int)
+0:114 subgroupQuadSwapVertical ( temp 4-component vector of uint)
+0:114 u: direct index for structure ( temp 4-component vector of uint)
+0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:114 Constant:
+0:114 0 (const uint)
+0:114 direct index ( temp uint)
+0:114 'dti' ( in 3-component vector of uint)
+0:114 Constant:
+0:114 0 (const int)
+0:114 Constant:
+0:114 0 (const int)
+0:115 move second child to first child ( temp uint)
+0:115 direct index ( temp uint)
+0:115 u: direct index for structure ( temp 4-component vector of uint)
+0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:115 Constant:
+0:115 0 (const uint)
+0:115 direct index ( temp uint)
+0:115 'dti' ( in 3-component vector of uint)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 subgroupQuadSwapVertical ( temp uint)
+0:115 direct index ( temp uint)
+0:115 u: direct index for structure ( temp 4-component vector of uint)
+0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:115 Constant:
+0:115 0 (const uint)
+0:115 direct index ( temp uint)
+0:115 'dti' ( in 3-component vector of uint)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:116 move second child to first child ( temp 2-component vector of uint)
+0:116 vector swizzle ( temp 2-component vector of uint)
+0:116 u: direct index for structure ( temp 4-component vector of uint)
+0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:116 Constant:
+0:116 0 (const uint)
+0:116 direct index ( temp uint)
+0:116 'dti' ( in 3-component vector of uint)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Sequence
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 1 (const int)
+0:116 subgroupQuadSwapVertical ( temp 2-component vector of uint)
+0:116 vector swizzle ( temp 2-component vector of uint)
+0:116 u: direct index for structure ( temp 4-component vector of uint)
+0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:116 Constant:
+0:116 0 (const uint)
+0:116 direct index ( temp uint)
+0:116 'dti' ( in 3-component vector of uint)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Sequence
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 1 (const int)
+0:117 move second child to first child ( temp 3-component vector of uint)
+0:117 vector swizzle ( temp 3-component vector of uint)
+0:117 u: direct index for structure ( temp 4-component vector of uint)
+0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:117 Constant:
+0:117 0 (const uint)
+0:117 direct index ( temp uint)
+0:117 'dti' ( in 3-component vector of uint)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Sequence
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 1 (const int)
+0:117 Constant:
+0:117 2 (const int)
+0:117 subgroupQuadSwapVertical ( temp 3-component vector of uint)
+0:117 vector swizzle ( temp 3-component vector of uint)
+0:117 u: direct index for structure ( temp 4-component vector of uint)
+0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:117 Constant:
+0:117 0 (const uint)
+0:117 direct index ( temp uint)
+0:117 'dti' ( in 3-component vector of uint)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Sequence
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 1 (const int)
+0:117 Constant:
+0:117 2 (const int)
+0:119 move second child to first child ( temp 4-component vector of int)
+0:119 i: direct index for structure ( temp 4-component vector of int)
+0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:119 Constant:
+0:119 0 (const uint)
+0:119 direct index ( temp uint)
+0:119 'dti' ( in 3-component vector of uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 1 (const int)
+0:119 subgroupQuadSwapVertical ( temp 4-component vector of int)
+0:119 i: direct index for structure ( temp 4-component vector of int)
+0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:119 Constant:
+0:119 0 (const uint)
+0:119 direct index ( temp uint)
+0:119 'dti' ( in 3-component vector of uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 1 (const int)
+0:120 move second child to first child ( temp int)
+0:120 direct index ( temp int)
+0:120 i: direct index for structure ( temp 4-component vector of int)
+0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:120 Constant:
+0:120 0 (const uint)
+0:120 direct index ( temp uint)
+0:120 'dti' ( in 3-component vector of uint)
+0:120 Constant:
+0:120 0 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 0 (const int)
+0:120 subgroupQuadSwapVertical ( temp int)
+0:120 direct index ( temp int)
+0:120 i: direct index for structure ( temp 4-component vector of int)
+0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:120 Constant:
+0:120 0 (const uint)
+0:120 direct index ( temp uint)
+0:120 'dti' ( in 3-component vector of uint)
+0:120 Constant:
+0:120 0 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 0 (const int)
+0:121 move second child to first child ( temp 2-component vector of int)
+0:121 vector swizzle ( temp 2-component vector of int)
+0:121 i: direct index for structure ( temp 4-component vector of int)
+0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:121 Constant:
+0:121 0 (const uint)
+0:121 direct index ( temp uint)
+0:121 'dti' ( in 3-component vector of uint)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 subgroupQuadSwapVertical ( temp 2-component vector of int)
+0:121 vector swizzle ( temp 2-component vector of int)
+0:121 i: direct index for structure ( temp 4-component vector of int)
+0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:121 Constant:
+0:121 0 (const uint)
+0:121 direct index ( temp uint)
+0:121 'dti' ( in 3-component vector of uint)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:122 move second child to first child ( temp 3-component vector of int)
+0:122 vector swizzle ( temp 3-component vector of int)
+0:122 i: direct index for structure ( temp 4-component vector of int)
+0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:122 Constant:
+0:122 0 (const uint)
+0:122 direct index ( temp uint)
+0:122 'dti' ( in 3-component vector of uint)
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:122 subgroupQuadSwapVertical ( temp 3-component vector of int)
+0:122 vector swizzle ( temp 3-component vector of int)
+0:122 i: direct index for structure ( temp 4-component vector of int)
+0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:122 Constant:
+0:122 0 (const uint)
+0:122 direct index ( temp uint)
+0:122 'dti' ( in 3-component vector of uint)
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:124 move second child to first child ( temp 4-component vector of float)
+0:124 f: direct index for structure ( temp 4-component vector of float)
+0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:124 Constant:
+0:124 0 (const uint)
+0:124 direct index ( temp uint)
+0:124 'dti' ( in 3-component vector of uint)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 2 (const int)
+0:124 subgroupQuadSwapVertical ( temp 4-component vector of float)
+0:124 f: direct index for structure ( temp 4-component vector of float)
+0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:124 Constant:
+0:124 0 (const uint)
+0:124 direct index ( temp uint)
+0:124 'dti' ( in 3-component vector of uint)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 2 (const int)
+0:125 move second child to first child ( temp float)
+0:125 direct index ( temp float)
+0:125 f: direct index for structure ( temp 4-component vector of float)
+0:125 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:125 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:125 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:125 Constant:
+0:125 0 (const uint)
+0:125 direct index ( temp uint)
+0:125 'dti' ( in 3-component vector of uint)
+0:125 Constant:
+0:125 0 (const int)
+0:125 Constant:
+0:125 2 (const int)
+0:125 Constant:
+0:125 0 (const int)
+0:125 subgroupQuadSwapVertical ( temp float)
+0:125 direct index ( temp float)
+0:125 f: direct index for structure ( temp 4-component vector of float)
+0:125 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:125 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:125 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:125 Constant:
+0:125 0 (const uint)
+0:125 direct index ( temp uint)
+0:125 'dti' ( in 3-component vector of uint)
+0:125 Constant:
+0:125 0 (const int)
+0:125 Constant:
+0:125 2 (const int)
+0:125 Constant:
+0:125 0 (const int)
+0:126 move second child to first child ( temp 2-component vector of float)
+0:126 vector swizzle ( temp 2-component vector of float)
+0:126 f: direct index for structure ( temp 4-component vector of float)
+0:126 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:126 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:126 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:126 Constant:
+0:126 0 (const uint)
+0:126 direct index ( temp uint)
+0:126 'dti' ( in 3-component vector of uint)
+0:126 Constant:
+0:126 0 (const int)
+0:126 Constant:
+0:126 2 (const int)
+0:126 Sequence
+0:126 Constant:
+0:126 0 (const int)
+0:126 Constant:
+0:126 1 (const int)
+0:126 subgroupQuadSwapVertical ( temp 2-component vector of float)
+0:126 vector swizzle ( temp 2-component vector of float)
+0:126 f: direct index for structure ( temp 4-component vector of float)
+0:126 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:126 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:126 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:126 Constant:
+0:126 0 (const uint)
+0:126 direct index ( temp uint)
+0:126 'dti' ( in 3-component vector of uint)
+0:126 Constant:
+0:126 0 (const int)
+0:126 Constant:
+0:126 2 (const int)
+0:126 Sequence
+0:126 Constant:
+0:126 0 (const int)
+0:126 Constant:
+0:126 1 (const int)
+0:127 move second child to first child ( temp 3-component vector of float)
+0:127 vector swizzle ( temp 3-component vector of float)
+0:127 f: direct index for structure ( temp 4-component vector of float)
+0:127 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:127 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:127 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:127 Constant:
+0:127 0 (const uint)
+0:127 direct index ( temp uint)
+0:127 'dti' ( in 3-component vector of uint)
+0:127 Constant:
+0:127 0 (const int)
+0:127 Constant:
+0:127 2 (const int)
+0:127 Sequence
+0:127 Constant:
+0:127 0 (const int)
+0:127 Constant:
+0:127 1 (const int)
+0:127 Constant:
+0:127 2 (const int)
+0:127 subgroupQuadSwapVertical ( temp 3-component vector of float)
+0:127 vector swizzle ( temp 3-component vector of float)
+0:127 f: direct index for structure ( temp 4-component vector of float)
+0:127 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:127 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:127 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:127 Constant:
+0:127 0 (const uint)
+0:127 direct index ( temp uint)
+0:127 'dti' ( in 3-component vector of uint)
+0:127 Constant:
+0:127 0 (const int)
+0:127 Constant:
+0:127 2 (const int)
+0:127 Sequence
+0:127 Constant:
+0:127 0 (const int)
+0:127 Constant:
+0:127 1 (const int)
+0:127 Constant:
+0:127 2 (const int)
+0:129 move second child to first child ( temp 4-component vector of double)
+0:129 d: direct index for structure ( temp 4-component vector of double)
+0:129 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:129 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:129 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:129 Constant:
+0:129 0 (const uint)
+0:129 direct index ( temp uint)
+0:129 'dti' ( in 3-component vector of uint)
+0:129 Constant:
+0:129 0 (const int)
+0:129 Constant:
+0:129 3 (const int)
+0:129 subgroupQuadSwapVertical ( temp 4-component vector of double)
+0:129 d: direct index for structure ( temp 4-component vector of double)
+0:129 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:129 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:129 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:129 Constant:
+0:129 0 (const uint)
+0:129 direct index ( temp uint)
+0:129 'dti' ( in 3-component vector of uint)
+0:129 Constant:
+0:129 0 (const int)
+0:129 Constant:
+0:129 3 (const int)
+0:130 move second child to first child ( temp double)
+0:130 direct index ( temp double)
+0:130 d: direct index for structure ( temp 4-component vector of double)
+0:130 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:130 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:130 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:130 Constant:
+0:130 0 (const uint)
+0:130 direct index ( temp uint)
+0:130 'dti' ( in 3-component vector of uint)
+0:130 Constant:
+0:130 0 (const int)
+0:130 Constant:
+0:130 3 (const int)
+0:130 Constant:
+0:130 0 (const int)
+0:130 subgroupQuadSwapVertical ( temp double)
+0:130 direct index ( temp double)
+0:130 d: direct index for structure ( temp 4-component vector of double)
+0:130 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:130 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:130 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:130 Constant:
+0:130 0 (const uint)
+0:130 direct index ( temp uint)
+0:130 'dti' ( in 3-component vector of uint)
+0:130 Constant:
+0:130 0 (const int)
+0:130 Constant:
+0:130 3 (const int)
+0:130 Constant:
+0:130 0 (const int)
+0:131 move second child to first child ( temp 2-component vector of double)
+0:131 vector swizzle ( temp 2-component vector of double)
+0:131 d: direct index for structure ( temp 4-component vector of double)
+0:131 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:131 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:131 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:131 Constant:
+0:131 0 (const uint)
+0:131 direct index ( temp uint)
+0:131 'dti' ( in 3-component vector of uint)
+0:131 Constant:
+0:131 0 (const int)
+0:131 Constant:
+0:131 3 (const int)
+0:131 Sequence
+0:131 Constant:
+0:131 0 (const int)
+0:131 Constant:
+0:131 1 (const int)
+0:131 subgroupQuadSwapVertical ( temp 2-component vector of double)
+0:131 vector swizzle ( temp 2-component vector of double)
+0:131 d: direct index for structure ( temp 4-component vector of double)
+0:131 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:131 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:131 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:131 Constant:
+0:131 0 (const uint)
+0:131 direct index ( temp uint)
+0:131 'dti' ( in 3-component vector of uint)
+0:131 Constant:
+0:131 0 (const int)
+0:131 Constant:
+0:131 3 (const int)
+0:131 Sequence
+0:131 Constant:
+0:131 0 (const int)
+0:131 Constant:
+0:131 1 (const int)
+0:132 move second child to first child ( temp 3-component vector of double)
+0:132 vector swizzle ( temp 3-component vector of double)
+0:132 d: direct index for structure ( temp 4-component vector of double)
+0:132 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:132 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:132 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:132 Constant:
+0:132 0 (const uint)
+0:132 direct index ( temp uint)
+0:132 'dti' ( in 3-component vector of uint)
+0:132 Constant:
+0:132 0 (const int)
+0:132 Constant:
+0:132 3 (const int)
+0:132 Sequence
+0:132 Constant:
+0:132 0 (const int)
+0:132 Constant:
+0:132 1 (const int)
+0:132 Constant:
+0:132 2 (const int)
+0:132 subgroupQuadSwapVertical ( temp 3-component vector of double)
+0:132 vector swizzle ( temp 3-component vector of double)
+0:132 d: direct index for structure ( temp 4-component vector of double)
+0:132 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:132 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:132 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:132 Constant:
+0:132 0 (const uint)
+0:132 direct index ( temp uint)
+0:132 'dti' ( in 3-component vector of uint)
+0:132 Constant:
+0:132 0 (const int)
+0:132 Constant:
+0:132 3 (const int)
+0:132 Sequence
+0:132 Constant:
+0:132 0 (const int)
+0:132 Constant:
+0:132 1 (const int)
+0:132 Constant:
+0:132 2 (const int)
+0:134 move second child to first child ( temp 4-component vector of uint)
+0:134 u: direct index for structure ( temp 4-component vector of uint)
+0:134 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:134 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:134 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:134 Constant:
+0:134 0 (const uint)
+0:134 direct index ( temp uint)
+0:134 'dti' ( in 3-component vector of uint)
+0:134 Constant:
+0:134 0 (const int)
+0:134 Constant:
+0:134 0 (const int)
+0:134 subgroupQuadSwapDiagonal ( temp 4-component vector of uint)
+0:134 u: direct index for structure ( temp 4-component vector of uint)
+0:134 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:134 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:134 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:134 Constant:
+0:134 0 (const uint)
+0:134 direct index ( temp uint)
+0:134 'dti' ( in 3-component vector of uint)
+0:134 Constant:
+0:134 0 (const int)
+0:134 Constant:
+0:134 0 (const int)
+0:135 move second child to first child ( temp uint)
+0:135 direct index ( temp uint)
+0:135 u: direct index for structure ( temp 4-component vector of uint)
+0:135 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:135 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:135 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:135 Constant:
+0:135 0 (const uint)
+0:135 direct index ( temp uint)
+0:135 'dti' ( in 3-component vector of uint)
+0:135 Constant:
+0:135 0 (const int)
+0:135 Constant:
+0:135 0 (const int)
+0:135 Constant:
+0:135 0 (const int)
+0:135 subgroupQuadSwapDiagonal ( temp uint)
+0:135 direct index ( temp uint)
+0:135 u: direct index for structure ( temp 4-component vector of uint)
+0:135 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:135 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:135 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:135 Constant:
+0:135 0 (const uint)
+0:135 direct index ( temp uint)
+0:135 'dti' ( in 3-component vector of uint)
+0:135 Constant:
+0:135 0 (const int)
+0:135 Constant:
+0:135 0 (const int)
+0:135 Constant:
+0:135 0 (const int)
+0:136 move second child to first child ( temp 2-component vector of uint)
+0:136 vector swizzle ( temp 2-component vector of uint)
+0:136 u: direct index for structure ( temp 4-component vector of uint)
+0:136 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:136 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:136 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:136 Constant:
+0:136 0 (const uint)
+0:136 direct index ( temp uint)
+0:136 'dti' ( in 3-component vector of uint)
+0:136 Constant:
+0:136 0 (const int)
+0:136 Constant:
+0:136 0 (const int)
+0:136 Sequence
+0:136 Constant:
+0:136 0 (const int)
+0:136 Constant:
+0:136 1 (const int)
+0:136 subgroupQuadSwapDiagonal ( temp 2-component vector of uint)
+0:136 vector swizzle ( temp 2-component vector of uint)
+0:136 u: direct index for structure ( temp 4-component vector of uint)
+0:136 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:136 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:136 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:136 Constant:
+0:136 0 (const uint)
+0:136 direct index ( temp uint)
+0:136 'dti' ( in 3-component vector of uint)
+0:136 Constant:
+0:136 0 (const int)
+0:136 Constant:
+0:136 0 (const int)
+0:136 Sequence
+0:136 Constant:
+0:136 0 (const int)
+0:136 Constant:
+0:136 1 (const int)
+0:137 move second child to first child ( temp 3-component vector of uint)
+0:137 vector swizzle ( temp 3-component vector of uint)
+0:137 u: direct index for structure ( temp 4-component vector of uint)
+0:137 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:137 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:137 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:137 Constant:
+0:137 0 (const uint)
+0:137 direct index ( temp uint)
+0:137 'dti' ( in 3-component vector of uint)
+0:137 Constant:
+0:137 0 (const int)
+0:137 Constant:
+0:137 0 (const int)
+0:137 Sequence
+0:137 Constant:
+0:137 0 (const int)
+0:137 Constant:
+0:137 1 (const int)
+0:137 Constant:
+0:137 2 (const int)
+0:137 subgroupQuadSwapDiagonal ( temp 3-component vector of uint)
+0:137 vector swizzle ( temp 3-component vector of uint)
+0:137 u: direct index for structure ( temp 4-component vector of uint)
+0:137 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:137 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:137 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:137 Constant:
+0:137 0 (const uint)
+0:137 direct index ( temp uint)
+0:137 'dti' ( in 3-component vector of uint)
+0:137 Constant:
+0:137 0 (const int)
+0:137 Constant:
+0:137 0 (const int)
+0:137 Sequence
+0:137 Constant:
+0:137 0 (const int)
+0:137 Constant:
+0:137 1 (const int)
+0:137 Constant:
+0:137 2 (const int)
+0:139 move second child to first child ( temp 4-component vector of int)
+0:139 i: direct index for structure ( temp 4-component vector of int)
+0:139 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:139 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:139 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:139 Constant:
+0:139 0 (const uint)
+0:139 direct index ( temp uint)
+0:139 'dti' ( in 3-component vector of uint)
+0:139 Constant:
+0:139 0 (const int)
+0:139 Constant:
+0:139 1 (const int)
+0:139 subgroupQuadSwapDiagonal ( temp 4-component vector of int)
+0:139 i: direct index for structure ( temp 4-component vector of int)
+0:139 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:139 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:139 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:139 Constant:
+0:139 0 (const uint)
+0:139 direct index ( temp uint)
+0:139 'dti' ( in 3-component vector of uint)
+0:139 Constant:
+0:139 0 (const int)
+0:139 Constant:
+0:139 1 (const int)
+0:140 move second child to first child ( temp int)
+0:140 direct index ( temp int)
+0:140 i: direct index for structure ( temp 4-component vector of int)
+0:140 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:140 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:140 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:140 Constant:
+0:140 0 (const uint)
+0:140 direct index ( temp uint)
+0:140 'dti' ( in 3-component vector of uint)
+0:140 Constant:
+0:140 0 (const int)
+0:140 Constant:
+0:140 1 (const int)
+0:140 Constant:
+0:140 0 (const int)
+0:140 subgroupQuadSwapDiagonal ( temp int)
+0:140 direct index ( temp int)
+0:140 i: direct index for structure ( temp 4-component vector of int)
+0:140 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:140 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:140 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:140 Constant:
+0:140 0 (const uint)
+0:140 direct index ( temp uint)
+0:140 'dti' ( in 3-component vector of uint)
+0:140 Constant:
+0:140 0 (const int)
+0:140 Constant:
+0:140 1 (const int)
+0:140 Constant:
+0:140 0 (const int)
+0:141 move second child to first child ( temp 2-component vector of int)
+0:141 vector swizzle ( temp 2-component vector of int)
+0:141 i: direct index for structure ( temp 4-component vector of int)
+0:141 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:141 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:141 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:141 Constant:
+0:141 0 (const uint)
+0:141 direct index ( temp uint)
+0:141 'dti' ( in 3-component vector of uint)
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 1 (const int)
+0:141 Sequence
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 1 (const int)
+0:141 subgroupQuadSwapDiagonal ( temp 2-component vector of int)
+0:141 vector swizzle ( temp 2-component vector of int)
+0:141 i: direct index for structure ( temp 4-component vector of int)
+0:141 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:141 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:141 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:141 Constant:
+0:141 0 (const uint)
+0:141 direct index ( temp uint)
+0:141 'dti' ( in 3-component vector of uint)
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 1 (const int)
+0:141 Sequence
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 1 (const int)
+0:142 move second child to first child ( temp 3-component vector of int)
+0:142 vector swizzle ( temp 3-component vector of int)
+0:142 i: direct index for structure ( temp 4-component vector of int)
+0:142 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:142 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:142 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:142 Constant:
+0:142 0 (const uint)
+0:142 direct index ( temp uint)
+0:142 'dti' ( in 3-component vector of uint)
+0:142 Constant:
+0:142 0 (const int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Sequence
+0:142 Constant:
+0:142 0 (const int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Constant:
+0:142 2 (const int)
+0:142 subgroupQuadSwapDiagonal ( temp 3-component vector of int)
+0:142 vector swizzle ( temp 3-component vector of int)
+0:142 i: direct index for structure ( temp 4-component vector of int)
+0:142 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:142 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:142 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:142 Constant:
+0:142 0 (const uint)
+0:142 direct index ( temp uint)
+0:142 'dti' ( in 3-component vector of uint)
+0:142 Constant:
+0:142 0 (const int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Sequence
+0:142 Constant:
+0:142 0 (const int)
+0:142 Constant:
+0:142 1 (const int)
+0:142 Constant:
+0:142 2 (const int)
+0:144 move second child to first child ( temp 4-component vector of float)
+0:144 f: direct index for structure ( temp 4-component vector of float)
+0:144 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:144 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:144 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:144 Constant:
+0:144 0 (const uint)
+0:144 direct index ( temp uint)
+0:144 'dti' ( in 3-component vector of uint)
+0:144 Constant:
+0:144 0 (const int)
+0:144 Constant:
+0:144 2 (const int)
+0:144 subgroupQuadSwapDiagonal ( temp 4-component vector of float)
+0:144 f: direct index for structure ( temp 4-component vector of float)
+0:144 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:144 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:144 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:144 Constant:
+0:144 0 (const uint)
+0:144 direct index ( temp uint)
+0:144 'dti' ( in 3-component vector of uint)
+0:144 Constant:
+0:144 0 (const int)
+0:144 Constant:
+0:144 2 (const int)
+0:145 move second child to first child ( temp float)
+0:145 direct index ( temp float)
+0:145 f: direct index for structure ( temp 4-component vector of float)
+0:145 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:145 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:145 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:145 Constant:
+0:145 0 (const uint)
+0:145 direct index ( temp uint)
+0:145 'dti' ( in 3-component vector of uint)
+0:145 Constant:
+0:145 0 (const int)
+0:145 Constant:
+0:145 2 (const int)
+0:145 Constant:
+0:145 0 (const int)
+0:145 subgroupQuadSwapDiagonal ( temp float)
+0:145 direct index ( temp float)
+0:145 f: direct index for structure ( temp 4-component vector of float)
+0:145 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:145 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:145 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:145 Constant:
+0:145 0 (const uint)
+0:145 direct index ( temp uint)
+0:145 'dti' ( in 3-component vector of uint)
+0:145 Constant:
+0:145 0 (const int)
+0:145 Constant:
+0:145 2 (const int)
+0:145 Constant:
+0:145 0 (const int)
+0:146 move second child to first child ( temp 2-component vector of float)
+0:146 vector swizzle ( temp 2-component vector of float)
+0:146 f: direct index for structure ( temp 4-component vector of float)
+0:146 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:146 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:146 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:146 Constant:
+0:146 0 (const uint)
+0:146 direct index ( temp uint)
+0:146 'dti' ( in 3-component vector of uint)
+0:146 Constant:
+0:146 0 (const int)
+0:146 Constant:
+0:146 2 (const int)
+0:146 Sequence
+0:146 Constant:
+0:146 0 (const int)
+0:146 Constant:
+0:146 1 (const int)
+0:146 subgroupQuadSwapDiagonal ( temp 2-component vector of float)
+0:146 vector swizzle ( temp 2-component vector of float)
+0:146 f: direct index for structure ( temp 4-component vector of float)
+0:146 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:146 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:146 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:146 Constant:
+0:146 0 (const uint)
+0:146 direct index ( temp uint)
+0:146 'dti' ( in 3-component vector of uint)
+0:146 Constant:
+0:146 0 (const int)
+0:146 Constant:
+0:146 2 (const int)
+0:146 Sequence
+0:146 Constant:
+0:146 0 (const int)
+0:146 Constant:
+0:146 1 (const int)
+0:147 move second child to first child ( temp 3-component vector of float)
+0:147 vector swizzle ( temp 3-component vector of float)
+0:147 f: direct index for structure ( temp 4-component vector of float)
+0:147 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:147 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:147 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:147 Constant:
+0:147 0 (const uint)
+0:147 direct index ( temp uint)
+0:147 'dti' ( in 3-component vector of uint)
+0:147 Constant:
+0:147 0 (const int)
+0:147 Constant:
+0:147 2 (const int)
+0:147 Sequence
+0:147 Constant:
+0:147 0 (const int)
+0:147 Constant:
+0:147 1 (const int)
+0:147 Constant:
+0:147 2 (const int)
+0:147 subgroupQuadSwapDiagonal ( temp 3-component vector of float)
+0:147 vector swizzle ( temp 3-component vector of float)
+0:147 f: direct index for structure ( temp 4-component vector of float)
+0:147 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:147 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:147 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:147 Constant:
+0:147 0 (const uint)
+0:147 direct index ( temp uint)
+0:147 'dti' ( in 3-component vector of uint)
+0:147 Constant:
+0:147 0 (const int)
+0:147 Constant:
+0:147 2 (const int)
+0:147 Sequence
+0:147 Constant:
+0:147 0 (const int)
+0:147 Constant:
+0:147 1 (const int)
+0:147 Constant:
+0:147 2 (const int)
+0:149 move second child to first child ( temp 4-component vector of double)
+0:149 d: direct index for structure ( temp 4-component vector of double)
+0:149 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:149 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:149 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:149 Constant:
+0:149 0 (const uint)
+0:149 direct index ( temp uint)
+0:149 'dti' ( in 3-component vector of uint)
+0:149 Constant:
+0:149 0 (const int)
+0:149 Constant:
+0:149 3 (const int)
+0:149 subgroupQuadSwapDiagonal ( temp 4-component vector of double)
+0:149 d: direct index for structure ( temp 4-component vector of double)
+0:149 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:149 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:149 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:149 Constant:
+0:149 0 (const uint)
+0:149 direct index ( temp uint)
+0:149 'dti' ( in 3-component vector of uint)
+0:149 Constant:
+0:149 0 (const int)
+0:149 Constant:
+0:149 3 (const int)
+0:150 move second child to first child ( temp double)
+0:150 direct index ( temp double)
+0:150 d: direct index for structure ( temp 4-component vector of double)
+0:150 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:150 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:150 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:150 Constant:
+0:150 0 (const uint)
+0:150 direct index ( temp uint)
+0:150 'dti' ( in 3-component vector of uint)
+0:150 Constant:
+0:150 0 (const int)
+0:150 Constant:
+0:150 3 (const int)
+0:150 Constant:
+0:150 0 (const int)
+0:150 subgroupQuadSwapDiagonal ( temp double)
+0:150 direct index ( temp double)
+0:150 d: direct index for structure ( temp 4-component vector of double)
+0:150 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:150 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:150 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:150 Constant:
+0:150 0 (const uint)
+0:150 direct index ( temp uint)
+0:150 'dti' ( in 3-component vector of uint)
+0:150 Constant:
+0:150 0 (const int)
+0:150 Constant:
+0:150 3 (const int)
+0:150 Constant:
+0:150 0 (const int)
+0:151 move second child to first child ( temp 2-component vector of double)
+0:151 vector swizzle ( temp 2-component vector of double)
+0:151 d: direct index for structure ( temp 4-component vector of double)
+0:151 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:151 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:151 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:151 Constant:
+0:151 0 (const uint)
+0:151 direct index ( temp uint)
+0:151 'dti' ( in 3-component vector of uint)
+0:151 Constant:
+0:151 0 (const int)
+0:151 Constant:
+0:151 3 (const int)
+0:151 Sequence
+0:151 Constant:
+0:151 0 (const int)
+0:151 Constant:
+0:151 1 (const int)
+0:151 subgroupQuadSwapDiagonal ( temp 2-component vector of double)
+0:151 vector swizzle ( temp 2-component vector of double)
+0:151 d: direct index for structure ( temp 4-component vector of double)
+0:151 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:151 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:151 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:151 Constant:
+0:151 0 (const uint)
+0:151 direct index ( temp uint)
+0:151 'dti' ( in 3-component vector of uint)
+0:151 Constant:
+0:151 0 (const int)
+0:151 Constant:
+0:151 3 (const int)
+0:151 Sequence
+0:151 Constant:
+0:151 0 (const int)
+0:151 Constant:
+0:151 1 (const int)
+0:152 move second child to first child ( temp 3-component vector of double)
+0:152 vector swizzle ( temp 3-component vector of double)
+0:152 d: direct index for structure ( temp 4-component vector of double)
+0:152 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:152 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:152 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:152 Constant:
+0:152 0 (const uint)
+0:152 direct index ( temp uint)
+0:152 'dti' ( in 3-component vector of uint)
+0:152 Constant:
+0:152 0 (const int)
+0:152 Constant:
+0:152 3 (const int)
+0:152 Sequence
+0:152 Constant:
+0:152 0 (const int)
+0:152 Constant:
+0:152 1 (const int)
+0:152 Constant:
+0:152 2 (const int)
+0:152 subgroupQuadSwapDiagonal ( temp 3-component vector of double)
+0:152 vector swizzle ( temp 3-component vector of double)
+0:152 d: direct index for structure ( temp 4-component vector of double)
+0:152 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:152 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:152 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:152 Constant:
+0:152 0 (const uint)
+0:152 direct index ( temp uint)
+0:152 'dti' ( in 3-component vector of uint)
+0:152 Constant:
+0:152 0 (const int)
+0:152 Constant:
+0:152 3 (const int)
+0:152 Sequence
+0:152 Constant:
+0:152 0 (const int)
+0:152 Constant:
+0:152 1 (const int)
+0:152 Constant:
+0:152 2 (const int)
+0:13 Function Definition: CSMain( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 1120
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformQuad
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "CSMain" 1115
+ ExecutionMode 4 LocalSize 32 16 1
+ Source HLSL 500
+ Name 4 "CSMain"
+ Name 11 "@CSMain(vu3;"
+ Name 10 "dti"
+ Name 20 "Types"
+ MemberName 20(Types) 0 "u"
+ MemberName 20(Types) 1 "i"
+ MemberName 20(Types) 2 "f"
+ MemberName 20(Types) 3 "d"
+ Name 22 "data"
+ MemberName 22(data) 0 "@data"
+ Name 24 "data"
+ Name 1113 "dti"
+ Name 1115 "dti"
+ Name 1117 "param"
+ MemberDecorate 20(Types) 0 Offset 0
+ MemberDecorate 20(Types) 1 Offset 16
+ MemberDecorate 20(Types) 2 Offset 32
+ MemberDecorate 20(Types) 3 Offset 64
+ Decorate 21 ArrayStride 96
+ MemberDecorate 22(data) 0 Offset 0
+ Decorate 22(data) BufferBlock
+ Decorate 24(data) DescriptorSet 0
+ Decorate 1115(dti) BuiltIn GlobalInvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeVector 6(int) 4
+ 14: TypeInt 32 1
+ 15: TypeVector 14(int) 4
+ 16: TypeFloat 32
+ 17: TypeVector 16(float) 4
+ 18: TypeFloat 64
+ 19: TypeVector 18(float) 4
+ 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(fvec4)
+ 21: TypeRuntimeArray 20(Types)
+ 22(data): TypeStruct 21
+ 23: TypePointer Uniform 22(data)
+ 24(data): 23(ptr) Variable Uniform
+ 25: 14(int) Constant 0
+ 26: 6(int) Constant 0
+ 27: TypePointer Function 6(int)
+ 32: TypePointer Uniform 13(ivec4)
+ 35: 6(int) Constant 3
+ 42: TypePointer Uniform 6(int)
+ 51: TypeVector 6(int) 2
+ 72: 14(int) Constant 1
+ 75: TypePointer Uniform 15(ivec4)
+ 84: TypePointer Uniform 14(int)
+ 93: TypeVector 14(int) 2
+ 105: TypeVector 14(int) 3
+ 115: 14(int) Constant 2
+ 118: TypePointer Uniform 17(fvec4)
+ 127: TypePointer Uniform 16(float)
+ 136: TypeVector 16(float) 2
+ 148: TypeVector 16(float) 3
+ 158: 14(int) Constant 3
+ 161: TypePointer Uniform 19(fvec4)
+ 170: TypePointer Uniform 18(float)
+ 179: TypeVector 18(float) 2
+ 191: TypeVector 18(float) 3
+ 205: 6(int) Constant 1
+ 358: 6(int) Constant 2
+ 1114: TypePointer Input 7(ivec3)
+ 1115(dti): 1114(ptr) Variable Input
+ 4(CSMain): 2 Function None 3
+ 5: Label
+ 1113(dti): 8(ptr) Variable Function
+ 1117(param): 8(ptr) Variable Function
+ 1116: 7(ivec3) Load 1115(dti)
+ Store 1113(dti) 1116
+ 1118: 7(ivec3) Load 1113(dti)
+ Store 1117(param) 1118
+ 1119: 2 FunctionCall 11(@CSMain(vu3;) 1117(param)
+ Return
+ FunctionEnd
+11(@CSMain(vu3;): 2 Function None 9
+ 10(dti): 8(ptr) FunctionParameter
+ 12: Label
+ 28: 27(ptr) AccessChain 10(dti) 26
+ 29: 6(int) Load 28
+ 30: 27(ptr) AccessChain 10(dti) 26
+ 31: 6(int) Load 30
+ 33: 32(ptr) AccessChain 24(data) 25 31 25
+ 34: 13(ivec4) Load 33
+ 36: 13(ivec4) GroupNonUniformQuadBroadcast 35 34 26
+ 37: 32(ptr) AccessChain 24(data) 25 29 25
+ Store 37 36
+ 38: 27(ptr) AccessChain 10(dti) 26
+ 39: 6(int) Load 38
+ 40: 27(ptr) AccessChain 10(dti) 26
+ 41: 6(int) Load 40
+ 43: 42(ptr) AccessChain 24(data) 25 41 25 26
+ 44: 6(int) Load 43
+ 45: 6(int) GroupNonUniformQuadBroadcast 35 44 26
+ 46: 42(ptr) AccessChain 24(data) 25 39 25 26
+ Store 46 45
+ 47: 27(ptr) AccessChain 10(dti) 26
+ 48: 6(int) Load 47
+ 49: 27(ptr) AccessChain 10(dti) 26
+ 50: 6(int) Load 49
+ 52: 32(ptr) AccessChain 24(data) 25 50 25
+ 53: 13(ivec4) Load 52
+ 54: 51(ivec2) VectorShuffle 53 53 0 1
+ 55: 51(ivec2) GroupNonUniformQuadBroadcast 35 54 26
+ 56: 32(ptr) AccessChain 24(data) 25 48 25
+ 57: 13(ivec4) Load 56
+ 58: 13(ivec4) VectorShuffle 57 55 4 5 2 3
+ Store 56 58
+ 59: 27(ptr) AccessChain 10(dti) 26
+ 60: 6(int) Load 59
+ 61: 27(ptr) AccessChain 10(dti) 26
+ 62: 6(int) Load 61
+ 63: 32(ptr) AccessChain 24(data) 25 62 25
+ 64: 13(ivec4) Load 63
+ 65: 7(ivec3) VectorShuffle 64 64 0 1 2
+ 66: 7(ivec3) GroupNonUniformQuadBroadcast 35 65 26
+ 67: 32(ptr) AccessChain 24(data) 25 60 25
+ 68: 13(ivec4) Load 67
+ 69: 13(ivec4) VectorShuffle 68 66 4 5 6 3
+ Store 67 69
+ 70: 27(ptr) AccessChain 10(dti) 26
+ 71: 6(int) Load 70
+ 73: 27(ptr) AccessChain 10(dti) 26
+ 74: 6(int) Load 73
+ 76: 75(ptr) AccessChain 24(data) 25 74 72
+ 77: 15(ivec4) Load 76
+ 78: 15(ivec4) GroupNonUniformQuadBroadcast 35 77 26
+ 79: 75(ptr) AccessChain 24(data) 25 71 72
+ Store 79 78
+ 80: 27(ptr) AccessChain 10(dti) 26
+ 81: 6(int) Load 80
+ 82: 27(ptr) AccessChain 10(dti) 26
+ 83: 6(int) Load 82
+ 85: 84(ptr) AccessChain 24(data) 25 83 72 26
+ 86: 14(int) Load 85
+ 87: 14(int) GroupNonUniformQuadBroadcast 35 86 26
+ 88: 84(ptr) AccessChain 24(data) 25 81 72 26
+ Store 88 87
+ 89: 27(ptr) AccessChain 10(dti) 26
+ 90: 6(int) Load 89
+ 91: 27(ptr) AccessChain 10(dti) 26
+ 92: 6(int) Load 91
+ 94: 75(ptr) AccessChain 24(data) 25 92 72
+ 95: 15(ivec4) Load 94
+ 96: 93(ivec2) VectorShuffle 95 95 0 1
+ 97: 93(ivec2) GroupNonUniformQuadBroadcast 35 96 26
+ 98: 75(ptr) AccessChain 24(data) 25 90 72
+ 99: 15(ivec4) Load 98
+ 100: 15(ivec4) VectorShuffle 99 97 4 5 2 3
+ Store 98 100
+ 101: 27(ptr) AccessChain 10(dti) 26
+ 102: 6(int) Load 101
+ 103: 27(ptr) AccessChain 10(dti) 26
+ 104: 6(int) Load 103
+ 106: 75(ptr) AccessChain 24(data) 25 104 72
+ 107: 15(ivec4) Load 106
+ 108: 105(ivec3) VectorShuffle 107 107 0 1 2
+ 109: 105(ivec3) GroupNonUniformQuadBroadcast 35 108 26
+ 110: 75(ptr) AccessChain 24(data) 25 102 72
+ 111: 15(ivec4) Load 110
+ 112: 15(ivec4) VectorShuffle 111 109 4 5 6 3
+ Store 110 112
+ 113: 27(ptr) AccessChain 10(dti) 26
+ 114: 6(int) Load 113
+ 116: 27(ptr) AccessChain 10(dti) 26
+ 117: 6(int) Load 116
+ 119: 118(ptr) AccessChain 24(data) 25 117 115
+ 120: 17(fvec4) Load 119
+ 121: 17(fvec4) GroupNonUniformQuadBroadcast 35 120 26
+ 122: 118(ptr) AccessChain 24(data) 25 114 115
+ Store 122 121
+ 123: 27(ptr) AccessChain 10(dti) 26
+ 124: 6(int) Load 123
+ 125: 27(ptr) AccessChain 10(dti) 26
+ 126: 6(int) Load 125
+ 128: 127(ptr) AccessChain 24(data) 25 126 115 26
+ 129: 16(float) Load 128
+ 130: 16(float) GroupNonUniformQuadBroadcast 35 129 26
+ 131: 127(ptr) AccessChain 24(data) 25 124 115 26
+ Store 131 130
+ 132: 27(ptr) AccessChain 10(dti) 26
+ 133: 6(int) Load 132
+ 134: 27(ptr) AccessChain 10(dti) 26
+ 135: 6(int) Load 134
+ 137: 118(ptr) AccessChain 24(data) 25 135 115
+ 138: 17(fvec4) Load 137
+ 139: 136(fvec2) VectorShuffle 138 138 0 1
+ 140: 136(fvec2) GroupNonUniformQuadBroadcast 35 139 26
+ 141: 118(ptr) AccessChain 24(data) 25 133 115
+ 142: 17(fvec4) Load 141
+ 143: 17(fvec4) VectorShuffle 142 140 4 5 2 3
+ Store 141 143
+ 144: 27(ptr) AccessChain 10(dti) 26
+ 145: 6(int) Load 144
+ 146: 27(ptr) AccessChain 10(dti) 26
+ 147: 6(int) Load 146
+ 149: 118(ptr) AccessChain 24(data) 25 147 115
+ 150: 17(fvec4) Load 149
+ 151: 148(fvec3) VectorShuffle 150 150 0 1 2
+ 152: 148(fvec3) GroupNonUniformQuadBroadcast 35 151 26
+ 153: 118(ptr) AccessChain 24(data) 25 145 115
+ 154: 17(fvec4) Load 153
+ 155: 17(fvec4) VectorShuffle 154 152 4 5 6 3
+ Store 153 155
+ 156: 27(ptr) AccessChain 10(dti) 26
+ 157: 6(int) Load 156
+ 159: 27(ptr) AccessChain 10(dti) 26
+ 160: 6(int) Load 159
+ 162: 161(ptr) AccessChain 24(data) 25 160 158
+ 163: 19(fvec4) Load 162
+ 164: 19(fvec4) GroupNonUniformQuadBroadcast 35 163 26
+ 165: 161(ptr) AccessChain 24(data) 25 157 158
+ Store 165 164
+ 166: 27(ptr) AccessChain 10(dti) 26
+ 167: 6(int) Load 166
+ 168: 27(ptr) AccessChain 10(dti) 26
+ 169: 6(int) Load 168
+ 171: 170(ptr) AccessChain 24(data) 25 169 158 26
+ 172: 18(float) Load 171
+ 173: 18(float) GroupNonUniformQuadBroadcast 35 172 26
+ 174: 170(ptr) AccessChain 24(data) 25 167 158 26
+ Store 174 173
+ 175: 27(ptr) AccessChain 10(dti) 26
+ 176: 6(int) Load 175
+ 177: 27(ptr) AccessChain 10(dti) 26
+ 178: 6(int) Load 177
+ 180: 161(ptr) AccessChain 24(data) 25 178 158
+ 181: 19(fvec4) Load 180
+ 182: 179(fvec2) VectorShuffle 181 181 0 1
+ 183: 179(fvec2) GroupNonUniformQuadBroadcast 35 182 26
+ 184: 161(ptr) AccessChain 24(data) 25 176 158
+ 185: 19(fvec4) Load 184
+ 186: 19(fvec4) VectorShuffle 185 183 4 5 2 3
+ Store 184 186
+ 187: 27(ptr) AccessChain 10(dti) 26
+ 188: 6(int) Load 187
+ 189: 27(ptr) AccessChain 10(dti) 26
+ 190: 6(int) Load 189
+ 192: 161(ptr) AccessChain 24(data) 25 190 158
+ 193: 19(fvec4) Load 192
+ 194: 191(fvec3) VectorShuffle 193 193 0 1 2
+ 195: 191(fvec3) GroupNonUniformQuadBroadcast 35 194 26
+ 196: 161(ptr) AccessChain 24(data) 25 188 158
+ 197: 19(fvec4) Load 196
+ 198: 19(fvec4) VectorShuffle 197 195 4 5 6 3
+ Store 196 198
+ 199: 27(ptr) AccessChain 10(dti) 26
+ 200: 6(int) Load 199
+ 201: 27(ptr) AccessChain 10(dti) 26
+ 202: 6(int) Load 201
+ 203: 32(ptr) AccessChain 24(data) 25 202 25
+ 204: 13(ivec4) Load 203
+ 206: 13(ivec4) GroupNonUniformQuadBroadcast 35 204 205
+ 207: 32(ptr) AccessChain 24(data) 25 200 25
+ Store 207 206
+ 208: 27(ptr) AccessChain 10(dti) 26
+ 209: 6(int) Load 208
+ 210: 27(ptr) AccessChain 10(dti) 26
+ 211: 6(int) Load 210
+ 212: 42(ptr) AccessChain 24(data) 25 211 25 26
+ 213: 6(int) Load 212
+ 214: 6(int) GroupNonUniformQuadBroadcast 35 213 205
+ 215: 42(ptr) AccessChain 24(data) 25 209 25 26
+ Store 215 214
+ 216: 27(ptr) AccessChain 10(dti) 26
+ 217: 6(int) Load 216
+ 218: 27(ptr) AccessChain 10(dti) 26
+ 219: 6(int) Load 218
+ 220: 32(ptr) AccessChain 24(data) 25 219 25
+ 221: 13(ivec4) Load 220
+ 222: 51(ivec2) VectorShuffle 221 221 0 1
+ 223: 51(ivec2) GroupNonUniformQuadBroadcast 35 222 205
+ 224: 32(ptr) AccessChain 24(data) 25 217 25
+ 225: 13(ivec4) Load 224
+ 226: 13(ivec4) VectorShuffle 225 223 4 5 2 3
+ Store 224 226
+ 227: 27(ptr) AccessChain 10(dti) 26
+ 228: 6(int) Load 227
+ 229: 27(ptr) AccessChain 10(dti) 26
+ 230: 6(int) Load 229
+ 231: 32(ptr) AccessChain 24(data) 25 230 25
+ 232: 13(ivec4) Load 231
+ 233: 7(ivec3) VectorShuffle 232 232 0 1 2
+ 234: 7(ivec3) GroupNonUniformQuadBroadcast 35 233 205
+ 235: 32(ptr) AccessChain 24(data) 25 228 25
+ 236: 13(ivec4) Load 235
+ 237: 13(ivec4) VectorShuffle 236 234 4 5 6 3
+ Store 235 237
+ 238: 27(ptr) AccessChain 10(dti) 26
+ 239: 6(int) Load 238
+ 240: 27(ptr) AccessChain 10(dti) 26
+ 241: 6(int) Load 240
+ 242: 75(ptr) AccessChain 24(data) 25 241 72
+ 243: 15(ivec4) Load 242
+ 244: 15(ivec4) GroupNonUniformQuadBroadcast 35 243 205
+ 245: 75(ptr) AccessChain 24(data) 25 239 72
+ Store 245 244
+ 246: 27(ptr) AccessChain 10(dti) 26
+ 247: 6(int) Load 246
+ 248: 27(ptr) AccessChain 10(dti) 26
+ 249: 6(int) Load 248
+ 250: 84(ptr) AccessChain 24(data) 25 249 72 26
+ 251: 14(int) Load 250
+ 252: 14(int) GroupNonUniformQuadBroadcast 35 251 205
+ 253: 84(ptr) AccessChain 24(data) 25 247 72 26
+ Store 253 252
+ 254: 27(ptr) AccessChain 10(dti) 26
+ 255: 6(int) Load 254
+ 256: 27(ptr) AccessChain 10(dti) 26
+ 257: 6(int) Load 256
+ 258: 75(ptr) AccessChain 24(data) 25 257 72
+ 259: 15(ivec4) Load 258
+ 260: 93(ivec2) VectorShuffle 259 259 0 1
+ 261: 93(ivec2) GroupNonUniformQuadBroadcast 35 260 205
+ 262: 75(ptr) AccessChain 24(data) 25 255 72
+ 263: 15(ivec4) Load 262
+ 264: 15(ivec4) VectorShuffle 263 261 4 5 2 3
+ Store 262 264
+ 265: 27(ptr) AccessChain 10(dti) 26
+ 266: 6(int) Load 265
+ 267: 27(ptr) AccessChain 10(dti) 26
+ 268: 6(int) Load 267
+ 269: 75(ptr) AccessChain 24(data) 25 268 72
+ 270: 15(ivec4) Load 269
+ 271: 105(ivec3) VectorShuffle 270 270 0 1 2
+ 272: 105(ivec3) GroupNonUniformQuadBroadcast 35 271 205
+ 273: 75(ptr) AccessChain 24(data) 25 266 72
+ 274: 15(ivec4) Load 273
+ 275: 15(ivec4) VectorShuffle 274 272 4 5 6 3
+ Store 273 275
+ 276: 27(ptr) AccessChain 10(dti) 26
+ 277: 6(int) Load 276
+ 278: 27(ptr) AccessChain 10(dti) 26
+ 279: 6(int) Load 278
+ 280: 118(ptr) AccessChain 24(data) 25 279 115
+ 281: 17(fvec4) Load 280
+ 282: 17(fvec4) GroupNonUniformQuadBroadcast 35 281 205
+ 283: 118(ptr) AccessChain 24(data) 25 277 115
+ Store 283 282
+ 284: 27(ptr) AccessChain 10(dti) 26
+ 285: 6(int) Load 284
+ 286: 27(ptr) AccessChain 10(dti) 26
+ 287: 6(int) Load 286
+ 288: 127(ptr) AccessChain 24(data) 25 287 115 26
+ 289: 16(float) Load 288
+ 290: 16(float) GroupNonUniformQuadBroadcast 35 289 205
+ 291: 127(ptr) AccessChain 24(data) 25 285 115 26
+ Store 291 290
+ 292: 27(ptr) AccessChain 10(dti) 26
+ 293: 6(int) Load 292
+ 294: 27(ptr) AccessChain 10(dti) 26
+ 295: 6(int) Load 294
+ 296: 118(ptr) AccessChain 24(data) 25 295 115
+ 297: 17(fvec4) Load 296
+ 298: 136(fvec2) VectorShuffle 297 297 0 1
+ 299: 136(fvec2) GroupNonUniformQuadBroadcast 35 298 205
+ 300: 118(ptr) AccessChain 24(data) 25 293 115
+ 301: 17(fvec4) Load 300
+ 302: 17(fvec4) VectorShuffle 301 299 4 5 2 3
+ Store 300 302
+ 303: 27(ptr) AccessChain 10(dti) 26
+ 304: 6(int) Load 303
+ 305: 27(ptr) AccessChain 10(dti) 26
+ 306: 6(int) Load 305
+ 307: 118(ptr) AccessChain 24(data) 25 306 115
+ 308: 17(fvec4) Load 307
+ 309: 148(fvec3) VectorShuffle 308 308 0 1 2
+ 310: 148(fvec3) GroupNonUniformQuadBroadcast 35 309 205
+ 311: 118(ptr) AccessChain 24(data) 25 304 115
+ 312: 17(fvec4) Load 311
+ 313: 17(fvec4) VectorShuffle 312 310 4 5 6 3
+ Store 311 313
+ 314: 27(ptr) AccessChain 10(dti) 26
+ 315: 6(int) Load 314
+ 316: 27(ptr) AccessChain 10(dti) 26
+ 317: 6(int) Load 316
+ 318: 161(ptr) AccessChain 24(data) 25 317 158
+ 319: 19(fvec4) Load 318
+ 320: 19(fvec4) GroupNonUniformQuadBroadcast 35 319 205
+ 321: 161(ptr) AccessChain 24(data) 25 315 158
+ Store 321 320
+ 322: 27(ptr) AccessChain 10(dti) 26
+ 323: 6(int) Load 322
+ 324: 27(ptr) AccessChain 10(dti) 26
+ 325: 6(int) Load 324
+ 326: 170(ptr) AccessChain 24(data) 25 325 158 26
+ 327: 18(float) Load 326
+ 328: 18(float) GroupNonUniformQuadBroadcast 35 327 205
+ 329: 170(ptr) AccessChain 24(data) 25 323 158 26
+ Store 329 328
+ 330: 27(ptr) AccessChain 10(dti) 26
+ 331: 6(int) Load 330
+ 332: 27(ptr) AccessChain 10(dti) 26
+ 333: 6(int) Load 332
+ 334: 161(ptr) AccessChain 24(data) 25 333 158
+ 335: 19(fvec4) Load 334
+ 336: 179(fvec2) VectorShuffle 335 335 0 1
+ 337: 179(fvec2) GroupNonUniformQuadBroadcast 35 336 205
+ 338: 161(ptr) AccessChain 24(data) 25 331 158
+ 339: 19(fvec4) Load 338
+ 340: 19(fvec4) VectorShuffle 339 337 4 5 2 3
+ Store 338 340
+ 341: 27(ptr) AccessChain 10(dti) 26
+ 342: 6(int) Load 341
+ 343: 27(ptr) AccessChain 10(dti) 26
+ 344: 6(int) Load 343
+ 345: 161(ptr) AccessChain 24(data) 25 344 158
+ 346: 19(fvec4) Load 345
+ 347: 191(fvec3) VectorShuffle 346 346 0 1 2
+ 348: 191(fvec3) GroupNonUniformQuadBroadcast 35 347 205
+ 349: 161(ptr) AccessChain 24(data) 25 342 158
+ 350: 19(fvec4) Load 349
+ 351: 19(fvec4) VectorShuffle 350 348 4 5 6 3
+ Store 349 351
+ 352: 27(ptr) AccessChain 10(dti) 26
+ 353: 6(int) Load 352
+ 354: 27(ptr) AccessChain 10(dti) 26
+ 355: 6(int) Load 354
+ 356: 32(ptr) AccessChain 24(data) 25 355 25
+ 357: 13(ivec4) Load 356
+ 359: 13(ivec4) GroupNonUniformQuadBroadcast 35 357 358
+ 360: 32(ptr) AccessChain 24(data) 25 353 25
+ Store 360 359
+ 361: 27(ptr) AccessChain 10(dti) 26
+ 362: 6(int) Load 361
+ 363: 27(ptr) AccessChain 10(dti) 26
+ 364: 6(int) Load 363
+ 365: 42(ptr) AccessChain 24(data) 25 364 25 26
+ 366: 6(int) Load 365
+ 367: 6(int) GroupNonUniformQuadBroadcast 35 366 358
+ 368: 42(ptr) AccessChain 24(data) 25 362 25 26
+ Store 368 367
+ 369: 27(ptr) AccessChain 10(dti) 26
+ 370: 6(int) Load 369
+ 371: 27(ptr) AccessChain 10(dti) 26
+ 372: 6(int) Load 371
+ 373: 32(ptr) AccessChain 24(data) 25 372 25
+ 374: 13(ivec4) Load 373
+ 375: 51(ivec2) VectorShuffle 374 374 0 1
+ 376: 51(ivec2) GroupNonUniformQuadBroadcast 35 375 358
+ 377: 32(ptr) AccessChain 24(data) 25 370 25
+ 378: 13(ivec4) Load 377
+ 379: 13(ivec4) VectorShuffle 378 376 4 5 2 3
+ Store 377 379
+ 380: 27(ptr) AccessChain 10(dti) 26
+ 381: 6(int) Load 380
+ 382: 27(ptr) AccessChain 10(dti) 26
+ 383: 6(int) Load 382
+ 384: 32(ptr) AccessChain 24(data) 25 383 25
+ 385: 13(ivec4) Load 384
+ 386: 7(ivec3) VectorShuffle 385 385 0 1 2
+ 387: 7(ivec3) GroupNonUniformQuadBroadcast 35 386 358
+ 388: 32(ptr) AccessChain 24(data) 25 381 25
+ 389: 13(ivec4) Load 388
+ 390: 13(ivec4) VectorShuffle 389 387 4 5 6 3
+ Store 388 390
+ 391: 27(ptr) AccessChain 10(dti) 26
+ 392: 6(int) Load 391
+ 393: 27(ptr) AccessChain 10(dti) 26
+ 394: 6(int) Load 393
+ 395: 75(ptr) AccessChain 24(data) 25 394 72
+ 396: 15(ivec4) Load 395
+ 397: 15(ivec4) GroupNonUniformQuadBroadcast 35 396 358
+ 398: 75(ptr) AccessChain 24(data) 25 392 72
+ Store 398 397
+ 399: 27(ptr) AccessChain 10(dti) 26
+ 400: 6(int) Load 399
+ 401: 27(ptr) AccessChain 10(dti) 26
+ 402: 6(int) Load 401
+ 403: 84(ptr) AccessChain 24(data) 25 402 72 26
+ 404: 14(int) Load 403
+ 405: 14(int) GroupNonUniformQuadBroadcast 35 404 358
+ 406: 84(ptr) AccessChain 24(data) 25 400 72 26
+ Store 406 405
+ 407: 27(ptr) AccessChain 10(dti) 26
+ 408: 6(int) Load 407
+ 409: 27(ptr) AccessChain 10(dti) 26
+ 410: 6(int) Load 409
+ 411: 75(ptr) AccessChain 24(data) 25 410 72
+ 412: 15(ivec4) Load 411
+ 413: 93(ivec2) VectorShuffle 412 412 0 1
+ 414: 93(ivec2) GroupNonUniformQuadBroadcast 35 413 358
+ 415: 75(ptr) AccessChain 24(data) 25 408 72
+ 416: 15(ivec4) Load 415
+ 417: 15(ivec4) VectorShuffle 416 414 4 5 2 3
+ Store 415 417
+ 418: 27(ptr) AccessChain 10(dti) 26
+ 419: 6(int) Load 418
+ 420: 27(ptr) AccessChain 10(dti) 26
+ 421: 6(int) Load 420
+ 422: 75(ptr) AccessChain 24(data) 25 421 72
+ 423: 15(ivec4) Load 422
+ 424: 105(ivec3) VectorShuffle 423 423 0 1 2
+ 425: 105(ivec3) GroupNonUniformQuadBroadcast 35 424 358
+ 426: 75(ptr) AccessChain 24(data) 25 419 72
+ 427: 15(ivec4) Load 426
+ 428: 15(ivec4) VectorShuffle 427 425 4 5 6 3
+ Store 426 428
+ 429: 27(ptr) AccessChain 10(dti) 26
+ 430: 6(int) Load 429
+ 431: 27(ptr) AccessChain 10(dti) 26
+ 432: 6(int) Load 431
+ 433: 118(ptr) AccessChain 24(data) 25 432 115
+ 434: 17(fvec4) Load 433
+ 435: 17(fvec4) GroupNonUniformQuadBroadcast 35 434 358
+ 436: 118(ptr) AccessChain 24(data) 25 430 115
+ Store 436 435
+ 437: 27(ptr) AccessChain 10(dti) 26
+ 438: 6(int) Load 437
+ 439: 27(ptr) AccessChain 10(dti) 26
+ 440: 6(int) Load 439
+ 441: 127(ptr) AccessChain 24(data) 25 440 115 26
+ 442: 16(float) Load 441
+ 443: 16(float) GroupNonUniformQuadBroadcast 35 442 358
+ 444: 127(ptr) AccessChain 24(data) 25 438 115 26
+ Store 444 443
+ 445: 27(ptr) AccessChain 10(dti) 26
+ 446: 6(int) Load 445
+ 447: 27(ptr) AccessChain 10(dti) 26
+ 448: 6(int) Load 447
+ 449: 118(ptr) AccessChain 24(data) 25 448 115
+ 450: 17(fvec4) Load 449
+ 451: 136(fvec2) VectorShuffle 450 450 0 1
+ 452: 136(fvec2) GroupNonUniformQuadBroadcast 35 451 358
+ 453: 118(ptr) AccessChain 24(data) 25 446 115
+ 454: 17(fvec4) Load 453
+ 455: 17(fvec4) VectorShuffle 454 452 4 5 2 3
+ Store 453 455
+ 456: 27(ptr) AccessChain 10(dti) 26
+ 457: 6(int) Load 456
+ 458: 27(ptr) AccessChain 10(dti) 26
+ 459: 6(int) Load 458
+ 460: 118(ptr) AccessChain 24(data) 25 459 115
+ 461: 17(fvec4) Load 460
+ 462: 148(fvec3) VectorShuffle 461 461 0 1 2
+ 463: 148(fvec3) GroupNonUniformQuadBroadcast 35 462 358
+ 464: 118(ptr) AccessChain 24(data) 25 457 115
+ 465: 17(fvec4) Load 464
+ 466: 17(fvec4) VectorShuffle 465 463 4 5 6 3
+ Store 464 466
+ 467: 27(ptr) AccessChain 10(dti) 26
+ 468: 6(int) Load 467
+ 469: 27(ptr) AccessChain 10(dti) 26
+ 470: 6(int) Load 469
+ 471: 161(ptr) AccessChain 24(data) 25 470 158
+ 472: 19(fvec4) Load 471
+ 473: 19(fvec4) GroupNonUniformQuadBroadcast 35 472 358
+ 474: 161(ptr) AccessChain 24(data) 25 468 158
+ Store 474 473
+ 475: 27(ptr) AccessChain 10(dti) 26
+ 476: 6(int) Load 475
+ 477: 27(ptr) AccessChain 10(dti) 26
+ 478: 6(int) Load 477
+ 479: 170(ptr) AccessChain 24(data) 25 478 158 26
+ 480: 18(float) Load 479
+ 481: 18(float) GroupNonUniformQuadBroadcast 35 480 358
+ 482: 170(ptr) AccessChain 24(data) 25 476 158 26
+ Store 482 481
+ 483: 27(ptr) AccessChain 10(dti) 26
+ 484: 6(int) Load 483
+ 485: 27(ptr) AccessChain 10(dti) 26
+ 486: 6(int) Load 485
+ 487: 161(ptr) AccessChain 24(data) 25 486 158
+ 488: 19(fvec4) Load 487
+ 489: 179(fvec2) VectorShuffle 488 488 0 1
+ 490: 179(fvec2) GroupNonUniformQuadBroadcast 35 489 358
+ 491: 161(ptr) AccessChain 24(data) 25 484 158
+ 492: 19(fvec4) Load 491
+ 493: 19(fvec4) VectorShuffle 492 490 4 5 2 3
+ Store 491 493
+ 494: 27(ptr) AccessChain 10(dti) 26
+ 495: 6(int) Load 494
+ 496: 27(ptr) AccessChain 10(dti) 26
+ 497: 6(int) Load 496
+ 498: 161(ptr) AccessChain 24(data) 25 497 158
+ 499: 19(fvec4) Load 498
+ 500: 191(fvec3) VectorShuffle 499 499 0 1 2
+ 501: 191(fvec3) GroupNonUniformQuadBroadcast 35 500 358
+ 502: 161(ptr) AccessChain 24(data) 25 495 158
+ 503: 19(fvec4) Load 502
+ 504: 19(fvec4) VectorShuffle 503 501 4 5 6 3
+ Store 502 504
+ 505: 27(ptr) AccessChain 10(dti) 26
+ 506: 6(int) Load 505
+ 507: 27(ptr) AccessChain 10(dti) 26
+ 508: 6(int) Load 507
+ 509: 32(ptr) AccessChain 24(data) 25 508 25
+ 510: 13(ivec4) Load 509
+ 511: 13(ivec4) GroupNonUniformQuadBroadcast 35 510 35
+ 512: 32(ptr) AccessChain 24(data) 25 506 25
+ Store 512 511
+ 513: 27(ptr) AccessChain 10(dti) 26
+ 514: 6(int) Load 513
+ 515: 27(ptr) AccessChain 10(dti) 26
+ 516: 6(int) Load 515
+ 517: 42(ptr) AccessChain 24(data) 25 516 25 26
+ 518: 6(int) Load 517
+ 519: 6(int) GroupNonUniformQuadBroadcast 35 518 35
+ 520: 42(ptr) AccessChain 24(data) 25 514 25 26
+ Store 520 519
+ 521: 27(ptr) AccessChain 10(dti) 26
+ 522: 6(int) Load 521
+ 523: 27(ptr) AccessChain 10(dti) 26
+ 524: 6(int) Load 523
+ 525: 32(ptr) AccessChain 24(data) 25 524 25
+ 526: 13(ivec4) Load 525
+ 527: 51(ivec2) VectorShuffle 526 526 0 1
+ 528: 51(ivec2) GroupNonUniformQuadBroadcast 35 527 35
+ 529: 32(ptr) AccessChain 24(data) 25 522 25
+ 530: 13(ivec4) Load 529
+ 531: 13(ivec4) VectorShuffle 530 528 4 5 2 3
+ Store 529 531
+ 532: 27(ptr) AccessChain 10(dti) 26
+ 533: 6(int) Load 532
+ 534: 27(ptr) AccessChain 10(dti) 26
+ 535: 6(int) Load 534
+ 536: 32(ptr) AccessChain 24(data) 25 535 25
+ 537: 13(ivec4) Load 536
+ 538: 7(ivec3) VectorShuffle 537 537 0 1 2
+ 539: 7(ivec3) GroupNonUniformQuadBroadcast 35 538 35
+ 540: 32(ptr) AccessChain 24(data) 25 533 25
+ 541: 13(ivec4) Load 540
+ 542: 13(ivec4) VectorShuffle 541 539 4 5 6 3
+ Store 540 542
+ 543: 27(ptr) AccessChain 10(dti) 26
+ 544: 6(int) Load 543
+ 545: 27(ptr) AccessChain 10(dti) 26
+ 546: 6(int) Load 545
+ 547: 75(ptr) AccessChain 24(data) 25 546 72
+ 548: 15(ivec4) Load 547
+ 549: 15(ivec4) GroupNonUniformQuadBroadcast 35 548 35
+ 550: 75(ptr) AccessChain 24(data) 25 544 72
+ Store 550 549
+ 551: 27(ptr) AccessChain 10(dti) 26
+ 552: 6(int) Load 551
+ 553: 27(ptr) AccessChain 10(dti) 26
+ 554: 6(int) Load 553
+ 555: 84(ptr) AccessChain 24(data) 25 554 72 26
+ 556: 14(int) Load 555
+ 557: 14(int) GroupNonUniformQuadBroadcast 35 556 35
+ 558: 84(ptr) AccessChain 24(data) 25 552 72 26
+ Store 558 557
+ 559: 27(ptr) AccessChain 10(dti) 26
+ 560: 6(int) Load 559
+ 561: 27(ptr) AccessChain 10(dti) 26
+ 562: 6(int) Load 561
+ 563: 75(ptr) AccessChain 24(data) 25 562 72
+ 564: 15(ivec4) Load 563
+ 565: 93(ivec2) VectorShuffle 564 564 0 1
+ 566: 93(ivec2) GroupNonUniformQuadBroadcast 35 565 35
+ 567: 75(ptr) AccessChain 24(data) 25 560 72
+ 568: 15(ivec4) Load 567
+ 569: 15(ivec4) VectorShuffle 568 566 4 5 2 3
+ Store 567 569
+ 570: 27(ptr) AccessChain 10(dti) 26
+ 571: 6(int) Load 570
+ 572: 27(ptr) AccessChain 10(dti) 26
+ 573: 6(int) Load 572
+ 574: 75(ptr) AccessChain 24(data) 25 573 72
+ 575: 15(ivec4) Load 574
+ 576: 105(ivec3) VectorShuffle 575 575 0 1 2
+ 577: 105(ivec3) GroupNonUniformQuadBroadcast 35 576 35
+ 578: 75(ptr) AccessChain 24(data) 25 571 72
+ 579: 15(ivec4) Load 578
+ 580: 15(ivec4) VectorShuffle 579 577 4 5 6 3
+ Store 578 580
+ 581: 27(ptr) AccessChain 10(dti) 26
+ 582: 6(int) Load 581
+ 583: 27(ptr) AccessChain 10(dti) 26
+ 584: 6(int) Load 583
+ 585: 118(ptr) AccessChain 24(data) 25 584 115
+ 586: 17(fvec4) Load 585
+ 587: 17(fvec4) GroupNonUniformQuadBroadcast 35 586 35
+ 588: 118(ptr) AccessChain 24(data) 25 582 115
+ Store 588 587
+ 589: 27(ptr) AccessChain 10(dti) 26
+ 590: 6(int) Load 589
+ 591: 27(ptr) AccessChain 10(dti) 26
+ 592: 6(int) Load 591
+ 593: 127(ptr) AccessChain 24(data) 25 592 115 26
+ 594: 16(float) Load 593
+ 595: 16(float) GroupNonUniformQuadBroadcast 35 594 35
+ 596: 127(ptr) AccessChain 24(data) 25 590 115 26
+ Store 596 595
+ 597: 27(ptr) AccessChain 10(dti) 26
+ 598: 6(int) Load 597
+ 599: 27(ptr) AccessChain 10(dti) 26
+ 600: 6(int) Load 599
+ 601: 118(ptr) AccessChain 24(data) 25 600 115
+ 602: 17(fvec4) Load 601
+ 603: 136(fvec2) VectorShuffle 602 602 0 1
+ 604: 136(fvec2) GroupNonUniformQuadBroadcast 35 603 35
+ 605: 118(ptr) AccessChain 24(data) 25 598 115
+ 606: 17(fvec4) Load 605
+ 607: 17(fvec4) VectorShuffle 606 604 4 5 2 3
+ Store 605 607
+ 608: 27(ptr) AccessChain 10(dti) 26
+ 609: 6(int) Load 608
+ 610: 27(ptr) AccessChain 10(dti) 26
+ 611: 6(int) Load 610
+ 612: 118(ptr) AccessChain 24(data) 25 611 115
+ 613: 17(fvec4) Load 612
+ 614: 148(fvec3) VectorShuffle 613 613 0 1 2
+ 615: 148(fvec3) GroupNonUniformQuadBroadcast 35 614 35
+ 616: 118(ptr) AccessChain 24(data) 25 609 115
+ 617: 17(fvec4) Load 616
+ 618: 17(fvec4) VectorShuffle 617 615 4 5 6 3
+ Store 616 618
+ 619: 27(ptr) AccessChain 10(dti) 26
+ 620: 6(int) Load 619
+ 621: 27(ptr) AccessChain 10(dti) 26
+ 622: 6(int) Load 621
+ 623: 161(ptr) AccessChain 24(data) 25 622 158
+ 624: 19(fvec4) Load 623
+ 625: 19(fvec4) GroupNonUniformQuadBroadcast 35 624 35
+ 626: 161(ptr) AccessChain 24(data) 25 620 158
+ Store 626 625
+ 627: 27(ptr) AccessChain 10(dti) 26
+ 628: 6(int) Load 627
+ 629: 27(ptr) AccessChain 10(dti) 26
+ 630: 6(int) Load 629
+ 631: 170(ptr) AccessChain 24(data) 25 630 158 26
+ 632: 18(float) Load 631
+ 633: 18(float) GroupNonUniformQuadBroadcast 35 632 35
+ 634: 170(ptr) AccessChain 24(data) 25 628 158 26
+ Store 634 633
+ 635: 27(ptr) AccessChain 10(dti) 26
+ 636: 6(int) Load 635
+ 637: 27(ptr) AccessChain 10(dti) 26
+ 638: 6(int) Load 637
+ 639: 161(ptr) AccessChain 24(data) 25 638 158
+ 640: 19(fvec4) Load 639
+ 641: 179(fvec2) VectorShuffle 640 640 0 1
+ 642: 179(fvec2) GroupNonUniformQuadBroadcast 35 641 35
+ 643: 161(ptr) AccessChain 24(data) 25 636 158
+ 644: 19(fvec4) Load 643
+ 645: 19(fvec4) VectorShuffle 644 642 4 5 2 3
+ Store 643 645
+ 646: 27(ptr) AccessChain 10(dti) 26
+ 647: 6(int) Load 646
+ 648: 27(ptr) AccessChain 10(dti) 26
+ 649: 6(int) Load 648
+ 650: 161(ptr) AccessChain 24(data) 25 649 158
+ 651: 19(fvec4) Load 650
+ 652: 191(fvec3) VectorShuffle 651 651 0 1 2
+ 653: 191(fvec3) GroupNonUniformQuadBroadcast 35 652 35
+ 654: 161(ptr) AccessChain 24(data) 25 647 158
+ 655: 19(fvec4) Load 654
+ 656: 19(fvec4) VectorShuffle 655 653 4 5 6 3
+ Store 654 656
+ 657: 27(ptr) AccessChain 10(dti) 26
+ 658: 6(int) Load 657
+ 659: 27(ptr) AccessChain 10(dti) 26
+ 660: 6(int) Load 659
+ 661: 32(ptr) AccessChain 24(data) 25 660 25
+ 662: 13(ivec4) Load 661
+ 663: 13(ivec4) GroupNonUniformQuadSwap 35 662 26
+ 664: 32(ptr) AccessChain 24(data) 25 658 25
+ Store 664 663
+ 665: 27(ptr) AccessChain 10(dti) 26
+ 666: 6(int) Load 665
+ 667: 27(ptr) AccessChain 10(dti) 26
+ 668: 6(int) Load 667
+ 669: 42(ptr) AccessChain 24(data) 25 668 25 26
+ 670: 6(int) Load 669
+ 671: 6(int) GroupNonUniformQuadSwap 35 670 26
+ 672: 42(ptr) AccessChain 24(data) 25 666 25 26
+ Store 672 671
+ 673: 27(ptr) AccessChain 10(dti) 26
+ 674: 6(int) Load 673
+ 675: 27(ptr) AccessChain 10(dti) 26
+ 676: 6(int) Load 675
+ 677: 32(ptr) AccessChain 24(data) 25 676 25
+ 678: 13(ivec4) Load 677
+ 679: 51(ivec2) VectorShuffle 678 678 0 1
+ 680: 51(ivec2) GroupNonUniformQuadSwap 35 679 26
+ 681: 32(ptr) AccessChain 24(data) 25 674 25
+ 682: 13(ivec4) Load 681
+ 683: 13(ivec4) VectorShuffle 682 680 4 5 2 3
+ Store 681 683
+ 684: 27(ptr) AccessChain 10(dti) 26
+ 685: 6(int) Load 684
+ 686: 27(ptr) AccessChain 10(dti) 26
+ 687: 6(int) Load 686
+ 688: 32(ptr) AccessChain 24(data) 25 687 25
+ 689: 13(ivec4) Load 688
+ 690: 7(ivec3) VectorShuffle 689 689 0 1 2
+ 691: 7(ivec3) GroupNonUniformQuadSwap 35 690 26
+ 692: 32(ptr) AccessChain 24(data) 25 685 25
+ 693: 13(ivec4) Load 692
+ 694: 13(ivec4) VectorShuffle 693 691 4 5 6 3
+ Store 692 694
+ 695: 27(ptr) AccessChain 10(dti) 26
+ 696: 6(int) Load 695
+ 697: 27(ptr) AccessChain 10(dti) 26
+ 698: 6(int) Load 697
+ 699: 75(ptr) AccessChain 24(data) 25 698 72
+ 700: 15(ivec4) Load 699
+ 701: 15(ivec4) GroupNonUniformQuadSwap 35 700 26
+ 702: 75(ptr) AccessChain 24(data) 25 696 72
+ Store 702 701
+ 703: 27(ptr) AccessChain 10(dti) 26
+ 704: 6(int) Load 703
+ 705: 27(ptr) AccessChain 10(dti) 26
+ 706: 6(int) Load 705
+ 707: 84(ptr) AccessChain 24(data) 25 706 72 26
+ 708: 14(int) Load 707
+ 709: 14(int) GroupNonUniformQuadSwap 35 708 26
+ 710: 84(ptr) AccessChain 24(data) 25 704 72 26
+ Store 710 709
+ 711: 27(ptr) AccessChain 10(dti) 26
+ 712: 6(int) Load 711
+ 713: 27(ptr) AccessChain 10(dti) 26
+ 714: 6(int) Load 713
+ 715: 75(ptr) AccessChain 24(data) 25 714 72
+ 716: 15(ivec4) Load 715
+ 717: 93(ivec2) VectorShuffle 716 716 0 1
+ 718: 93(ivec2) GroupNonUniformQuadSwap 35 717 26
+ 719: 75(ptr) AccessChain 24(data) 25 712 72
+ 720: 15(ivec4) Load 719
+ 721: 15(ivec4) VectorShuffle 720 718 4 5 2 3
+ Store 719 721
+ 722: 27(ptr) AccessChain 10(dti) 26
+ 723: 6(int) Load 722
+ 724: 27(ptr) AccessChain 10(dti) 26
+ 725: 6(int) Load 724
+ 726: 75(ptr) AccessChain 24(data) 25 725 72
+ 727: 15(ivec4) Load 726
+ 728: 105(ivec3) VectorShuffle 727 727 0 1 2
+ 729: 105(ivec3) GroupNonUniformQuadSwap 35 728 26
+ 730: 75(ptr) AccessChain 24(data) 25 723 72
+ 731: 15(ivec4) Load 730
+ 732: 15(ivec4) VectorShuffle 731 729 4 5 6 3
+ Store 730 732
+ 733: 27(ptr) AccessChain 10(dti) 26
+ 734: 6(int) Load 733
+ 735: 27(ptr) AccessChain 10(dti) 26
+ 736: 6(int) Load 735
+ 737: 118(ptr) AccessChain 24(data) 25 736 115
+ 738: 17(fvec4) Load 737
+ 739: 17(fvec4) GroupNonUniformQuadSwap 35 738 26
+ 740: 118(ptr) AccessChain 24(data) 25 734 115
+ Store 740 739
+ 741: 27(ptr) AccessChain 10(dti) 26
+ 742: 6(int) Load 741
+ 743: 27(ptr) AccessChain 10(dti) 26
+ 744: 6(int) Load 743
+ 745: 127(ptr) AccessChain 24(data) 25 744 115 26
+ 746: 16(float) Load 745
+ 747: 16(float) GroupNonUniformQuadSwap 35 746 26
+ 748: 127(ptr) AccessChain 24(data) 25 742 115 26
+ Store 748 747
+ 749: 27(ptr) AccessChain 10(dti) 26
+ 750: 6(int) Load 749
+ 751: 27(ptr) AccessChain 10(dti) 26
+ 752: 6(int) Load 751
+ 753: 118(ptr) AccessChain 24(data) 25 752 115
+ 754: 17(fvec4) Load 753
+ 755: 136(fvec2) VectorShuffle 754 754 0 1
+ 756: 136(fvec2) GroupNonUniformQuadSwap 35 755 26
+ 757: 118(ptr) AccessChain 24(data) 25 750 115
+ 758: 17(fvec4) Load 757
+ 759: 17(fvec4) VectorShuffle 758 756 4 5 2 3
+ Store 757 759
+ 760: 27(ptr) AccessChain 10(dti) 26
+ 761: 6(int) Load 760
+ 762: 27(ptr) AccessChain 10(dti) 26
+ 763: 6(int) Load 762
+ 764: 118(ptr) AccessChain 24(data) 25 763 115
+ 765: 17(fvec4) Load 764
+ 766: 148(fvec3) VectorShuffle 765 765 0 1 2
+ 767: 148(fvec3) GroupNonUniformQuadSwap 35 766 26
+ 768: 118(ptr) AccessChain 24(data) 25 761 115
+ 769: 17(fvec4) Load 768
+ 770: 17(fvec4) VectorShuffle 769 767 4 5 6 3
+ Store 768 770
+ 771: 27(ptr) AccessChain 10(dti) 26
+ 772: 6(int) Load 771
+ 773: 27(ptr) AccessChain 10(dti) 26
+ 774: 6(int) Load 773
+ 775: 161(ptr) AccessChain 24(data) 25 774 158
+ 776: 19(fvec4) Load 775
+ 777: 19(fvec4) GroupNonUniformQuadSwap 35 776 26
+ 778: 161(ptr) AccessChain 24(data) 25 772 158
+ Store 778 777
+ 779: 27(ptr) AccessChain 10(dti) 26
+ 780: 6(int) Load 779
+ 781: 27(ptr) AccessChain 10(dti) 26
+ 782: 6(int) Load 781
+ 783: 170(ptr) AccessChain 24(data) 25 782 158 26
+ 784: 18(float) Load 783
+ 785: 18(float) GroupNonUniformQuadSwap 35 784 26
+ 786: 170(ptr) AccessChain 24(data) 25 780 158 26
+ Store 786 785
+ 787: 27(ptr) AccessChain 10(dti) 26
+ 788: 6(int) Load 787
+ 789: 27(ptr) AccessChain 10(dti) 26
+ 790: 6(int) Load 789
+ 791: 161(ptr) AccessChain 24(data) 25 790 158
+ 792: 19(fvec4) Load 791
+ 793: 179(fvec2) VectorShuffle 792 792 0 1
+ 794: 179(fvec2) GroupNonUniformQuadSwap 35 793 26
+ 795: 161(ptr) AccessChain 24(data) 25 788 158
+ 796: 19(fvec4) Load 795
+ 797: 19(fvec4) VectorShuffle 796 794 4 5 2 3
+ Store 795 797
+ 798: 27(ptr) AccessChain 10(dti) 26
+ 799: 6(int) Load 798
+ 800: 27(ptr) AccessChain 10(dti) 26
+ 801: 6(int) Load 800
+ 802: 161(ptr) AccessChain 24(data) 25 801 158
+ 803: 19(fvec4) Load 802
+ 804: 191(fvec3) VectorShuffle 803 803 0 1 2
+ 805: 191(fvec3) GroupNonUniformQuadSwap 35 804 26
+ 806: 161(ptr) AccessChain 24(data) 25 799 158
+ 807: 19(fvec4) Load 806
+ 808: 19(fvec4) VectorShuffle 807 805 4 5 6 3
+ Store 806 808
+ 809: 27(ptr) AccessChain 10(dti) 26
+ 810: 6(int) Load 809
+ 811: 27(ptr) AccessChain 10(dti) 26
+ 812: 6(int) Load 811
+ 813: 32(ptr) AccessChain 24(data) 25 812 25
+ 814: 13(ivec4) Load 813
+ 815: 13(ivec4) GroupNonUniformQuadSwap 35 814 205
+ 816: 32(ptr) AccessChain 24(data) 25 810 25
+ Store 816 815
+ 817: 27(ptr) AccessChain 10(dti) 26
+ 818: 6(int) Load 817
+ 819: 27(ptr) AccessChain 10(dti) 26
+ 820: 6(int) Load 819
+ 821: 42(ptr) AccessChain 24(data) 25 820 25 26
+ 822: 6(int) Load 821
+ 823: 6(int) GroupNonUniformQuadSwap 35 822 205
+ 824: 42(ptr) AccessChain 24(data) 25 818 25 26
+ Store 824 823
+ 825: 27(ptr) AccessChain 10(dti) 26
+ 826: 6(int) Load 825
+ 827: 27(ptr) AccessChain 10(dti) 26
+ 828: 6(int) Load 827
+ 829: 32(ptr) AccessChain 24(data) 25 828 25
+ 830: 13(ivec4) Load 829
+ 831: 51(ivec2) VectorShuffle 830 830 0 1
+ 832: 51(ivec2) GroupNonUniformQuadSwap 35 831 205
+ 833: 32(ptr) AccessChain 24(data) 25 826 25
+ 834: 13(ivec4) Load 833
+ 835: 13(ivec4) VectorShuffle 834 832 4 5 2 3
+ Store 833 835
+ 836: 27(ptr) AccessChain 10(dti) 26
+ 837: 6(int) Load 836
+ 838: 27(ptr) AccessChain 10(dti) 26
+ 839: 6(int) Load 838
+ 840: 32(ptr) AccessChain 24(data) 25 839 25
+ 841: 13(ivec4) Load 840
+ 842: 7(ivec3) VectorShuffle 841 841 0 1 2
+ 843: 7(ivec3) GroupNonUniformQuadSwap 35 842 205
+ 844: 32(ptr) AccessChain 24(data) 25 837 25
+ 845: 13(ivec4) Load 844
+ 846: 13(ivec4) VectorShuffle 845 843 4 5 6 3
+ Store 844 846
+ 847: 27(ptr) AccessChain 10(dti) 26
+ 848: 6(int) Load 847
+ 849: 27(ptr) AccessChain 10(dti) 26
+ 850: 6(int) Load 849
+ 851: 75(ptr) AccessChain 24(data) 25 850 72
+ 852: 15(ivec4) Load 851
+ 853: 15(ivec4) GroupNonUniformQuadSwap 35 852 205
+ 854: 75(ptr) AccessChain 24(data) 25 848 72
+ Store 854 853
+ 855: 27(ptr) AccessChain 10(dti) 26
+ 856: 6(int) Load 855
+ 857: 27(ptr) AccessChain 10(dti) 26
+ 858: 6(int) Load 857
+ 859: 84(ptr) AccessChain 24(data) 25 858 72 26
+ 860: 14(int) Load 859
+ 861: 14(int) GroupNonUniformQuadSwap 35 860 205
+ 862: 84(ptr) AccessChain 24(data) 25 856 72 26
+ Store 862 861
+ 863: 27(ptr) AccessChain 10(dti) 26
+ 864: 6(int) Load 863
+ 865: 27(ptr) AccessChain 10(dti) 26
+ 866: 6(int) Load 865
+ 867: 75(ptr) AccessChain 24(data) 25 866 72
+ 868: 15(ivec4) Load 867
+ 869: 93(ivec2) VectorShuffle 868 868 0 1
+ 870: 93(ivec2) GroupNonUniformQuadSwap 35 869 205
+ 871: 75(ptr) AccessChain 24(data) 25 864 72
+ 872: 15(ivec4) Load 871
+ 873: 15(ivec4) VectorShuffle 872 870 4 5 2 3
+ Store 871 873
+ 874: 27(ptr) AccessChain 10(dti) 26
+ 875: 6(int) Load 874
+ 876: 27(ptr) AccessChain 10(dti) 26
+ 877: 6(int) Load 876
+ 878: 75(ptr) AccessChain 24(data) 25 877 72
+ 879: 15(ivec4) Load 878
+ 880: 105(ivec3) VectorShuffle 879 879 0 1 2
+ 881: 105(ivec3) GroupNonUniformQuadSwap 35 880 205
+ 882: 75(ptr) AccessChain 24(data) 25 875 72
+ 883: 15(ivec4) Load 882
+ 884: 15(ivec4) VectorShuffle 883 881 4 5 6 3
+ Store 882 884
+ 885: 27(ptr) AccessChain 10(dti) 26
+ 886: 6(int) Load 885
+ 887: 27(ptr) AccessChain 10(dti) 26
+ 888: 6(int) Load 887
+ 889: 118(ptr) AccessChain 24(data) 25 888 115
+ 890: 17(fvec4) Load 889
+ 891: 17(fvec4) GroupNonUniformQuadSwap 35 890 205
+ 892: 118(ptr) AccessChain 24(data) 25 886 115
+ Store 892 891
+ 893: 27(ptr) AccessChain 10(dti) 26
+ 894: 6(int) Load 893
+ 895: 27(ptr) AccessChain 10(dti) 26
+ 896: 6(int) Load 895
+ 897: 127(ptr) AccessChain 24(data) 25 896 115 26
+ 898: 16(float) Load 897
+ 899: 16(float) GroupNonUniformQuadSwap 35 898 205
+ 900: 127(ptr) AccessChain 24(data) 25 894 115 26
+ Store 900 899
+ 901: 27(ptr) AccessChain 10(dti) 26
+ 902: 6(int) Load 901
+ 903: 27(ptr) AccessChain 10(dti) 26
+ 904: 6(int) Load 903
+ 905: 118(ptr) AccessChain 24(data) 25 904 115
+ 906: 17(fvec4) Load 905
+ 907: 136(fvec2) VectorShuffle 906 906 0 1
+ 908: 136(fvec2) GroupNonUniformQuadSwap 35 907 205
+ 909: 118(ptr) AccessChain 24(data) 25 902 115
+ 910: 17(fvec4) Load 909
+ 911: 17(fvec4) VectorShuffle 910 908 4 5 2 3
+ Store 909 911
+ 912: 27(ptr) AccessChain 10(dti) 26
+ 913: 6(int) Load 912
+ 914: 27(ptr) AccessChain 10(dti) 26
+ 915: 6(int) Load 914
+ 916: 118(ptr) AccessChain 24(data) 25 915 115
+ 917: 17(fvec4) Load 916
+ 918: 148(fvec3) VectorShuffle 917 917 0 1 2
+ 919: 148(fvec3) GroupNonUniformQuadSwap 35 918 205
+ 920: 118(ptr) AccessChain 24(data) 25 913 115
+ 921: 17(fvec4) Load 920
+ 922: 17(fvec4) VectorShuffle 921 919 4 5 6 3
+ Store 920 922
+ 923: 27(ptr) AccessChain 10(dti) 26
+ 924: 6(int) Load 923
+ 925: 27(ptr) AccessChain 10(dti) 26
+ 926: 6(int) Load 925
+ 927: 161(ptr) AccessChain 24(data) 25 926 158
+ 928: 19(fvec4) Load 927
+ 929: 19(fvec4) GroupNonUniformQuadSwap 35 928 205
+ 930: 161(ptr) AccessChain 24(data) 25 924 158
+ Store 930 929
+ 931: 27(ptr) AccessChain 10(dti) 26
+ 932: 6(int) Load 931
+ 933: 27(ptr) AccessChain 10(dti) 26
+ 934: 6(int) Load 933
+ 935: 170(ptr) AccessChain 24(data) 25 934 158 26
+ 936: 18(float) Load 935
+ 937: 18(float) GroupNonUniformQuadSwap 35 936 205
+ 938: 170(ptr) AccessChain 24(data) 25 932 158 26
+ Store 938 937
+ 939: 27(ptr) AccessChain 10(dti) 26
+ 940: 6(int) Load 939
+ 941: 27(ptr) AccessChain 10(dti) 26
+ 942: 6(int) Load 941
+ 943: 161(ptr) AccessChain 24(data) 25 942 158
+ 944: 19(fvec4) Load 943
+ 945: 179(fvec2) VectorShuffle 944 944 0 1
+ 946: 179(fvec2) GroupNonUniformQuadSwap 35 945 205
+ 947: 161(ptr) AccessChain 24(data) 25 940 158
+ 948: 19(fvec4) Load 947
+ 949: 19(fvec4) VectorShuffle 948 946 4 5 2 3
+ Store 947 949
+ 950: 27(ptr) AccessChain 10(dti) 26
+ 951: 6(int) Load 950
+ 952: 27(ptr) AccessChain 10(dti) 26
+ 953: 6(int) Load 952
+ 954: 161(ptr) AccessChain 24(data) 25 953 158
+ 955: 19(fvec4) Load 954
+ 956: 191(fvec3) VectorShuffle 955 955 0 1 2
+ 957: 191(fvec3) GroupNonUniformQuadSwap 35 956 205
+ 958: 161(ptr) AccessChain 24(data) 25 951 158
+ 959: 19(fvec4) Load 958
+ 960: 19(fvec4) VectorShuffle 959 957 4 5 6 3
+ Store 958 960
+ 961: 27(ptr) AccessChain 10(dti) 26
+ 962: 6(int) Load 961
+ 963: 27(ptr) AccessChain 10(dti) 26
+ 964: 6(int) Load 963
+ 965: 32(ptr) AccessChain 24(data) 25 964 25
+ 966: 13(ivec4) Load 965
+ 967: 13(ivec4) GroupNonUniformQuadSwap 35 966 358
+ 968: 32(ptr) AccessChain 24(data) 25 962 25
+ Store 968 967
+ 969: 27(ptr) AccessChain 10(dti) 26
+ 970: 6(int) Load 969
+ 971: 27(ptr) AccessChain 10(dti) 26
+ 972: 6(int) Load 971
+ 973: 42(ptr) AccessChain 24(data) 25 972 25 26
+ 974: 6(int) Load 973
+ 975: 6(int) GroupNonUniformQuadSwap 35 974 358
+ 976: 42(ptr) AccessChain 24(data) 25 970 25 26
+ Store 976 975
+ 977: 27(ptr) AccessChain 10(dti) 26
+ 978: 6(int) Load 977
+ 979: 27(ptr) AccessChain 10(dti) 26
+ 980: 6(int) Load 979
+ 981: 32(ptr) AccessChain 24(data) 25 980 25
+ 982: 13(ivec4) Load 981
+ 983: 51(ivec2) VectorShuffle 982 982 0 1
+ 984: 51(ivec2) GroupNonUniformQuadSwap 35 983 358
+ 985: 32(ptr) AccessChain 24(data) 25 978 25
+ 986: 13(ivec4) Load 985
+ 987: 13(ivec4) VectorShuffle 986 984 4 5 2 3
+ Store 985 987
+ 988: 27(ptr) AccessChain 10(dti) 26
+ 989: 6(int) Load 988
+ 990: 27(ptr) AccessChain 10(dti) 26
+ 991: 6(int) Load 990
+ 992: 32(ptr) AccessChain 24(data) 25 991 25
+ 993: 13(ivec4) Load 992
+ 994: 7(ivec3) VectorShuffle 993 993 0 1 2
+ 995: 7(ivec3) GroupNonUniformQuadSwap 35 994 358
+ 996: 32(ptr) AccessChain 24(data) 25 989 25
+ 997: 13(ivec4) Load 996
+ 998: 13(ivec4) VectorShuffle 997 995 4 5 6 3
+ Store 996 998
+ 999: 27(ptr) AccessChain 10(dti) 26
+ 1000: 6(int) Load 999
+ 1001: 27(ptr) AccessChain 10(dti) 26
+ 1002: 6(int) Load 1001
+ 1003: 75(ptr) AccessChain 24(data) 25 1002 72
+ 1004: 15(ivec4) Load 1003
+ 1005: 15(ivec4) GroupNonUniformQuadSwap 35 1004 358
+ 1006: 75(ptr) AccessChain 24(data) 25 1000 72
+ Store 1006 1005
+ 1007: 27(ptr) AccessChain 10(dti) 26
+ 1008: 6(int) Load 1007
+ 1009: 27(ptr) AccessChain 10(dti) 26
+ 1010: 6(int) Load 1009
+ 1011: 84(ptr) AccessChain 24(data) 25 1010 72 26
+ 1012: 14(int) Load 1011
+ 1013: 14(int) GroupNonUniformQuadSwap 35 1012 358
+ 1014: 84(ptr) AccessChain 24(data) 25 1008 72 26
+ Store 1014 1013
+ 1015: 27(ptr) AccessChain 10(dti) 26
+ 1016: 6(int) Load 1015
+ 1017: 27(ptr) AccessChain 10(dti) 26
+ 1018: 6(int) Load 1017
+ 1019: 75(ptr) AccessChain 24(data) 25 1018 72
+ 1020: 15(ivec4) Load 1019
+ 1021: 93(ivec2) VectorShuffle 1020 1020 0 1
+ 1022: 93(ivec2) GroupNonUniformQuadSwap 35 1021 358
+ 1023: 75(ptr) AccessChain 24(data) 25 1016 72
+ 1024: 15(ivec4) Load 1023
+ 1025: 15(ivec4) VectorShuffle 1024 1022 4 5 2 3
+ Store 1023 1025
+ 1026: 27(ptr) AccessChain 10(dti) 26
+ 1027: 6(int) Load 1026
+ 1028: 27(ptr) AccessChain 10(dti) 26
+ 1029: 6(int) Load 1028
+ 1030: 75(ptr) AccessChain 24(data) 25 1029 72
+ 1031: 15(ivec4) Load 1030
+ 1032: 105(ivec3) VectorShuffle 1031 1031 0 1 2
+ 1033: 105(ivec3) GroupNonUniformQuadSwap 35 1032 358
+ 1034: 75(ptr) AccessChain 24(data) 25 1027 72
+ 1035: 15(ivec4) Load 1034
+ 1036: 15(ivec4) VectorShuffle 1035 1033 4 5 6 3
+ Store 1034 1036
+ 1037: 27(ptr) AccessChain 10(dti) 26
+ 1038: 6(int) Load 1037
+ 1039: 27(ptr) AccessChain 10(dti) 26
+ 1040: 6(int) Load 1039
+ 1041: 118(ptr) AccessChain 24(data) 25 1040 115
+ 1042: 17(fvec4) Load 1041
+ 1043: 17(fvec4) GroupNonUniformQuadSwap 35 1042 358
+ 1044: 118(ptr) AccessChain 24(data) 25 1038 115
+ Store 1044 1043
+ 1045: 27(ptr) AccessChain 10(dti) 26
+ 1046: 6(int) Load 1045
+ 1047: 27(ptr) AccessChain 10(dti) 26
+ 1048: 6(int) Load 1047
+ 1049: 127(ptr) AccessChain 24(data) 25 1048 115 26
+ 1050: 16(float) Load 1049
+ 1051: 16(float) GroupNonUniformQuadSwap 35 1050 358
+ 1052: 127(ptr) AccessChain 24(data) 25 1046 115 26
+ Store 1052 1051
+ 1053: 27(ptr) AccessChain 10(dti) 26
+ 1054: 6(int) Load 1053
+ 1055: 27(ptr) AccessChain 10(dti) 26
+ 1056: 6(int) Load 1055
+ 1057: 118(ptr) AccessChain 24(data) 25 1056 115
+ 1058: 17(fvec4) Load 1057
+ 1059: 136(fvec2) VectorShuffle 1058 1058 0 1
+ 1060: 136(fvec2) GroupNonUniformQuadSwap 35 1059 358
+ 1061: 118(ptr) AccessChain 24(data) 25 1054 115
+ 1062: 17(fvec4) Load 1061
+ 1063: 17(fvec4) VectorShuffle 1062 1060 4 5 2 3
+ Store 1061 1063
+ 1064: 27(ptr) AccessChain 10(dti) 26
+ 1065: 6(int) Load 1064
+ 1066: 27(ptr) AccessChain 10(dti) 26
+ 1067: 6(int) Load 1066
+ 1068: 118(ptr) AccessChain 24(data) 25 1067 115
+ 1069: 17(fvec4) Load 1068
+ 1070: 148(fvec3) VectorShuffle 1069 1069 0 1 2
+ 1071: 148(fvec3) GroupNonUniformQuadSwap 35 1070 358
+ 1072: 118(ptr) AccessChain 24(data) 25 1065 115
+ 1073: 17(fvec4) Load 1072
+ 1074: 17(fvec4) VectorShuffle 1073 1071 4 5 6 3
+ Store 1072 1074
+ 1075: 27(ptr) AccessChain 10(dti) 26
+ 1076: 6(int) Load 1075
+ 1077: 27(ptr) AccessChain 10(dti) 26
+ 1078: 6(int) Load 1077
+ 1079: 161(ptr) AccessChain 24(data) 25 1078 158
+ 1080: 19(fvec4) Load 1079
+ 1081: 19(fvec4) GroupNonUniformQuadSwap 35 1080 358
+ 1082: 161(ptr) AccessChain 24(data) 25 1076 158
+ Store 1082 1081
+ 1083: 27(ptr) AccessChain 10(dti) 26
+ 1084: 6(int) Load 1083
+ 1085: 27(ptr) AccessChain 10(dti) 26
+ 1086: 6(int) Load 1085
+ 1087: 170(ptr) AccessChain 24(data) 25 1086 158 26
+ 1088: 18(float) Load 1087
+ 1089: 18(float) GroupNonUniformQuadSwap 35 1088 358
+ 1090: 170(ptr) AccessChain 24(data) 25 1084 158 26
+ Store 1090 1089
+ 1091: 27(ptr) AccessChain 10(dti) 26
+ 1092: 6(int) Load 1091
+ 1093: 27(ptr) AccessChain 10(dti) 26
+ 1094: 6(int) Load 1093
+ 1095: 161(ptr) AccessChain 24(data) 25 1094 158
+ 1096: 19(fvec4) Load 1095
+ 1097: 179(fvec2) VectorShuffle 1096 1096 0 1
+ 1098: 179(fvec2) GroupNonUniformQuadSwap 35 1097 358
+ 1099: 161(ptr) AccessChain 24(data) 25 1092 158
+ 1100: 19(fvec4) Load 1099
+ 1101: 19(fvec4) VectorShuffle 1100 1098 4 5 2 3
+ Store 1099 1101
+ 1102: 27(ptr) AccessChain 10(dti) 26
+ 1103: 6(int) Load 1102
+ 1104: 27(ptr) AccessChain 10(dti) 26
+ 1105: 6(int) Load 1104
+ 1106: 161(ptr) AccessChain 24(data) 25 1105 158
+ 1107: 19(fvec4) Load 1106
+ 1108: 191(fvec3) VectorShuffle 1107 1107 0 1 2
+ 1109: 191(fvec3) GroupNonUniformQuadSwap 35 1108 358
+ 1110: 161(ptr) AccessChain 24(data) 25 1103 158
+ 1111: 19(fvec4) Load 1110
+ 1112: 19(fvec4) VectorShuffle 1111 1109 4 5 6 3
+ Store 1110 1112
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.wavequery.comp.out b/Test/baseResults/hlsl.wavequery.comp.out
new file mode 100644
index 0000000..952a433
--- /dev/null
+++ b/Test/baseResults/hlsl.wavequery.comp.out
@@ -0,0 +1,116 @@
+hlsl.wavequery.comp
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:5 Function Definition: @CSMain( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp uint)
+0:6 indirect index (layout( row_major std430) buffer uint)
+0:6 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:6 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 '@gl_SubgroupInvocationID' ( in uint unknown built-in variable)
+0:6 Test condition and select ( temp uint): no shortcircuit
+0:6 Condition
+0:6 subgroupElect ( temp bool)
+0:6 true case
+0:6 '@gl_SubgroupSize' ( in uint unknown built-in variable)
+0:6 false case
+0:6 Constant:
+0:6 0 (const uint)
+0:5 Function Definition: CSMain( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 Function Call: @CSMain( ( temp void)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:5 Function Definition: @CSMain( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:6 move second child to first child ( temp uint)
+0:6 indirect index (layout( row_major std430) buffer uint)
+0:6 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint)
+0:6 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 '@gl_SubgroupInvocationID' ( in uint unknown built-in variable)
+0:6 Test condition and select ( temp uint): no shortcircuit
+0:6 Condition
+0:6 subgroupElect ( temp bool)
+0:6 true case
+0:6 '@gl_SubgroupSize' ( in uint unknown built-in variable)
+0:6 false case
+0:6 Constant:
+0:6 0 (const uint)
+0:5 Function Definition: CSMain( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 Function Call: @CSMain( ( temp void)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
+
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 28
+
+ Capability Shader
+ Capability GroupNonUniform
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "CSMain" 16 21
+ ExecutionMode 4 LocalSize 32 16 1
+ Source HLSL 500
+ Name 4 "CSMain"
+ Name 6 "@CSMain("
+ Name 10 "data"
+ MemberName 10(data) 0 "@data"
+ Name 12 "data"
+ Name 16 "@gl_SubgroupInvocationID"
+ Name 21 "@gl_SubgroupSize"
+ Decorate 9 ArrayStride 4
+ MemberDecorate 10(data) 0 Offset 0
+ Decorate 10(data) BufferBlock
+ Decorate 12(data) DescriptorSet 0
+ Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 21(@gl_SubgroupSize) BuiltIn SubgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 8: TypeInt 32 0
+ 9: TypeRuntimeArray 8(int)
+ 10(data): TypeStruct 9
+ 11: TypePointer Uniform 10(data)
+ 12(data): 11(ptr) Variable Uniform
+ 13: TypeInt 32 1
+ 14: 13(int) Constant 0
+ 15: TypePointer Input 8(int)
+16(@gl_SubgroupInvocationID): 15(ptr) Variable Input
+ 18: TypeBool
+ 19: 8(int) Constant 3
+21(@gl_SubgroupSize): 15(ptr) Variable Input
+ 23: 8(int) Constant 0
+ 25: TypePointer Uniform 8(int)
+ 4(CSMain): 2 Function None 3
+ 5: Label
+ 27: 2 FunctionCall 6(@CSMain()
+ Return
+ FunctionEnd
+ 6(@CSMain(): 2 Function None 3
+ 7: Label
+ 17: 8(int) Load 16(@gl_SubgroupInvocationID)
+ 20: 18(bool) GroupNonUniformElect 19
+ 22: 8(int) Load 21(@gl_SubgroupSize)
+ 24: 8(int) Select 20 22 23
+ 26: 25(ptr) AccessChain 12(data) 14 17
+ Store 26 24
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.wavequery.frag.out b/Test/baseResults/hlsl.wavequery.frag.out
new file mode 100644
index 0000000..01d0c0e
--- /dev/null
+++ b/Test/baseResults/hlsl.wavequery.frag.out
@@ -0,0 +1,123 @@
+hlsl.wavequery.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: @PixelShaderFunction( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Test condition and select ( temp void)
+0:3 Condition
+0:3 subgroupElect ( temp bool)
+0:3 true case
+0:? Sequence
+0:5 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:3 false case
+0:? Sequence
+0:9 Branch: Return with expression
+0:? Constant:
+0:? 4.000000
+0:? 3.000000
+0:? 2.000000
+0:? 1.000000
+0:2 Function Definition: PixelShaderFunction( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:2 Function Call: @PixelShaderFunction( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: @PixelShaderFunction( ( temp 4-component vector of float)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Test condition and select ( temp void)
+0:3 Condition
+0:3 subgroupElect ( temp bool)
+0:3 true case
+0:? Sequence
+0:5 Branch: Return with expression
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:3 false case
+0:? Sequence
+0:9 Branch: Return with expression
+0:? Constant:
+0:? 4.000000
+0:? 3.000000
+0:? 2.000000
+0:? 1.000000
+0:2 Function Definition: PixelShaderFunction( ( temp void)
+0:2 Function Parameters:
+0:? Sequence
+0:2 move second child to first child ( temp 4-component vector of float)
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:2 Function Call: @PixelShaderFunction( ( temp 4-component vector of float)
+0:? Linker Objects
+0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 30
+
+ Capability Shader
+ Capability GroupNonUniform
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "PixelShaderFunction" 28
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 500
+ Name 4 "PixelShaderFunction"
+ Name 9 "@PixelShaderFunction("
+ Name 28 "@entryPointOutput"
+ Decorate 28(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeFunction 7(fvec4)
+ 11: TypeBool
+ 12: TypeInt 32 0
+ 13: 12(int) Constant 3
+ 17: 6(float) Constant 1065353216
+ 18: 6(float) Constant 1073741824
+ 19: 6(float) Constant 1077936128
+ 20: 6(float) Constant 1082130432
+ 21: 7(fvec4) ConstantComposite 17 18 19 20
+ 24: 7(fvec4) ConstantComposite 20 19 18 17
+ 27: TypePointer Output 7(fvec4)
+28(@entryPointOutput): 27(ptr) Variable Output
+4(PixelShaderFunction): 2 Function None 3
+ 5: Label
+ 29: 7(fvec4) FunctionCall 9(@PixelShaderFunction()
+ Store 28(@entryPointOutput) 29
+ Return
+ FunctionEnd
+9(@PixelShaderFunction(): 7(fvec4) Function None 8
+ 10: Label
+ 14: 11(bool) GroupNonUniformElect 13
+ SelectionMerge 16 None
+ BranchConditional 14 15 23
+ 15: Label
+ ReturnValue 21
+ 23: Label
+ ReturnValue 24
+ 16: Label
+ 26: 7(fvec4) Undef
+ ReturnValue 26
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out
new file mode 100644
index 0000000..1aae31f
--- /dev/null
+++ b/Test/baseResults/hlsl.wavereduction.comp.out
@@ -0,0 +1,7218 @@
+hlsl.wavereduction.comp
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:13 Function Definition: @CSMain(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 subgroupAdd ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 subgroupAdd ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 subgroupAdd ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:17 move second child to first child ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 subgroupAdd ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:19 move second child to first child ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 subgroupAdd ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:20 move second child to first child ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 subgroupAdd ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:21 move second child to first child ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 subgroupAdd ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:22 move second child to first child ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 subgroupAdd ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 subgroupAdd ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 subgroupAdd ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:26 move second child to first child ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 subgroupAdd ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:27 move second child to first child ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 subgroupAdd ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:29 move second child to first child ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 subgroupAdd ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:30 move second child to first child ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 subgroupAdd ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:31 move second child to first child ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 subgroupAdd ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:32 move second child to first child ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 subgroupAdd ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:34 move second child to first child ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 subgroupMul ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:35 move second child to first child ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 subgroupMul ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:36 move second child to first child ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 subgroupMul ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:37 move second child to first child ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 subgroupMul ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:39 move second child to first child ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 subgroupMul ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:40 move second child to first child ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 subgroupMul ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:41 move second child to first child ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 subgroupMul ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:42 move second child to first child ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 subgroupMul ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 subgroupMul ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 subgroupMul ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:46 move second child to first child ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 subgroupMul ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 subgroupMul ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:49 move second child to first child ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 subgroupMul ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:50 move second child to first child ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 subgroupMul ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:51 move second child to first child ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 subgroupMul ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:52 move second child to first child ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 subgroupMul ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:54 move second child to first child ( temp 4-component vector of uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 subgroupMin ( temp 4-component vector of uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:55 move second child to first child ( temp uint)
+0:55 direct index ( temp uint)
+0:55 u: direct index for structure ( temp 4-component vector of uint)
+0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:55 Constant:
+0:55 0 (const uint)
+0:55 direct index ( temp uint)
+0:55 'dti' ( in 3-component vector of uint)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 subgroupMin ( temp uint)
+0:55 direct index ( temp uint)
+0:55 u: direct index for structure ( temp 4-component vector of uint)
+0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:55 Constant:
+0:55 0 (const uint)
+0:55 direct index ( temp uint)
+0:55 'dti' ( in 3-component vector of uint)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:56 move second child to first child ( temp 2-component vector of uint)
+0:56 vector swizzle ( temp 2-component vector of uint)
+0:56 u: direct index for structure ( temp 4-component vector of uint)
+0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 direct index ( temp uint)
+0:56 'dti' ( in 3-component vector of uint)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Sequence
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 1 (const int)
+0:56 subgroupMin ( temp 2-component vector of uint)
+0:56 vector swizzle ( temp 2-component vector of uint)
+0:56 u: direct index for structure ( temp 4-component vector of uint)
+0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 direct index ( temp uint)
+0:56 'dti' ( in 3-component vector of uint)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Sequence
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 1 (const int)
+0:57 move second child to first child ( temp 3-component vector of uint)
+0:57 vector swizzle ( temp 3-component vector of uint)
+0:57 u: direct index for structure ( temp 4-component vector of uint)
+0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:57 Constant:
+0:57 0 (const uint)
+0:57 direct index ( temp uint)
+0:57 'dti' ( in 3-component vector of uint)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Sequence
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 Constant:
+0:57 2 (const int)
+0:57 subgroupMin ( temp 3-component vector of uint)
+0:57 vector swizzle ( temp 3-component vector of uint)
+0:57 u: direct index for structure ( temp 4-component vector of uint)
+0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:57 Constant:
+0:57 0 (const uint)
+0:57 direct index ( temp uint)
+0:57 'dti' ( in 3-component vector of uint)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Sequence
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 Constant:
+0:57 2 (const int)
+0:59 move second child to first child ( temp 4-component vector of int)
+0:59 i: direct index for structure ( temp 4-component vector of int)
+0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:59 Constant:
+0:59 0 (const uint)
+0:59 direct index ( temp uint)
+0:59 'dti' ( in 3-component vector of uint)
+0:59 Constant:
+0:59 0 (const int)
+0:59 Constant:
+0:59 1 (const int)
+0:59 subgroupMin ( temp 4-component vector of int)
+0:59 i: direct index for structure ( temp 4-component vector of int)
+0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:59 Constant:
+0:59 0 (const uint)
+0:59 direct index ( temp uint)
+0:59 'dti' ( in 3-component vector of uint)
+0:59 Constant:
+0:59 0 (const int)
+0:59 Constant:
+0:59 1 (const int)
+0:60 move second child to first child ( temp int)
+0:60 direct index ( temp int)
+0:60 i: direct index for structure ( temp 4-component vector of int)
+0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:60 Constant:
+0:60 0 (const uint)
+0:60 direct index ( temp uint)
+0:60 'dti' ( in 3-component vector of uint)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 1 (const int)
+0:60 Constant:
+0:60 0 (const int)
+0:60 subgroupMin ( temp int)
+0:60 direct index ( temp int)
+0:60 i: direct index for structure ( temp 4-component vector of int)
+0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:60 Constant:
+0:60 0 (const uint)
+0:60 direct index ( temp uint)
+0:60 'dti' ( in 3-component vector of uint)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 1 (const int)
+0:60 Constant:
+0:60 0 (const int)
+0:61 move second child to first child ( temp 2-component vector of int)
+0:61 vector swizzle ( temp 2-component vector of int)
+0:61 i: direct index for structure ( temp 4-component vector of int)
+0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:61 Constant:
+0:61 0 (const uint)
+0:61 direct index ( temp uint)
+0:61 'dti' ( in 3-component vector of uint)
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Sequence
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 subgroupMin ( temp 2-component vector of int)
+0:61 vector swizzle ( temp 2-component vector of int)
+0:61 i: direct index for structure ( temp 4-component vector of int)
+0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:61 Constant:
+0:61 0 (const uint)
+0:61 direct index ( temp uint)
+0:61 'dti' ( in 3-component vector of uint)
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Sequence
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:62 move second child to first child ( temp 3-component vector of int)
+0:62 vector swizzle ( temp 3-component vector of int)
+0:62 i: direct index for structure ( temp 4-component vector of int)
+0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:62 Constant:
+0:62 0 (const uint)
+0:62 direct index ( temp uint)
+0:62 'dti' ( in 3-component vector of uint)
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Sequence
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Constant:
+0:62 2 (const int)
+0:62 subgroupMin ( temp 3-component vector of int)
+0:62 vector swizzle ( temp 3-component vector of int)
+0:62 i: direct index for structure ( temp 4-component vector of int)
+0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:62 Constant:
+0:62 0 (const uint)
+0:62 direct index ( temp uint)
+0:62 'dti' ( in 3-component vector of uint)
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Sequence
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Constant:
+0:62 2 (const int)
+0:64 move second child to first child ( temp 4-component vector of float)
+0:64 f: direct index for structure ( temp 4-component vector of float)
+0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:64 Constant:
+0:64 0 (const uint)
+0:64 direct index ( temp uint)
+0:64 'dti' ( in 3-component vector of uint)
+0:64 Constant:
+0:64 0 (const int)
+0:64 Constant:
+0:64 2 (const int)
+0:64 subgroupMin ( temp 4-component vector of float)
+0:64 f: direct index for structure ( temp 4-component vector of float)
+0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:64 Constant:
+0:64 0 (const uint)
+0:64 direct index ( temp uint)
+0:64 'dti' ( in 3-component vector of uint)
+0:64 Constant:
+0:64 0 (const int)
+0:64 Constant:
+0:64 2 (const int)
+0:65 move second child to first child ( temp float)
+0:65 direct index ( temp float)
+0:65 f: direct index for structure ( temp 4-component vector of float)
+0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:65 Constant:
+0:65 0 (const uint)
+0:65 direct index ( temp uint)
+0:65 'dti' ( in 3-component vector of uint)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const int)
+0:65 Constant:
+0:65 0 (const int)
+0:65 subgroupMin ( temp float)
+0:65 direct index ( temp float)
+0:65 f: direct index for structure ( temp 4-component vector of float)
+0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:65 Constant:
+0:65 0 (const uint)
+0:65 direct index ( temp uint)
+0:65 'dti' ( in 3-component vector of uint)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const int)
+0:65 Constant:
+0:65 0 (const int)
+0:66 move second child to first child ( temp 2-component vector of float)
+0:66 vector swizzle ( temp 2-component vector of float)
+0:66 f: direct index for structure ( temp 4-component vector of float)
+0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:66 Constant:
+0:66 0 (const uint)
+0:66 direct index ( temp uint)
+0:66 'dti' ( in 3-component vector of uint)
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 2 (const int)
+0:66 Sequence
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 1 (const int)
+0:66 subgroupMin ( temp 2-component vector of float)
+0:66 vector swizzle ( temp 2-component vector of float)
+0:66 f: direct index for structure ( temp 4-component vector of float)
+0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:66 Constant:
+0:66 0 (const uint)
+0:66 direct index ( temp uint)
+0:66 'dti' ( in 3-component vector of uint)
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 2 (const int)
+0:66 Sequence
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 1 (const int)
+0:67 move second child to first child ( temp 3-component vector of float)
+0:67 vector swizzle ( temp 3-component vector of float)
+0:67 f: direct index for structure ( temp 4-component vector of float)
+0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:67 Constant:
+0:67 0 (const uint)
+0:67 direct index ( temp uint)
+0:67 'dti' ( in 3-component vector of uint)
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Sequence
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 1 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 subgroupMin ( temp 3-component vector of float)
+0:67 vector swizzle ( temp 3-component vector of float)
+0:67 f: direct index for structure ( temp 4-component vector of float)
+0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:67 Constant:
+0:67 0 (const uint)
+0:67 direct index ( temp uint)
+0:67 'dti' ( in 3-component vector of uint)
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Sequence
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 1 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:69 move second child to first child ( temp 4-component vector of double)
+0:69 d: direct index for structure ( temp 4-component vector of double)
+0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:69 Constant:
+0:69 0 (const uint)
+0:69 direct index ( temp uint)
+0:69 'dti' ( in 3-component vector of uint)
+0:69 Constant:
+0:69 0 (const int)
+0:69 Constant:
+0:69 3 (const int)
+0:69 subgroupMin ( temp 4-component vector of double)
+0:69 d: direct index for structure ( temp 4-component vector of double)
+0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:69 Constant:
+0:69 0 (const uint)
+0:69 direct index ( temp uint)
+0:69 'dti' ( in 3-component vector of uint)
+0:69 Constant:
+0:69 0 (const int)
+0:69 Constant:
+0:69 3 (const int)
+0:70 move second child to first child ( temp double)
+0:70 direct index ( temp double)
+0:70 d: direct index for structure ( temp 4-component vector of double)
+0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:70 Constant:
+0:70 0 (const uint)
+0:70 direct index ( temp uint)
+0:70 'dti' ( in 3-component vector of uint)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 3 (const int)
+0:70 Constant:
+0:70 0 (const int)
+0:70 subgroupMin ( temp double)
+0:70 direct index ( temp double)
+0:70 d: direct index for structure ( temp 4-component vector of double)
+0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:70 Constant:
+0:70 0 (const uint)
+0:70 direct index ( temp uint)
+0:70 'dti' ( in 3-component vector of uint)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 3 (const int)
+0:70 Constant:
+0:70 0 (const int)
+0:71 move second child to first child ( temp 2-component vector of double)
+0:71 vector swizzle ( temp 2-component vector of double)
+0:71 d: direct index for structure ( temp 4-component vector of double)
+0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:71 Constant:
+0:71 0 (const uint)
+0:71 direct index ( temp uint)
+0:71 'dti' ( in 3-component vector of uint)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 3 (const int)
+0:71 Sequence
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 1 (const int)
+0:71 subgroupMin ( temp 2-component vector of double)
+0:71 vector swizzle ( temp 2-component vector of double)
+0:71 d: direct index for structure ( temp 4-component vector of double)
+0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:71 Constant:
+0:71 0 (const uint)
+0:71 direct index ( temp uint)
+0:71 'dti' ( in 3-component vector of uint)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 3 (const int)
+0:71 Sequence
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 1 (const int)
+0:72 move second child to first child ( temp 3-component vector of double)
+0:72 vector swizzle ( temp 3-component vector of double)
+0:72 d: direct index for structure ( temp 4-component vector of double)
+0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:72 Constant:
+0:72 0 (const uint)
+0:72 direct index ( temp uint)
+0:72 'dti' ( in 3-component vector of uint)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 3 (const int)
+0:72 Sequence
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 1 (const int)
+0:72 Constant:
+0:72 2 (const int)
+0:72 subgroupMin ( temp 3-component vector of double)
+0:72 vector swizzle ( temp 3-component vector of double)
+0:72 d: direct index for structure ( temp 4-component vector of double)
+0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:72 Constant:
+0:72 0 (const uint)
+0:72 direct index ( temp uint)
+0:72 'dti' ( in 3-component vector of uint)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 3 (const int)
+0:72 Sequence
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 1 (const int)
+0:72 Constant:
+0:72 2 (const int)
+0:74 move second child to first child ( temp 4-component vector of uint)
+0:74 u: direct index for structure ( temp 4-component vector of uint)
+0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:74 Constant:
+0:74 0 (const uint)
+0:74 direct index ( temp uint)
+0:74 'dti' ( in 3-component vector of uint)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 0 (const int)
+0:74 subgroupMax ( temp 4-component vector of uint)
+0:74 u: direct index for structure ( temp 4-component vector of uint)
+0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:74 Constant:
+0:74 0 (const uint)
+0:74 direct index ( temp uint)
+0:74 'dti' ( in 3-component vector of uint)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 0 (const int)
+0:75 move second child to first child ( temp uint)
+0:75 direct index ( temp uint)
+0:75 u: direct index for structure ( temp 4-component vector of uint)
+0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:75 Constant:
+0:75 0 (const uint)
+0:75 direct index ( temp uint)
+0:75 'dti' ( in 3-component vector of uint)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 subgroupMax ( temp uint)
+0:75 direct index ( temp uint)
+0:75 u: direct index for structure ( temp 4-component vector of uint)
+0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:75 Constant:
+0:75 0 (const uint)
+0:75 direct index ( temp uint)
+0:75 'dti' ( in 3-component vector of uint)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:76 move second child to first child ( temp 2-component vector of uint)
+0:76 vector swizzle ( temp 2-component vector of uint)
+0:76 u: direct index for structure ( temp 4-component vector of uint)
+0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:76 Constant:
+0:76 0 (const uint)
+0:76 direct index ( temp uint)
+0:76 'dti' ( in 3-component vector of uint)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Sequence
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 1 (const int)
+0:76 subgroupMax ( temp 2-component vector of uint)
+0:76 vector swizzle ( temp 2-component vector of uint)
+0:76 u: direct index for structure ( temp 4-component vector of uint)
+0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:76 Constant:
+0:76 0 (const uint)
+0:76 direct index ( temp uint)
+0:76 'dti' ( in 3-component vector of uint)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Sequence
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 1 (const int)
+0:77 move second child to first child ( temp 3-component vector of uint)
+0:77 vector swizzle ( temp 3-component vector of uint)
+0:77 u: direct index for structure ( temp 4-component vector of uint)
+0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:77 Constant:
+0:77 0 (const uint)
+0:77 direct index ( temp uint)
+0:77 'dti' ( in 3-component vector of uint)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Sequence
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 1 (const int)
+0:77 Constant:
+0:77 2 (const int)
+0:77 subgroupMax ( temp 3-component vector of uint)
+0:77 vector swizzle ( temp 3-component vector of uint)
+0:77 u: direct index for structure ( temp 4-component vector of uint)
+0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:77 Constant:
+0:77 0 (const uint)
+0:77 direct index ( temp uint)
+0:77 'dti' ( in 3-component vector of uint)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Sequence
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 1 (const int)
+0:77 Constant:
+0:77 2 (const int)
+0:79 move second child to first child ( temp 4-component vector of int)
+0:79 i: direct index for structure ( temp 4-component vector of int)
+0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:79 Constant:
+0:79 0 (const uint)
+0:79 direct index ( temp uint)
+0:79 'dti' ( in 3-component vector of uint)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 1 (const int)
+0:79 subgroupMax ( temp 4-component vector of int)
+0:79 i: direct index for structure ( temp 4-component vector of int)
+0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:79 Constant:
+0:79 0 (const uint)
+0:79 direct index ( temp uint)
+0:79 'dti' ( in 3-component vector of uint)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 1 (const int)
+0:80 move second child to first child ( temp int)
+0:80 direct index ( temp int)
+0:80 i: direct index for structure ( temp 4-component vector of int)
+0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:80 Constant:
+0:80 0 (const uint)
+0:80 direct index ( temp uint)
+0:80 'dti' ( in 3-component vector of uint)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 1 (const int)
+0:80 Constant:
+0:80 0 (const int)
+0:80 subgroupMax ( temp int)
+0:80 direct index ( temp int)
+0:80 i: direct index for structure ( temp 4-component vector of int)
+0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:80 Constant:
+0:80 0 (const uint)
+0:80 direct index ( temp uint)
+0:80 'dti' ( in 3-component vector of uint)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 1 (const int)
+0:80 Constant:
+0:80 0 (const int)
+0:81 move second child to first child ( temp 2-component vector of int)
+0:81 vector swizzle ( temp 2-component vector of int)
+0:81 i: direct index for structure ( temp 4-component vector of int)
+0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:81 Constant:
+0:81 0 (const uint)
+0:81 direct index ( temp uint)
+0:81 'dti' ( in 3-component vector of uint)
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Sequence
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 subgroupMax ( temp 2-component vector of int)
+0:81 vector swizzle ( temp 2-component vector of int)
+0:81 i: direct index for structure ( temp 4-component vector of int)
+0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:81 Constant:
+0:81 0 (const uint)
+0:81 direct index ( temp uint)
+0:81 'dti' ( in 3-component vector of uint)
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Sequence
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:82 move second child to first child ( temp 3-component vector of int)
+0:82 vector swizzle ( temp 3-component vector of int)
+0:82 i: direct index for structure ( temp 4-component vector of int)
+0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:82 Constant:
+0:82 0 (const uint)
+0:82 direct index ( temp uint)
+0:82 'dti' ( in 3-component vector of uint)
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Sequence
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Constant:
+0:82 2 (const int)
+0:82 subgroupMax ( temp 3-component vector of int)
+0:82 vector swizzle ( temp 3-component vector of int)
+0:82 i: direct index for structure ( temp 4-component vector of int)
+0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:82 Constant:
+0:82 0 (const uint)
+0:82 direct index ( temp uint)
+0:82 'dti' ( in 3-component vector of uint)
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Sequence
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Constant:
+0:82 2 (const int)
+0:84 move second child to first child ( temp 4-component vector of float)
+0:84 f: direct index for structure ( temp 4-component vector of float)
+0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:84 Constant:
+0:84 0 (const uint)
+0:84 direct index ( temp uint)
+0:84 'dti' ( in 3-component vector of uint)
+0:84 Constant:
+0:84 0 (const int)
+0:84 Constant:
+0:84 2 (const int)
+0:84 subgroupMax ( temp 4-component vector of float)
+0:84 f: direct index for structure ( temp 4-component vector of float)
+0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:84 Constant:
+0:84 0 (const uint)
+0:84 direct index ( temp uint)
+0:84 'dti' ( in 3-component vector of uint)
+0:84 Constant:
+0:84 0 (const int)
+0:84 Constant:
+0:84 2 (const int)
+0:85 move second child to first child ( temp float)
+0:85 direct index ( temp float)
+0:85 f: direct index for structure ( temp 4-component vector of float)
+0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:85 Constant:
+0:85 0 (const uint)
+0:85 direct index ( temp uint)
+0:85 'dti' ( in 3-component vector of uint)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 2 (const int)
+0:85 Constant:
+0:85 0 (const int)
+0:85 subgroupMax ( temp float)
+0:85 direct index ( temp float)
+0:85 f: direct index for structure ( temp 4-component vector of float)
+0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:85 Constant:
+0:85 0 (const uint)
+0:85 direct index ( temp uint)
+0:85 'dti' ( in 3-component vector of uint)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 2 (const int)
+0:85 Constant:
+0:85 0 (const int)
+0:86 move second child to first child ( temp 2-component vector of float)
+0:86 vector swizzle ( temp 2-component vector of float)
+0:86 f: direct index for structure ( temp 4-component vector of float)
+0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:86 Constant:
+0:86 0 (const uint)
+0:86 direct index ( temp uint)
+0:86 'dti' ( in 3-component vector of uint)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:86 subgroupMax ( temp 2-component vector of float)
+0:86 vector swizzle ( temp 2-component vector of float)
+0:86 f: direct index for structure ( temp 4-component vector of float)
+0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:86 Constant:
+0:86 0 (const uint)
+0:86 direct index ( temp uint)
+0:86 'dti' ( in 3-component vector of uint)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:87 move second child to first child ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 f: direct index for structure ( temp 4-component vector of float)
+0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:87 Constant:
+0:87 0 (const uint)
+0:87 direct index ( temp uint)
+0:87 'dti' ( in 3-component vector of uint)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 subgroupMax ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 f: direct index for structure ( temp 4-component vector of float)
+0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:87 Constant:
+0:87 0 (const uint)
+0:87 direct index ( temp uint)
+0:87 'dti' ( in 3-component vector of uint)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:89 move second child to first child ( temp 4-component vector of double)
+0:89 d: direct index for structure ( temp 4-component vector of double)
+0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:89 Constant:
+0:89 0 (const uint)
+0:89 direct index ( temp uint)
+0:89 'dti' ( in 3-component vector of uint)
+0:89 Constant:
+0:89 0 (const int)
+0:89 Constant:
+0:89 3 (const int)
+0:89 subgroupMax ( temp 4-component vector of double)
+0:89 d: direct index for structure ( temp 4-component vector of double)
+0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:89 Constant:
+0:89 0 (const uint)
+0:89 direct index ( temp uint)
+0:89 'dti' ( in 3-component vector of uint)
+0:89 Constant:
+0:89 0 (const int)
+0:89 Constant:
+0:89 3 (const int)
+0:90 move second child to first child ( temp double)
+0:90 direct index ( temp double)
+0:90 d: direct index for structure ( temp 4-component vector of double)
+0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:90 Constant:
+0:90 0 (const uint)
+0:90 direct index ( temp uint)
+0:90 'dti' ( in 3-component vector of uint)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const int)
+0:90 Constant:
+0:90 0 (const int)
+0:90 subgroupMax ( temp double)
+0:90 direct index ( temp double)
+0:90 d: direct index for structure ( temp 4-component vector of double)
+0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:90 Constant:
+0:90 0 (const uint)
+0:90 direct index ( temp uint)
+0:90 'dti' ( in 3-component vector of uint)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const int)
+0:90 Constant:
+0:90 0 (const int)
+0:91 move second child to first child ( temp 2-component vector of double)
+0:91 vector swizzle ( temp 2-component vector of double)
+0:91 d: direct index for structure ( temp 4-component vector of double)
+0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:91 Constant:
+0:91 0 (const uint)
+0:91 direct index ( temp uint)
+0:91 'dti' ( in 3-component vector of uint)
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 3 (const int)
+0:91 Sequence
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 1 (const int)
+0:91 subgroupMax ( temp 2-component vector of double)
+0:91 vector swizzle ( temp 2-component vector of double)
+0:91 d: direct index for structure ( temp 4-component vector of double)
+0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:91 Constant:
+0:91 0 (const uint)
+0:91 direct index ( temp uint)
+0:91 'dti' ( in 3-component vector of uint)
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 3 (const int)
+0:91 Sequence
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 1 (const int)
+0:92 move second child to first child ( temp 3-component vector of double)
+0:92 vector swizzle ( temp 3-component vector of double)
+0:92 d: direct index for structure ( temp 4-component vector of double)
+0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:92 Constant:
+0:92 0 (const uint)
+0:92 direct index ( temp uint)
+0:92 'dti' ( in 3-component vector of uint)
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 3 (const int)
+0:92 Sequence
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 1 (const int)
+0:92 Constant:
+0:92 2 (const int)
+0:92 subgroupMax ( temp 3-component vector of double)
+0:92 vector swizzle ( temp 3-component vector of double)
+0:92 d: direct index for structure ( temp 4-component vector of double)
+0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:92 Constant:
+0:92 0 (const uint)
+0:92 direct index ( temp uint)
+0:92 'dti' ( in 3-component vector of uint)
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 3 (const int)
+0:92 Sequence
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 1 (const int)
+0:92 Constant:
+0:92 2 (const int)
+0:94 move second child to first child ( temp 4-component vector of uint)
+0:94 u: direct index for structure ( temp 4-component vector of uint)
+0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:94 Constant:
+0:94 0 (const uint)
+0:94 direct index ( temp uint)
+0:94 'dti' ( in 3-component vector of uint)
+0:94 Constant:
+0:94 0 (const int)
+0:94 Constant:
+0:94 0 (const int)
+0:94 subgroupAnd ( temp 4-component vector of uint)
+0:94 u: direct index for structure ( temp 4-component vector of uint)
+0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:94 Constant:
+0:94 0 (const uint)
+0:94 direct index ( temp uint)
+0:94 'dti' ( in 3-component vector of uint)
+0:94 Constant:
+0:94 0 (const int)
+0:94 Constant:
+0:94 0 (const int)
+0:95 move second child to first child ( temp uint)
+0:95 direct index ( temp uint)
+0:95 u: direct index for structure ( temp 4-component vector of uint)
+0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:95 Constant:
+0:95 0 (const uint)
+0:95 direct index ( temp uint)
+0:95 'dti' ( in 3-component vector of uint)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 subgroupAnd ( temp uint)
+0:95 direct index ( temp uint)
+0:95 u: direct index for structure ( temp 4-component vector of uint)
+0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:95 Constant:
+0:95 0 (const uint)
+0:95 direct index ( temp uint)
+0:95 'dti' ( in 3-component vector of uint)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:96 move second child to first child ( temp 2-component vector of uint)
+0:96 vector swizzle ( temp 2-component vector of uint)
+0:96 u: direct index for structure ( temp 4-component vector of uint)
+0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:96 Constant:
+0:96 0 (const uint)
+0:96 direct index ( temp uint)
+0:96 'dti' ( in 3-component vector of uint)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Sequence
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 1 (const int)
+0:96 subgroupAnd ( temp 2-component vector of uint)
+0:96 vector swizzle ( temp 2-component vector of uint)
+0:96 u: direct index for structure ( temp 4-component vector of uint)
+0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:96 Constant:
+0:96 0 (const uint)
+0:96 direct index ( temp uint)
+0:96 'dti' ( in 3-component vector of uint)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Sequence
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 1 (const int)
+0:97 move second child to first child ( temp 3-component vector of uint)
+0:97 vector swizzle ( temp 3-component vector of uint)
+0:97 u: direct index for structure ( temp 4-component vector of uint)
+0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:97 Constant:
+0:97 0 (const uint)
+0:97 direct index ( temp uint)
+0:97 'dti' ( in 3-component vector of uint)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Sequence
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 1 (const int)
+0:97 Constant:
+0:97 2 (const int)
+0:97 subgroupAnd ( temp 3-component vector of uint)
+0:97 vector swizzle ( temp 3-component vector of uint)
+0:97 u: direct index for structure ( temp 4-component vector of uint)
+0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:97 Constant:
+0:97 0 (const uint)
+0:97 direct index ( temp uint)
+0:97 'dti' ( in 3-component vector of uint)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Sequence
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 1 (const int)
+0:97 Constant:
+0:97 2 (const int)
+0:99 move second child to first child ( temp 4-component vector of int)
+0:99 i: direct index for structure ( temp 4-component vector of int)
+0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:99 Constant:
+0:99 0 (const uint)
+0:99 direct index ( temp uint)
+0:99 'dti' ( in 3-component vector of uint)
+0:99 Constant:
+0:99 0 (const int)
+0:99 Constant:
+0:99 1 (const int)
+0:99 subgroupAnd ( temp 4-component vector of int)
+0:99 i: direct index for structure ( temp 4-component vector of int)
+0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:99 Constant:
+0:99 0 (const uint)
+0:99 direct index ( temp uint)
+0:99 'dti' ( in 3-component vector of uint)
+0:99 Constant:
+0:99 0 (const int)
+0:99 Constant:
+0:99 1 (const int)
+0:100 move second child to first child ( temp int)
+0:100 direct index ( temp int)
+0:100 i: direct index for structure ( temp 4-component vector of int)
+0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:100 Constant:
+0:100 0 (const uint)
+0:100 direct index ( temp uint)
+0:100 'dti' ( in 3-component vector of uint)
+0:100 Constant:
+0:100 0 (const int)
+0:100 Constant:
+0:100 1 (const int)
+0:100 Constant:
+0:100 0 (const int)
+0:100 subgroupAnd ( temp int)
+0:100 direct index ( temp int)
+0:100 i: direct index for structure ( temp 4-component vector of int)
+0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:100 Constant:
+0:100 0 (const uint)
+0:100 direct index ( temp uint)
+0:100 'dti' ( in 3-component vector of uint)
+0:100 Constant:
+0:100 0 (const int)
+0:100 Constant:
+0:100 1 (const int)
+0:100 Constant:
+0:100 0 (const int)
+0:101 move second child to first child ( temp 2-component vector of int)
+0:101 vector swizzle ( temp 2-component vector of int)
+0:101 i: direct index for structure ( temp 4-component vector of int)
+0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:101 Constant:
+0:101 0 (const uint)
+0:101 direct index ( temp uint)
+0:101 'dti' ( in 3-component vector of uint)
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 Sequence
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 subgroupAnd ( temp 2-component vector of int)
+0:101 vector swizzle ( temp 2-component vector of int)
+0:101 i: direct index for structure ( temp 4-component vector of int)
+0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:101 Constant:
+0:101 0 (const uint)
+0:101 direct index ( temp uint)
+0:101 'dti' ( in 3-component vector of uint)
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 Sequence
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:102 move second child to first child ( temp 3-component vector of int)
+0:102 vector swizzle ( temp 3-component vector of int)
+0:102 i: direct index for structure ( temp 4-component vector of int)
+0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:102 Constant:
+0:102 0 (const uint)
+0:102 direct index ( temp uint)
+0:102 'dti' ( in 3-component vector of uint)
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Sequence
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Constant:
+0:102 2 (const int)
+0:102 subgroupAnd ( temp 3-component vector of int)
+0:102 vector swizzle ( temp 3-component vector of int)
+0:102 i: direct index for structure ( temp 4-component vector of int)
+0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:102 Constant:
+0:102 0 (const uint)
+0:102 direct index ( temp uint)
+0:102 'dti' ( in 3-component vector of uint)
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Sequence
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Constant:
+0:102 2 (const int)
+0:104 move second child to first child ( temp 4-component vector of uint)
+0:104 u: direct index for structure ( temp 4-component vector of uint)
+0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:104 Constant:
+0:104 0 (const uint)
+0:104 direct index ( temp uint)
+0:104 'dti' ( in 3-component vector of uint)
+0:104 Constant:
+0:104 0 (const int)
+0:104 Constant:
+0:104 0 (const int)
+0:104 subgroupOr ( temp 4-component vector of uint)
+0:104 u: direct index for structure ( temp 4-component vector of uint)
+0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:104 Constant:
+0:104 0 (const uint)
+0:104 direct index ( temp uint)
+0:104 'dti' ( in 3-component vector of uint)
+0:104 Constant:
+0:104 0 (const int)
+0:104 Constant:
+0:104 0 (const int)
+0:105 move second child to first child ( temp uint)
+0:105 direct index ( temp uint)
+0:105 u: direct index for structure ( temp 4-component vector of uint)
+0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:105 Constant:
+0:105 0 (const uint)
+0:105 direct index ( temp uint)
+0:105 'dti' ( in 3-component vector of uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:105 subgroupOr ( temp uint)
+0:105 direct index ( temp uint)
+0:105 u: direct index for structure ( temp 4-component vector of uint)
+0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:105 Constant:
+0:105 0 (const uint)
+0:105 direct index ( temp uint)
+0:105 'dti' ( in 3-component vector of uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:106 move second child to first child ( temp 2-component vector of uint)
+0:106 vector swizzle ( temp 2-component vector of uint)
+0:106 u: direct index for structure ( temp 4-component vector of uint)
+0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:106 Constant:
+0:106 0 (const uint)
+0:106 direct index ( temp uint)
+0:106 'dti' ( in 3-component vector of uint)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Sequence
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 1 (const int)
+0:106 subgroupOr ( temp 2-component vector of uint)
+0:106 vector swizzle ( temp 2-component vector of uint)
+0:106 u: direct index for structure ( temp 4-component vector of uint)
+0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:106 Constant:
+0:106 0 (const uint)
+0:106 direct index ( temp uint)
+0:106 'dti' ( in 3-component vector of uint)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Sequence
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 1 (const int)
+0:107 move second child to first child ( temp 3-component vector of uint)
+0:107 vector swizzle ( temp 3-component vector of uint)
+0:107 u: direct index for structure ( temp 4-component vector of uint)
+0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:107 Constant:
+0:107 0 (const uint)
+0:107 direct index ( temp uint)
+0:107 'dti' ( in 3-component vector of uint)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:107 subgroupOr ( temp 3-component vector of uint)
+0:107 vector swizzle ( temp 3-component vector of uint)
+0:107 u: direct index for structure ( temp 4-component vector of uint)
+0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:107 Constant:
+0:107 0 (const uint)
+0:107 direct index ( temp uint)
+0:107 'dti' ( in 3-component vector of uint)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:109 move second child to first child ( temp 4-component vector of int)
+0:109 i: direct index for structure ( temp 4-component vector of int)
+0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:109 Constant:
+0:109 0 (const uint)
+0:109 direct index ( temp uint)
+0:109 'dti' ( in 3-component vector of uint)
+0:109 Constant:
+0:109 0 (const int)
+0:109 Constant:
+0:109 1 (const int)
+0:109 subgroupOr ( temp 4-component vector of int)
+0:109 i: direct index for structure ( temp 4-component vector of int)
+0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:109 Constant:
+0:109 0 (const uint)
+0:109 direct index ( temp uint)
+0:109 'dti' ( in 3-component vector of uint)
+0:109 Constant:
+0:109 0 (const int)
+0:109 Constant:
+0:109 1 (const int)
+0:110 move second child to first child ( temp int)
+0:110 direct index ( temp int)
+0:110 i: direct index for structure ( temp 4-component vector of int)
+0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:110 Constant:
+0:110 0 (const uint)
+0:110 direct index ( temp uint)
+0:110 'dti' ( in 3-component vector of uint)
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 1 (const int)
+0:110 Constant:
+0:110 0 (const int)
+0:110 subgroupOr ( temp int)
+0:110 direct index ( temp int)
+0:110 i: direct index for structure ( temp 4-component vector of int)
+0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:110 Constant:
+0:110 0 (const uint)
+0:110 direct index ( temp uint)
+0:110 'dti' ( in 3-component vector of uint)
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 1 (const int)
+0:110 Constant:
+0:110 0 (const int)
+0:111 move second child to first child ( temp 2-component vector of int)
+0:111 vector swizzle ( temp 2-component vector of int)
+0:111 i: direct index for structure ( temp 4-component vector of int)
+0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:111 Constant:
+0:111 0 (const uint)
+0:111 direct index ( temp uint)
+0:111 'dti' ( in 3-component vector of uint)
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:111 Sequence
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:111 subgroupOr ( temp 2-component vector of int)
+0:111 vector swizzle ( temp 2-component vector of int)
+0:111 i: direct index for structure ( temp 4-component vector of int)
+0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:111 Constant:
+0:111 0 (const uint)
+0:111 direct index ( temp uint)
+0:111 'dti' ( in 3-component vector of uint)
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:111 Sequence
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:112 move second child to first child ( temp 3-component vector of int)
+0:112 vector swizzle ( temp 3-component vector of int)
+0:112 i: direct index for structure ( temp 4-component vector of int)
+0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:112 Constant:
+0:112 0 (const uint)
+0:112 direct index ( temp uint)
+0:112 'dti' ( in 3-component vector of uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:112 subgroupOr ( temp 3-component vector of int)
+0:112 vector swizzle ( temp 3-component vector of int)
+0:112 i: direct index for structure ( temp 4-component vector of int)
+0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:112 Constant:
+0:112 0 (const uint)
+0:112 direct index ( temp uint)
+0:112 'dti' ( in 3-component vector of uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:114 move second child to first child ( temp 4-component vector of uint)
+0:114 u: direct index for structure ( temp 4-component vector of uint)
+0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:114 Constant:
+0:114 0 (const uint)
+0:114 direct index ( temp uint)
+0:114 'dti' ( in 3-component vector of uint)
+0:114 Constant:
+0:114 0 (const int)
+0:114 Constant:
+0:114 0 (const int)
+0:114 subgroupXor ( temp 4-component vector of uint)
+0:114 u: direct index for structure ( temp 4-component vector of uint)
+0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:114 Constant:
+0:114 0 (const uint)
+0:114 direct index ( temp uint)
+0:114 'dti' ( in 3-component vector of uint)
+0:114 Constant:
+0:114 0 (const int)
+0:114 Constant:
+0:114 0 (const int)
+0:115 move second child to first child ( temp uint)
+0:115 direct index ( temp uint)
+0:115 u: direct index for structure ( temp 4-component vector of uint)
+0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:115 Constant:
+0:115 0 (const uint)
+0:115 direct index ( temp uint)
+0:115 'dti' ( in 3-component vector of uint)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 subgroupXor ( temp uint)
+0:115 direct index ( temp uint)
+0:115 u: direct index for structure ( temp 4-component vector of uint)
+0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:115 Constant:
+0:115 0 (const uint)
+0:115 direct index ( temp uint)
+0:115 'dti' ( in 3-component vector of uint)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:116 move second child to first child ( temp 2-component vector of uint)
+0:116 vector swizzle ( temp 2-component vector of uint)
+0:116 u: direct index for structure ( temp 4-component vector of uint)
+0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:116 Constant:
+0:116 0 (const uint)
+0:116 direct index ( temp uint)
+0:116 'dti' ( in 3-component vector of uint)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Sequence
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 1 (const int)
+0:116 subgroupXor ( temp 2-component vector of uint)
+0:116 vector swizzle ( temp 2-component vector of uint)
+0:116 u: direct index for structure ( temp 4-component vector of uint)
+0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:116 Constant:
+0:116 0 (const uint)
+0:116 direct index ( temp uint)
+0:116 'dti' ( in 3-component vector of uint)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Sequence
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 1 (const int)
+0:117 move second child to first child ( temp 3-component vector of uint)
+0:117 vector swizzle ( temp 3-component vector of uint)
+0:117 u: direct index for structure ( temp 4-component vector of uint)
+0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:117 Constant:
+0:117 0 (const uint)
+0:117 direct index ( temp uint)
+0:117 'dti' ( in 3-component vector of uint)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Sequence
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 1 (const int)
+0:117 Constant:
+0:117 2 (const int)
+0:117 subgroupXor ( temp 3-component vector of uint)
+0:117 vector swizzle ( temp 3-component vector of uint)
+0:117 u: direct index for structure ( temp 4-component vector of uint)
+0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:117 Constant:
+0:117 0 (const uint)
+0:117 direct index ( temp uint)
+0:117 'dti' ( in 3-component vector of uint)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Sequence
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 1 (const int)
+0:117 Constant:
+0:117 2 (const int)
+0:119 move second child to first child ( temp 4-component vector of int)
+0:119 i: direct index for structure ( temp 4-component vector of int)
+0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:119 Constant:
+0:119 0 (const uint)
+0:119 direct index ( temp uint)
+0:119 'dti' ( in 3-component vector of uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 1 (const int)
+0:119 subgroupXor ( temp 4-component vector of int)
+0:119 i: direct index for structure ( temp 4-component vector of int)
+0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:119 Constant:
+0:119 0 (const uint)
+0:119 direct index ( temp uint)
+0:119 'dti' ( in 3-component vector of uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 1 (const int)
+0:120 move second child to first child ( temp int)
+0:120 direct index ( temp int)
+0:120 i: direct index for structure ( temp 4-component vector of int)
+0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:120 Constant:
+0:120 0 (const uint)
+0:120 direct index ( temp uint)
+0:120 'dti' ( in 3-component vector of uint)
+0:120 Constant:
+0:120 0 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 0 (const int)
+0:120 subgroupXor ( temp int)
+0:120 direct index ( temp int)
+0:120 i: direct index for structure ( temp 4-component vector of int)
+0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:120 Constant:
+0:120 0 (const uint)
+0:120 direct index ( temp uint)
+0:120 'dti' ( in 3-component vector of uint)
+0:120 Constant:
+0:120 0 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 0 (const int)
+0:121 move second child to first child ( temp 2-component vector of int)
+0:121 vector swizzle ( temp 2-component vector of int)
+0:121 i: direct index for structure ( temp 4-component vector of int)
+0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:121 Constant:
+0:121 0 (const uint)
+0:121 direct index ( temp uint)
+0:121 'dti' ( in 3-component vector of uint)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 subgroupXor ( temp 2-component vector of int)
+0:121 vector swizzle ( temp 2-component vector of int)
+0:121 i: direct index for structure ( temp 4-component vector of int)
+0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:121 Constant:
+0:121 0 (const uint)
+0:121 direct index ( temp uint)
+0:121 'dti' ( in 3-component vector of uint)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:122 move second child to first child ( temp 3-component vector of int)
+0:122 vector swizzle ( temp 3-component vector of int)
+0:122 i: direct index for structure ( temp 4-component vector of int)
+0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:122 Constant:
+0:122 0 (const uint)
+0:122 direct index ( temp uint)
+0:122 'dti' ( in 3-component vector of uint)
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:122 subgroupXor ( temp 3-component vector of int)
+0:122 vector swizzle ( temp 3-component vector of int)
+0:122 i: direct index for structure ( temp 4-component vector of int)
+0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:122 Constant:
+0:122 0 (const uint)
+0:122 direct index ( temp uint)
+0:122 'dti' ( in 3-component vector of uint)
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:124 move second child to first child ( temp uint)
+0:124 direct index ( temp uint)
+0:124 u: direct index for structure ( temp 4-component vector of uint)
+0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:124 Constant:
+0:124 0 (const uint)
+0:124 direct index ( temp uint)
+0:124 'dti' ( in 3-component vector of uint)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const int)
+0:124 subgroupBallotBitCount ( temp uint)
+0:124 subgroupBallot ( temp 4-component vector of uint)
+0:124 Compare Equal ( temp bool)
+0:124 direct index ( temp uint)
+0:124 u: direct index for structure ( temp 4-component vector of uint)
+0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:124 Constant:
+0:124 0 (const uint)
+0:124 direct index ( temp uint)
+0:124 'dti' ( in 3-component vector of uint)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const uint)
+0:13 Function Definition: CSMain( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:13 Function Definition: @CSMain(vu3; ( temp void)
+0:13 Function Parameters:
+0:13 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:14 move second child to first child ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:14 subgroupAdd ( temp 4-component vector of uint)
+0:14 u: direct index for structure ( temp 4-component vector of uint)
+0:14 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:14 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:14 Constant:
+0:14 0 (const uint)
+0:14 direct index ( temp uint)
+0:14 'dti' ( in 3-component vector of uint)
+0:14 Constant:
+0:14 0 (const int)
+0:14 Constant:
+0:14 0 (const int)
+0:15 move second child to first child ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 subgroupAdd ( temp uint)
+0:15 direct index ( temp uint)
+0:15 u: direct index for structure ( temp 4-component vector of uint)
+0:15 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:15 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:15 Constant:
+0:15 0 (const uint)
+0:15 direct index ( temp uint)
+0:15 'dti' ( in 3-component vector of uint)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 subgroupAdd ( temp 2-component vector of uint)
+0:16 vector swizzle ( temp 2-component vector of uint)
+0:16 u: direct index for structure ( temp 4-component vector of uint)
+0:16 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:16 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:16 Constant:
+0:16 0 (const uint)
+0:16 direct index ( temp uint)
+0:16 'dti' ( in 3-component vector of uint)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 0 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:17 move second child to first child ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:17 subgroupAdd ( temp 3-component vector of uint)
+0:17 vector swizzle ( temp 3-component vector of uint)
+0:17 u: direct index for structure ( temp 4-component vector of uint)
+0:17 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:17 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 direct index ( temp uint)
+0:17 'dti' ( in 3-component vector of uint)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 0 (const int)
+0:17 Sequence
+0:17 Constant:
+0:17 0 (const int)
+0:17 Constant:
+0:17 1 (const int)
+0:17 Constant:
+0:17 2 (const int)
+0:19 move second child to first child ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:19 subgroupAdd ( temp 4-component vector of int)
+0:19 i: direct index for structure ( temp 4-component vector of int)
+0:19 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:19 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:19 Constant:
+0:19 0 (const uint)
+0:19 direct index ( temp uint)
+0:19 'dti' ( in 3-component vector of uint)
+0:19 Constant:
+0:19 0 (const int)
+0:19 Constant:
+0:19 1 (const int)
+0:20 move second child to first child ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:20 subgroupAdd ( temp int)
+0:20 direct index ( temp int)
+0:20 i: direct index for structure ( temp 4-component vector of int)
+0:20 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:20 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:20 Constant:
+0:20 0 (const uint)
+0:20 direct index ( temp uint)
+0:20 'dti' ( in 3-component vector of uint)
+0:20 Constant:
+0:20 0 (const int)
+0:20 Constant:
+0:20 1 (const int)
+0:20 Constant:
+0:20 0 (const int)
+0:21 move second child to first child ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 subgroupAdd ( temp 2-component vector of int)
+0:21 vector swizzle ( temp 2-component vector of int)
+0:21 i: direct index for structure ( temp 4-component vector of int)
+0:21 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:21 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:21 Constant:
+0:21 0 (const uint)
+0:21 direct index ( temp uint)
+0:21 'dti' ( in 3-component vector of uint)
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:21 Sequence
+0:21 Constant:
+0:21 0 (const int)
+0:21 Constant:
+0:21 1 (const int)
+0:22 move second child to first child ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:22 subgroupAdd ( temp 3-component vector of int)
+0:22 vector swizzle ( temp 3-component vector of int)
+0:22 i: direct index for structure ( temp 4-component vector of int)
+0:22 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:22 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:22 Constant:
+0:22 0 (const uint)
+0:22 direct index ( temp uint)
+0:22 'dti' ( in 3-component vector of uint)
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Sequence
+0:22 Constant:
+0:22 0 (const int)
+0:22 Constant:
+0:22 1 (const int)
+0:22 Constant:
+0:22 2 (const int)
+0:24 move second child to first child ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:24 subgroupAdd ( temp 4-component vector of float)
+0:24 f: direct index for structure ( temp 4-component vector of float)
+0:24 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:24 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:24 Constant:
+0:24 0 (const uint)
+0:24 direct index ( temp uint)
+0:24 'dti' ( in 3-component vector of uint)
+0:24 Constant:
+0:24 0 (const int)
+0:24 Constant:
+0:24 2 (const int)
+0:25 move second child to first child ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:25 subgroupAdd ( temp float)
+0:25 direct index ( temp float)
+0:25 f: direct index for structure ( temp 4-component vector of float)
+0:25 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:25 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:25 Constant:
+0:25 0 (const uint)
+0:25 direct index ( temp uint)
+0:25 'dti' ( in 3-component vector of uint)
+0:25 Constant:
+0:25 0 (const int)
+0:25 Constant:
+0:25 2 (const int)
+0:25 Constant:
+0:25 0 (const int)
+0:26 move second child to first child ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:26 subgroupAdd ( temp 2-component vector of float)
+0:26 vector swizzle ( temp 2-component vector of float)
+0:26 f: direct index for structure ( temp 4-component vector of float)
+0:26 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:26 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:26 Constant:
+0:26 0 (const uint)
+0:26 direct index ( temp uint)
+0:26 'dti' ( in 3-component vector of uint)
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 2 (const int)
+0:26 Sequence
+0:26 Constant:
+0:26 0 (const int)
+0:26 Constant:
+0:26 1 (const int)
+0:27 move second child to first child ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 subgroupAdd ( temp 3-component vector of float)
+0:27 vector swizzle ( temp 3-component vector of float)
+0:27 f: direct index for structure ( temp 4-component vector of float)
+0:27 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:27 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 direct index ( temp uint)
+0:27 'dti' ( in 3-component vector of uint)
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:27 Sequence
+0:27 Constant:
+0:27 0 (const int)
+0:27 Constant:
+0:27 1 (const int)
+0:27 Constant:
+0:27 2 (const int)
+0:29 move second child to first child ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:29 subgroupAdd ( temp 4-component vector of double)
+0:29 d: direct index for structure ( temp 4-component vector of double)
+0:29 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:29 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:29 Constant:
+0:29 0 (const uint)
+0:29 direct index ( temp uint)
+0:29 'dti' ( in 3-component vector of uint)
+0:29 Constant:
+0:29 0 (const int)
+0:29 Constant:
+0:29 3 (const int)
+0:30 move second child to first child ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:30 subgroupAdd ( temp double)
+0:30 direct index ( temp double)
+0:30 d: direct index for structure ( temp 4-component vector of double)
+0:30 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:30 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:30 Constant:
+0:30 0 (const uint)
+0:30 direct index ( temp uint)
+0:30 'dti' ( in 3-component vector of uint)
+0:30 Constant:
+0:30 0 (const int)
+0:30 Constant:
+0:30 3 (const int)
+0:30 Constant:
+0:30 0 (const int)
+0:31 move second child to first child ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:31 subgroupAdd ( temp 2-component vector of double)
+0:31 vector swizzle ( temp 2-component vector of double)
+0:31 d: direct index for structure ( temp 4-component vector of double)
+0:31 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:31 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:31 Constant:
+0:31 0 (const uint)
+0:31 direct index ( temp uint)
+0:31 'dti' ( in 3-component vector of uint)
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 3 (const int)
+0:31 Sequence
+0:31 Constant:
+0:31 0 (const int)
+0:31 Constant:
+0:31 1 (const int)
+0:32 move second child to first child ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:32 subgroupAdd ( temp 3-component vector of double)
+0:32 vector swizzle ( temp 3-component vector of double)
+0:32 d: direct index for structure ( temp 4-component vector of double)
+0:32 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:32 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:32 Constant:
+0:32 0 (const uint)
+0:32 direct index ( temp uint)
+0:32 'dti' ( in 3-component vector of uint)
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 3 (const int)
+0:32 Sequence
+0:32 Constant:
+0:32 0 (const int)
+0:32 Constant:
+0:32 1 (const int)
+0:32 Constant:
+0:32 2 (const int)
+0:34 move second child to first child ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:34 subgroupMul ( temp 4-component vector of uint)
+0:34 u: direct index for structure ( temp 4-component vector of uint)
+0:34 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:34 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:34 Constant:
+0:34 0 (const uint)
+0:34 direct index ( temp uint)
+0:34 'dti' ( in 3-component vector of uint)
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 0 (const int)
+0:35 move second child to first child ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 subgroupMul ( temp uint)
+0:35 direct index ( temp uint)
+0:35 u: direct index for structure ( temp 4-component vector of uint)
+0:35 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:35 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:35 Constant:
+0:35 0 (const uint)
+0:35 direct index ( temp uint)
+0:35 'dti' ( in 3-component vector of uint)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:35 Constant:
+0:35 0 (const int)
+0:36 move second child to first child ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:36 subgroupMul ( temp 2-component vector of uint)
+0:36 vector swizzle ( temp 2-component vector of uint)
+0:36 u: direct index for structure ( temp 4-component vector of uint)
+0:36 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:36 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:36 Constant:
+0:36 0 (const uint)
+0:36 direct index ( temp uint)
+0:36 'dti' ( in 3-component vector of uint)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 0 (const int)
+0:36 Sequence
+0:36 Constant:
+0:36 0 (const int)
+0:36 Constant:
+0:36 1 (const int)
+0:37 move second child to first child ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:37 subgroupMul ( temp 3-component vector of uint)
+0:37 vector swizzle ( temp 3-component vector of uint)
+0:37 u: direct index for structure ( temp 4-component vector of uint)
+0:37 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:37 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:37 Constant:
+0:37 0 (const uint)
+0:37 direct index ( temp uint)
+0:37 'dti' ( in 3-component vector of uint)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 0 (const int)
+0:37 Sequence
+0:37 Constant:
+0:37 0 (const int)
+0:37 Constant:
+0:37 1 (const int)
+0:37 Constant:
+0:37 2 (const int)
+0:39 move second child to first child ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:39 subgroupMul ( temp 4-component vector of int)
+0:39 i: direct index for structure ( temp 4-component vector of int)
+0:39 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:39 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:39 Constant:
+0:39 0 (const uint)
+0:39 direct index ( temp uint)
+0:39 'dti' ( in 3-component vector of uint)
+0:39 Constant:
+0:39 0 (const int)
+0:39 Constant:
+0:39 1 (const int)
+0:40 move second child to first child ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:40 subgroupMul ( temp int)
+0:40 direct index ( temp int)
+0:40 i: direct index for structure ( temp 4-component vector of int)
+0:40 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:40 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:40 Constant:
+0:40 0 (const uint)
+0:40 direct index ( temp uint)
+0:40 'dti' ( in 3-component vector of uint)
+0:40 Constant:
+0:40 0 (const int)
+0:40 Constant:
+0:40 1 (const int)
+0:40 Constant:
+0:40 0 (const int)
+0:41 move second child to first child ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 subgroupMul ( temp 2-component vector of int)
+0:41 vector swizzle ( temp 2-component vector of int)
+0:41 i: direct index for structure ( temp 4-component vector of int)
+0:41 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:41 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:41 Constant:
+0:41 0 (const uint)
+0:41 direct index ( temp uint)
+0:41 'dti' ( in 3-component vector of uint)
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:41 Sequence
+0:41 Constant:
+0:41 0 (const int)
+0:41 Constant:
+0:41 1 (const int)
+0:42 move second child to first child ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:42 subgroupMul ( temp 3-component vector of int)
+0:42 vector swizzle ( temp 3-component vector of int)
+0:42 i: direct index for structure ( temp 4-component vector of int)
+0:42 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:42 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:42 Constant:
+0:42 0 (const uint)
+0:42 direct index ( temp uint)
+0:42 'dti' ( in 3-component vector of uint)
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Sequence
+0:42 Constant:
+0:42 0 (const int)
+0:42 Constant:
+0:42 1 (const int)
+0:42 Constant:
+0:42 2 (const int)
+0:44 move second child to first child ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:44 subgroupMul ( temp 4-component vector of float)
+0:44 f: direct index for structure ( temp 4-component vector of float)
+0:44 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:44 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:44 Constant:
+0:44 0 (const uint)
+0:44 direct index ( temp uint)
+0:44 'dti' ( in 3-component vector of uint)
+0:44 Constant:
+0:44 0 (const int)
+0:44 Constant:
+0:44 2 (const int)
+0:45 move second child to first child ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:45 subgroupMul ( temp float)
+0:45 direct index ( temp float)
+0:45 f: direct index for structure ( temp 4-component vector of float)
+0:45 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:45 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:45 Constant:
+0:45 0 (const uint)
+0:45 direct index ( temp uint)
+0:45 'dti' ( in 3-component vector of uint)
+0:45 Constant:
+0:45 0 (const int)
+0:45 Constant:
+0:45 2 (const int)
+0:45 Constant:
+0:45 0 (const int)
+0:46 move second child to first child ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:46 subgroupMul ( temp 2-component vector of float)
+0:46 vector swizzle ( temp 2-component vector of float)
+0:46 f: direct index for structure ( temp 4-component vector of float)
+0:46 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:46 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:46 Constant:
+0:46 0 (const uint)
+0:46 direct index ( temp uint)
+0:46 'dti' ( in 3-component vector of uint)
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 2 (const int)
+0:46 Sequence
+0:46 Constant:
+0:46 0 (const int)
+0:46 Constant:
+0:46 1 (const int)
+0:47 move second child to first child ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 subgroupMul ( temp 3-component vector of float)
+0:47 vector swizzle ( temp 3-component vector of float)
+0:47 f: direct index for structure ( temp 4-component vector of float)
+0:47 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:47 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:47 Constant:
+0:47 0 (const uint)
+0:47 direct index ( temp uint)
+0:47 'dti' ( in 3-component vector of uint)
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:47 Sequence
+0:47 Constant:
+0:47 0 (const int)
+0:47 Constant:
+0:47 1 (const int)
+0:47 Constant:
+0:47 2 (const int)
+0:49 move second child to first child ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:49 subgroupMul ( temp 4-component vector of double)
+0:49 d: direct index for structure ( temp 4-component vector of double)
+0:49 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:49 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:49 Constant:
+0:49 0 (const uint)
+0:49 direct index ( temp uint)
+0:49 'dti' ( in 3-component vector of uint)
+0:49 Constant:
+0:49 0 (const int)
+0:49 Constant:
+0:49 3 (const int)
+0:50 move second child to first child ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:50 subgroupMul ( temp double)
+0:50 direct index ( temp double)
+0:50 d: direct index for structure ( temp 4-component vector of double)
+0:50 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:50 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:50 Constant:
+0:50 0 (const uint)
+0:50 direct index ( temp uint)
+0:50 'dti' ( in 3-component vector of uint)
+0:50 Constant:
+0:50 0 (const int)
+0:50 Constant:
+0:50 3 (const int)
+0:50 Constant:
+0:50 0 (const int)
+0:51 move second child to first child ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:51 subgroupMul ( temp 2-component vector of double)
+0:51 vector swizzle ( temp 2-component vector of double)
+0:51 d: direct index for structure ( temp 4-component vector of double)
+0:51 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:51 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:51 Constant:
+0:51 0 (const uint)
+0:51 direct index ( temp uint)
+0:51 'dti' ( in 3-component vector of uint)
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 3 (const int)
+0:51 Sequence
+0:51 Constant:
+0:51 0 (const int)
+0:51 Constant:
+0:51 1 (const int)
+0:52 move second child to first child ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:52 subgroupMul ( temp 3-component vector of double)
+0:52 vector swizzle ( temp 3-component vector of double)
+0:52 d: direct index for structure ( temp 4-component vector of double)
+0:52 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:52 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:52 Constant:
+0:52 0 (const uint)
+0:52 direct index ( temp uint)
+0:52 'dti' ( in 3-component vector of uint)
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 3 (const int)
+0:52 Sequence
+0:52 Constant:
+0:52 0 (const int)
+0:52 Constant:
+0:52 1 (const int)
+0:52 Constant:
+0:52 2 (const int)
+0:54 move second child to first child ( temp 4-component vector of uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:54 subgroupMin ( temp 4-component vector of uint)
+0:54 u: direct index for structure ( temp 4-component vector of uint)
+0:54 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:54 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:54 Constant:
+0:54 0 (const uint)
+0:54 direct index ( temp uint)
+0:54 'dti' ( in 3-component vector of uint)
+0:54 Constant:
+0:54 0 (const int)
+0:54 Constant:
+0:54 0 (const int)
+0:55 move second child to first child ( temp uint)
+0:55 direct index ( temp uint)
+0:55 u: direct index for structure ( temp 4-component vector of uint)
+0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:55 Constant:
+0:55 0 (const uint)
+0:55 direct index ( temp uint)
+0:55 'dti' ( in 3-component vector of uint)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 subgroupMin ( temp uint)
+0:55 direct index ( temp uint)
+0:55 u: direct index for structure ( temp 4-component vector of uint)
+0:55 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:55 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:55 Constant:
+0:55 0 (const uint)
+0:55 direct index ( temp uint)
+0:55 'dti' ( in 3-component vector of uint)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:55 Constant:
+0:55 0 (const int)
+0:56 move second child to first child ( temp 2-component vector of uint)
+0:56 vector swizzle ( temp 2-component vector of uint)
+0:56 u: direct index for structure ( temp 4-component vector of uint)
+0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 direct index ( temp uint)
+0:56 'dti' ( in 3-component vector of uint)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Sequence
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 1 (const int)
+0:56 subgroupMin ( temp 2-component vector of uint)
+0:56 vector swizzle ( temp 2-component vector of uint)
+0:56 u: direct index for structure ( temp 4-component vector of uint)
+0:56 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:56 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:56 Constant:
+0:56 0 (const uint)
+0:56 direct index ( temp uint)
+0:56 'dti' ( in 3-component vector of uint)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 0 (const int)
+0:56 Sequence
+0:56 Constant:
+0:56 0 (const int)
+0:56 Constant:
+0:56 1 (const int)
+0:57 move second child to first child ( temp 3-component vector of uint)
+0:57 vector swizzle ( temp 3-component vector of uint)
+0:57 u: direct index for structure ( temp 4-component vector of uint)
+0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:57 Constant:
+0:57 0 (const uint)
+0:57 direct index ( temp uint)
+0:57 'dti' ( in 3-component vector of uint)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Sequence
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 Constant:
+0:57 2 (const int)
+0:57 subgroupMin ( temp 3-component vector of uint)
+0:57 vector swizzle ( temp 3-component vector of uint)
+0:57 u: direct index for structure ( temp 4-component vector of uint)
+0:57 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:57 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:57 Constant:
+0:57 0 (const uint)
+0:57 direct index ( temp uint)
+0:57 'dti' ( in 3-component vector of uint)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 0 (const int)
+0:57 Sequence
+0:57 Constant:
+0:57 0 (const int)
+0:57 Constant:
+0:57 1 (const int)
+0:57 Constant:
+0:57 2 (const int)
+0:59 move second child to first child ( temp 4-component vector of int)
+0:59 i: direct index for structure ( temp 4-component vector of int)
+0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:59 Constant:
+0:59 0 (const uint)
+0:59 direct index ( temp uint)
+0:59 'dti' ( in 3-component vector of uint)
+0:59 Constant:
+0:59 0 (const int)
+0:59 Constant:
+0:59 1 (const int)
+0:59 subgroupMin ( temp 4-component vector of int)
+0:59 i: direct index for structure ( temp 4-component vector of int)
+0:59 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:59 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:59 Constant:
+0:59 0 (const uint)
+0:59 direct index ( temp uint)
+0:59 'dti' ( in 3-component vector of uint)
+0:59 Constant:
+0:59 0 (const int)
+0:59 Constant:
+0:59 1 (const int)
+0:60 move second child to first child ( temp int)
+0:60 direct index ( temp int)
+0:60 i: direct index for structure ( temp 4-component vector of int)
+0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:60 Constant:
+0:60 0 (const uint)
+0:60 direct index ( temp uint)
+0:60 'dti' ( in 3-component vector of uint)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 1 (const int)
+0:60 Constant:
+0:60 0 (const int)
+0:60 subgroupMin ( temp int)
+0:60 direct index ( temp int)
+0:60 i: direct index for structure ( temp 4-component vector of int)
+0:60 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:60 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:60 Constant:
+0:60 0 (const uint)
+0:60 direct index ( temp uint)
+0:60 'dti' ( in 3-component vector of uint)
+0:60 Constant:
+0:60 0 (const int)
+0:60 Constant:
+0:60 1 (const int)
+0:60 Constant:
+0:60 0 (const int)
+0:61 move second child to first child ( temp 2-component vector of int)
+0:61 vector swizzle ( temp 2-component vector of int)
+0:61 i: direct index for structure ( temp 4-component vector of int)
+0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:61 Constant:
+0:61 0 (const uint)
+0:61 direct index ( temp uint)
+0:61 'dti' ( in 3-component vector of uint)
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Sequence
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 subgroupMin ( temp 2-component vector of int)
+0:61 vector swizzle ( temp 2-component vector of int)
+0:61 i: direct index for structure ( temp 4-component vector of int)
+0:61 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:61 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:61 Constant:
+0:61 0 (const uint)
+0:61 direct index ( temp uint)
+0:61 'dti' ( in 3-component vector of uint)
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:61 Sequence
+0:61 Constant:
+0:61 0 (const int)
+0:61 Constant:
+0:61 1 (const int)
+0:62 move second child to first child ( temp 3-component vector of int)
+0:62 vector swizzle ( temp 3-component vector of int)
+0:62 i: direct index for structure ( temp 4-component vector of int)
+0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:62 Constant:
+0:62 0 (const uint)
+0:62 direct index ( temp uint)
+0:62 'dti' ( in 3-component vector of uint)
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Sequence
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Constant:
+0:62 2 (const int)
+0:62 subgroupMin ( temp 3-component vector of int)
+0:62 vector swizzle ( temp 3-component vector of int)
+0:62 i: direct index for structure ( temp 4-component vector of int)
+0:62 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:62 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:62 Constant:
+0:62 0 (const uint)
+0:62 direct index ( temp uint)
+0:62 'dti' ( in 3-component vector of uint)
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Sequence
+0:62 Constant:
+0:62 0 (const int)
+0:62 Constant:
+0:62 1 (const int)
+0:62 Constant:
+0:62 2 (const int)
+0:64 move second child to first child ( temp 4-component vector of float)
+0:64 f: direct index for structure ( temp 4-component vector of float)
+0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:64 Constant:
+0:64 0 (const uint)
+0:64 direct index ( temp uint)
+0:64 'dti' ( in 3-component vector of uint)
+0:64 Constant:
+0:64 0 (const int)
+0:64 Constant:
+0:64 2 (const int)
+0:64 subgroupMin ( temp 4-component vector of float)
+0:64 f: direct index for structure ( temp 4-component vector of float)
+0:64 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:64 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:64 Constant:
+0:64 0 (const uint)
+0:64 direct index ( temp uint)
+0:64 'dti' ( in 3-component vector of uint)
+0:64 Constant:
+0:64 0 (const int)
+0:64 Constant:
+0:64 2 (const int)
+0:65 move second child to first child ( temp float)
+0:65 direct index ( temp float)
+0:65 f: direct index for structure ( temp 4-component vector of float)
+0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:65 Constant:
+0:65 0 (const uint)
+0:65 direct index ( temp uint)
+0:65 'dti' ( in 3-component vector of uint)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const int)
+0:65 Constant:
+0:65 0 (const int)
+0:65 subgroupMin ( temp float)
+0:65 direct index ( temp float)
+0:65 f: direct index for structure ( temp 4-component vector of float)
+0:65 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:65 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:65 Constant:
+0:65 0 (const uint)
+0:65 direct index ( temp uint)
+0:65 'dti' ( in 3-component vector of uint)
+0:65 Constant:
+0:65 0 (const int)
+0:65 Constant:
+0:65 2 (const int)
+0:65 Constant:
+0:65 0 (const int)
+0:66 move second child to first child ( temp 2-component vector of float)
+0:66 vector swizzle ( temp 2-component vector of float)
+0:66 f: direct index for structure ( temp 4-component vector of float)
+0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:66 Constant:
+0:66 0 (const uint)
+0:66 direct index ( temp uint)
+0:66 'dti' ( in 3-component vector of uint)
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 2 (const int)
+0:66 Sequence
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 1 (const int)
+0:66 subgroupMin ( temp 2-component vector of float)
+0:66 vector swizzle ( temp 2-component vector of float)
+0:66 f: direct index for structure ( temp 4-component vector of float)
+0:66 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:66 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:66 Constant:
+0:66 0 (const uint)
+0:66 direct index ( temp uint)
+0:66 'dti' ( in 3-component vector of uint)
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 2 (const int)
+0:66 Sequence
+0:66 Constant:
+0:66 0 (const int)
+0:66 Constant:
+0:66 1 (const int)
+0:67 move second child to first child ( temp 3-component vector of float)
+0:67 vector swizzle ( temp 3-component vector of float)
+0:67 f: direct index for structure ( temp 4-component vector of float)
+0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:67 Constant:
+0:67 0 (const uint)
+0:67 direct index ( temp uint)
+0:67 'dti' ( in 3-component vector of uint)
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Sequence
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 1 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 subgroupMin ( temp 3-component vector of float)
+0:67 vector swizzle ( temp 3-component vector of float)
+0:67 f: direct index for structure ( temp 4-component vector of float)
+0:67 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:67 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:67 Constant:
+0:67 0 (const uint)
+0:67 direct index ( temp uint)
+0:67 'dti' ( in 3-component vector of uint)
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:67 Sequence
+0:67 Constant:
+0:67 0 (const int)
+0:67 Constant:
+0:67 1 (const int)
+0:67 Constant:
+0:67 2 (const int)
+0:69 move second child to first child ( temp 4-component vector of double)
+0:69 d: direct index for structure ( temp 4-component vector of double)
+0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:69 Constant:
+0:69 0 (const uint)
+0:69 direct index ( temp uint)
+0:69 'dti' ( in 3-component vector of uint)
+0:69 Constant:
+0:69 0 (const int)
+0:69 Constant:
+0:69 3 (const int)
+0:69 subgroupMin ( temp 4-component vector of double)
+0:69 d: direct index for structure ( temp 4-component vector of double)
+0:69 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:69 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:69 Constant:
+0:69 0 (const uint)
+0:69 direct index ( temp uint)
+0:69 'dti' ( in 3-component vector of uint)
+0:69 Constant:
+0:69 0 (const int)
+0:69 Constant:
+0:69 3 (const int)
+0:70 move second child to first child ( temp double)
+0:70 direct index ( temp double)
+0:70 d: direct index for structure ( temp 4-component vector of double)
+0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:70 Constant:
+0:70 0 (const uint)
+0:70 direct index ( temp uint)
+0:70 'dti' ( in 3-component vector of uint)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 3 (const int)
+0:70 Constant:
+0:70 0 (const int)
+0:70 subgroupMin ( temp double)
+0:70 direct index ( temp double)
+0:70 d: direct index for structure ( temp 4-component vector of double)
+0:70 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:70 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:70 Constant:
+0:70 0 (const uint)
+0:70 direct index ( temp uint)
+0:70 'dti' ( in 3-component vector of uint)
+0:70 Constant:
+0:70 0 (const int)
+0:70 Constant:
+0:70 3 (const int)
+0:70 Constant:
+0:70 0 (const int)
+0:71 move second child to first child ( temp 2-component vector of double)
+0:71 vector swizzle ( temp 2-component vector of double)
+0:71 d: direct index for structure ( temp 4-component vector of double)
+0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:71 Constant:
+0:71 0 (const uint)
+0:71 direct index ( temp uint)
+0:71 'dti' ( in 3-component vector of uint)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 3 (const int)
+0:71 Sequence
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 1 (const int)
+0:71 subgroupMin ( temp 2-component vector of double)
+0:71 vector swizzle ( temp 2-component vector of double)
+0:71 d: direct index for structure ( temp 4-component vector of double)
+0:71 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:71 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:71 Constant:
+0:71 0 (const uint)
+0:71 direct index ( temp uint)
+0:71 'dti' ( in 3-component vector of uint)
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 3 (const int)
+0:71 Sequence
+0:71 Constant:
+0:71 0 (const int)
+0:71 Constant:
+0:71 1 (const int)
+0:72 move second child to first child ( temp 3-component vector of double)
+0:72 vector swizzle ( temp 3-component vector of double)
+0:72 d: direct index for structure ( temp 4-component vector of double)
+0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:72 Constant:
+0:72 0 (const uint)
+0:72 direct index ( temp uint)
+0:72 'dti' ( in 3-component vector of uint)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 3 (const int)
+0:72 Sequence
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 1 (const int)
+0:72 Constant:
+0:72 2 (const int)
+0:72 subgroupMin ( temp 3-component vector of double)
+0:72 vector swizzle ( temp 3-component vector of double)
+0:72 d: direct index for structure ( temp 4-component vector of double)
+0:72 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:72 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:72 Constant:
+0:72 0 (const uint)
+0:72 direct index ( temp uint)
+0:72 'dti' ( in 3-component vector of uint)
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 3 (const int)
+0:72 Sequence
+0:72 Constant:
+0:72 0 (const int)
+0:72 Constant:
+0:72 1 (const int)
+0:72 Constant:
+0:72 2 (const int)
+0:74 move second child to first child ( temp 4-component vector of uint)
+0:74 u: direct index for structure ( temp 4-component vector of uint)
+0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:74 Constant:
+0:74 0 (const uint)
+0:74 direct index ( temp uint)
+0:74 'dti' ( in 3-component vector of uint)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 0 (const int)
+0:74 subgroupMax ( temp 4-component vector of uint)
+0:74 u: direct index for structure ( temp 4-component vector of uint)
+0:74 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:74 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:74 Constant:
+0:74 0 (const uint)
+0:74 direct index ( temp uint)
+0:74 'dti' ( in 3-component vector of uint)
+0:74 Constant:
+0:74 0 (const int)
+0:74 Constant:
+0:74 0 (const int)
+0:75 move second child to first child ( temp uint)
+0:75 direct index ( temp uint)
+0:75 u: direct index for structure ( temp 4-component vector of uint)
+0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:75 Constant:
+0:75 0 (const uint)
+0:75 direct index ( temp uint)
+0:75 'dti' ( in 3-component vector of uint)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 subgroupMax ( temp uint)
+0:75 direct index ( temp uint)
+0:75 u: direct index for structure ( temp 4-component vector of uint)
+0:75 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:75 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:75 Constant:
+0:75 0 (const uint)
+0:75 direct index ( temp uint)
+0:75 'dti' ( in 3-component vector of uint)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:75 Constant:
+0:75 0 (const int)
+0:76 move second child to first child ( temp 2-component vector of uint)
+0:76 vector swizzle ( temp 2-component vector of uint)
+0:76 u: direct index for structure ( temp 4-component vector of uint)
+0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:76 Constant:
+0:76 0 (const uint)
+0:76 direct index ( temp uint)
+0:76 'dti' ( in 3-component vector of uint)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Sequence
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 1 (const int)
+0:76 subgroupMax ( temp 2-component vector of uint)
+0:76 vector swizzle ( temp 2-component vector of uint)
+0:76 u: direct index for structure ( temp 4-component vector of uint)
+0:76 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:76 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:76 Constant:
+0:76 0 (const uint)
+0:76 direct index ( temp uint)
+0:76 'dti' ( in 3-component vector of uint)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 0 (const int)
+0:76 Sequence
+0:76 Constant:
+0:76 0 (const int)
+0:76 Constant:
+0:76 1 (const int)
+0:77 move second child to first child ( temp 3-component vector of uint)
+0:77 vector swizzle ( temp 3-component vector of uint)
+0:77 u: direct index for structure ( temp 4-component vector of uint)
+0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:77 Constant:
+0:77 0 (const uint)
+0:77 direct index ( temp uint)
+0:77 'dti' ( in 3-component vector of uint)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Sequence
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 1 (const int)
+0:77 Constant:
+0:77 2 (const int)
+0:77 subgroupMax ( temp 3-component vector of uint)
+0:77 vector swizzle ( temp 3-component vector of uint)
+0:77 u: direct index for structure ( temp 4-component vector of uint)
+0:77 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:77 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:77 Constant:
+0:77 0 (const uint)
+0:77 direct index ( temp uint)
+0:77 'dti' ( in 3-component vector of uint)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 0 (const int)
+0:77 Sequence
+0:77 Constant:
+0:77 0 (const int)
+0:77 Constant:
+0:77 1 (const int)
+0:77 Constant:
+0:77 2 (const int)
+0:79 move second child to first child ( temp 4-component vector of int)
+0:79 i: direct index for structure ( temp 4-component vector of int)
+0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:79 Constant:
+0:79 0 (const uint)
+0:79 direct index ( temp uint)
+0:79 'dti' ( in 3-component vector of uint)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 1 (const int)
+0:79 subgroupMax ( temp 4-component vector of int)
+0:79 i: direct index for structure ( temp 4-component vector of int)
+0:79 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:79 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:79 Constant:
+0:79 0 (const uint)
+0:79 direct index ( temp uint)
+0:79 'dti' ( in 3-component vector of uint)
+0:79 Constant:
+0:79 0 (const int)
+0:79 Constant:
+0:79 1 (const int)
+0:80 move second child to first child ( temp int)
+0:80 direct index ( temp int)
+0:80 i: direct index for structure ( temp 4-component vector of int)
+0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:80 Constant:
+0:80 0 (const uint)
+0:80 direct index ( temp uint)
+0:80 'dti' ( in 3-component vector of uint)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 1 (const int)
+0:80 Constant:
+0:80 0 (const int)
+0:80 subgroupMax ( temp int)
+0:80 direct index ( temp int)
+0:80 i: direct index for structure ( temp 4-component vector of int)
+0:80 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:80 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:80 Constant:
+0:80 0 (const uint)
+0:80 direct index ( temp uint)
+0:80 'dti' ( in 3-component vector of uint)
+0:80 Constant:
+0:80 0 (const int)
+0:80 Constant:
+0:80 1 (const int)
+0:80 Constant:
+0:80 0 (const int)
+0:81 move second child to first child ( temp 2-component vector of int)
+0:81 vector swizzle ( temp 2-component vector of int)
+0:81 i: direct index for structure ( temp 4-component vector of int)
+0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:81 Constant:
+0:81 0 (const uint)
+0:81 direct index ( temp uint)
+0:81 'dti' ( in 3-component vector of uint)
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Sequence
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 subgroupMax ( temp 2-component vector of int)
+0:81 vector swizzle ( temp 2-component vector of int)
+0:81 i: direct index for structure ( temp 4-component vector of int)
+0:81 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:81 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:81 Constant:
+0:81 0 (const uint)
+0:81 direct index ( temp uint)
+0:81 'dti' ( in 3-component vector of uint)
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:81 Sequence
+0:81 Constant:
+0:81 0 (const int)
+0:81 Constant:
+0:81 1 (const int)
+0:82 move second child to first child ( temp 3-component vector of int)
+0:82 vector swizzle ( temp 3-component vector of int)
+0:82 i: direct index for structure ( temp 4-component vector of int)
+0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:82 Constant:
+0:82 0 (const uint)
+0:82 direct index ( temp uint)
+0:82 'dti' ( in 3-component vector of uint)
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Sequence
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Constant:
+0:82 2 (const int)
+0:82 subgroupMax ( temp 3-component vector of int)
+0:82 vector swizzle ( temp 3-component vector of int)
+0:82 i: direct index for structure ( temp 4-component vector of int)
+0:82 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:82 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:82 Constant:
+0:82 0 (const uint)
+0:82 direct index ( temp uint)
+0:82 'dti' ( in 3-component vector of uint)
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Sequence
+0:82 Constant:
+0:82 0 (const int)
+0:82 Constant:
+0:82 1 (const int)
+0:82 Constant:
+0:82 2 (const int)
+0:84 move second child to first child ( temp 4-component vector of float)
+0:84 f: direct index for structure ( temp 4-component vector of float)
+0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:84 Constant:
+0:84 0 (const uint)
+0:84 direct index ( temp uint)
+0:84 'dti' ( in 3-component vector of uint)
+0:84 Constant:
+0:84 0 (const int)
+0:84 Constant:
+0:84 2 (const int)
+0:84 subgroupMax ( temp 4-component vector of float)
+0:84 f: direct index for structure ( temp 4-component vector of float)
+0:84 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:84 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:84 Constant:
+0:84 0 (const uint)
+0:84 direct index ( temp uint)
+0:84 'dti' ( in 3-component vector of uint)
+0:84 Constant:
+0:84 0 (const int)
+0:84 Constant:
+0:84 2 (const int)
+0:85 move second child to first child ( temp float)
+0:85 direct index ( temp float)
+0:85 f: direct index for structure ( temp 4-component vector of float)
+0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:85 Constant:
+0:85 0 (const uint)
+0:85 direct index ( temp uint)
+0:85 'dti' ( in 3-component vector of uint)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 2 (const int)
+0:85 Constant:
+0:85 0 (const int)
+0:85 subgroupMax ( temp float)
+0:85 direct index ( temp float)
+0:85 f: direct index for structure ( temp 4-component vector of float)
+0:85 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:85 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:85 Constant:
+0:85 0 (const uint)
+0:85 direct index ( temp uint)
+0:85 'dti' ( in 3-component vector of uint)
+0:85 Constant:
+0:85 0 (const int)
+0:85 Constant:
+0:85 2 (const int)
+0:85 Constant:
+0:85 0 (const int)
+0:86 move second child to first child ( temp 2-component vector of float)
+0:86 vector swizzle ( temp 2-component vector of float)
+0:86 f: direct index for structure ( temp 4-component vector of float)
+0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:86 Constant:
+0:86 0 (const uint)
+0:86 direct index ( temp uint)
+0:86 'dti' ( in 3-component vector of uint)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:86 subgroupMax ( temp 2-component vector of float)
+0:86 vector swizzle ( temp 2-component vector of float)
+0:86 f: direct index for structure ( temp 4-component vector of float)
+0:86 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:86 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:86 Constant:
+0:86 0 (const uint)
+0:86 direct index ( temp uint)
+0:86 'dti' ( in 3-component vector of uint)
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 2 (const int)
+0:86 Sequence
+0:86 Constant:
+0:86 0 (const int)
+0:86 Constant:
+0:86 1 (const int)
+0:87 move second child to first child ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 f: direct index for structure ( temp 4-component vector of float)
+0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:87 Constant:
+0:87 0 (const uint)
+0:87 direct index ( temp uint)
+0:87 'dti' ( in 3-component vector of uint)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 subgroupMax ( temp 3-component vector of float)
+0:87 vector swizzle ( temp 3-component vector of float)
+0:87 f: direct index for structure ( temp 4-component vector of float)
+0:87 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:87 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:87 Constant:
+0:87 0 (const uint)
+0:87 direct index ( temp uint)
+0:87 'dti' ( in 3-component vector of uint)
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:87 Sequence
+0:87 Constant:
+0:87 0 (const int)
+0:87 Constant:
+0:87 1 (const int)
+0:87 Constant:
+0:87 2 (const int)
+0:89 move second child to first child ( temp 4-component vector of double)
+0:89 d: direct index for structure ( temp 4-component vector of double)
+0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:89 Constant:
+0:89 0 (const uint)
+0:89 direct index ( temp uint)
+0:89 'dti' ( in 3-component vector of uint)
+0:89 Constant:
+0:89 0 (const int)
+0:89 Constant:
+0:89 3 (const int)
+0:89 subgroupMax ( temp 4-component vector of double)
+0:89 d: direct index for structure ( temp 4-component vector of double)
+0:89 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:89 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:89 Constant:
+0:89 0 (const uint)
+0:89 direct index ( temp uint)
+0:89 'dti' ( in 3-component vector of uint)
+0:89 Constant:
+0:89 0 (const int)
+0:89 Constant:
+0:89 3 (const int)
+0:90 move second child to first child ( temp double)
+0:90 direct index ( temp double)
+0:90 d: direct index for structure ( temp 4-component vector of double)
+0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:90 Constant:
+0:90 0 (const uint)
+0:90 direct index ( temp uint)
+0:90 'dti' ( in 3-component vector of uint)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const int)
+0:90 Constant:
+0:90 0 (const int)
+0:90 subgroupMax ( temp double)
+0:90 direct index ( temp double)
+0:90 d: direct index for structure ( temp 4-component vector of double)
+0:90 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:90 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:90 Constant:
+0:90 0 (const uint)
+0:90 direct index ( temp uint)
+0:90 'dti' ( in 3-component vector of uint)
+0:90 Constant:
+0:90 0 (const int)
+0:90 Constant:
+0:90 3 (const int)
+0:90 Constant:
+0:90 0 (const int)
+0:91 move second child to first child ( temp 2-component vector of double)
+0:91 vector swizzle ( temp 2-component vector of double)
+0:91 d: direct index for structure ( temp 4-component vector of double)
+0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:91 Constant:
+0:91 0 (const uint)
+0:91 direct index ( temp uint)
+0:91 'dti' ( in 3-component vector of uint)
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 3 (const int)
+0:91 Sequence
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 1 (const int)
+0:91 subgroupMax ( temp 2-component vector of double)
+0:91 vector swizzle ( temp 2-component vector of double)
+0:91 d: direct index for structure ( temp 4-component vector of double)
+0:91 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:91 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:91 Constant:
+0:91 0 (const uint)
+0:91 direct index ( temp uint)
+0:91 'dti' ( in 3-component vector of uint)
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 3 (const int)
+0:91 Sequence
+0:91 Constant:
+0:91 0 (const int)
+0:91 Constant:
+0:91 1 (const int)
+0:92 move second child to first child ( temp 3-component vector of double)
+0:92 vector swizzle ( temp 3-component vector of double)
+0:92 d: direct index for structure ( temp 4-component vector of double)
+0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:92 Constant:
+0:92 0 (const uint)
+0:92 direct index ( temp uint)
+0:92 'dti' ( in 3-component vector of uint)
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 3 (const int)
+0:92 Sequence
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 1 (const int)
+0:92 Constant:
+0:92 2 (const int)
+0:92 subgroupMax ( temp 3-component vector of double)
+0:92 vector swizzle ( temp 3-component vector of double)
+0:92 d: direct index for structure ( temp 4-component vector of double)
+0:92 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:92 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:92 Constant:
+0:92 0 (const uint)
+0:92 direct index ( temp uint)
+0:92 'dti' ( in 3-component vector of uint)
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 3 (const int)
+0:92 Sequence
+0:92 Constant:
+0:92 0 (const int)
+0:92 Constant:
+0:92 1 (const int)
+0:92 Constant:
+0:92 2 (const int)
+0:94 move second child to first child ( temp 4-component vector of uint)
+0:94 u: direct index for structure ( temp 4-component vector of uint)
+0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:94 Constant:
+0:94 0 (const uint)
+0:94 direct index ( temp uint)
+0:94 'dti' ( in 3-component vector of uint)
+0:94 Constant:
+0:94 0 (const int)
+0:94 Constant:
+0:94 0 (const int)
+0:94 subgroupAnd ( temp 4-component vector of uint)
+0:94 u: direct index for structure ( temp 4-component vector of uint)
+0:94 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:94 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:94 Constant:
+0:94 0 (const uint)
+0:94 direct index ( temp uint)
+0:94 'dti' ( in 3-component vector of uint)
+0:94 Constant:
+0:94 0 (const int)
+0:94 Constant:
+0:94 0 (const int)
+0:95 move second child to first child ( temp uint)
+0:95 direct index ( temp uint)
+0:95 u: direct index for structure ( temp 4-component vector of uint)
+0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:95 Constant:
+0:95 0 (const uint)
+0:95 direct index ( temp uint)
+0:95 'dti' ( in 3-component vector of uint)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 subgroupAnd ( temp uint)
+0:95 direct index ( temp uint)
+0:95 u: direct index for structure ( temp 4-component vector of uint)
+0:95 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:95 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:95 Constant:
+0:95 0 (const uint)
+0:95 direct index ( temp uint)
+0:95 'dti' ( in 3-component vector of uint)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:95 Constant:
+0:95 0 (const int)
+0:96 move second child to first child ( temp 2-component vector of uint)
+0:96 vector swizzle ( temp 2-component vector of uint)
+0:96 u: direct index for structure ( temp 4-component vector of uint)
+0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:96 Constant:
+0:96 0 (const uint)
+0:96 direct index ( temp uint)
+0:96 'dti' ( in 3-component vector of uint)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Sequence
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 1 (const int)
+0:96 subgroupAnd ( temp 2-component vector of uint)
+0:96 vector swizzle ( temp 2-component vector of uint)
+0:96 u: direct index for structure ( temp 4-component vector of uint)
+0:96 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:96 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:96 Constant:
+0:96 0 (const uint)
+0:96 direct index ( temp uint)
+0:96 'dti' ( in 3-component vector of uint)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 0 (const int)
+0:96 Sequence
+0:96 Constant:
+0:96 0 (const int)
+0:96 Constant:
+0:96 1 (const int)
+0:97 move second child to first child ( temp 3-component vector of uint)
+0:97 vector swizzle ( temp 3-component vector of uint)
+0:97 u: direct index for structure ( temp 4-component vector of uint)
+0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:97 Constant:
+0:97 0 (const uint)
+0:97 direct index ( temp uint)
+0:97 'dti' ( in 3-component vector of uint)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Sequence
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 1 (const int)
+0:97 Constant:
+0:97 2 (const int)
+0:97 subgroupAnd ( temp 3-component vector of uint)
+0:97 vector swizzle ( temp 3-component vector of uint)
+0:97 u: direct index for structure ( temp 4-component vector of uint)
+0:97 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:97 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:97 Constant:
+0:97 0 (const uint)
+0:97 direct index ( temp uint)
+0:97 'dti' ( in 3-component vector of uint)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 0 (const int)
+0:97 Sequence
+0:97 Constant:
+0:97 0 (const int)
+0:97 Constant:
+0:97 1 (const int)
+0:97 Constant:
+0:97 2 (const int)
+0:99 move second child to first child ( temp 4-component vector of int)
+0:99 i: direct index for structure ( temp 4-component vector of int)
+0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:99 Constant:
+0:99 0 (const uint)
+0:99 direct index ( temp uint)
+0:99 'dti' ( in 3-component vector of uint)
+0:99 Constant:
+0:99 0 (const int)
+0:99 Constant:
+0:99 1 (const int)
+0:99 subgroupAnd ( temp 4-component vector of int)
+0:99 i: direct index for structure ( temp 4-component vector of int)
+0:99 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:99 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:99 Constant:
+0:99 0 (const uint)
+0:99 direct index ( temp uint)
+0:99 'dti' ( in 3-component vector of uint)
+0:99 Constant:
+0:99 0 (const int)
+0:99 Constant:
+0:99 1 (const int)
+0:100 move second child to first child ( temp int)
+0:100 direct index ( temp int)
+0:100 i: direct index for structure ( temp 4-component vector of int)
+0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:100 Constant:
+0:100 0 (const uint)
+0:100 direct index ( temp uint)
+0:100 'dti' ( in 3-component vector of uint)
+0:100 Constant:
+0:100 0 (const int)
+0:100 Constant:
+0:100 1 (const int)
+0:100 Constant:
+0:100 0 (const int)
+0:100 subgroupAnd ( temp int)
+0:100 direct index ( temp int)
+0:100 i: direct index for structure ( temp 4-component vector of int)
+0:100 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:100 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:100 Constant:
+0:100 0 (const uint)
+0:100 direct index ( temp uint)
+0:100 'dti' ( in 3-component vector of uint)
+0:100 Constant:
+0:100 0 (const int)
+0:100 Constant:
+0:100 1 (const int)
+0:100 Constant:
+0:100 0 (const int)
+0:101 move second child to first child ( temp 2-component vector of int)
+0:101 vector swizzle ( temp 2-component vector of int)
+0:101 i: direct index for structure ( temp 4-component vector of int)
+0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:101 Constant:
+0:101 0 (const uint)
+0:101 direct index ( temp uint)
+0:101 'dti' ( in 3-component vector of uint)
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 Sequence
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 subgroupAnd ( temp 2-component vector of int)
+0:101 vector swizzle ( temp 2-component vector of int)
+0:101 i: direct index for structure ( temp 4-component vector of int)
+0:101 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:101 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:101 Constant:
+0:101 0 (const uint)
+0:101 direct index ( temp uint)
+0:101 'dti' ( in 3-component vector of uint)
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:101 Sequence
+0:101 Constant:
+0:101 0 (const int)
+0:101 Constant:
+0:101 1 (const int)
+0:102 move second child to first child ( temp 3-component vector of int)
+0:102 vector swizzle ( temp 3-component vector of int)
+0:102 i: direct index for structure ( temp 4-component vector of int)
+0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:102 Constant:
+0:102 0 (const uint)
+0:102 direct index ( temp uint)
+0:102 'dti' ( in 3-component vector of uint)
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Sequence
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Constant:
+0:102 2 (const int)
+0:102 subgroupAnd ( temp 3-component vector of int)
+0:102 vector swizzle ( temp 3-component vector of int)
+0:102 i: direct index for structure ( temp 4-component vector of int)
+0:102 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:102 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:102 Constant:
+0:102 0 (const uint)
+0:102 direct index ( temp uint)
+0:102 'dti' ( in 3-component vector of uint)
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Sequence
+0:102 Constant:
+0:102 0 (const int)
+0:102 Constant:
+0:102 1 (const int)
+0:102 Constant:
+0:102 2 (const int)
+0:104 move second child to first child ( temp 4-component vector of uint)
+0:104 u: direct index for structure ( temp 4-component vector of uint)
+0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:104 Constant:
+0:104 0 (const uint)
+0:104 direct index ( temp uint)
+0:104 'dti' ( in 3-component vector of uint)
+0:104 Constant:
+0:104 0 (const int)
+0:104 Constant:
+0:104 0 (const int)
+0:104 subgroupOr ( temp 4-component vector of uint)
+0:104 u: direct index for structure ( temp 4-component vector of uint)
+0:104 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:104 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:104 Constant:
+0:104 0 (const uint)
+0:104 direct index ( temp uint)
+0:104 'dti' ( in 3-component vector of uint)
+0:104 Constant:
+0:104 0 (const int)
+0:104 Constant:
+0:104 0 (const int)
+0:105 move second child to first child ( temp uint)
+0:105 direct index ( temp uint)
+0:105 u: direct index for structure ( temp 4-component vector of uint)
+0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:105 Constant:
+0:105 0 (const uint)
+0:105 direct index ( temp uint)
+0:105 'dti' ( in 3-component vector of uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:105 subgroupOr ( temp uint)
+0:105 direct index ( temp uint)
+0:105 u: direct index for structure ( temp 4-component vector of uint)
+0:105 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:105 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:105 Constant:
+0:105 0 (const uint)
+0:105 direct index ( temp uint)
+0:105 'dti' ( in 3-component vector of uint)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:105 Constant:
+0:105 0 (const int)
+0:106 move second child to first child ( temp 2-component vector of uint)
+0:106 vector swizzle ( temp 2-component vector of uint)
+0:106 u: direct index for structure ( temp 4-component vector of uint)
+0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:106 Constant:
+0:106 0 (const uint)
+0:106 direct index ( temp uint)
+0:106 'dti' ( in 3-component vector of uint)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Sequence
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 1 (const int)
+0:106 subgroupOr ( temp 2-component vector of uint)
+0:106 vector swizzle ( temp 2-component vector of uint)
+0:106 u: direct index for structure ( temp 4-component vector of uint)
+0:106 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:106 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:106 Constant:
+0:106 0 (const uint)
+0:106 direct index ( temp uint)
+0:106 'dti' ( in 3-component vector of uint)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 0 (const int)
+0:106 Sequence
+0:106 Constant:
+0:106 0 (const int)
+0:106 Constant:
+0:106 1 (const int)
+0:107 move second child to first child ( temp 3-component vector of uint)
+0:107 vector swizzle ( temp 3-component vector of uint)
+0:107 u: direct index for structure ( temp 4-component vector of uint)
+0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:107 Constant:
+0:107 0 (const uint)
+0:107 direct index ( temp uint)
+0:107 'dti' ( in 3-component vector of uint)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:107 subgroupOr ( temp 3-component vector of uint)
+0:107 vector swizzle ( temp 3-component vector of uint)
+0:107 u: direct index for structure ( temp 4-component vector of uint)
+0:107 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:107 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:107 Constant:
+0:107 0 (const uint)
+0:107 direct index ( temp uint)
+0:107 'dti' ( in 3-component vector of uint)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 0 (const int)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:109 move second child to first child ( temp 4-component vector of int)
+0:109 i: direct index for structure ( temp 4-component vector of int)
+0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:109 Constant:
+0:109 0 (const uint)
+0:109 direct index ( temp uint)
+0:109 'dti' ( in 3-component vector of uint)
+0:109 Constant:
+0:109 0 (const int)
+0:109 Constant:
+0:109 1 (const int)
+0:109 subgroupOr ( temp 4-component vector of int)
+0:109 i: direct index for structure ( temp 4-component vector of int)
+0:109 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:109 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:109 Constant:
+0:109 0 (const uint)
+0:109 direct index ( temp uint)
+0:109 'dti' ( in 3-component vector of uint)
+0:109 Constant:
+0:109 0 (const int)
+0:109 Constant:
+0:109 1 (const int)
+0:110 move second child to first child ( temp int)
+0:110 direct index ( temp int)
+0:110 i: direct index for structure ( temp 4-component vector of int)
+0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:110 Constant:
+0:110 0 (const uint)
+0:110 direct index ( temp uint)
+0:110 'dti' ( in 3-component vector of uint)
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 1 (const int)
+0:110 Constant:
+0:110 0 (const int)
+0:110 subgroupOr ( temp int)
+0:110 direct index ( temp int)
+0:110 i: direct index for structure ( temp 4-component vector of int)
+0:110 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:110 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:110 Constant:
+0:110 0 (const uint)
+0:110 direct index ( temp uint)
+0:110 'dti' ( in 3-component vector of uint)
+0:110 Constant:
+0:110 0 (const int)
+0:110 Constant:
+0:110 1 (const int)
+0:110 Constant:
+0:110 0 (const int)
+0:111 move second child to first child ( temp 2-component vector of int)
+0:111 vector swizzle ( temp 2-component vector of int)
+0:111 i: direct index for structure ( temp 4-component vector of int)
+0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:111 Constant:
+0:111 0 (const uint)
+0:111 direct index ( temp uint)
+0:111 'dti' ( in 3-component vector of uint)
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:111 Sequence
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:111 subgroupOr ( temp 2-component vector of int)
+0:111 vector swizzle ( temp 2-component vector of int)
+0:111 i: direct index for structure ( temp 4-component vector of int)
+0:111 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:111 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:111 Constant:
+0:111 0 (const uint)
+0:111 direct index ( temp uint)
+0:111 'dti' ( in 3-component vector of uint)
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:111 Sequence
+0:111 Constant:
+0:111 0 (const int)
+0:111 Constant:
+0:111 1 (const int)
+0:112 move second child to first child ( temp 3-component vector of int)
+0:112 vector swizzle ( temp 3-component vector of int)
+0:112 i: direct index for structure ( temp 4-component vector of int)
+0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:112 Constant:
+0:112 0 (const uint)
+0:112 direct index ( temp uint)
+0:112 'dti' ( in 3-component vector of uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:112 subgroupOr ( temp 3-component vector of int)
+0:112 vector swizzle ( temp 3-component vector of int)
+0:112 i: direct index for structure ( temp 4-component vector of int)
+0:112 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:112 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:112 Constant:
+0:112 0 (const uint)
+0:112 direct index ( temp uint)
+0:112 'dti' ( in 3-component vector of uint)
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:114 move second child to first child ( temp 4-component vector of uint)
+0:114 u: direct index for structure ( temp 4-component vector of uint)
+0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:114 Constant:
+0:114 0 (const uint)
+0:114 direct index ( temp uint)
+0:114 'dti' ( in 3-component vector of uint)
+0:114 Constant:
+0:114 0 (const int)
+0:114 Constant:
+0:114 0 (const int)
+0:114 subgroupXor ( temp 4-component vector of uint)
+0:114 u: direct index for structure ( temp 4-component vector of uint)
+0:114 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:114 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:114 Constant:
+0:114 0 (const uint)
+0:114 direct index ( temp uint)
+0:114 'dti' ( in 3-component vector of uint)
+0:114 Constant:
+0:114 0 (const int)
+0:114 Constant:
+0:114 0 (const int)
+0:115 move second child to first child ( temp uint)
+0:115 direct index ( temp uint)
+0:115 u: direct index for structure ( temp 4-component vector of uint)
+0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:115 Constant:
+0:115 0 (const uint)
+0:115 direct index ( temp uint)
+0:115 'dti' ( in 3-component vector of uint)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 subgroupXor ( temp uint)
+0:115 direct index ( temp uint)
+0:115 u: direct index for structure ( temp 4-component vector of uint)
+0:115 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:115 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:115 Constant:
+0:115 0 (const uint)
+0:115 direct index ( temp uint)
+0:115 'dti' ( in 3-component vector of uint)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:115 Constant:
+0:115 0 (const int)
+0:116 move second child to first child ( temp 2-component vector of uint)
+0:116 vector swizzle ( temp 2-component vector of uint)
+0:116 u: direct index for structure ( temp 4-component vector of uint)
+0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:116 Constant:
+0:116 0 (const uint)
+0:116 direct index ( temp uint)
+0:116 'dti' ( in 3-component vector of uint)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Sequence
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 1 (const int)
+0:116 subgroupXor ( temp 2-component vector of uint)
+0:116 vector swizzle ( temp 2-component vector of uint)
+0:116 u: direct index for structure ( temp 4-component vector of uint)
+0:116 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:116 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:116 Constant:
+0:116 0 (const uint)
+0:116 direct index ( temp uint)
+0:116 'dti' ( in 3-component vector of uint)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 0 (const int)
+0:116 Sequence
+0:116 Constant:
+0:116 0 (const int)
+0:116 Constant:
+0:116 1 (const int)
+0:117 move second child to first child ( temp 3-component vector of uint)
+0:117 vector swizzle ( temp 3-component vector of uint)
+0:117 u: direct index for structure ( temp 4-component vector of uint)
+0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:117 Constant:
+0:117 0 (const uint)
+0:117 direct index ( temp uint)
+0:117 'dti' ( in 3-component vector of uint)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Sequence
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 1 (const int)
+0:117 Constant:
+0:117 2 (const int)
+0:117 subgroupXor ( temp 3-component vector of uint)
+0:117 vector swizzle ( temp 3-component vector of uint)
+0:117 u: direct index for structure ( temp 4-component vector of uint)
+0:117 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:117 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:117 Constant:
+0:117 0 (const uint)
+0:117 direct index ( temp uint)
+0:117 'dti' ( in 3-component vector of uint)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 0 (const int)
+0:117 Sequence
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 1 (const int)
+0:117 Constant:
+0:117 2 (const int)
+0:119 move second child to first child ( temp 4-component vector of int)
+0:119 i: direct index for structure ( temp 4-component vector of int)
+0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:119 Constant:
+0:119 0 (const uint)
+0:119 direct index ( temp uint)
+0:119 'dti' ( in 3-component vector of uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 1 (const int)
+0:119 subgroupXor ( temp 4-component vector of int)
+0:119 i: direct index for structure ( temp 4-component vector of int)
+0:119 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:119 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:119 Constant:
+0:119 0 (const uint)
+0:119 direct index ( temp uint)
+0:119 'dti' ( in 3-component vector of uint)
+0:119 Constant:
+0:119 0 (const int)
+0:119 Constant:
+0:119 1 (const int)
+0:120 move second child to first child ( temp int)
+0:120 direct index ( temp int)
+0:120 i: direct index for structure ( temp 4-component vector of int)
+0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:120 Constant:
+0:120 0 (const uint)
+0:120 direct index ( temp uint)
+0:120 'dti' ( in 3-component vector of uint)
+0:120 Constant:
+0:120 0 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 0 (const int)
+0:120 subgroupXor ( temp int)
+0:120 direct index ( temp int)
+0:120 i: direct index for structure ( temp 4-component vector of int)
+0:120 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:120 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:120 Constant:
+0:120 0 (const uint)
+0:120 direct index ( temp uint)
+0:120 'dti' ( in 3-component vector of uint)
+0:120 Constant:
+0:120 0 (const int)
+0:120 Constant:
+0:120 1 (const int)
+0:120 Constant:
+0:120 0 (const int)
+0:121 move second child to first child ( temp 2-component vector of int)
+0:121 vector swizzle ( temp 2-component vector of int)
+0:121 i: direct index for structure ( temp 4-component vector of int)
+0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:121 Constant:
+0:121 0 (const uint)
+0:121 direct index ( temp uint)
+0:121 'dti' ( in 3-component vector of uint)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 subgroupXor ( temp 2-component vector of int)
+0:121 vector swizzle ( temp 2-component vector of int)
+0:121 i: direct index for structure ( temp 4-component vector of int)
+0:121 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:121 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:121 Constant:
+0:121 0 (const uint)
+0:121 direct index ( temp uint)
+0:121 'dti' ( in 3-component vector of uint)
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:122 move second child to first child ( temp 3-component vector of int)
+0:122 vector swizzle ( temp 3-component vector of int)
+0:122 i: direct index for structure ( temp 4-component vector of int)
+0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:122 Constant:
+0:122 0 (const uint)
+0:122 direct index ( temp uint)
+0:122 'dti' ( in 3-component vector of uint)
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:122 subgroupXor ( temp 3-component vector of int)
+0:122 vector swizzle ( temp 3-component vector of int)
+0:122 i: direct index for structure ( temp 4-component vector of int)
+0:122 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:122 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:122 Constant:
+0:122 0 (const uint)
+0:122 direct index ( temp uint)
+0:122 'dti' ( in 3-component vector of uint)
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:124 move second child to first child ( temp uint)
+0:124 direct index ( temp uint)
+0:124 u: direct index for structure ( temp 4-component vector of uint)
+0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:124 Constant:
+0:124 0 (const uint)
+0:124 direct index ( temp uint)
+0:124 'dti' ( in 3-component vector of uint)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const int)
+0:124 subgroupBallotBitCount ( temp uint)
+0:124 subgroupBallot ( temp 4-component vector of uint)
+0:124 Compare Equal ( temp bool)
+0:124 direct index ( temp uint)
+0:124 u: direct index for structure ( temp 4-component vector of uint)
+0:124 indirect index (layout( row_major std430) buffer structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d})
+0:124 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:124 Constant:
+0:124 0 (const uint)
+0:124 direct index ( temp uint)
+0:124 'dti' ( in 3-component vector of uint)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const int)
+0:124 Constant:
+0:124 0 (const uint)
+0:13 Function Definition: CSMain( ( temp void)
+0:13 Function Parameters:
+0:? Sequence
+0:13 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:13 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 4-component vector of uint u, temp 4-component vector of int i, temp 4-component vector of float f, temp 4-component vector of double d} @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 901
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformArithmetic
+ Capability GroupNonUniformBallot
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "CSMain" 896
+ ExecutionMode 4 LocalSize 32 16 1
+ Source HLSL 500
+ Name 4 "CSMain"
+ Name 11 "@CSMain(vu3;"
+ Name 10 "dti"
+ Name 20 "Types"
+ MemberName 20(Types) 0 "u"
+ MemberName 20(Types) 1 "i"
+ MemberName 20(Types) 2 "f"
+ MemberName 20(Types) 3 "d"
+ Name 22 "data"
+ MemberName 22(data) 0 "@data"
+ Name 24 "data"
+ Name 894 "dti"
+ Name 896 "dti"
+ Name 898 "param"
+ MemberDecorate 20(Types) 0 Offset 0
+ MemberDecorate 20(Types) 1 Offset 16
+ MemberDecorate 20(Types) 2 Offset 32
+ MemberDecorate 20(Types) 3 Offset 64
+ Decorate 21 ArrayStride 96
+ MemberDecorate 22(data) 0 Offset 0
+ Decorate 22(data) BufferBlock
+ Decorate 24(data) DescriptorSet 0
+ Decorate 896(dti) BuiltIn GlobalInvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeVector 6(int) 4
+ 14: TypeInt 32 1
+ 15: TypeVector 14(int) 4
+ 16: TypeFloat 32
+ 17: TypeVector 16(float) 4
+ 18: TypeFloat 64
+ 19: TypeVector 18(float) 4
+ 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(fvec4)
+ 21: TypeRuntimeArray 20(Types)
+ 22(data): TypeStruct 21
+ 23: TypePointer Uniform 22(data)
+ 24(data): 23(ptr) Variable Uniform
+ 25: 14(int) Constant 0
+ 26: 6(int) Constant 0
+ 27: TypePointer Function 6(int)
+ 32: TypePointer Uniform 13(ivec4)
+ 35: 6(int) Constant 3
+ 42: TypePointer Uniform 6(int)
+ 51: TypeVector 6(int) 2
+ 72: 14(int) Constant 1
+ 75: TypePointer Uniform 15(ivec4)
+ 84: TypePointer Uniform 14(int)
+ 93: TypeVector 14(int) 2
+ 105: TypeVector 14(int) 3
+ 115: 14(int) Constant 2
+ 118: TypePointer Uniform 17(fvec4)
+ 127: TypePointer Uniform 16(float)
+ 136: TypeVector 16(float) 2
+ 148: TypeVector 16(float) 3
+ 158: 14(int) Constant 3
+ 161: TypePointer Uniform 19(fvec4)
+ 170: TypePointer Uniform 18(float)
+ 179: TypeVector 18(float) 2
+ 191: TypeVector 18(float) 3
+ 889: TypeBool
+ 895: TypePointer Input 7(ivec3)
+ 896(dti): 895(ptr) Variable Input
+ 4(CSMain): 2 Function None 3
+ 5: Label
+ 894(dti): 8(ptr) Variable Function
+ 898(param): 8(ptr) Variable Function
+ 897: 7(ivec3) Load 896(dti)
+ Store 894(dti) 897
+ 899: 7(ivec3) Load 894(dti)
+ Store 898(param) 899
+ 900: 2 FunctionCall 11(@CSMain(vu3;) 898(param)
+ Return
+ FunctionEnd
+11(@CSMain(vu3;): 2 Function None 9
+ 10(dti): 8(ptr) FunctionParameter
+ 12: Label
+ 28: 27(ptr) AccessChain 10(dti) 26
+ 29: 6(int) Load 28
+ 30: 27(ptr) AccessChain 10(dti) 26
+ 31: 6(int) Load 30
+ 33: 32(ptr) AccessChain 24(data) 25 31 25
+ 34: 13(ivec4) Load 33
+ 36: 13(ivec4) GroupNonUniformIAdd 35 Reduce 34
+ 37: 32(ptr) AccessChain 24(data) 25 29 25
+ Store 37 36
+ 38: 27(ptr) AccessChain 10(dti) 26
+ 39: 6(int) Load 38
+ 40: 27(ptr) AccessChain 10(dti) 26
+ 41: 6(int) Load 40
+ 43: 42(ptr) AccessChain 24(data) 25 41 25 26
+ 44: 6(int) Load 43
+ 45: 6(int) GroupNonUniformIAdd 35 Reduce 44
+ 46: 42(ptr) AccessChain 24(data) 25 39 25 26
+ Store 46 45
+ 47: 27(ptr) AccessChain 10(dti) 26
+ 48: 6(int) Load 47
+ 49: 27(ptr) AccessChain 10(dti) 26
+ 50: 6(int) Load 49
+ 52: 32(ptr) AccessChain 24(data) 25 50 25
+ 53: 13(ivec4) Load 52
+ 54: 51(ivec2) VectorShuffle 53 53 0 1
+ 55: 51(ivec2) GroupNonUniformIAdd 35 Reduce 54
+ 56: 32(ptr) AccessChain 24(data) 25 48 25
+ 57: 13(ivec4) Load 56
+ 58: 13(ivec4) VectorShuffle 57 55 4 5 2 3
+ Store 56 58
+ 59: 27(ptr) AccessChain 10(dti) 26
+ 60: 6(int) Load 59
+ 61: 27(ptr) AccessChain 10(dti) 26
+ 62: 6(int) Load 61
+ 63: 32(ptr) AccessChain 24(data) 25 62 25
+ 64: 13(ivec4) Load 63
+ 65: 7(ivec3) VectorShuffle 64 64 0 1 2
+ 66: 7(ivec3) GroupNonUniformIAdd 35 Reduce 65
+ 67: 32(ptr) AccessChain 24(data) 25 60 25
+ 68: 13(ivec4) Load 67
+ 69: 13(ivec4) VectorShuffle 68 66 4 5 6 3
+ Store 67 69
+ 70: 27(ptr) AccessChain 10(dti) 26
+ 71: 6(int) Load 70
+ 73: 27(ptr) AccessChain 10(dti) 26
+ 74: 6(int) Load 73
+ 76: 75(ptr) AccessChain 24(data) 25 74 72
+ 77: 15(ivec4) Load 76
+ 78: 15(ivec4) GroupNonUniformIAdd 35 Reduce 77
+ 79: 75(ptr) AccessChain 24(data) 25 71 72
+ Store 79 78
+ 80: 27(ptr) AccessChain 10(dti) 26
+ 81: 6(int) Load 80
+ 82: 27(ptr) AccessChain 10(dti) 26
+ 83: 6(int) Load 82
+ 85: 84(ptr) AccessChain 24(data) 25 83 72 26
+ 86: 14(int) Load 85
+ 87: 14(int) GroupNonUniformIAdd 35 Reduce 86
+ 88: 84(ptr) AccessChain 24(data) 25 81 72 26
+ Store 88 87
+ 89: 27(ptr) AccessChain 10(dti) 26
+ 90: 6(int) Load 89
+ 91: 27(ptr) AccessChain 10(dti) 26
+ 92: 6(int) Load 91
+ 94: 75(ptr) AccessChain 24(data) 25 92 72
+ 95: 15(ivec4) Load 94
+ 96: 93(ivec2) VectorShuffle 95 95 0 1
+ 97: 93(ivec2) GroupNonUniformIAdd 35 Reduce 96
+ 98: 75(ptr) AccessChain 24(data) 25 90 72
+ 99: 15(ivec4) Load 98
+ 100: 15(ivec4) VectorShuffle 99 97 4 5 2 3
+ Store 98 100
+ 101: 27(ptr) AccessChain 10(dti) 26
+ 102: 6(int) Load 101
+ 103: 27(ptr) AccessChain 10(dti) 26
+ 104: 6(int) Load 103
+ 106: 75(ptr) AccessChain 24(data) 25 104 72
+ 107: 15(ivec4) Load 106
+ 108: 105(ivec3) VectorShuffle 107 107 0 1 2
+ 109: 105(ivec3) GroupNonUniformIAdd 35 Reduce 108
+ 110: 75(ptr) AccessChain 24(data) 25 102 72
+ 111: 15(ivec4) Load 110
+ 112: 15(ivec4) VectorShuffle 111 109 4 5 6 3
+ Store 110 112
+ 113: 27(ptr) AccessChain 10(dti) 26
+ 114: 6(int) Load 113
+ 116: 27(ptr) AccessChain 10(dti) 26
+ 117: 6(int) Load 116
+ 119: 118(ptr) AccessChain 24(data) 25 117 115
+ 120: 17(fvec4) Load 119
+ 121: 17(fvec4) GroupNonUniformFAdd 35 Reduce 120
+ 122: 118(ptr) AccessChain 24(data) 25 114 115
+ Store 122 121
+ 123: 27(ptr) AccessChain 10(dti) 26
+ 124: 6(int) Load 123
+ 125: 27(ptr) AccessChain 10(dti) 26
+ 126: 6(int) Load 125
+ 128: 127(ptr) AccessChain 24(data) 25 126 115 26
+ 129: 16(float) Load 128
+ 130: 16(float) GroupNonUniformFAdd 35 Reduce 129
+ 131: 127(ptr) AccessChain 24(data) 25 124 115 26
+ Store 131 130
+ 132: 27(ptr) AccessChain 10(dti) 26
+ 133: 6(int) Load 132
+ 134: 27(ptr) AccessChain 10(dti) 26
+ 135: 6(int) Load 134
+ 137: 118(ptr) AccessChain 24(data) 25 135 115
+ 138: 17(fvec4) Load 137
+ 139: 136(fvec2) VectorShuffle 138 138 0 1
+ 140: 136(fvec2) GroupNonUniformFAdd 35 Reduce 139
+ 141: 118(ptr) AccessChain 24(data) 25 133 115
+ 142: 17(fvec4) Load 141
+ 143: 17(fvec4) VectorShuffle 142 140 4 5 2 3
+ Store 141 143
+ 144: 27(ptr) AccessChain 10(dti) 26
+ 145: 6(int) Load 144
+ 146: 27(ptr) AccessChain 10(dti) 26
+ 147: 6(int) Load 146
+ 149: 118(ptr) AccessChain 24(data) 25 147 115
+ 150: 17(fvec4) Load 149
+ 151: 148(fvec3) VectorShuffle 150 150 0 1 2
+ 152: 148(fvec3) GroupNonUniformFAdd 35 Reduce 151
+ 153: 118(ptr) AccessChain 24(data) 25 145 115
+ 154: 17(fvec4) Load 153
+ 155: 17(fvec4) VectorShuffle 154 152 4 5 6 3
+ Store 153 155
+ 156: 27(ptr) AccessChain 10(dti) 26
+ 157: 6(int) Load 156
+ 159: 27(ptr) AccessChain 10(dti) 26
+ 160: 6(int) Load 159
+ 162: 161(ptr) AccessChain 24(data) 25 160 158
+ 163: 19(fvec4) Load 162
+ 164: 19(fvec4) GroupNonUniformFAdd 35 Reduce 163
+ 165: 161(ptr) AccessChain 24(data) 25 157 158
+ Store 165 164
+ 166: 27(ptr) AccessChain 10(dti) 26
+ 167: 6(int) Load 166
+ 168: 27(ptr) AccessChain 10(dti) 26
+ 169: 6(int) Load 168
+ 171: 170(ptr) AccessChain 24(data) 25 169 158 26
+ 172: 18(float) Load 171
+ 173: 18(float) GroupNonUniformFAdd 35 Reduce 172
+ 174: 170(ptr) AccessChain 24(data) 25 167 158 26
+ Store 174 173
+ 175: 27(ptr) AccessChain 10(dti) 26
+ 176: 6(int) Load 175
+ 177: 27(ptr) AccessChain 10(dti) 26
+ 178: 6(int) Load 177
+ 180: 161(ptr) AccessChain 24(data) 25 178 158
+ 181: 19(fvec4) Load 180
+ 182: 179(fvec2) VectorShuffle 181 181 0 1
+ 183: 179(fvec2) GroupNonUniformFAdd 35 Reduce 182
+ 184: 161(ptr) AccessChain 24(data) 25 176 158
+ 185: 19(fvec4) Load 184
+ 186: 19(fvec4) VectorShuffle 185 183 4 5 2 3
+ Store 184 186
+ 187: 27(ptr) AccessChain 10(dti) 26
+ 188: 6(int) Load 187
+ 189: 27(ptr) AccessChain 10(dti) 26
+ 190: 6(int) Load 189
+ 192: 161(ptr) AccessChain 24(data) 25 190 158
+ 193: 19(fvec4) Load 192
+ 194: 191(fvec3) VectorShuffle 193 193 0 1 2
+ 195: 191(fvec3) GroupNonUniformFAdd 35 Reduce 194
+ 196: 161(ptr) AccessChain 24(data) 25 188 158
+ 197: 19(fvec4) Load 196
+ 198: 19(fvec4) VectorShuffle 197 195 4 5 6 3
+ Store 196 198
+ 199: 27(ptr) AccessChain 10(dti) 26
+ 200: 6(int) Load 199
+ 201: 27(ptr) AccessChain 10(dti) 26
+ 202: 6(int) Load 201
+ 203: 32(ptr) AccessChain 24(data) 25 202 25
+ 204: 13(ivec4) Load 203
+ 205: 13(ivec4) GroupNonUniformIMul 35 Reduce 204
+ 206: 32(ptr) AccessChain 24(data) 25 200 25
+ Store 206 205
+ 207: 27(ptr) AccessChain 10(dti) 26
+ 208: 6(int) Load 207
+ 209: 27(ptr) AccessChain 10(dti) 26
+ 210: 6(int) Load 209
+ 211: 42(ptr) AccessChain 24(data) 25 210 25 26
+ 212: 6(int) Load 211
+ 213: 6(int) GroupNonUniformIMul 35 Reduce 212
+ 214: 42(ptr) AccessChain 24(data) 25 208 25 26
+ Store 214 213
+ 215: 27(ptr) AccessChain 10(dti) 26
+ 216: 6(int) Load 215
+ 217: 27(ptr) AccessChain 10(dti) 26
+ 218: 6(int) Load 217
+ 219: 32(ptr) AccessChain 24(data) 25 218 25
+ 220: 13(ivec4) Load 219
+ 221: 51(ivec2) VectorShuffle 220 220 0 1
+ 222: 51(ivec2) GroupNonUniformIMul 35 Reduce 221
+ 223: 32(ptr) AccessChain 24(data) 25 216 25
+ 224: 13(ivec4) Load 223
+ 225: 13(ivec4) VectorShuffle 224 222 4 5 2 3
+ Store 223 225
+ 226: 27(ptr) AccessChain 10(dti) 26
+ 227: 6(int) Load 226
+ 228: 27(ptr) AccessChain 10(dti) 26
+ 229: 6(int) Load 228
+ 230: 32(ptr) AccessChain 24(data) 25 229 25
+ 231: 13(ivec4) Load 230
+ 232: 7(ivec3) VectorShuffle 231 231 0 1 2
+ 233: 7(ivec3) GroupNonUniformIMul 35 Reduce 232
+ 234: 32(ptr) AccessChain 24(data) 25 227 25
+ 235: 13(ivec4) Load 234
+ 236: 13(ivec4) VectorShuffle 235 233 4 5 6 3
+ Store 234 236
+ 237: 27(ptr) AccessChain 10(dti) 26
+ 238: 6(int) Load 237
+ 239: 27(ptr) AccessChain 10(dti) 26
+ 240: 6(int) Load 239
+ 241: 75(ptr) AccessChain 24(data) 25 240 72
+ 242: 15(ivec4) Load 241
+ 243: 15(ivec4) GroupNonUniformIMul 35 Reduce 242
+ 244: 75(ptr) AccessChain 24(data) 25 238 72
+ Store 244 243
+ 245: 27(ptr) AccessChain 10(dti) 26
+ 246: 6(int) Load 245
+ 247: 27(ptr) AccessChain 10(dti) 26
+ 248: 6(int) Load 247
+ 249: 84(ptr) AccessChain 24(data) 25 248 72 26
+ 250: 14(int) Load 249
+ 251: 14(int) GroupNonUniformIMul 35 Reduce 250
+ 252: 84(ptr) AccessChain 24(data) 25 246 72 26
+ Store 252 251
+ 253: 27(ptr) AccessChain 10(dti) 26
+ 254: 6(int) Load 253
+ 255: 27(ptr) AccessChain 10(dti) 26
+ 256: 6(int) Load 255
+ 257: 75(ptr) AccessChain 24(data) 25 256 72
+ 258: 15(ivec4) Load 257
+ 259: 93(ivec2) VectorShuffle 258 258 0 1
+ 260: 93(ivec2) GroupNonUniformIMul 35 Reduce 259
+ 261: 75(ptr) AccessChain 24(data) 25 254 72
+ 262: 15(ivec4) Load 261
+ 263: 15(ivec4) VectorShuffle 262 260 4 5 2 3
+ Store 261 263
+ 264: 27(ptr) AccessChain 10(dti) 26
+ 265: 6(int) Load 264
+ 266: 27(ptr) AccessChain 10(dti) 26
+ 267: 6(int) Load 266
+ 268: 75(ptr) AccessChain 24(data) 25 267 72
+ 269: 15(ivec4) Load 268
+ 270: 105(ivec3) VectorShuffle 269 269 0 1 2
+ 271: 105(ivec3) GroupNonUniformIMul 35 Reduce 270
+ 272: 75(ptr) AccessChain 24(data) 25 265 72
+ 273: 15(ivec4) Load 272
+ 274: 15(ivec4) VectorShuffle 273 271 4 5 6 3
+ Store 272 274
+ 275: 27(ptr) AccessChain 10(dti) 26
+ 276: 6(int) Load 275
+ 277: 27(ptr) AccessChain 10(dti) 26
+ 278: 6(int) Load 277
+ 279: 118(ptr) AccessChain 24(data) 25 278 115
+ 280: 17(fvec4) Load 279
+ 281: 17(fvec4) GroupNonUniformFMul 35 Reduce 280
+ 282: 118(ptr) AccessChain 24(data) 25 276 115
+ Store 282 281
+ 283: 27(ptr) AccessChain 10(dti) 26
+ 284: 6(int) Load 283
+ 285: 27(ptr) AccessChain 10(dti) 26
+ 286: 6(int) Load 285
+ 287: 127(ptr) AccessChain 24(data) 25 286 115 26
+ 288: 16(float) Load 287
+ 289: 16(float) GroupNonUniformFMul 35 Reduce 288
+ 290: 127(ptr) AccessChain 24(data) 25 284 115 26
+ Store 290 289
+ 291: 27(ptr) AccessChain 10(dti) 26
+ 292: 6(int) Load 291
+ 293: 27(ptr) AccessChain 10(dti) 26
+ 294: 6(int) Load 293
+ 295: 118(ptr) AccessChain 24(data) 25 294 115
+ 296: 17(fvec4) Load 295
+ 297: 136(fvec2) VectorShuffle 296 296 0 1
+ 298: 136(fvec2) GroupNonUniformFMul 35 Reduce 297
+ 299: 118(ptr) AccessChain 24(data) 25 292 115
+ 300: 17(fvec4) Load 299
+ 301: 17(fvec4) VectorShuffle 300 298 4 5 2 3
+ Store 299 301
+ 302: 27(ptr) AccessChain 10(dti) 26
+ 303: 6(int) Load 302
+ 304: 27(ptr) AccessChain 10(dti) 26
+ 305: 6(int) Load 304
+ 306: 118(ptr) AccessChain 24(data) 25 305 115
+ 307: 17(fvec4) Load 306
+ 308: 148(fvec3) VectorShuffle 307 307 0 1 2
+ 309: 148(fvec3) GroupNonUniformFMul 35 Reduce 308
+ 310: 118(ptr) AccessChain 24(data) 25 303 115
+ 311: 17(fvec4) Load 310
+ 312: 17(fvec4) VectorShuffle 311 309 4 5 6 3
+ Store 310 312
+ 313: 27(ptr) AccessChain 10(dti) 26
+ 314: 6(int) Load 313
+ 315: 27(ptr) AccessChain 10(dti) 26
+ 316: 6(int) Load 315
+ 317: 161(ptr) AccessChain 24(data) 25 316 158
+ 318: 19(fvec4) Load 317
+ 319: 19(fvec4) GroupNonUniformFMul 35 Reduce 318
+ 320: 161(ptr) AccessChain 24(data) 25 314 158
+ Store 320 319
+ 321: 27(ptr) AccessChain 10(dti) 26
+ 322: 6(int) Load 321
+ 323: 27(ptr) AccessChain 10(dti) 26
+ 324: 6(int) Load 323
+ 325: 170(ptr) AccessChain 24(data) 25 324 158 26
+ 326: 18(float) Load 325
+ 327: 18(float) GroupNonUniformFMul 35 Reduce 326
+ 328: 170(ptr) AccessChain 24(data) 25 322 158 26
+ Store 328 327
+ 329: 27(ptr) AccessChain 10(dti) 26
+ 330: 6(int) Load 329
+ 331: 27(ptr) AccessChain 10(dti) 26
+ 332: 6(int) Load 331
+ 333: 161(ptr) AccessChain 24(data) 25 332 158
+ 334: 19(fvec4) Load 333
+ 335: 179(fvec2) VectorShuffle 334 334 0 1
+ 336: 179(fvec2) GroupNonUniformFMul 35 Reduce 335
+ 337: 161(ptr) AccessChain 24(data) 25 330 158
+ 338: 19(fvec4) Load 337
+ 339: 19(fvec4) VectorShuffle 338 336 4 5 2 3
+ Store 337 339
+ 340: 27(ptr) AccessChain 10(dti) 26
+ 341: 6(int) Load 340
+ 342: 27(ptr) AccessChain 10(dti) 26
+ 343: 6(int) Load 342
+ 344: 161(ptr) AccessChain 24(data) 25 343 158
+ 345: 19(fvec4) Load 344
+ 346: 191(fvec3) VectorShuffle 345 345 0 1 2
+ 347: 191(fvec3) GroupNonUniformFMul 35 Reduce 346
+ 348: 161(ptr) AccessChain 24(data) 25 341 158
+ 349: 19(fvec4) Load 348
+ 350: 19(fvec4) VectorShuffle 349 347 4 5 6 3
+ Store 348 350
+ 351: 27(ptr) AccessChain 10(dti) 26
+ 352: 6(int) Load 351
+ 353: 27(ptr) AccessChain 10(dti) 26
+ 354: 6(int) Load 353
+ 355: 32(ptr) AccessChain 24(data) 25 354 25
+ 356: 13(ivec4) Load 355
+ 357: 13(ivec4) GroupNonUniformUMin 35 Reduce 356
+ 358: 32(ptr) AccessChain 24(data) 25 352 25
+ Store 358 357
+ 359: 27(ptr) AccessChain 10(dti) 26
+ 360: 6(int) Load 359
+ 361: 27(ptr) AccessChain 10(dti) 26
+ 362: 6(int) Load 361
+ 363: 42(ptr) AccessChain 24(data) 25 362 25 26
+ 364: 6(int) Load 363
+ 365: 6(int) GroupNonUniformUMin 35 Reduce 364
+ 366: 42(ptr) AccessChain 24(data) 25 360 25 26
+ Store 366 365
+ 367: 27(ptr) AccessChain 10(dti) 26
+ 368: 6(int) Load 367
+ 369: 27(ptr) AccessChain 10(dti) 26
+ 370: 6(int) Load 369
+ 371: 32(ptr) AccessChain 24(data) 25 370 25
+ 372: 13(ivec4) Load 371
+ 373: 51(ivec2) VectorShuffle 372 372 0 1
+ 374: 51(ivec2) GroupNonUniformUMin 35 Reduce 373
+ 375: 32(ptr) AccessChain 24(data) 25 368 25
+ 376: 13(ivec4) Load 375
+ 377: 13(ivec4) VectorShuffle 376 374 4 5 2 3
+ Store 375 377
+ 378: 27(ptr) AccessChain 10(dti) 26
+ 379: 6(int) Load 378
+ 380: 27(ptr) AccessChain 10(dti) 26
+ 381: 6(int) Load 380
+ 382: 32(ptr) AccessChain 24(data) 25 381 25
+ 383: 13(ivec4) Load 382
+ 384: 7(ivec3) VectorShuffle 383 383 0 1 2
+ 385: 7(ivec3) GroupNonUniformUMin 35 Reduce 384
+ 386: 32(ptr) AccessChain 24(data) 25 379 25
+ 387: 13(ivec4) Load 386
+ 388: 13(ivec4) VectorShuffle 387 385 4 5 6 3
+ Store 386 388
+ 389: 27(ptr) AccessChain 10(dti) 26
+ 390: 6(int) Load 389
+ 391: 27(ptr) AccessChain 10(dti) 26
+ 392: 6(int) Load 391
+ 393: 75(ptr) AccessChain 24(data) 25 392 72
+ 394: 15(ivec4) Load 393
+ 395: 15(ivec4) GroupNonUniformSMin 35 Reduce 394
+ 396: 75(ptr) AccessChain 24(data) 25 390 72
+ Store 396 395
+ 397: 27(ptr) AccessChain 10(dti) 26
+ 398: 6(int) Load 397
+ 399: 27(ptr) AccessChain 10(dti) 26
+ 400: 6(int) Load 399
+ 401: 84(ptr) AccessChain 24(data) 25 400 72 26
+ 402: 14(int) Load 401
+ 403: 14(int) GroupNonUniformSMin 35 Reduce 402
+ 404: 84(ptr) AccessChain 24(data) 25 398 72 26
+ Store 404 403
+ 405: 27(ptr) AccessChain 10(dti) 26
+ 406: 6(int) Load 405
+ 407: 27(ptr) AccessChain 10(dti) 26
+ 408: 6(int) Load 407
+ 409: 75(ptr) AccessChain 24(data) 25 408 72
+ 410: 15(ivec4) Load 409
+ 411: 93(ivec2) VectorShuffle 410 410 0 1
+ 412: 93(ivec2) GroupNonUniformSMin 35 Reduce 411
+ 413: 75(ptr) AccessChain 24(data) 25 406 72
+ 414: 15(ivec4) Load 413
+ 415: 15(ivec4) VectorShuffle 414 412 4 5 2 3
+ Store 413 415
+ 416: 27(ptr) AccessChain 10(dti) 26
+ 417: 6(int) Load 416
+ 418: 27(ptr) AccessChain 10(dti) 26
+ 419: 6(int) Load 418
+ 420: 75(ptr) AccessChain 24(data) 25 419 72
+ 421: 15(ivec4) Load 420
+ 422: 105(ivec3) VectorShuffle 421 421 0 1 2
+ 423: 105(ivec3) GroupNonUniformSMin 35 Reduce 422
+ 424: 75(ptr) AccessChain 24(data) 25 417 72
+ 425: 15(ivec4) Load 424
+ 426: 15(ivec4) VectorShuffle 425 423 4 5 6 3
+ Store 424 426
+ 427: 27(ptr) AccessChain 10(dti) 26
+ 428: 6(int) Load 427
+ 429: 27(ptr) AccessChain 10(dti) 26
+ 430: 6(int) Load 429
+ 431: 118(ptr) AccessChain 24(data) 25 430 115
+ 432: 17(fvec4) Load 431
+ 433: 17(fvec4) GroupNonUniformFMin 35 Reduce 432
+ 434: 118(ptr) AccessChain 24(data) 25 428 115
+ Store 434 433
+ 435: 27(ptr) AccessChain 10(dti) 26
+ 436: 6(int) Load 435
+ 437: 27(ptr) AccessChain 10(dti) 26
+ 438: 6(int) Load 437
+ 439: 127(ptr) AccessChain 24(data) 25 438 115 26
+ 440: 16(float) Load 439
+ 441: 16(float) GroupNonUniformFMin 35 Reduce 440
+ 442: 127(ptr) AccessChain 24(data) 25 436 115 26
+ Store 442 441
+ 443: 27(ptr) AccessChain 10(dti) 26
+ 444: 6(int) Load 443
+ 445: 27(ptr) AccessChain 10(dti) 26
+ 446: 6(int) Load 445
+ 447: 118(ptr) AccessChain 24(data) 25 446 115
+ 448: 17(fvec4) Load 447
+ 449: 136(fvec2) VectorShuffle 448 448 0 1
+ 450: 136(fvec2) GroupNonUniformFMin 35 Reduce 449
+ 451: 118(ptr) AccessChain 24(data) 25 444 115
+ 452: 17(fvec4) Load 451
+ 453: 17(fvec4) VectorShuffle 452 450 4 5 2 3
+ Store 451 453
+ 454: 27(ptr) AccessChain 10(dti) 26
+ 455: 6(int) Load 454
+ 456: 27(ptr) AccessChain 10(dti) 26
+ 457: 6(int) Load 456
+ 458: 118(ptr) AccessChain 24(data) 25 457 115
+ 459: 17(fvec4) Load 458
+ 460: 148(fvec3) VectorShuffle 459 459 0 1 2
+ 461: 148(fvec3) GroupNonUniformFMin 35 Reduce 460
+ 462: 118(ptr) AccessChain 24(data) 25 455 115
+ 463: 17(fvec4) Load 462
+ 464: 17(fvec4) VectorShuffle 463 461 4 5 6 3
+ Store 462 464
+ 465: 27(ptr) AccessChain 10(dti) 26
+ 466: 6(int) Load 465
+ 467: 27(ptr) AccessChain 10(dti) 26
+ 468: 6(int) Load 467
+ 469: 161(ptr) AccessChain 24(data) 25 468 158
+ 470: 19(fvec4) Load 469
+ 471: 19(fvec4) GroupNonUniformFMin 35 Reduce 470
+ 472: 161(ptr) AccessChain 24(data) 25 466 158
+ Store 472 471
+ 473: 27(ptr) AccessChain 10(dti) 26
+ 474: 6(int) Load 473
+ 475: 27(ptr) AccessChain 10(dti) 26
+ 476: 6(int) Load 475
+ 477: 170(ptr) AccessChain 24(data) 25 476 158 26
+ 478: 18(float) Load 477
+ 479: 18(float) GroupNonUniformFMin 35 Reduce 478
+ 480: 170(ptr) AccessChain 24(data) 25 474 158 26
+ Store 480 479
+ 481: 27(ptr) AccessChain 10(dti) 26
+ 482: 6(int) Load 481
+ 483: 27(ptr) AccessChain 10(dti) 26
+ 484: 6(int) Load 483
+ 485: 161(ptr) AccessChain 24(data) 25 484 158
+ 486: 19(fvec4) Load 485
+ 487: 179(fvec2) VectorShuffle 486 486 0 1
+ 488: 179(fvec2) GroupNonUniformFMin 35 Reduce 487
+ 489: 161(ptr) AccessChain 24(data) 25 482 158
+ 490: 19(fvec4) Load 489
+ 491: 19(fvec4) VectorShuffle 490 488 4 5 2 3
+ Store 489 491
+ 492: 27(ptr) AccessChain 10(dti) 26
+ 493: 6(int) Load 492
+ 494: 27(ptr) AccessChain 10(dti) 26
+ 495: 6(int) Load 494
+ 496: 161(ptr) AccessChain 24(data) 25 495 158
+ 497: 19(fvec4) Load 496
+ 498: 191(fvec3) VectorShuffle 497 497 0 1 2
+ 499: 191(fvec3) GroupNonUniformFMin 35 Reduce 498
+ 500: 161(ptr) AccessChain 24(data) 25 493 158
+ 501: 19(fvec4) Load 500
+ 502: 19(fvec4) VectorShuffle 501 499 4 5 6 3
+ Store 500 502
+ 503: 27(ptr) AccessChain 10(dti) 26
+ 504: 6(int) Load 503
+ 505: 27(ptr) AccessChain 10(dti) 26
+ 506: 6(int) Load 505
+ 507: 32(ptr) AccessChain 24(data) 25 506 25
+ 508: 13(ivec4) Load 507
+ 509: 13(ivec4) GroupNonUniformUMax 35 Reduce 508
+ 510: 32(ptr) AccessChain 24(data) 25 504 25
+ Store 510 509
+ 511: 27(ptr) AccessChain 10(dti) 26
+ 512: 6(int) Load 511
+ 513: 27(ptr) AccessChain 10(dti) 26
+ 514: 6(int) Load 513
+ 515: 42(ptr) AccessChain 24(data) 25 514 25 26
+ 516: 6(int) Load 515
+ 517: 6(int) GroupNonUniformUMax 35 Reduce 516
+ 518: 42(ptr) AccessChain 24(data) 25 512 25 26
+ Store 518 517
+ 519: 27(ptr) AccessChain 10(dti) 26
+ 520: 6(int) Load 519
+ 521: 27(ptr) AccessChain 10(dti) 26
+ 522: 6(int) Load 521
+ 523: 32(ptr) AccessChain 24(data) 25 522 25
+ 524: 13(ivec4) Load 523
+ 525: 51(ivec2) VectorShuffle 524 524 0 1
+ 526: 51(ivec2) GroupNonUniformUMax 35 Reduce 525
+ 527: 32(ptr) AccessChain 24(data) 25 520 25
+ 528: 13(ivec4) Load 527
+ 529: 13(ivec4) VectorShuffle 528 526 4 5 2 3
+ Store 527 529
+ 530: 27(ptr) AccessChain 10(dti) 26
+ 531: 6(int) Load 530
+ 532: 27(ptr) AccessChain 10(dti) 26
+ 533: 6(int) Load 532
+ 534: 32(ptr) AccessChain 24(data) 25 533 25
+ 535: 13(ivec4) Load 534
+ 536: 7(ivec3) VectorShuffle 535 535 0 1 2
+ 537: 7(ivec3) GroupNonUniformUMax 35 Reduce 536
+ 538: 32(ptr) AccessChain 24(data) 25 531 25
+ 539: 13(ivec4) Load 538
+ 540: 13(ivec4) VectorShuffle 539 537 4 5 6 3
+ Store 538 540
+ 541: 27(ptr) AccessChain 10(dti) 26
+ 542: 6(int) Load 541
+ 543: 27(ptr) AccessChain 10(dti) 26
+ 544: 6(int) Load 543
+ 545: 75(ptr) AccessChain 24(data) 25 544 72
+ 546: 15(ivec4) Load 545
+ 547: 15(ivec4) GroupNonUniformSMax 35 Reduce 546
+ 548: 75(ptr) AccessChain 24(data) 25 542 72
+ Store 548 547
+ 549: 27(ptr) AccessChain 10(dti) 26
+ 550: 6(int) Load 549
+ 551: 27(ptr) AccessChain 10(dti) 26
+ 552: 6(int) Load 551
+ 553: 84(ptr) AccessChain 24(data) 25 552 72 26
+ 554: 14(int) Load 553
+ 555: 14(int) GroupNonUniformSMax 35 Reduce 554
+ 556: 84(ptr) AccessChain 24(data) 25 550 72 26
+ Store 556 555
+ 557: 27(ptr) AccessChain 10(dti) 26
+ 558: 6(int) Load 557
+ 559: 27(ptr) AccessChain 10(dti) 26
+ 560: 6(int) Load 559
+ 561: 75(ptr) AccessChain 24(data) 25 560 72
+ 562: 15(ivec4) Load 561
+ 563: 93(ivec2) VectorShuffle 562 562 0 1
+ 564: 93(ivec2) GroupNonUniformSMax 35 Reduce 563
+ 565: 75(ptr) AccessChain 24(data) 25 558 72
+ 566: 15(ivec4) Load 565
+ 567: 15(ivec4) VectorShuffle 566 564 4 5 2 3
+ Store 565 567
+ 568: 27(ptr) AccessChain 10(dti) 26
+ 569: 6(int) Load 568
+ 570: 27(ptr) AccessChain 10(dti) 26
+ 571: 6(int) Load 570
+ 572: 75(ptr) AccessChain 24(data) 25 571 72
+ 573: 15(ivec4) Load 572
+ 574: 105(ivec3) VectorShuffle 573 573 0 1 2
+ 575: 105(ivec3) GroupNonUniformSMax 35 Reduce 574
+ 576: 75(ptr) AccessChain 24(data) 25 569 72
+ 577: 15(ivec4) Load 576
+ 578: 15(ivec4) VectorShuffle 577 575 4 5 6 3
+ Store 576 578
+ 579: 27(ptr) AccessChain 10(dti) 26
+ 580: 6(int) Load 579
+ 581: 27(ptr) AccessChain 10(dti) 26
+ 582: 6(int) Load 581
+ 583: 118(ptr) AccessChain 24(data) 25 582 115
+ 584: 17(fvec4) Load 583
+ 585: 17(fvec4) GroupNonUniformFMax 35 Reduce 584
+ 586: 118(ptr) AccessChain 24(data) 25 580 115
+ Store 586 585
+ 587: 27(ptr) AccessChain 10(dti) 26
+ 588: 6(int) Load 587
+ 589: 27(ptr) AccessChain 10(dti) 26
+ 590: 6(int) Load 589
+ 591: 127(ptr) AccessChain 24(data) 25 590 115 26
+ 592: 16(float) Load 591
+ 593: 16(float) GroupNonUniformFMax 35 Reduce 592
+ 594: 127(ptr) AccessChain 24(data) 25 588 115 26
+ Store 594 593
+ 595: 27(ptr) AccessChain 10(dti) 26
+ 596: 6(int) Load 595
+ 597: 27(ptr) AccessChain 10(dti) 26
+ 598: 6(int) Load 597
+ 599: 118(ptr) AccessChain 24(data) 25 598 115
+ 600: 17(fvec4) Load 599
+ 601: 136(fvec2) VectorShuffle 600 600 0 1
+ 602: 136(fvec2) GroupNonUniformFMax 35 Reduce 601
+ 603: 118(ptr) AccessChain 24(data) 25 596 115
+ 604: 17(fvec4) Load 603
+ 605: 17(fvec4) VectorShuffle 604 602 4 5 2 3
+ Store 603 605
+ 606: 27(ptr) AccessChain 10(dti) 26
+ 607: 6(int) Load 606
+ 608: 27(ptr) AccessChain 10(dti) 26
+ 609: 6(int) Load 608
+ 610: 118(ptr) AccessChain 24(data) 25 609 115
+ 611: 17(fvec4) Load 610
+ 612: 148(fvec3) VectorShuffle 611 611 0 1 2
+ 613: 148(fvec3) GroupNonUniformFMax 35 Reduce 612
+ 614: 118(ptr) AccessChain 24(data) 25 607 115
+ 615: 17(fvec4) Load 614
+ 616: 17(fvec4) VectorShuffle 615 613 4 5 6 3
+ Store 614 616
+ 617: 27(ptr) AccessChain 10(dti) 26
+ 618: 6(int) Load 617
+ 619: 27(ptr) AccessChain 10(dti) 26
+ 620: 6(int) Load 619
+ 621: 161(ptr) AccessChain 24(data) 25 620 158
+ 622: 19(fvec4) Load 621
+ 623: 19(fvec4) GroupNonUniformFMax 35 Reduce 622
+ 624: 161(ptr) AccessChain 24(data) 25 618 158
+ Store 624 623
+ 625: 27(ptr) AccessChain 10(dti) 26
+ 626: 6(int) Load 625
+ 627: 27(ptr) AccessChain 10(dti) 26
+ 628: 6(int) Load 627
+ 629: 170(ptr) AccessChain 24(data) 25 628 158 26
+ 630: 18(float) Load 629
+ 631: 18(float) GroupNonUniformFMax 35 Reduce 630
+ 632: 170(ptr) AccessChain 24(data) 25 626 158 26
+ Store 632 631
+ 633: 27(ptr) AccessChain 10(dti) 26
+ 634: 6(int) Load 633
+ 635: 27(ptr) AccessChain 10(dti) 26
+ 636: 6(int) Load 635
+ 637: 161(ptr) AccessChain 24(data) 25 636 158
+ 638: 19(fvec4) Load 637
+ 639: 179(fvec2) VectorShuffle 638 638 0 1
+ 640: 179(fvec2) GroupNonUniformFMax 35 Reduce 639
+ 641: 161(ptr) AccessChain 24(data) 25 634 158
+ 642: 19(fvec4) Load 641
+ 643: 19(fvec4) VectorShuffle 642 640 4 5 2 3
+ Store 641 643
+ 644: 27(ptr) AccessChain 10(dti) 26
+ 645: 6(int) Load 644
+ 646: 27(ptr) AccessChain 10(dti) 26
+ 647: 6(int) Load 646
+ 648: 161(ptr) AccessChain 24(data) 25 647 158
+ 649: 19(fvec4) Load 648
+ 650: 191(fvec3) VectorShuffle 649 649 0 1 2
+ 651: 191(fvec3) GroupNonUniformFMax 35 Reduce 650
+ 652: 161(ptr) AccessChain 24(data) 25 645 158
+ 653: 19(fvec4) Load 652
+ 654: 19(fvec4) VectorShuffle 653 651 4 5 6 3
+ Store 652 654
+ 655: 27(ptr) AccessChain 10(dti) 26
+ 656: 6(int) Load 655
+ 657: 27(ptr) AccessChain 10(dti) 26
+ 658: 6(int) Load 657
+ 659: 32(ptr) AccessChain 24(data) 25 658 25
+ 660: 13(ivec4) Load 659
+ 661: 13(ivec4) GroupNonUniformBitwiseAnd 35 Reduce 660
+ 662: 32(ptr) AccessChain 24(data) 25 656 25
+ Store 662 661
+ 663: 27(ptr) AccessChain 10(dti) 26
+ 664: 6(int) Load 663
+ 665: 27(ptr) AccessChain 10(dti) 26
+ 666: 6(int) Load 665
+ 667: 42(ptr) AccessChain 24(data) 25 666 25 26
+ 668: 6(int) Load 667
+ 669: 6(int) GroupNonUniformBitwiseAnd 35 Reduce 668
+ 670: 42(ptr) AccessChain 24(data) 25 664 25 26
+ Store 670 669
+ 671: 27(ptr) AccessChain 10(dti) 26
+ 672: 6(int) Load 671
+ 673: 27(ptr) AccessChain 10(dti) 26
+ 674: 6(int) Load 673
+ 675: 32(ptr) AccessChain 24(data) 25 674 25
+ 676: 13(ivec4) Load 675
+ 677: 51(ivec2) VectorShuffle 676 676 0 1
+ 678: 51(ivec2) GroupNonUniformBitwiseAnd 35 Reduce 677
+ 679: 32(ptr) AccessChain 24(data) 25 672 25
+ 680: 13(ivec4) Load 679
+ 681: 13(ivec4) VectorShuffle 680 678 4 5 2 3
+ Store 679 681
+ 682: 27(ptr) AccessChain 10(dti) 26
+ 683: 6(int) Load 682
+ 684: 27(ptr) AccessChain 10(dti) 26
+ 685: 6(int) Load 684
+ 686: 32(ptr) AccessChain 24(data) 25 685 25
+ 687: 13(ivec4) Load 686
+ 688: 7(ivec3) VectorShuffle 687 687 0 1 2
+ 689: 7(ivec3) GroupNonUniformBitwiseAnd 35 Reduce 688
+ 690: 32(ptr) AccessChain 24(data) 25 683 25
+ 691: 13(ivec4) Load 690
+ 692: 13(ivec4) VectorShuffle 691 689 4 5 6 3
+ Store 690 692
+ 693: 27(ptr) AccessChain 10(dti) 26
+ 694: 6(int) Load 693
+ 695: 27(ptr) AccessChain 10(dti) 26
+ 696: 6(int) Load 695
+ 697: 75(ptr) AccessChain 24(data) 25 696 72
+ 698: 15(ivec4) Load 697
+ 699: 15(ivec4) GroupNonUniformBitwiseAnd 35 Reduce 698
+ 700: 75(ptr) AccessChain 24(data) 25 694 72
+ Store 700 699
+ 701: 27(ptr) AccessChain 10(dti) 26
+ 702: 6(int) Load 701
+ 703: 27(ptr) AccessChain 10(dti) 26
+ 704: 6(int) Load 703
+ 705: 84(ptr) AccessChain 24(data) 25 704 72 26
+ 706: 14(int) Load 705
+ 707: 14(int) GroupNonUniformBitwiseAnd 35 Reduce 706
+ 708: 84(ptr) AccessChain 24(data) 25 702 72 26
+ Store 708 707
+ 709: 27(ptr) AccessChain 10(dti) 26
+ 710: 6(int) Load 709
+ 711: 27(ptr) AccessChain 10(dti) 26
+ 712: 6(int) Load 711
+ 713: 75(ptr) AccessChain 24(data) 25 712 72
+ 714: 15(ivec4) Load 713
+ 715: 93(ivec2) VectorShuffle 714 714 0 1
+ 716: 93(ivec2) GroupNonUniformBitwiseAnd 35 Reduce 715
+ 717: 75(ptr) AccessChain 24(data) 25 710 72
+ 718: 15(ivec4) Load 717
+ 719: 15(ivec4) VectorShuffle 718 716 4 5 2 3
+ Store 717 719
+ 720: 27(ptr) AccessChain 10(dti) 26
+ 721: 6(int) Load 720
+ 722: 27(ptr) AccessChain 10(dti) 26
+ 723: 6(int) Load 722
+ 724: 75(ptr) AccessChain 24(data) 25 723 72
+ 725: 15(ivec4) Load 724
+ 726: 105(ivec3) VectorShuffle 725 725 0 1 2
+ 727: 105(ivec3) GroupNonUniformBitwiseAnd 35 Reduce 726
+ 728: 75(ptr) AccessChain 24(data) 25 721 72
+ 729: 15(ivec4) Load 728
+ 730: 15(ivec4) VectorShuffle 729 727 4 5 6 3
+ Store 728 730
+ 731: 27(ptr) AccessChain 10(dti) 26
+ 732: 6(int) Load 731
+ 733: 27(ptr) AccessChain 10(dti) 26
+ 734: 6(int) Load 733
+ 735: 32(ptr) AccessChain 24(data) 25 734 25
+ 736: 13(ivec4) Load 735
+ 737: 13(ivec4) GroupNonUniformBitwiseOr 35 Reduce 736
+ 738: 32(ptr) AccessChain 24(data) 25 732 25
+ Store 738 737
+ 739: 27(ptr) AccessChain 10(dti) 26
+ 740: 6(int) Load 739
+ 741: 27(ptr) AccessChain 10(dti) 26
+ 742: 6(int) Load 741
+ 743: 42(ptr) AccessChain 24(data) 25 742 25 26
+ 744: 6(int) Load 743
+ 745: 6(int) GroupNonUniformBitwiseOr 35 Reduce 744
+ 746: 42(ptr) AccessChain 24(data) 25 740 25 26
+ Store 746 745
+ 747: 27(ptr) AccessChain 10(dti) 26
+ 748: 6(int) Load 747
+ 749: 27(ptr) AccessChain 10(dti) 26
+ 750: 6(int) Load 749
+ 751: 32(ptr) AccessChain 24(data) 25 750 25
+ 752: 13(ivec4) Load 751
+ 753: 51(ivec2) VectorShuffle 752 752 0 1
+ 754: 51(ivec2) GroupNonUniformBitwiseOr 35 Reduce 753
+ 755: 32(ptr) AccessChain 24(data) 25 748 25
+ 756: 13(ivec4) Load 755
+ 757: 13(ivec4) VectorShuffle 756 754 4 5 2 3
+ Store 755 757
+ 758: 27(ptr) AccessChain 10(dti) 26
+ 759: 6(int) Load 758
+ 760: 27(ptr) AccessChain 10(dti) 26
+ 761: 6(int) Load 760
+ 762: 32(ptr) AccessChain 24(data) 25 761 25
+ 763: 13(ivec4) Load 762
+ 764: 7(ivec3) VectorShuffle 763 763 0 1 2
+ 765: 7(ivec3) GroupNonUniformBitwiseOr 35 Reduce 764
+ 766: 32(ptr) AccessChain 24(data) 25 759 25
+ 767: 13(ivec4) Load 766
+ 768: 13(ivec4) VectorShuffle 767 765 4 5 6 3
+ Store 766 768
+ 769: 27(ptr) AccessChain 10(dti) 26
+ 770: 6(int) Load 769
+ 771: 27(ptr) AccessChain 10(dti) 26
+ 772: 6(int) Load 771
+ 773: 75(ptr) AccessChain 24(data) 25 772 72
+ 774: 15(ivec4) Load 773
+ 775: 15(ivec4) GroupNonUniformBitwiseOr 35 Reduce 774
+ 776: 75(ptr) AccessChain 24(data) 25 770 72
+ Store 776 775
+ 777: 27(ptr) AccessChain 10(dti) 26
+ 778: 6(int) Load 777
+ 779: 27(ptr) AccessChain 10(dti) 26
+ 780: 6(int) Load 779
+ 781: 84(ptr) AccessChain 24(data) 25 780 72 26
+ 782: 14(int) Load 781
+ 783: 14(int) GroupNonUniformBitwiseOr 35 Reduce 782
+ 784: 84(ptr) AccessChain 24(data) 25 778 72 26
+ Store 784 783
+ 785: 27(ptr) AccessChain 10(dti) 26
+ 786: 6(int) Load 785
+ 787: 27(ptr) AccessChain 10(dti) 26
+ 788: 6(int) Load 787
+ 789: 75(ptr) AccessChain 24(data) 25 788 72
+ 790: 15(ivec4) Load 789
+ 791: 93(ivec2) VectorShuffle 790 790 0 1
+ 792: 93(ivec2) GroupNonUniformBitwiseOr 35 Reduce 791
+ 793: 75(ptr) AccessChain 24(data) 25 786 72
+ 794: 15(ivec4) Load 793
+ 795: 15(ivec4) VectorShuffle 794 792 4 5 2 3
+ Store 793 795
+ 796: 27(ptr) AccessChain 10(dti) 26
+ 797: 6(int) Load 796
+ 798: 27(ptr) AccessChain 10(dti) 26
+ 799: 6(int) Load 798
+ 800: 75(ptr) AccessChain 24(data) 25 799 72
+ 801: 15(ivec4) Load 800
+ 802: 105(ivec3) VectorShuffle 801 801 0 1 2
+ 803: 105(ivec3) GroupNonUniformBitwiseOr 35 Reduce 802
+ 804: 75(ptr) AccessChain 24(data) 25 797 72
+ 805: 15(ivec4) Load 804
+ 806: 15(ivec4) VectorShuffle 805 803 4 5 6 3
+ Store 804 806
+ 807: 27(ptr) AccessChain 10(dti) 26
+ 808: 6(int) Load 807
+ 809: 27(ptr) AccessChain 10(dti) 26
+ 810: 6(int) Load 809
+ 811: 32(ptr) AccessChain 24(data) 25 810 25
+ 812: 13(ivec4) Load 811
+ 813: 13(ivec4) GroupNonUniformBitwiseXor 35 Reduce 812
+ 814: 32(ptr) AccessChain 24(data) 25 808 25
+ Store 814 813
+ 815: 27(ptr) AccessChain 10(dti) 26
+ 816: 6(int) Load 815
+ 817: 27(ptr) AccessChain 10(dti) 26
+ 818: 6(int) Load 817
+ 819: 42(ptr) AccessChain 24(data) 25 818 25 26
+ 820: 6(int) Load 819
+ 821: 6(int) GroupNonUniformBitwiseXor 35 Reduce 820
+ 822: 42(ptr) AccessChain 24(data) 25 816 25 26
+ Store 822 821
+ 823: 27(ptr) AccessChain 10(dti) 26
+ 824: 6(int) Load 823
+ 825: 27(ptr) AccessChain 10(dti) 26
+ 826: 6(int) Load 825
+ 827: 32(ptr) AccessChain 24(data) 25 826 25
+ 828: 13(ivec4) Load 827
+ 829: 51(ivec2) VectorShuffle 828 828 0 1
+ 830: 51(ivec2) GroupNonUniformBitwiseXor 35 Reduce 829
+ 831: 32(ptr) AccessChain 24(data) 25 824 25
+ 832: 13(ivec4) Load 831
+ 833: 13(ivec4) VectorShuffle 832 830 4 5 2 3
+ Store 831 833
+ 834: 27(ptr) AccessChain 10(dti) 26
+ 835: 6(int) Load 834
+ 836: 27(ptr) AccessChain 10(dti) 26
+ 837: 6(int) Load 836
+ 838: 32(ptr) AccessChain 24(data) 25 837 25
+ 839: 13(ivec4) Load 838
+ 840: 7(ivec3) VectorShuffle 839 839 0 1 2
+ 841: 7(ivec3) GroupNonUniformBitwiseXor 35 Reduce 840
+ 842: 32(ptr) AccessChain 24(data) 25 835 25
+ 843: 13(ivec4) Load 842
+ 844: 13(ivec4) VectorShuffle 843 841 4 5 6 3
+ Store 842 844
+ 845: 27(ptr) AccessChain 10(dti) 26
+ 846: 6(int) Load 845
+ 847: 27(ptr) AccessChain 10(dti) 26
+ 848: 6(int) Load 847
+ 849: 75(ptr) AccessChain 24(data) 25 848 72
+ 850: 15(ivec4) Load 849
+ 851: 15(ivec4) GroupNonUniformBitwiseXor 35 Reduce 850
+ 852: 75(ptr) AccessChain 24(data) 25 846 72
+ Store 852 851
+ 853: 27(ptr) AccessChain 10(dti) 26
+ 854: 6(int) Load 853
+ 855: 27(ptr) AccessChain 10(dti) 26
+ 856: 6(int) Load 855
+ 857: 84(ptr) AccessChain 24(data) 25 856 72 26
+ 858: 14(int) Load 857
+ 859: 14(int) GroupNonUniformBitwiseXor 35 Reduce 858
+ 860: 84(ptr) AccessChain 24(data) 25 854 72 26
+ Store 860 859
+ 861: 27(ptr) AccessChain 10(dti) 26
+ 862: 6(int) Load 861
+ 863: 27(ptr) AccessChain 10(dti) 26
+ 864: 6(int) Load 863
+ 865: 75(ptr) AccessChain 24(data) 25 864 72
+ 866: 15(ivec4) Load 865
+ 867: 93(ivec2) VectorShuffle 866 866 0 1
+ 868: 93(ivec2) GroupNonUniformBitwiseXor 35 Reduce 867
+ 869: 75(ptr) AccessChain 24(data) 25 862 72
+ 870: 15(ivec4) Load 869
+ 871: 15(ivec4) VectorShuffle 870 868 4 5 2 3
+ Store 869 871
+ 872: 27(ptr) AccessChain 10(dti) 26
+ 873: 6(int) Load 872
+ 874: 27(ptr) AccessChain 10(dti) 26
+ 875: 6(int) Load 874
+ 876: 75(ptr) AccessChain 24(data) 25 875 72
+ 877: 15(ivec4) Load 876
+ 878: 105(ivec3) VectorShuffle 877 877 0 1 2
+ 879: 105(ivec3) GroupNonUniformBitwiseXor 35 Reduce 878
+ 880: 75(ptr) AccessChain 24(data) 25 873 72
+ 881: 15(ivec4) Load 880
+ 882: 15(ivec4) VectorShuffle 881 879 4 5 6 3
+ Store 880 882
+ 883: 27(ptr) AccessChain 10(dti) 26
+ 884: 6(int) Load 883
+ 885: 27(ptr) AccessChain 10(dti) 26
+ 886: 6(int) Load 885
+ 887: 42(ptr) AccessChain 24(data) 25 886 25 26
+ 888: 6(int) Load 887
+ 890: 889(bool) IEqual 888 26
+ 891: 13(ivec4) GroupNonUniformBallot 35 890
+ 892: 6(int) GroupNonUniformBallotBitCount 35 Reduce 891
+ 893: 42(ptr) AccessChain 24(data) 25 884 25 26
+ Store 893 892
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out
new file mode 100644
index 0000000..2a97f56
--- /dev/null
+++ b/Test/baseResults/hlsl.wavevote.comp.out
@@ -0,0 +1,316 @@
+hlsl.wavevote.comp
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:5 Function Definition: @CSMain(vu3; ( temp void)
+0:5 Function Parameters:
+0:5 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:6 move second child to first child ( temp uint64_t)
+0:6 indirect index (layout( row_major std430) buffer uint64_t)
+0:6 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
+0:6 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 direct index ( temp uint)
+0:6 'dti' ( in 3-component vector of uint)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Construct uint64 (layout( row_major std430) buffer uint64_t)
+0:6 Convert uint to uint64 ( temp 4-component vector of uint64_t)
+0:6 subgroupBallot ( temp 4-component vector of uint)
+0:6 subgroupAny ( temp bool)
+0:6 Compare Equal ( temp bool)
+0:6 direct index ( temp uint)
+0:6 'dti' ( in 3-component vector of uint)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0 (const uint)
+0:7 move second child to first child ( temp uint64_t)
+0:7 indirect index (layout( row_major std430) buffer uint64_t)
+0:7 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
+0:7 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:7 Constant:
+0:7 0 (const uint)
+0:7 direct index ( temp uint)
+0:7 'dti' ( in 3-component vector of uint)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Construct uint64 (layout( row_major std430) buffer uint64_t)
+0:7 Convert uint to uint64 ( temp 4-component vector of uint64_t)
+0:7 subgroupBallot ( temp 4-component vector of uint)
+0:7 subgroupAll ( temp bool)
+0:7 Compare Equal ( temp bool)
+0:7 direct index ( temp uint)
+0:7 'dti' ( in 3-component vector of uint)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const uint)
+0:8 move second child to first child ( temp uint64_t)
+0:8 indirect index (layout( row_major std430) buffer uint64_t)
+0:8 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
+0:8 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:8 Constant:
+0:8 0 (const uint)
+0:8 direct index ( temp uint)
+0:8 'dti' ( in 3-component vector of uint)
+0:8 Constant:
+0:8 2 (const int)
+0:8 Construct uint64 (layout( row_major std430) buffer uint64_t)
+0:8 Convert uint to uint64 ( temp 4-component vector of uint64_t)
+0:8 subgroupBallot ( temp 4-component vector of uint)
+0:8 subgroupAllEqual ( temp bool)
+0:8 Compare Equal ( temp bool)
+0:8 direct index ( temp uint)
+0:8 'dti' ( in 3-component vector of uint)
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const uint)
+0:9 move second child to first child ( temp uint64_t)
+0:9 indirect index (layout( row_major std430) buffer uint64_t)
+0:9 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
+0:9 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:9 Constant:
+0:9 0 (const uint)
+0:9 direct index ( temp uint)
+0:9 'dti' ( in 3-component vector of uint)
+0:9 Constant:
+0:9 2 (const int)
+0:9 Construct uint64 (layout( row_major std430) buffer uint64_t)
+0:9 Convert uint to uint64 ( temp 4-component vector of uint64_t)
+0:9 subgroupBallot ( temp 4-component vector of uint)
+0:9 subgroupAllEqual ( temp bool)
+0:9 direct index ( temp uint)
+0:9 'dti' ( in 3-component vector of uint)
+0:9 Constant:
+0:9 2 (const int)
+0:5 Function Definition: CSMain( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:5 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (32, 16, 1)
+0:? Sequence
+0:5 Function Definition: @CSMain(vu3; ( temp void)
+0:5 Function Parameters:
+0:5 'dti' ( in 3-component vector of uint)
+0:? Sequence
+0:6 move second child to first child ( temp uint64_t)
+0:6 indirect index (layout( row_major std430) buffer uint64_t)
+0:6 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
+0:6 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:6 Constant:
+0:6 0 (const uint)
+0:6 direct index ( temp uint)
+0:6 'dti' ( in 3-component vector of uint)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Construct uint64 (layout( row_major std430) buffer uint64_t)
+0:6 Convert uint to uint64 ( temp 4-component vector of uint64_t)
+0:6 subgroupBallot ( temp 4-component vector of uint)
+0:6 subgroupAny ( temp bool)
+0:6 Compare Equal ( temp bool)
+0:6 direct index ( temp uint)
+0:6 'dti' ( in 3-component vector of uint)
+0:6 Constant:
+0:6 0 (const int)
+0:6 Constant:
+0:6 0 (const uint)
+0:7 move second child to first child ( temp uint64_t)
+0:7 indirect index (layout( row_major std430) buffer uint64_t)
+0:7 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
+0:7 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:7 Constant:
+0:7 0 (const uint)
+0:7 direct index ( temp uint)
+0:7 'dti' ( in 3-component vector of uint)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Construct uint64 (layout( row_major std430) buffer uint64_t)
+0:7 Convert uint to uint64 ( temp 4-component vector of uint64_t)
+0:7 subgroupBallot ( temp 4-component vector of uint)
+0:7 subgroupAll ( temp bool)
+0:7 Compare Equal ( temp bool)
+0:7 direct index ( temp uint)
+0:7 'dti' ( in 3-component vector of uint)
+0:7 Constant:
+0:7 1 (const int)
+0:7 Constant:
+0:7 0 (const uint)
+0:8 move second child to first child ( temp uint64_t)
+0:8 indirect index (layout( row_major std430) buffer uint64_t)
+0:8 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
+0:8 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:8 Constant:
+0:8 0 (const uint)
+0:8 direct index ( temp uint)
+0:8 'dti' ( in 3-component vector of uint)
+0:8 Constant:
+0:8 2 (const int)
+0:8 Construct uint64 (layout( row_major std430) buffer uint64_t)
+0:8 Convert uint to uint64 ( temp 4-component vector of uint64_t)
+0:8 subgroupBallot ( temp 4-component vector of uint)
+0:8 subgroupAllEqual ( temp bool)
+0:8 Compare Equal ( temp bool)
+0:8 direct index ( temp uint)
+0:8 'dti' ( in 3-component vector of uint)
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 0 (const uint)
+0:9 move second child to first child ( temp uint64_t)
+0:9 indirect index (layout( row_major std430) buffer uint64_t)
+0:9 @data: direct index for structure (layout( row_major std430) buffer implicitly-sized array of uint64_t)
+0:9 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:9 Constant:
+0:9 0 (const uint)
+0:9 direct index ( temp uint)
+0:9 'dti' ( in 3-component vector of uint)
+0:9 Constant:
+0:9 2 (const int)
+0:9 Construct uint64 (layout( row_major std430) buffer uint64_t)
+0:9 Convert uint to uint64 ( temp 4-component vector of uint64_t)
+0:9 subgroupBallot ( temp 4-component vector of uint)
+0:9 subgroupAllEqual ( temp bool)
+0:9 direct index ( temp uint)
+0:9 'dti' ( in 3-component vector of uint)
+0:9 Constant:
+0:9 2 (const int)
+0:5 Function Definition: CSMain( ( temp void)
+0:5 Function Parameters:
+0:? Sequence
+0:5 move second child to first child ( temp 3-component vector of uint)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+0:5 Function Call: @CSMain(vu3; ( temp void)
+0:? 'dti' ( temp 3-component vector of uint)
+0:? Linker Objects
+0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint64_t @data})
+0:? 'dti' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 75
+
+ Capability Shader
+ Capability Int64
+ Capability GroupNonUniform
+ Capability GroupNonUniformVote
+ Capability GroupNonUniformBallot
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "CSMain" 70
+ ExecutionMode 4 LocalSize 32 16 1
+ Source HLSL 500
+ Name 4 "CSMain"
+ Name 11 "@CSMain(vu3;"
+ Name 10 "dti"
+ Name 15 "data"
+ MemberName 15(data) 0 "@data"
+ Name 17 "data"
+ Name 68 "dti"
+ Name 70 "dti"
+ Name 72 "param"
+ Decorate 14 ArrayStride 8
+ MemberDecorate 15(data) 0 Offset 0
+ Decorate 15(data) BufferBlock
+ Decorate 17(data) DescriptorSet 0
+ Decorate 70(dti) BuiltIn GlobalInvocationId
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeInt 64 0
+ 14: TypeRuntimeArray 13(int)
+ 15(data): TypeStruct 14
+ 16: TypePointer Uniform 15(data)
+ 17(data): 16(ptr) Variable Uniform
+ 18: TypeInt 32 1
+ 19: 18(int) Constant 0
+ 20: 6(int) Constant 0
+ 21: TypePointer Function 6(int)
+ 26: TypeBool
+ 28: 6(int) Constant 3
+ 30: TypeVector 6(int) 4
+ 32: TypeVector 13(int) 4
+ 35: TypePointer Uniform 13(int)
+ 37: 6(int) Constant 1
+ 48: 6(int) Constant 2
+ 69: TypePointer Input 7(ivec3)
+ 70(dti): 69(ptr) Variable Input
+ 4(CSMain): 2 Function None 3
+ 5: Label
+ 68(dti): 8(ptr) Variable Function
+ 72(param): 8(ptr) Variable Function
+ 71: 7(ivec3) Load 70(dti)
+ Store 68(dti) 71
+ 73: 7(ivec3) Load 68(dti)
+ Store 72(param) 73
+ 74: 2 FunctionCall 11(@CSMain(vu3;) 72(param)
+ Return
+ FunctionEnd
+11(@CSMain(vu3;): 2 Function None 9
+ 10(dti): 8(ptr) FunctionParameter
+ 12: Label
+ 22: 21(ptr) AccessChain 10(dti) 20
+ 23: 6(int) Load 22
+ 24: 21(ptr) AccessChain 10(dti) 20
+ 25: 6(int) Load 24
+ 27: 26(bool) IEqual 25 20
+ 29: 26(bool) GroupNonUniformAny 28 27
+ 31: 30(ivec4) GroupNonUniformBallot 28 29
+ 33: 32(ivec4) UConvert 31
+ 34: 13(int) CompositeExtract 33 0
+ 36: 35(ptr) AccessChain 17(data) 19 23
+ Store 36 34
+ 38: 21(ptr) AccessChain 10(dti) 37
+ 39: 6(int) Load 38
+ 40: 21(ptr) AccessChain 10(dti) 37
+ 41: 6(int) Load 40
+ 42: 26(bool) IEqual 41 20
+ 43: 26(bool) GroupNonUniformAll 28 42
+ 44: 30(ivec4) GroupNonUniformBallot 28 43
+ 45: 32(ivec4) UConvert 44
+ 46: 13(int) CompositeExtract 45 0
+ 47: 35(ptr) AccessChain 17(data) 19 39
+ Store 47 46
+ 49: 21(ptr) AccessChain 10(dti) 48
+ 50: 6(int) Load 49
+ 51: 21(ptr) AccessChain 10(dti) 48
+ 52: 6(int) Load 51
+ 53: 26(bool) IEqual 52 20
+ 54: 26(bool) GroupNonUniformAllEqual 28 53
+ 55: 30(ivec4) GroupNonUniformBallot 28 54
+ 56: 32(ivec4) UConvert 55
+ 57: 13(int) CompositeExtract 56 0
+ 58: 35(ptr) AccessChain 17(data) 19 50
+ Store 58 57
+ 59: 21(ptr) AccessChain 10(dti) 48
+ 60: 6(int) Load 59
+ 61: 21(ptr) AccessChain 10(dti) 48
+ 62: 6(int) Load 61
+ 63: 26(bool) GroupNonUniformAllEqual 28 62
+ 64: 30(ivec4) GroupNonUniformBallot 28 63
+ 65: 32(ivec4) UConvert 64
+ 66: 13(int) CompositeExtract 65 0
+ 67: 35(ptr) AccessChain 17(data) 19 60
+ Store 67 66
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out
new file mode 100644
index 0000000..a423623
--- /dev/null
+++ b/Test/baseResults/spv.debugInfo.1.1.frag.out
@@ -0,0 +1,279 @@
+spv.debugInfo.frag
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 126
+
+ Capability Shader
+ 2: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5 "main" 24 52
+ ExecutionMode 5 OriginLowerLeft
+ 1: String "spv.debugInfo.frag"
+ Source GLSL 450 1 "#version 450
+
+struct S {
+ int a;
+};
+
+uniform ubuf {
+ S s;
+};
+
+uniform sampler2D s2d;
+
+layout(location = 0) in vec4 inv;
+layout(location = 0) out vec4 outv;
+
+vec4 foo(S s)
+{
+ vec4 r = s.a * inv;
+ ++r;
+ if (r.x > 3.0)
+ --r;
+ else
+ r *= 2;
+
+ return r;
+}
+
+void main()
+{
+ outv = foo(s);
+ outv += texture(s2d, vec2(0.5));
+
+ switch (s.a) {
+ case 10:
+ ++outv;
+ break;
+ case 20:
+ outv = 2 * outv;
+ ++outv;
+ break;
+ default:
+ --outv;
+ break;
+ }
+
+ for (int i = 0; i < 10; ++i)
+ outv *= 3.0;
+
+ outv.x < 10.0 ?
+ outv = sin(outv) :
+ outv = cos(outv);
+}"
+ Name 5 "main"
+ Name 8 "S"
+ MemberName 8(S) 0 "a"
+ Name 14 "foo(struct-S-i11;"
+ Name 13 "s"
+ Name 17 "r"
+ Name 24 "inv"
+ Name 52 "outv"
+ Name 53 "S"
+ MemberName 53(S) 0 "a"
+ Name 54 "ubuf"
+ MemberName 54(ubuf) 0 "s"
+ Name 56 ""
+ Name 57 "S"
+ MemberName 57(S) 0 "a"
+ Name 59 "param"
+ Name 69 "s2d"
+ Name 99 "i"
+ ModuleProcessed "no-storage-format"
+ ModuleProcessed "resource-set-binding 3"
+ ModuleProcessed "auto-map-locations"
+ ModuleProcessed "client opengl100"
+ ModuleProcessed "target-env opengl"
+ ModuleProcessed "relaxed-errors"
+ ModuleProcessed "suppress-warnings"
+ ModuleProcessed "hlsl-offsets"
+ ModuleProcessed "entry-point main"
+ Decorate 24(inv) Location 0
+ Decorate 52(outv) Location 0
+ MemberDecorate 53(S) 0 Offset 0
+ MemberDecorate 54(ubuf) 0 Offset 0
+ Decorate 54(ubuf) Block
+ Decorate 56 DescriptorSet 3
+ Decorate 69(s2d) DescriptorSet 3
+ 3: TypeVoid
+ 4: TypeFunction 3
+ 7: TypeInt 32 1
+ 8(S): TypeStruct 7(int)
+ 9: TypePointer Function 8(S)
+ 10: TypeFloat 32
+ 11: TypeVector 10(float) 4
+ 12: TypeFunction 11(fvec4) 9(ptr)
+ 16: TypePointer Function 11(fvec4)
+ 18: 7(int) Constant 0
+ 19: TypePointer Function 7(int)
+ 23: TypePointer Input 11(fvec4)
+ 24(inv): 23(ptr) Variable Input
+ 28: 10(float) Constant 1065353216
+ 31: TypeInt 32 0
+ 32: 31(int) Constant 0
+ 33: TypePointer Function 10(float)
+ 36: 10(float) Constant 1077936128
+ 37: TypeBool
+ 45: 10(float) Constant 1073741824
+ 51: TypePointer Output 11(fvec4)
+ 52(outv): 51(ptr) Variable Output
+ 53(S): TypeStruct 7(int)
+ 54(ubuf): TypeStruct 53(S)
+ 55: TypePointer Uniform 54(ubuf)
+ 56: 55(ptr) Variable Uniform
+ 57(S): TypeStruct 7(int)
+ 58: TypePointer Function 57(S)
+ 60: TypePointer Uniform 53(S)
+ 66: TypeImage 10(float) 2D sampled format:Unknown
+ 67: TypeSampledImage 66
+ 68: TypePointer UniformConstant 67
+ 69(s2d): 68(ptr) Variable UniformConstant
+ 71: TypeVector 10(float) 2
+ 72: 10(float) Constant 1056964608
+ 73: 71(fvec2) ConstantComposite 72 72
+ 77: TypePointer Uniform 7(int)
+ 106: 7(int) Constant 10
+ 111: 7(int) Constant 1
+ 113: TypePointer Output 10(float)
+ 116: 10(float) Constant 1092616192
+ 5(main): 3 Function None 4
+ 6: Label
+ 59(param): 58(ptr) Variable Function
+ 99(i): 19(ptr) Variable Function
+ 118: 16(ptr) Variable Function
+ Line 1 30 0
+ 61: 60(ptr) AccessChain 56 18
+ 62: 53(S) Load 61
+ 63: 7(int) CompositeExtract 62 0
+ 64: 19(ptr) AccessChain 59(param) 18
+ Store 64 63
+ 65: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 59(param)
+ Store 52(outv) 65
+ Line 1 31 0
+ 70: 67 Load 69(s2d)
+ 74: 11(fvec4) ImageSampleImplicitLod 70 73
+ 75: 11(fvec4) Load 52(outv)
+ 76: 11(fvec4) FAdd 75 74
+ Store 52(outv) 76
+ Line 1 33 0
+ 78: 77(ptr) AccessChain 56 18 18
+ 79: 7(int) Load 78
+ SelectionMerge 83 None
+ Switch 79 82
+ case 10: 80
+ case 20: 81
+ 82: Label
+ Line 1 42 0
+ 94: 11(fvec4) Load 52(outv)
+ 95: 11(fvec4) CompositeConstruct 28 28 28 28
+ 96: 11(fvec4) FSub 94 95
+ Store 52(outv) 96
+ Line 1 43 0
+ Branch 83
+ 80: Label
+ Line 1 35 0
+ 84: 11(fvec4) Load 52(outv)
+ 85: 11(fvec4) CompositeConstruct 28 28 28 28
+ 86: 11(fvec4) FAdd 84 85
+ Store 52(outv) 86
+ Line 1 36 0
+ Branch 83
+ 81: Label
+ Line 1 38 0
+ 88: 11(fvec4) Load 52(outv)
+ 89: 11(fvec4) VectorTimesScalar 88 45
+ Store 52(outv) 89
+ Line 1 39 0
+ 90: 11(fvec4) Load 52(outv)
+ 91: 11(fvec4) CompositeConstruct 28 28 28 28
+ 92: 11(fvec4) FAdd 90 91
+ Store 52(outv) 92
+ Line 1 40 0
+ Branch 83
+ 83: Label
+ Line 1 46 0
+ Store 99(i) 18
+ Branch 100
+ 100: Label
+ LoopMerge 102 103 None
+ Branch 104
+ 104: Label
+ 105: 7(int) Load 99(i)
+ 107: 37(bool) SLessThan 105 106
+ BranchConditional 107 101 102
+ 101: Label
+ Line 1 47 0
+ 108: 11(fvec4) Load 52(outv)
+ 109: 11(fvec4) VectorTimesScalar 108 36
+ Store 52(outv) 109
+ Branch 103
+ 103: Label
+ Line 1 46 0
+ 110: 7(int) Load 99(i)
+ 112: 7(int) IAdd 110 111
+ Store 99(i) 112
+ Branch 100
+ 102: Label
+ Line 1 49 0
+ 114: 113(ptr) AccessChain 52(outv) 32
+ 115: 10(float) Load 114
+ 117: 37(bool) FOrdLessThan 115 116
+ SelectionMerge 120 None
+ BranchConditional 117 119 123
+ 119: Label
+ Line 1 50 0
+ 121: 11(fvec4) Load 52(outv)
+ 122: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 121
+ Store 52(outv) 122
+ Store 118 122
+ Branch 120
+ 123: Label
+ Line 1 51 0
+ 124: 11(fvec4) Load 52(outv)
+ 125: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 124
+ Store 52(outv) 125
+ Store 118 125
+ Branch 120
+ 120: Label
+ Return
+ FunctionEnd
+14(foo(struct-S-i11;): 11(fvec4) Function None 12
+ 13(s): 9(ptr) FunctionParameter
+ 15: Label
+ 17(r): 16(ptr) Variable Function
+ Line 1 18 0
+ 20: 19(ptr) AccessChain 13(s) 18
+ 21: 7(int) Load 20
+ 22: 10(float) ConvertSToF 21
+ 25: 11(fvec4) Load 24(inv)
+ 26: 11(fvec4) VectorTimesScalar 25 22
+ Store 17(r) 26
+ Line 1 19 0
+ 27: 11(fvec4) Load 17(r)
+ 29: 11(fvec4) CompositeConstruct 28 28 28 28
+ 30: 11(fvec4) FAdd 27 29
+ Store 17(r) 30
+ Line 1 20 0
+ 34: 33(ptr) AccessChain 17(r) 32
+ 35: 10(float) Load 34
+ 38: 37(bool) FOrdGreaterThan 35 36
+ SelectionMerge 40 None
+ BranchConditional 38 39 44
+ 39: Label
+ Line 1 21 0
+ 41: 11(fvec4) Load 17(r)
+ 42: 11(fvec4) CompositeConstruct 28 28 28 28
+ 43: 11(fvec4) FSub 41 42
+ Store 17(r) 43
+ Branch 40
+ 44: Label
+ Line 1 23 0
+ 46: 11(fvec4) Load 17(r)
+ 47: 11(fvec4) VectorTimesScalar 46 45
+ Store 17(r) 47
+ Branch 40
+ 40: Label
+ Line 1 25 0
+ 48: 11(fvec4) Load 17(r)
+ ReturnValue 48
+ FunctionEnd
diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out
old mode 100755
new mode 100644
index 5180e52..a5467da
--- a/Test/baseResults/spv.deviceGroup.frag.out
+++ b/Test/baseResults/spv.deviceGroup.frag.out
@@ -1,11 +1,10 @@
spv.deviceGroup.frag
-// Module Version 10000
+// Module Version 10300
// Generated by (magic number): 80005
// Id's are bound by 17
Capability Shader
Capability DeviceGroup
- Extension "SPV_KHR_device_group"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 12
diff --git a/Test/baseResults/spv.drawParams.vert.out b/Test/baseResults/spv.drawParams.vert.out
old mode 100755
new mode 100644
index bb4b38e..e3e17fb
--- a/Test/baseResults/spv.drawParams.vert.out
+++ b/Test/baseResults/spv.drawParams.vert.out
@@ -1,11 +1,10 @@
spv.drawParams.vert
-// Module Version 10000
+// Module Version 10300
// Generated by (magic number): 80005
// Id's are bound by 29
Capability Shader
Capability DrawParameters
- Extension "SPV_KHR_shader_draw_parameters"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 10 13 16 21
diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out
new file mode 100755
index 0000000..c3c79a4
--- /dev/null
+++ b/Test/baseResults/spv.explicittypes.frag.out
@@ -0,0 +1,882 @@
+spv.explicittypes.frag
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 576
+
+ Capability Shader
+ Capability Float16
+ Capability Float64
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability StorageUniform16
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
+ Name 4 "main"
+ Name 6 "literal("
+ Name 8 "typeCast8("
+ Name 10 "typeCast16("
+ Name 12 "typeCast32("
+ Name 14 "typeCast64("
+ Name 18 "i64"
+ Name 26 "Uniforms"
+ MemberName 26(Uniforms) 0 "index"
+ Name 28 ""
+ Name 35 "indexable"
+ Name 40 "u64"
+ Name 49 "indexable"
+ Name 53 "i32"
+ Name 62 "indexable"
+ Name 66 "u32"
+ Name 74 "indexable"
+ Name 79 "i16"
+ Name 88 "indexable"
+ Name 93 "u16"
+ Name 101 "indexable"
+ Name 106 "i8"
+ Name 115 "indexable"
+ Name 120 "u8"
+ Name 128 "indexable"
+ Name 133 "u8v"
+ Name 136 "i8v"
+ Name 141 "i16v"
+ Name 149 "i32v"
+ Name 157 "u32v"
+ Name 163 "i64v"
+ Name 168 "u64v"
+ Name 182 "f16v"
+ Name 188 "f32v"
+ Name 194 "f64v"
+ Name 222 "u16v"
+ Name 252 "bv"
+ Name 268 "i32v"
+ Name 269 "i16v"
+ Name 272 "u16v"
+ Name 278 "u32v"
+ Name 282 "i64v"
+ Name 285 "u64v"
+ Name 296 "f16v"
+ Name 299 "f32v"
+ Name 302 "f64v"
+ Name 347 "i8v"
+ Name 353 "u8v"
+ Name 363 "bv"
+ Name 380 "u32v"
+ Name 381 "i32v"
+ Name 384 "i64v"
+ Name 387 "u64v"
+ Name 396 "f32v"
+ Name 399 "f64v"
+ Name 406 "i8v"
+ Name 412 "i16v"
+ Name 429 "u8v"
+ Name 435 "u16v"
+ Name 452 "f16v"
+ Name 465 "bv"
+ Name 481 "u64v"
+ Name 482 "i64v"
+ Name 485 "f64v"
+ Name 490 "i8v"
+ Name 496 "i16v"
+ Name 502 "i32v"
+ Name 510 "u8v"
+ Name 516 "u16v"
+ Name 522 "u32v"
+ Name 534 "f16v"
+ Name 537 "f32v"
+ Name 548 "bv"
+ Name 573 "Block"
+ MemberName 573(Block) 0 "i16"
+ MemberName 573(Block) 1 "i16v2"
+ MemberName 573(Block) 2 "i16v3"
+ MemberName 573(Block) 3 "i16v4"
+ MemberName 573(Block) 4 "u16"
+ MemberName 573(Block) 5 "u16v2"
+ MemberName 573(Block) 6 "u16v3"
+ MemberName 573(Block) 7 "u16v4"
+ MemberName 573(Block) 8 "i32"
+ MemberName 573(Block) 9 "i32v2"
+ MemberName 573(Block) 10 "i32v3"
+ MemberName 573(Block) 11 "i32v4"
+ MemberName 573(Block) 12 "u32"
+ MemberName 573(Block) 13 "u32v2"
+ MemberName 573(Block) 14 "u32v3"
+ MemberName 573(Block) 15 "u32v4"
+ Name 575 "block"
+ MemberDecorate 26(Uniforms) 0 Offset 0
+ Decorate 26(Uniforms) Block
+ Decorate 28 DescriptorSet 0
+ Decorate 28 Binding 0
+ MemberDecorate 573(Block) 0 Offset 0
+ MemberDecorate 573(Block) 1 Offset 4
+ MemberDecorate 573(Block) 2 Offset 8
+ MemberDecorate 573(Block) 3 Offset 16
+ MemberDecorate 573(Block) 4 Offset 24
+ MemberDecorate 573(Block) 5 Offset 28
+ MemberDecorate 573(Block) 6 Offset 32
+ MemberDecorate 573(Block) 7 Offset 40
+ MemberDecorate 573(Block) 8 Offset 48
+ MemberDecorate 573(Block) 9 Offset 56
+ MemberDecorate 573(Block) 10 Offset 64
+ MemberDecorate 573(Block) 11 Offset 80
+ MemberDecorate 573(Block) 12 Offset 96
+ MemberDecorate 573(Block) 13 Offset 104
+ MemberDecorate 573(Block) 14 Offset 112
+ MemberDecorate 573(Block) 15 Offset 128
+ Decorate 573(Block) Block
+ Decorate 575(block) DescriptorSet 0
+ Decorate 575(block) Binding 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 16: TypeInt 64 1
+ 17: TypePointer Function 16(int)
+ 19: TypeInt 32 0
+ 20: 19(int) Constant 3
+ 21: TypeArray 16(int) 20
+ 22: 16(int) Constant 4008636143 4008636142
+ 23: 16(int) Constant 4294967295 4294967295
+ 24: 16(int) Constant 0 1
+ 25: 21 ConstantComposite 22 23 24
+ 26(Uniforms): TypeStruct 19(int)
+ 27: TypePointer Uniform 26(Uniforms)
+ 28: 27(ptr) Variable Uniform
+ 29: TypeInt 32 1
+ 30: 29(int) Constant 0
+ 31: TypePointer Uniform 19(int)
+ 34: TypePointer Function 21
+ 38: TypeInt 64 0
+ 39: TypePointer Function 38(int)
+ 41: TypeArray 38(int) 20
+ 42: 38(int) Constant 4294967295 4294967295
+ 43: 38(int) Constant 0 1
+ 44: 38(int) Constant 4294967295 1
+ 45: 41 ConstantComposite 42 43 44
+ 48: TypePointer Function 41
+ 52: TypePointer Function 29(int)
+ 54: TypeArray 29(int) 20
+ 55: 29(int) Constant 4008636143
+ 56: 29(int) Constant 4294967295
+ 57: 29(int) Constant 536870912
+ 58: 54 ConstantComposite 55 56 57
+ 61: TypePointer Function 54
+ 65: TypePointer Function 19(int)
+ 67: TypeArray 19(int) 20
+ 68: 19(int) Constant 4294967295
+ 69: 19(int) Constant 2147483647
+ 70: 67 ConstantComposite 68 68 69
+ 73: TypePointer Function 67
+ 77: TypeInt 16 1
+ 78: TypePointer Function 77(int)
+ 80: TypeArray 77(int) 20
+ 81: 77(int) Constant 4294962927
+ 82: 77(int) Constant 4294967295
+ 83: 77(int) Constant 16384
+ 84: 80 ConstantComposite 81 82 83
+ 87: TypePointer Function 80
+ 91: TypeInt 16 0
+ 92: TypePointer Function 91(int)
+ 94: TypeArray 91(int) 20
+ 95: 91(int) Constant 65535
+ 96: 91(int) Constant 32767
+ 97: 94 ConstantComposite 95 95 96
+ 100: TypePointer Function 94
+ 104: TypeInt 8 1
+ 105: TypePointer Function 104(int)
+ 107: TypeArray 104(int) 20
+ 108: 104(int) Constant 4294967279
+ 109: 104(int) Constant 4294967295
+ 110: 104(int) Constant 0
+ 111: 107 ConstantComposite 108 109 110
+ 114: TypePointer Function 107
+ 118: TypeInt 8 0
+ 119: TypePointer Function 118(int)
+ 121: TypeArray 118(int) 20
+ 122: 118(int) Constant 255
+ 123: 118(int) Constant 127
+ 124: 121 ConstantComposite 122 122 123
+ 127: TypePointer Function 121
+ 131: TypeVector 118(int) 2
+ 132: TypePointer Function 131(ivec2)
+ 134: TypeVector 104(int) 2
+ 135: TypePointer Function 134(ivec2)
+ 139: TypeVector 77(int) 2
+ 140: TypePointer Function 139(ivec2)
+ 147: TypeVector 29(int) 2
+ 148: TypePointer Function 147(ivec2)
+ 155: TypeVector 19(int) 2
+ 156: TypePointer Function 155(ivec2)
+ 161: TypeVector 16(int) 2
+ 162: TypePointer Function 161(ivec2)
+ 166: TypeVector 38(int) 2
+ 167: TypePointer Function 166(ivec2)
+ 179: TypeFloat 16
+ 180: TypeVector 179(float) 2
+ 181: TypePointer Function 180(fvec2)
+ 185: TypeFloat 32
+ 186: TypeVector 185(float) 2
+ 187: TypePointer Function 186(fvec2)
+ 191: TypeFloat 64
+ 192: TypeVector 191(float) 2
+ 193: TypePointer Function 192(fvec2)
+ 220: TypeVector 91(int) 2
+ 221: TypePointer Function 220(ivec2)
+ 249: TypeBool
+ 250: TypeVector 249(bool) 2
+ 251: TypePointer Function 250(bvec2)
+ 254: 104(int) Constant 1
+ 255: 134(ivec2) ConstantComposite 110 110
+ 256: 134(ivec2) ConstantComposite 254 254
+ 259: 118(int) Constant 0
+ 260: 118(int) Constant 1
+ 261: 131(ivec2) ConstantComposite 259 259
+ 262: 131(ivec2) ConstantComposite 260 260
+ 365: 77(int) Constant 0
+ 366: 77(int) Constant 1
+ 367: 139(ivec2) ConstantComposite 365 365
+ 368: 139(ivec2) ConstantComposite 366 366
+ 371: 91(int) Constant 0
+ 372: 91(int) Constant 1
+ 373: 220(ivec2) ConstantComposite 371 371
+ 374: 220(ivec2) ConstantComposite 372 372
+ 467: 29(int) Constant 1
+ 468: 147(ivec2) ConstantComposite 30 30
+ 469: 147(ivec2) ConstantComposite 467 467
+ 472: 19(int) Constant 0
+ 473: 19(int) Constant 1
+ 474: 155(ivec2) ConstantComposite 472 472
+ 475: 155(ivec2) ConstantComposite 473 473
+ 550: 16(int) Constant 0 0
+ 551: 16(int) Constant 1 0
+ 552: 161(ivec2) ConstantComposite 550 550
+ 553: 161(ivec2) ConstantComposite 551 551
+ 556: 38(int) Constant 0 0
+ 557: 38(int) Constant 1 0
+ 558: 166(ivec2) ConstantComposite 556 556
+ 559: 166(ivec2) ConstantComposite 557 557
+ 565: TypeVector 77(int) 3
+ 566: TypeVector 77(int) 4
+ 567: TypeVector 91(int) 3
+ 568: TypeVector 91(int) 4
+ 569: TypeVector 29(int) 3
+ 570: TypeVector 29(int) 4
+ 571: TypeVector 19(int) 3
+ 572: TypeVector 19(int) 4
+ 573(Block): TypeStruct 77(int) 139(ivec2) 565(ivec3) 566(ivec4) 91(int) 220(ivec2) 567(ivec3) 568(ivec4) 29(int) 147(ivec2) 569(ivec3) 570(ivec4) 19(int) 155(ivec2) 571(ivec3) 572(ivec4)
+ 574: TypePointer Uniform 573(Block)
+ 575(block): 574(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ Return
+ FunctionEnd
+ 6(literal(): 2 Function None 3
+ 7: Label
+ 18(i64): 17(ptr) Variable Function
+ 35(indexable): 34(ptr) Variable Function
+ 40(u64): 39(ptr) Variable Function
+ 49(indexable): 48(ptr) Variable Function
+ 53(i32): 52(ptr) Variable Function
+ 62(indexable): 61(ptr) Variable Function
+ 66(u32): 65(ptr) Variable Function
+ 74(indexable): 73(ptr) Variable Function
+ 79(i16): 78(ptr) Variable Function
+ 88(indexable): 87(ptr) Variable Function
+ 93(u16): 92(ptr) Variable Function
+ 101(indexable): 100(ptr) Variable Function
+ 106(i8): 105(ptr) Variable Function
+ 115(indexable): 114(ptr) Variable Function
+ 120(u8): 119(ptr) Variable Function
+ 128(indexable): 127(ptr) Variable Function
+ 32: 31(ptr) AccessChain 28 30
+ 33: 19(int) Load 32
+ Store 35(indexable) 25
+ 36: 17(ptr) AccessChain 35(indexable) 33
+ 37: 16(int) Load 36
+ Store 18(i64) 37
+ 46: 31(ptr) AccessChain 28 30
+ 47: 19(int) Load 46
+ Store 49(indexable) 45
+ 50: 39(ptr) AccessChain 49(indexable) 47
+ 51: 38(int) Load 50
+ Store 40(u64) 51
+ 59: 31(ptr) AccessChain 28 30
+ 60: 19(int) Load 59
+ Store 62(indexable) 58
+ 63: 52(ptr) AccessChain 62(indexable) 60
+ 64: 29(int) Load 63
+ Store 53(i32) 64
+ 71: 31(ptr) AccessChain 28 30
+ 72: 19(int) Load 71
+ Store 74(indexable) 70
+ 75: 65(ptr) AccessChain 74(indexable) 72
+ 76: 19(int) Load 75
+ Store 66(u32) 76
+ 85: 31(ptr) AccessChain 28 30
+ 86: 19(int) Load 85
+ Store 88(indexable) 84
+ 89: 78(ptr) AccessChain 88(indexable) 86
+ 90: 77(int) Load 89
+ Store 79(i16) 90
+ 98: 31(ptr) AccessChain 28 30
+ 99: 19(int) Load 98
+ Store 101(indexable) 97
+ 102: 92(ptr) AccessChain 101(indexable) 99
+ 103: 91(int) Load 102
+ Store 93(u16) 103
+ 112: 31(ptr) AccessChain 28 30
+ 113: 19(int) Load 112
+ Store 115(indexable) 111
+ 116: 105(ptr) AccessChain 115(indexable) 113
+ 117: 104(int) Load 116
+ Store 106(i8) 117
+ 125: 31(ptr) AccessChain 28 30
+ 126: 19(int) Load 125
+ Store 128(indexable) 124
+ 129: 119(ptr) AccessChain 128(indexable) 126
+ 130: 118(int) Load 129
+ Store 120(u8) 130
+ Return
+ FunctionEnd
+ 8(typeCast8(): 2 Function None 3
+ 9: Label
+ 133(u8v): 132(ptr) Variable Function
+ 136(i8v): 135(ptr) Variable Function
+ 141(i16v): 140(ptr) Variable Function
+ 149(i32v): 148(ptr) Variable Function
+ 157(u32v): 156(ptr) Variable Function
+ 163(i64v): 162(ptr) Variable Function
+ 168(u64v): 167(ptr) Variable Function
+ 182(f16v): 181(ptr) Variable Function
+ 188(f32v): 187(ptr) Variable Function
+ 194(f64v): 193(ptr) Variable Function
+ 222(u16v): 221(ptr) Variable Function
+ 252(bv): 251(ptr) Variable Function
+ 137: 134(ivec2) Load 136(i8v)
+ 138: 131(ivec2) Bitcast 137
+ Store 133(u8v) 138
+ 142: 134(ivec2) Load 136(i8v)
+ 143: 139(ivec2) SConvert 142
+ Store 141(i16v) 143
+ 144: 131(ivec2) Load 133(u8v)
+ 145: 139(ivec2) UConvert 144
+ 146: 139(ivec2) Bitcast 145
+ Store 141(i16v) 146
+ 150: 134(ivec2) Load 136(i8v)
+ 151: 147(ivec2) SConvert 150
+ Store 149(i32v) 151
+ 152: 131(ivec2) Load 133(u8v)
+ 153: 147(ivec2) UConvert 152
+ 154: 147(ivec2) Bitcast 153
+ Store 149(i32v) 154
+ 158: 134(ivec2) Load 136(i8v)
+ 159: 147(ivec2) SConvert 158
+ 160: 155(ivec2) Bitcast 159
+ Store 157(u32v) 160
+ 164: 134(ivec2) Load 136(i8v)
+ 165: 161(ivec2) SConvert 164
+ Store 163(i64v) 165
+ 169: 134(ivec2) Load 136(i8v)
+ 170: 161(ivec2) SConvert 169
+ 171: 166(ivec2) Bitcast 170
+ Store 168(u64v) 171
+ 172: 131(ivec2) Load 133(u8v)
+ 173: 155(ivec2) UConvert 172
+ Store 157(u32v) 173
+ 174: 131(ivec2) Load 133(u8v)
+ 175: 161(ivec2) UConvert 174
+ 176: 161(ivec2) Bitcast 175
+ Store 163(i64v) 176
+ 177: 131(ivec2) Load 133(u8v)
+ 178: 166(ivec2) UConvert 177
+ Store 168(u64v) 178
+ 183: 134(ivec2) Load 136(i8v)
+ 184: 180(fvec2) ConvertSToF 183
+ Store 182(f16v) 184
+ 189: 134(ivec2) Load 136(i8v)
+ 190: 186(fvec2) ConvertSToF 189
+ Store 188(f32v) 190
+ 195: 134(ivec2) Load 136(i8v)
+ 196: 192(fvec2) ConvertSToF 195
+ Store 194(f64v) 196
+ 197: 131(ivec2) Load 133(u8v)
+ 198: 180(fvec2) ConvertUToF 197
+ Store 182(f16v) 198
+ 199: 131(ivec2) Load 133(u8v)
+ 200: 186(fvec2) ConvertUToF 199
+ Store 188(f32v) 200
+ 201: 131(ivec2) Load 133(u8v)
+ 202: 192(fvec2) ConvertUToF 201
+ Store 194(f64v) 202
+ 203: 131(ivec2) Load 133(u8v)
+ 204: 134(ivec2) Bitcast 203
+ Store 136(i8v) 204
+ 205: 134(ivec2) Load 136(i8v)
+ 206: 139(ivec2) SConvert 205
+ Store 141(i16v) 206
+ 207: 131(ivec2) Load 133(u8v)
+ 208: 139(ivec2) UConvert 207
+ 209: 139(ivec2) Bitcast 208
+ Store 141(i16v) 209
+ 210: 134(ivec2) Load 136(i8v)
+ 211: 147(ivec2) SConvert 210
+ Store 149(i32v) 211
+ 212: 131(ivec2) Load 133(u8v)
+ 213: 147(ivec2) UConvert 212
+ 214: 147(ivec2) Bitcast 213
+ Store 149(i32v) 214
+ 215: 134(ivec2) Load 136(i8v)
+ 216: 161(ivec2) SConvert 215
+ Store 163(i64v) 216
+ 217: 134(ivec2) Load 136(i8v)
+ 218: 161(ivec2) SConvert 217
+ 219: 166(ivec2) Bitcast 218
+ Store 168(u64v) 219
+ 223: 134(ivec2) Load 136(i8v)
+ 224: 139(ivec2) SConvert 223
+ 225: 220(ivec2) Bitcast 224
+ Store 222(u16v) 225
+ 226: 131(ivec2) Load 133(u8v)
+ 227: 220(ivec2) UConvert 226
+ Store 222(u16v) 227
+ 228: 131(ivec2) Load 133(u8v)
+ 229: 155(ivec2) UConvert 228
+ Store 157(u32v) 229
+ 230: 131(ivec2) Load 133(u8v)
+ 231: 161(ivec2) UConvert 230
+ 232: 161(ivec2) Bitcast 231
+ Store 163(i64v) 232
+ 233: 131(ivec2) Load 133(u8v)
+ 234: 161(ivec2) UConvert 233
+ 235: 161(ivec2) Bitcast 234
+ 236: 166(ivec2) Bitcast 235
+ Store 168(u64v) 236
+ 237: 134(ivec2) Load 136(i8v)
+ 238: 180(fvec2) ConvertSToF 237
+ Store 182(f16v) 238
+ 239: 134(ivec2) Load 136(i8v)
+ 240: 186(fvec2) ConvertSToF 239
+ Store 188(f32v) 240
+ 241: 134(ivec2) Load 136(i8v)
+ 242: 192(fvec2) ConvertSToF 241
+ Store 194(f64v) 242
+ 243: 131(ivec2) Load 133(u8v)
+ 244: 180(fvec2) ConvertUToF 243
+ Store 182(f16v) 244
+ 245: 131(ivec2) Load 133(u8v)
+ 246: 186(fvec2) ConvertUToF 245
+ Store 188(f32v) 246
+ 247: 131(ivec2) Load 133(u8v)
+ 248: 192(fvec2) ConvertUToF 247
+ Store 194(f64v) 248
+ 253: 250(bvec2) Load 252(bv)
+ 257: 134(ivec2) Select 253 256 255
+ Store 136(i8v) 257
+ 258: 250(bvec2) Load 252(bv)
+ 263: 131(ivec2) Select 258 262 261
+ Store 133(u8v) 263
+ 264: 134(ivec2) Load 136(i8v)
+ 265: 250(bvec2) INotEqual 264 261
+ Store 252(bv) 265
+ 266: 131(ivec2) Load 133(u8v)
+ 267: 250(bvec2) INotEqual 266 261
+ Store 252(bv) 267
+ Return
+ FunctionEnd
+ 10(typeCast16(): 2 Function None 3
+ 11: Label
+ 268(i32v): 148(ptr) Variable Function
+ 269(i16v): 140(ptr) Variable Function
+ 272(u16v): 221(ptr) Variable Function
+ 278(u32v): 156(ptr) Variable Function
+ 282(i64v): 162(ptr) Variable Function
+ 285(u64v): 167(ptr) Variable Function
+ 296(f16v): 181(ptr) Variable Function
+ 299(f32v): 187(ptr) Variable Function
+ 302(f64v): 193(ptr) Variable Function
+ 347(i8v): 135(ptr) Variable Function
+ 353(u8v): 132(ptr) Variable Function
+ 363(bv): 251(ptr) Variable Function
+ 270: 139(ivec2) Load 269(i16v)
+ 271: 147(ivec2) SConvert 270
+ Store 268(i32v) 271
+ 273: 220(ivec2) Load 272(u16v)
+ 274: 147(ivec2) UConvert 273
+ 275: 147(ivec2) Bitcast 274
+ Store 268(i32v) 275
+ 276: 139(ivec2) Load 269(i16v)
+ 277: 220(ivec2) Bitcast 276
+ Store 272(u16v) 277
+ 279: 139(ivec2) Load 269(i16v)
+ 280: 147(ivec2) SConvert 279
+ 281: 155(ivec2) Bitcast 280
+ Store 278(u32v) 281
+ 283: 139(ivec2) Load 269(i16v)
+ 284: 161(ivec2) SConvert 283
+ Store 282(i64v) 284
+ 286: 139(ivec2) Load 269(i16v)
+ 287: 161(ivec2) SConvert 286
+ 288: 166(ivec2) Bitcast 287
+ Store 285(u64v) 288
+ 289: 220(ivec2) Load 272(u16v)
+ 290: 155(ivec2) UConvert 289
+ Store 278(u32v) 290
+ 291: 220(ivec2) Load 272(u16v)
+ 292: 161(ivec2) UConvert 291
+ 293: 161(ivec2) Bitcast 292
+ Store 282(i64v) 293
+ 294: 220(ivec2) Load 272(u16v)
+ 295: 166(ivec2) UConvert 294
+ Store 285(u64v) 295
+ 297: 139(ivec2) Load 269(i16v)
+ 298: 180(fvec2) ConvertSToF 297
+ Store 296(f16v) 298
+ 300: 139(ivec2) Load 269(i16v)
+ 301: 186(fvec2) ConvertSToF 300
+ Store 299(f32v) 301
+ 303: 139(ivec2) Load 269(i16v)
+ 304: 192(fvec2) ConvertSToF 303
+ Store 302(f64v) 304
+ 305: 220(ivec2) Load 272(u16v)
+ 306: 180(fvec2) ConvertUToF 305
+ Store 296(f16v) 306
+ 307: 220(ivec2) Load 272(u16v)
+ 308: 186(fvec2) ConvertUToF 307
+ Store 299(f32v) 308
+ 309: 220(ivec2) Load 272(u16v)
+ 310: 192(fvec2) ConvertUToF 309
+ Store 302(f64v) 310
+ 311: 139(ivec2) Load 269(i16v)
+ 312: 147(ivec2) SConvert 311
+ Store 268(i32v) 312
+ 313: 220(ivec2) Load 272(u16v)
+ 314: 147(ivec2) UConvert 313
+ 315: 147(ivec2) Bitcast 314
+ Store 268(i32v) 315
+ 316: 139(ivec2) Load 269(i16v)
+ 317: 220(ivec2) Bitcast 316
+ Store 272(u16v) 317
+ 318: 139(ivec2) Load 269(i16v)
+ 319: 147(ivec2) SConvert 318
+ 320: 155(ivec2) Bitcast 319
+ Store 278(u32v) 320
+ 321: 139(ivec2) Load 269(i16v)
+ 322: 161(ivec2) SConvert 321
+ Store 282(i64v) 322
+ 323: 139(ivec2) Load 269(i16v)
+ 324: 161(ivec2) SConvert 323
+ 325: 166(ivec2) Bitcast 324
+ Store 285(u64v) 325
+ 326: 220(ivec2) Load 272(u16v)
+ 327: 155(ivec2) UConvert 326
+ Store 278(u32v) 327
+ 328: 220(ivec2) Load 272(u16v)
+ 329: 161(ivec2) UConvert 328
+ 330: 161(ivec2) Bitcast 329
+ Store 282(i64v) 330
+ 331: 220(ivec2) Load 272(u16v)
+ 332: 161(ivec2) UConvert 331
+ 333: 161(ivec2) Bitcast 332
+ 334: 166(ivec2) Bitcast 333
+ Store 285(u64v) 334
+ 335: 139(ivec2) Load 269(i16v)
+ 336: 180(fvec2) ConvertSToF 335
+ Store 296(f16v) 336
+ 337: 139(ivec2) Load 269(i16v)
+ 338: 186(fvec2) ConvertSToF 337
+ Store 299(f32v) 338
+ 339: 139(ivec2) Load 269(i16v)
+ 340: 192(fvec2) ConvertSToF 339
+ Store 302(f64v) 340
+ 341: 220(ivec2) Load 272(u16v)
+ 342: 180(fvec2) ConvertUToF 341
+ Store 296(f16v) 342
+ 343: 220(ivec2) Load 272(u16v)
+ 344: 186(fvec2) ConvertUToF 343
+ Store 299(f32v) 344
+ 345: 220(ivec2) Load 272(u16v)
+ 346: 192(fvec2) ConvertUToF 345
+ Store 302(f64v) 346
+ 348: 139(ivec2) Load 269(i16v)
+ 349: 134(ivec2) SConvert 348
+ Store 347(i8v) 349
+ 350: 220(ivec2) Load 272(u16v)
+ 351: 134(ivec2) UConvert 350
+ 352: 134(ivec2) Bitcast 351
+ Store 347(i8v) 352
+ 354: 139(ivec2) Load 269(i16v)
+ 355: 134(ivec2) SConvert 354
+ 356: 131(ivec2) Bitcast 355
+ Store 353(u8v) 356
+ 357: 220(ivec2) Load 272(u16v)
+ 358: 131(ivec2) UConvert 357
+ Store 353(u8v) 358
+ 359: 220(ivec2) Load 272(u16v)
+ 360: 131(ivec2) UConvert 359
+ 361: 139(ivec2) UConvert 360
+ 362: 139(ivec2) Bitcast 361
+ Store 269(i16v) 362
+ 364: 250(bvec2) Load 363(bv)
+ 369: 139(ivec2) Select 364 368 367
+ Store 269(i16v) 369
+ 370: 250(bvec2) Load 363(bv)
+ 375: 220(ivec2) Select 370 374 373
+ Store 272(u16v) 375
+ 376: 139(ivec2) Load 269(i16v)
+ 377: 250(bvec2) INotEqual 376 373
+ Store 363(bv) 377
+ 378: 220(ivec2) Load 272(u16v)
+ 379: 250(bvec2) INotEqual 378 373
+ Store 363(bv) 379
+ Return
+ FunctionEnd
+ 12(typeCast32(): 2 Function None 3
+ 13: Label
+ 380(u32v): 156(ptr) Variable Function
+ 381(i32v): 148(ptr) Variable Function
+ 384(i64v): 162(ptr) Variable Function
+ 387(u64v): 167(ptr) Variable Function
+ 396(f32v): 187(ptr) Variable Function
+ 399(f64v): 193(ptr) Variable Function
+ 406(i8v): 135(ptr) Variable Function
+ 412(i16v): 140(ptr) Variable Function
+ 429(u8v): 132(ptr) Variable Function
+ 435(u16v): 221(ptr) Variable Function
+ 452(f16v): 181(ptr) Variable Function
+ 465(bv): 251(ptr) Variable Function
+ 382: 147(ivec2) Load 381(i32v)
+ 383: 155(ivec2) Bitcast 382
+ Store 380(u32v) 383
+ 385: 147(ivec2) Load 381(i32v)
+ 386: 161(ivec2) SConvert 385
+ Store 384(i64v) 386
+ 388: 147(ivec2) Load 381(i32v)
+ 389: 161(ivec2) SConvert 388
+ 390: 166(ivec2) Bitcast 389
+ Store 387(u64v) 390
+ 391: 155(ivec2) Load 380(u32v)
+ 392: 161(ivec2) UConvert 391
+ 393: 161(ivec2) Bitcast 392
+ Store 384(i64v) 393
+ 394: 155(ivec2) Load 380(u32v)
+ 395: 166(ivec2) UConvert 394
+ Store 387(u64v) 395
+ 397: 147(ivec2) Load 381(i32v)
+ 398: 186(fvec2) ConvertSToF 397
+ Store 396(f32v) 398
+ 400: 147(ivec2) Load 381(i32v)
+ 401: 192(fvec2) ConvertSToF 400
+ Store 399(f64v) 401
+ 402: 155(ivec2) Load 380(u32v)
+ 403: 186(fvec2) ConvertUToF 402
+ Store 396(f32v) 403
+ 404: 155(ivec2) Load 380(u32v)
+ 405: 192(fvec2) ConvertUToF 404
+ Store 399(f64v) 405
+ 407: 147(ivec2) Load 381(i32v)
+ 408: 134(ivec2) SConvert 407
+ Store 406(i8v) 408
+ 409: 155(ivec2) Load 380(u32v)
+ 410: 134(ivec2) UConvert 409
+ 411: 134(ivec2) Bitcast 410
+ Store 406(i8v) 411
+ 413: 147(ivec2) Load 381(i32v)
+ 414: 139(ivec2) SConvert 413
+ Store 412(i16v) 414
+ 415: 155(ivec2) Load 380(u32v)
+ 416: 139(ivec2) UConvert 415
+ 417: 139(ivec2) Bitcast 416
+ Store 412(i16v) 417
+ 418: 147(ivec2) Load 381(i32v)
+ 419: 29(int) CompositeExtract 418 0
+ 420: 29(int) CompositeExtract 418 1
+ 421: 147(ivec2) CompositeConstruct 419 420
+ Store 381(i32v) 421
+ 422: 155(ivec2) Load 380(u32v)
+ 423: 147(ivec2) Bitcast 422
+ Store 381(i32v) 423
+ 424: 147(ivec2) Load 381(i32v)
+ 425: 161(ivec2) SConvert 424
+ Store 384(i64v) 425
+ 426: 155(ivec2) Load 380(u32v)
+ 427: 161(ivec2) UConvert 426
+ 428: 161(ivec2) Bitcast 427
+ Store 384(i64v) 428
+ 430: 147(ivec2) Load 381(i32v)
+ 431: 134(ivec2) SConvert 430
+ 432: 131(ivec2) Bitcast 431
+ Store 429(u8v) 432
+ 433: 155(ivec2) Load 380(u32v)
+ 434: 131(ivec2) UConvert 433
+ Store 429(u8v) 434
+ 436: 147(ivec2) Load 381(i32v)
+ 437: 139(ivec2) SConvert 436
+ 438: 220(ivec2) Bitcast 437
+ Store 435(u16v) 438
+ 439: 155(ivec2) Load 380(u32v)
+ 440: 220(ivec2) UConvert 439
+ Store 435(u16v) 440
+ 441: 147(ivec2) Load 381(i32v)
+ 442: 155(ivec2) Bitcast 441
+ Store 380(u32v) 442
+ 443: 155(ivec2) Load 380(u32v)
+ 444: 19(int) CompositeExtract 443 0
+ 445: 19(int) CompositeExtract 443 1
+ 446: 155(ivec2) CompositeConstruct 444 445
+ Store 380(u32v) 446
+ 447: 147(ivec2) Load 381(i32v)
+ 448: 161(ivec2) SConvert 447
+ 449: 166(ivec2) Bitcast 448
+ Store 387(u64v) 449
+ 450: 155(ivec2) Load 380(u32v)
+ 451: 166(ivec2) UConvert 450
+ Store 387(u64v) 451
+ 453: 147(ivec2) Load 381(i32v)
+ 454: 180(fvec2) ConvertSToF 453
+ Store 452(f16v) 454
+ 455: 147(ivec2) Load 381(i32v)
+ 456: 186(fvec2) ConvertSToF 455
+ Store 396(f32v) 456
+ 457: 147(ivec2) Load 381(i32v)
+ 458: 192(fvec2) ConvertSToF 457
+ Store 399(f64v) 458
+ 459: 155(ivec2) Load 380(u32v)
+ 460: 180(fvec2) ConvertUToF 459
+ Store 452(f16v) 460
+ 461: 155(ivec2) Load 380(u32v)
+ 462: 186(fvec2) ConvertUToF 461
+ Store 396(f32v) 462
+ 463: 155(ivec2) Load 380(u32v)
+ 464: 192(fvec2) ConvertUToF 463
+ Store 399(f64v) 464
+ 466: 250(bvec2) Load 465(bv)
+ 470: 147(ivec2) Select 466 469 468
+ Store 381(i32v) 470
+ 471: 250(bvec2) Load 465(bv)
+ 476: 155(ivec2) Select 471 475 474
+ Store 380(u32v) 476
+ 477: 147(ivec2) Load 381(i32v)
+ 478: 250(bvec2) INotEqual 477 474
+ Store 465(bv) 478
+ 479: 155(ivec2) Load 380(u32v)
+ 480: 250(bvec2) INotEqual 479 474
+ Store 465(bv) 480
+ Return
+ FunctionEnd
+ 14(typeCast64(): 2 Function None 3
+ 15: Label
+ 481(u64v): 167(ptr) Variable Function
+ 482(i64v): 162(ptr) Variable Function
+ 485(f64v): 193(ptr) Variable Function
+ 490(i8v): 135(ptr) Variable Function
+ 496(i16v): 140(ptr) Variable Function
+ 502(i32v): 148(ptr) Variable Function
+ 510(u8v): 132(ptr) Variable Function
+ 516(u16v): 221(ptr) Variable Function
+ 522(u32v): 156(ptr) Variable Function
+ 534(f16v): 181(ptr) Variable Function
+ 537(f32v): 187(ptr) Variable Function
+ 548(bv): 251(ptr) Variable Function
+ 483: 161(ivec2) Load 482(i64v)
+ 484: 166(ivec2) Bitcast 483
+ Store 481(u64v) 484
+ 486: 161(ivec2) Load 482(i64v)
+ 487: 192(fvec2) ConvertSToF 486
+ Store 485(f64v) 487
+ 488: 166(ivec2) Load 481(u64v)
+ 489: 192(fvec2) ConvertUToF 488
+ Store 485(f64v) 489
+ 491: 161(ivec2) Load 482(i64v)
+ 492: 134(ivec2) SConvert 491
+ Store 490(i8v) 492
+ 493: 166(ivec2) Load 481(u64v)
+ 494: 134(ivec2) UConvert 493
+ 495: 134(ivec2) Bitcast 494
+ Store 490(i8v) 495
+ 497: 161(ivec2) Load 482(i64v)
+ 498: 139(ivec2) SConvert 497
+ Store 496(i16v) 498
+ 499: 166(ivec2) Load 481(u64v)
+ 500: 139(ivec2) UConvert 499
+ 501: 139(ivec2) Bitcast 500
+ Store 496(i16v) 501
+ 503: 161(ivec2) Load 482(i64v)
+ 504: 147(ivec2) SConvert 503
+ Store 502(i32v) 504
+ 505: 166(ivec2) Load 481(u64v)
+ 506: 147(ivec2) UConvert 505
+ 507: 147(ivec2) Bitcast 506
+ Store 502(i32v) 507
+ 508: 166(ivec2) Load 481(u64v)
+ 509: 161(ivec2) Bitcast 508
+ Store 482(i64v) 509
+ 511: 161(ivec2) Load 482(i64v)
+ 512: 134(ivec2) SConvert 511
+ 513: 131(ivec2) Bitcast 512
+ Store 510(u8v) 513
+ 514: 166(ivec2) Load 481(u64v)
+ 515: 131(ivec2) UConvert 514
+ Store 510(u8v) 515
+ 517: 161(ivec2) Load 482(i64v)
+ 518: 139(ivec2) SConvert 517
+ 519: 220(ivec2) Bitcast 518
+ Store 516(u16v) 519
+ 520: 166(ivec2) Load 481(u64v)
+ 521: 220(ivec2) UConvert 520
+ Store 516(u16v) 521
+ 523: 161(ivec2) Load 482(i64v)
+ 524: 147(ivec2) SConvert 523
+ 525: 155(ivec2) Bitcast 524
+ Store 522(u32v) 525
+ 526: 166(ivec2) Load 481(u64v)
+ 527: 155(ivec2) UConvert 526
+ Store 522(u32v) 527
+ 528: 161(ivec2) Load 482(i64v)
+ 529: 166(ivec2) Bitcast 528
+ Store 481(u64v) 529
+ 530: 166(ivec2) Load 481(u64v)
+ 531: 38(int) CompositeExtract 530 0
+ 532: 38(int) CompositeExtract 530 1
+ 533: 166(ivec2) CompositeConstruct 531 532
+ Store 481(u64v) 533
+ 535: 161(ivec2) Load 482(i64v)
+ 536: 180(fvec2) ConvertSToF 535
+ Store 534(f16v) 536
+ 538: 161(ivec2) Load 482(i64v)
+ 539: 186(fvec2) ConvertSToF 538
+ Store 537(f32v) 539
+ 540: 161(ivec2) Load 482(i64v)
+ 541: 192(fvec2) ConvertSToF 540
+ Store 485(f64v) 541
+ 542: 166(ivec2) Load 481(u64v)
+ 543: 180(fvec2) ConvertUToF 542
+ Store 534(f16v) 543
+ 544: 166(ivec2) Load 481(u64v)
+ 545: 186(fvec2) ConvertUToF 544
+ Store 537(f32v) 545
+ 546: 166(ivec2) Load 481(u64v)
+ 547: 192(fvec2) ConvertUToF 546
+ Store 485(f64v) 547
+ 549: 250(bvec2) Load 548(bv)
+ 554: 161(ivec2) Select 549 553 552
+ Store 482(i64v) 554
+ 555: 250(bvec2) Load 548(bv)
+ 560: 166(ivec2) Select 555 559 558
+ Store 481(u64v) 560
+ 561: 161(ivec2) Load 482(i64v)
+ 562: 250(bvec2) INotEqual 561 558
+ Store 548(bv) 562
+ 563: 166(ivec2) Load 481(u64v)
+ 564: 250(bvec2) INotEqual 563 558
+ Store 548(bv) 564
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out
new file mode 100644
index 0000000..fc9d3d9
--- /dev/null
+++ b/Test/baseResults/spv.float32.frag.out
@@ -0,0 +1,800 @@
+spv.float32.frag
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 530
+
+ Capability Shader
+ Capability Float16
+ Capability Float64
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability DerivativeControl
+ Capability InterpolationFunction
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 468
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
+ Name 4 "main"
+ Name 6 "literal("
+ Name 8 "operators("
+ Name 10 "typeCast("
+ Name 12 "builtinAngleTrigFuncs("
+ Name 14 "builtinExpFuncs("
+ Name 16 "builtinCommonFuncs("
+ Name 18 "builtinGeometryFuncs("
+ Name 20 "builtinMatrixFuncs("
+ Name 22 "builtinVecRelFuncs("
+ Name 24 "builtinFragProcFuncs("
+ Name 29 "f32v"
+ Name 40 "f32v"
+ Name 62 "f32m"
+ Name 85 "f32"
+ Name 109 "b"
+ Name 152 "f64v"
+ Name 155 "f32v"
+ Name 160 "bv"
+ Name 175 "f16v"
+ Name 183 "i8v"
+ Name 189 "i16v"
+ Name 195 "i32v"
+ Name 201 "i64v"
+ Name 204 "u8v"
+ Name 210 "u16v"
+ Name 215 "u32v"
+ Name 221 "u64v"
+ Name 226 "f32v2"
+ Name 227 "f32v1"
+ Name 259 "f32v2"
+ Name 260 "f32v1"
+ Name 276 "f32v2"
+ Name 277 "f32v1"
+ Name 298 "f32"
+ Name 302 "f32v3"
+ Name 342 "bv"
+ Name 363 "b"
+ Name 373 "iv"
+ Name 374 "ResType"
+ Name 381 "f32"
+ Name 382 "f32v1"
+ Name 386 "f32v2"
+ Name 392 "f32v3"
+ Name 411 "f32m3"
+ Name 412 "f32m1"
+ Name 414 "f32m2"
+ Name 423 "f32v1"
+ Name 425 "f32v2"
+ Name 430 "f32m4"
+ Name 433 "f32"
+ Name 436 "f32m5"
+ Name 441 "f32m6"
+ Name 442 "f32m7"
+ Name 445 "bv"
+ Name 446 "f32v1"
+ Name 448 "f32v2"
+ Name 466 "f32v"
+ Name 468 "if32v"
+ Name 517 "S"
+ MemberName 517(S) 0 "x"
+ MemberName 517(S) 1 "y"
+ MemberName 517(S) 2 "z"
+ Name 519 "B1"
+ MemberName 519(B1) 0 "a"
+ MemberName 519(B1) 1 "b"
+ MemberName 519(B1) 2 "c"
+ MemberName 519(B1) 3 "d"
+ MemberName 519(B1) 4 "e"
+ MemberName 519(B1) 5 "f"
+ MemberName 519(B1) 6 "g"
+ MemberName 519(B1) 7 "h"
+ Name 521 ""
+ Name 522 "sf16"
+ Name 523 "sf"
+ Name 524 "sd"
+ Decorate 515 ArrayStride 16
+ Decorate 516 ArrayStride 32
+ MemberDecorate 517(S) 0 Offset 0
+ MemberDecorate 517(S) 1 Offset 8
+ MemberDecorate 517(S) 2 Offset 16
+ Decorate 518 ArrayStride 32
+ MemberDecorate 519(B1) 0 Offset 0
+ MemberDecorate 519(B1) 1 Offset 8
+ MemberDecorate 519(B1) 2 Offset 16
+ MemberDecorate 519(B1) 3 Offset 32
+ MemberDecorate 519(B1) 4 ColMajor
+ MemberDecorate 519(B1) 4 Offset 64
+ MemberDecorate 519(B1) 4 MatrixStride 16
+ MemberDecorate 519(B1) 5 ColMajor
+ MemberDecorate 519(B1) 5 Offset 96
+ MemberDecorate 519(B1) 5 MatrixStride 16
+ MemberDecorate 519(B1) 6 Offset 160
+ MemberDecorate 519(B1) 7 Offset 192
+ Decorate 519(B1) Block
+ Decorate 521 DescriptorSet 0
+ Decorate 522(sf16) SpecId 100
+ Decorate 523(sf) SpecId 101
+ Decorate 524(sd) SpecId 102
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 26: TypeFloat 32
+ 27: TypeVector 26(float) 2
+ 28: TypePointer Function 27(fvec2)
+ 30: 26(float) Constant 897988541
+ 31: TypeInt 32 0
+ 32: 31(int) Constant 0
+ 33: TypePointer Function 26(float)
+ 35: 26(float) Constant 3196059648
+ 36: 26(float) Constant 1022739087
+ 37: 27(fvec2) ConstantComposite 35 36
+ 54: 26(float) Constant 1065353216
+ 60: TypeMatrix 27(fvec2) 2
+ 61: TypePointer Function 60
+ 88: 31(int) Constant 1
+ 107: TypeBool
+ 108: TypePointer Function 107(bool)
+ 149: TypeFloat 64
+ 150: TypeVector 149(float) 3
+ 151: TypePointer Function 150(fvec3)
+ 153: TypeVector 26(float) 3
+ 154: TypePointer Function 153(fvec3)
+ 158: TypeVector 107(bool) 3
+ 159: TypePointer Function 158(bvec3)
+ 162: 26(float) Constant 0
+ 163: 153(fvec3) ConstantComposite 162 162 162
+ 164: 153(fvec3) ConstantComposite 54 54 54
+ 172: TypeFloat 16
+ 173: TypeVector 172(float) 3
+ 174: TypePointer Function 173(fvec3)
+ 180: TypeInt 8 1
+ 181: TypeVector 180(int) 3
+ 182: TypePointer Function 181(ivec3)
+ 186: TypeInt 16 1
+ 187: TypeVector 186(int) 3
+ 188: TypePointer Function 187(ivec3)
+ 192: TypeInt 32 1
+ 193: TypeVector 192(int) 3
+ 194: TypePointer Function 193(ivec3)
+ 198: TypeInt 64 1
+ 199: TypeVector 198(int) 3
+ 200: TypePointer Function 199(ivec3)
+ 207: TypeInt 16 0
+ 208: TypeVector 207(int) 3
+ 209: TypePointer Function 208(ivec3)
+ 213: TypeVector 31(int) 3
+ 214: TypePointer Function 213(ivec3)
+ 218: TypeInt 64 0
+ 219: TypeVector 218(int) 3
+ 220: TypePointer Function 219(ivec3)
+ 224: TypeVector 26(float) 4
+ 225: TypePointer Function 224(fvec4)
+ 374(ResType): TypeStruct 153(fvec3) 193(ivec3)
+ 409: TypeMatrix 153(fvec3) 2
+ 410: TypePointer Function 409
+ 428: TypeMatrix 27(fvec2) 3
+ 429: TypePointer Function 428
+ 434: TypeMatrix 153(fvec3) 3
+ 435: TypePointer Function 434
+ 439: TypeMatrix 224(fvec4) 4
+ 440: TypePointer Function 439
+ 467: TypePointer Input 153(fvec3)
+ 468(if32v): 467(ptr) Variable Input
+ 469: TypePointer Input 26(float)
+ 506: 192(int) Constant 1
+ 511: 26(float) Constant 1056964608
+ 512: 27(fvec2) ConstantComposite 511 511
+ 514: 31(int) Constant 2
+ 515: TypeArray 26(float) 514
+ 516: TypeArray 409 514
+ 517(S): TypeStruct 26(float) 27(fvec2) 153(fvec3)
+ 518: TypeArray 517(S) 514
+ 519(B1): TypeStruct 26(float) 27(fvec2) 153(fvec3) 515 409 516 517(S) 518
+ 520: TypePointer Uniform 519(B1)
+ 521: 520(ptr) Variable Uniform
+ 522(sf16): 172(float) SpecConstant 12288
+ 523(sf): 26(float) SpecConstant 1048576000
+ 524(sd): 149(float) SpecConstant 0 1071644672
+ 525: 26(float) SpecConstantOp 115 522(sf16)
+ 526: 26(float) SpecConstantOp 115 522(sf16)
+ 527: 149(float) SpecConstantOp 115 526
+ 528: 172(float) SpecConstantOp 115 523(sf)
+ 529: 172(float) SpecConstantOp 115 524(sd)
+ 4(main): 2 Function None 3
+ 5: Label
+ Return
+ FunctionEnd
+ 6(literal(): 2 Function None 3
+ 7: Label
+ 29(f32v): 28(ptr) Variable Function
+ 34: 33(ptr) AccessChain 29(f32v) 32
+ Store 34 30
+ 38: 27(fvec2) Load 29(f32v)
+ 39: 27(fvec2) FAdd 38 37
+ Store 29(f32v) 39
+ Return
+ FunctionEnd
+ 8(operators(): 2 Function None 3
+ 9: Label
+ 40(f32v): 28(ptr) Variable Function
+ 62(f32m): 61(ptr) Variable Function
+ 85(f32): 33(ptr) Variable Function
+ 109(b): 108(ptr) Variable Function
+ 41: 27(fvec2) Load 40(f32v)
+ 42: 27(fvec2) Load 40(f32v)
+ 43: 27(fvec2) FAdd 42 41
+ Store 40(f32v) 43
+ 44: 27(fvec2) Load 40(f32v)
+ 45: 27(fvec2) Load 40(f32v)
+ 46: 27(fvec2) FSub 45 44
+ Store 40(f32v) 46
+ 47: 27(fvec2) Load 40(f32v)
+ 48: 27(fvec2) Load 40(f32v)
+ 49: 27(fvec2) FMul 48 47
+ Store 40(f32v) 49
+ 50: 27(fvec2) Load 40(f32v)
+ 51: 27(fvec2) Load 40(f32v)
+ 52: 27(fvec2) FDiv 51 50
+ Store 40(f32v) 52
+ 53: 27(fvec2) Load 40(f32v)
+ 55: 27(fvec2) CompositeConstruct 54 54
+ 56: 27(fvec2) FAdd 53 55
+ Store 40(f32v) 56
+ 57: 27(fvec2) Load 40(f32v)
+ 58: 27(fvec2) CompositeConstruct 54 54
+ 59: 27(fvec2) FSub 57 58
+ Store 40(f32v) 59
+ 63: 60 Load 62(f32m)
+ 64: 27(fvec2) CompositeConstruct 54 54
+ 65: 27(fvec2) CompositeExtract 63 0
+ 66: 27(fvec2) FAdd 65 64
+ 67: 27(fvec2) CompositeExtract 63 1
+ 68: 27(fvec2) FAdd 67 64
+ 69: 60 CompositeConstruct 66 68
+ Store 62(f32m) 69
+ 70: 60 Load 62(f32m)
+ 71: 27(fvec2) CompositeConstruct 54 54
+ 72: 27(fvec2) CompositeExtract 70 0
+ 73: 27(fvec2) FSub 72 71
+ 74: 27(fvec2) CompositeExtract 70 1
+ 75: 27(fvec2) FSub 74 71
+ 76: 60 CompositeConstruct 73 75
+ Store 62(f32m) 76
+ 77: 27(fvec2) Load 40(f32v)
+ 78: 27(fvec2) FNegate 77
+ Store 40(f32v) 78
+ 79: 60 Load 62(f32m)
+ 80: 27(fvec2) CompositeExtract 79 0
+ 81: 27(fvec2) FNegate 80
+ 82: 27(fvec2) CompositeExtract 79 1
+ 83: 27(fvec2) FNegate 82
+ 84: 60 CompositeConstruct 81 83
+ Store 62(f32m) 84
+ 86: 33(ptr) AccessChain 40(f32v) 32
+ 87: 26(float) Load 86
+ 89: 33(ptr) AccessChain 40(f32v) 88
+ 90: 26(float) Load 89
+ 91: 26(float) FAdd 87 90
+ Store 85(f32) 91
+ 92: 33(ptr) AccessChain 40(f32v) 32
+ 93: 26(float) Load 92
+ 94: 33(ptr) AccessChain 40(f32v) 88
+ 95: 26(float) Load 94
+ 96: 26(float) FSub 93 95
+ Store 85(f32) 96
+ 97: 33(ptr) AccessChain 40(f32v) 32
+ 98: 26(float) Load 97
+ 99: 33(ptr) AccessChain 40(f32v) 88
+ 100: 26(float) Load 99
+ 101: 26(float) FMul 98 100
+ Store 85(f32) 101
+ 102: 33(ptr) AccessChain 40(f32v) 32
+ 103: 26(float) Load 102
+ 104: 33(ptr) AccessChain 40(f32v) 88
+ 105: 26(float) Load 104
+ 106: 26(float) FDiv 103 105
+ Store 85(f32) 106
+ 110: 33(ptr) AccessChain 40(f32v) 32
+ 111: 26(float) Load 110
+ 112: 26(float) Load 85(f32)
+ 113: 107(bool) FOrdNotEqual 111 112
+ Store 109(b) 113
+ 114: 33(ptr) AccessChain 40(f32v) 88
+ 115: 26(float) Load 114
+ 116: 26(float) Load 85(f32)
+ 117: 107(bool) FOrdEqual 115 116
+ Store 109(b) 117
+ 118: 33(ptr) AccessChain 40(f32v) 32
+ 119: 26(float) Load 118
+ 120: 26(float) Load 85(f32)
+ 121: 107(bool) FOrdGreaterThan 119 120
+ Store 109(b) 121
+ 122: 33(ptr) AccessChain 40(f32v) 88
+ 123: 26(float) Load 122
+ 124: 26(float) Load 85(f32)
+ 125: 107(bool) FOrdLessThan 123 124
+ Store 109(b) 125
+ 126: 33(ptr) AccessChain 40(f32v) 32
+ 127: 26(float) Load 126
+ 128: 26(float) Load 85(f32)
+ 129: 107(bool) FOrdGreaterThanEqual 127 128
+ Store 109(b) 129
+ 130: 33(ptr) AccessChain 40(f32v) 88
+ 131: 26(float) Load 130
+ 132: 26(float) Load 85(f32)
+ 133: 107(bool) FOrdLessThanEqual 131 132
+ Store 109(b) 133
+ 134: 27(fvec2) Load 40(f32v)
+ 135: 26(float) Load 85(f32)
+ 136: 27(fvec2) VectorTimesScalar 134 135
+ Store 40(f32v) 136
+ 137: 60 Load 62(f32m)
+ 138: 26(float) Load 85(f32)
+ 139: 60 MatrixTimesScalar 137 138
+ Store 62(f32m) 139
+ 140: 60 Load 62(f32m)
+ 141: 27(fvec2) Load 40(f32v)
+ 142: 27(fvec2) MatrixTimesVector 140 141
+ Store 40(f32v) 142
+ 143: 27(fvec2) Load 40(f32v)
+ 144: 60 Load 62(f32m)
+ 145: 27(fvec2) VectorTimesMatrix 143 144
+ Store 40(f32v) 145
+ 146: 60 Load 62(f32m)
+ 147: 60 Load 62(f32m)
+ 148: 60 MatrixTimesMatrix 146 147
+ Store 62(f32m) 148
+ Return
+ FunctionEnd
+ 10(typeCast(): 2 Function None 3
+ 11: Label
+ 152(f64v): 151(ptr) Variable Function
+ 155(f32v): 154(ptr) Variable Function
+ 160(bv): 159(ptr) Variable Function
+ 175(f16v): 174(ptr) Variable Function
+ 183(i8v): 182(ptr) Variable Function
+ 189(i16v): 188(ptr) Variable Function
+ 195(i32v): 194(ptr) Variable Function
+ 201(i64v): 200(ptr) Variable Function
+ 204(u8v): 182(ptr) Variable Function
+ 210(u16v): 209(ptr) Variable Function
+ 215(u32v): 214(ptr) Variable Function
+ 221(u64v): 220(ptr) Variable Function
+ 156: 153(fvec3) Load 155(f32v)
+ 157: 150(fvec3) FConvert 156
+ Store 152(f64v) 157
+ 161: 158(bvec3) Load 160(bv)
+ 165: 153(fvec3) Select 161 164 163
+ Store 155(f32v) 165
+ 166: 153(fvec3) Load 155(f32v)
+ 167: 158(bvec3) FOrdNotEqual 166 163
+ Store 160(bv) 167
+ 168: 150(fvec3) Load 152(f64v)
+ 169: 153(fvec3) FConvert 168
+ Store 155(f32v) 169
+ 170: 153(fvec3) Load 155(f32v)
+ 171: 150(fvec3) FConvert 170
+ Store 152(f64v) 171
+ 176: 173(fvec3) Load 175(f16v)
+ 177: 153(fvec3) FConvert 176
+ Store 155(f32v) 177
+ 178: 153(fvec3) Load 155(f32v)
+ 179: 173(fvec3) FConvert 178
+ Store 175(f16v) 179
+ 184: 153(fvec3) Load 155(f32v)
+ 185: 181(ivec3) ConvertFToS 184
+ Store 183(i8v) 185
+ 190: 153(fvec3) Load 155(f32v)
+ 191: 187(ivec3) ConvertFToS 190
+ Store 189(i16v) 191
+ 196: 153(fvec3) Load 155(f32v)
+ 197: 193(ivec3) ConvertFToS 196
+ Store 195(i32v) 197
+ 202: 153(fvec3) Load 155(f32v)
+ 203: 199(ivec3) ConvertFToS 202
+ Store 201(i64v) 203
+ 205: 153(fvec3) Load 155(f32v)
+ 206: 181(ivec3) ConvertFToS 205
+ Store 204(u8v) 206
+ 211: 153(fvec3) Load 155(f32v)
+ 212: 208(ivec3) ConvertFToU 211
+ Store 210(u16v) 212
+ 216: 153(fvec3) Load 155(f32v)
+ 217: 213(ivec3) ConvertFToU 216
+ Store 215(u32v) 217
+ 222: 153(fvec3) Load 155(f32v)
+ 223: 219(ivec3) ConvertFToU 222
+ Store 221(u64v) 223
+ Return
+ FunctionEnd
+12(builtinAngleTrigFuncs(): 2 Function None 3
+ 13: Label
+ 226(f32v2): 225(ptr) Variable Function
+ 227(f32v1): 225(ptr) Variable Function
+ 228: 224(fvec4) Load 227(f32v1)
+ 229: 224(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 228
+ Store 226(f32v2) 229
+ 230: 224(fvec4) Load 227(f32v1)
+ 231: 224(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 230
+ Store 226(f32v2) 231
+ 232: 224(fvec4) Load 227(f32v1)
+ 233: 224(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 232
+ Store 226(f32v2) 233
+ 234: 224(fvec4) Load 227(f32v1)
+ 235: 224(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 234
+ Store 226(f32v2) 235
+ 236: 224(fvec4) Load 227(f32v1)
+ 237: 224(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 236
+ Store 226(f32v2) 237
+ 238: 224(fvec4) Load 227(f32v1)
+ 239: 224(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 238
+ Store 226(f32v2) 239
+ 240: 224(fvec4) Load 227(f32v1)
+ 241: 224(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 240
+ Store 226(f32v2) 241
+ 242: 224(fvec4) Load 227(f32v1)
+ 243: 224(fvec4) Load 226(f32v2)
+ 244: 224(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 242 243
+ Store 226(f32v2) 244
+ 245: 224(fvec4) Load 227(f32v1)
+ 246: 224(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 245
+ Store 226(f32v2) 246
+ 247: 224(fvec4) Load 227(f32v1)
+ 248: 224(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 247
+ Store 226(f32v2) 248
+ 249: 224(fvec4) Load 227(f32v1)
+ 250: 224(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 249
+ Store 226(f32v2) 250
+ 251: 224(fvec4) Load 227(f32v1)
+ 252: 224(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 251
+ Store 226(f32v2) 252
+ 253: 224(fvec4) Load 227(f32v1)
+ 254: 224(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 253
+ Store 226(f32v2) 254
+ 255: 224(fvec4) Load 227(f32v1)
+ 256: 224(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 255
+ Store 226(f32v2) 256
+ 257: 224(fvec4) Load 227(f32v1)
+ 258: 224(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 257
+ Store 226(f32v2) 258
+ Return
+ FunctionEnd
+14(builtinExpFuncs(): 2 Function None 3
+ 15: Label
+ 259(f32v2): 28(ptr) Variable Function
+ 260(f32v1): 28(ptr) Variable Function
+ 261: 27(fvec2) Load 260(f32v1)
+ 262: 27(fvec2) Load 259(f32v2)
+ 263: 27(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 261 262
+ Store 259(f32v2) 263
+ 264: 27(fvec2) Load 260(f32v1)
+ 265: 27(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 264
+ Store 259(f32v2) 265
+ 266: 27(fvec2) Load 260(f32v1)
+ 267: 27(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 266
+ Store 259(f32v2) 267
+ 268: 27(fvec2) Load 260(f32v1)
+ 269: 27(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 268
+ Store 259(f32v2) 269
+ 270: 27(fvec2) Load 260(f32v1)
+ 271: 27(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 270
+ Store 259(f32v2) 271
+ 272: 27(fvec2) Load 260(f32v1)
+ 273: 27(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 272
+ Store 259(f32v2) 273
+ 274: 27(fvec2) Load 260(f32v1)
+ 275: 27(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 274
+ Store 259(f32v2) 275
+ Return
+ FunctionEnd
+16(builtinCommonFuncs(): 2 Function None 3
+ 17: Label
+ 276(f32v2): 154(ptr) Variable Function
+ 277(f32v1): 154(ptr) Variable Function
+ 298(f32): 33(ptr) Variable Function
+ 302(f32v3): 154(ptr) Variable Function
+ 342(bv): 159(ptr) Variable Function
+ 363(b): 108(ptr) Variable Function
+ 373(iv): 194(ptr) Variable Function
+ 278: 153(fvec3) Load 277(f32v1)
+ 279: 153(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 278
+ Store 276(f32v2) 279
+ 280: 153(fvec3) Load 277(f32v1)
+ 281: 153(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 280
+ Store 276(f32v2) 281
+ 282: 153(fvec3) Load 277(f32v1)
+ 283: 153(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 282
+ Store 276(f32v2) 283
+ 284: 153(fvec3) Load 277(f32v1)
+ 285: 153(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 284
+ Store 276(f32v2) 285
+ 286: 153(fvec3) Load 277(f32v1)
+ 287: 153(fvec3) ExtInst 1(GLSL.std.450) 1(Round) 286
+ Store 276(f32v2) 287
+ 288: 153(fvec3) Load 277(f32v1)
+ 289: 153(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 288
+ Store 276(f32v2) 289
+ 290: 153(fvec3) Load 277(f32v1)
+ 291: 153(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 290
+ Store 276(f32v2) 291
+ 292: 153(fvec3) Load 277(f32v1)
+ 293: 153(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 292
+ Store 276(f32v2) 293
+ 294: 153(fvec3) Load 277(f32v1)
+ 295: 153(fvec3) Load 276(f32v2)
+ 296: 153(fvec3) FMod 294 295
+ Store 276(f32v2) 296
+ 297: 153(fvec3) Load 277(f32v1)
+ 299: 26(float) Load 298(f32)
+ 300: 153(fvec3) CompositeConstruct 299 299 299
+ 301: 153(fvec3) FMod 297 300
+ Store 276(f32v2) 301
+ 303: 153(fvec3) Load 277(f32v1)
+ 304: 153(fvec3) ExtInst 1(GLSL.std.450) 35(Modf) 303 276(f32v2)
+ Store 302(f32v3) 304
+ 305: 153(fvec3) Load 277(f32v1)
+ 306: 153(fvec3) Load 276(f32v2)
+ 307: 153(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 305 306
+ Store 302(f32v3) 307
+ 308: 153(fvec3) Load 277(f32v1)
+ 309: 26(float) Load 298(f32)
+ 310: 153(fvec3) CompositeConstruct 309 309 309
+ 311: 153(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 308 310
+ Store 302(f32v3) 311
+ 312: 153(fvec3) Load 277(f32v1)
+ 313: 153(fvec3) Load 276(f32v2)
+ 314: 153(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 312 313
+ Store 302(f32v3) 314
+ 315: 153(fvec3) Load 277(f32v1)
+ 316: 26(float) Load 298(f32)
+ 317: 153(fvec3) CompositeConstruct 316 316 316
+ 318: 153(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 315 317
+ Store 302(f32v3) 318
+ 319: 153(fvec3) Load 277(f32v1)
+ 320: 26(float) Load 298(f32)
+ 321: 33(ptr) AccessChain 276(f32v2) 32
+ 322: 26(float) Load 321
+ 323: 153(fvec3) CompositeConstruct 320 320 320
+ 324: 153(fvec3) CompositeConstruct 322 322 322
+ 325: 153(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 319 323 324
+ Store 302(f32v3) 325
+ 326: 153(fvec3) Load 277(f32v1)
+ 327: 153(fvec3) Load 276(f32v2)
+ 328: 26(float) Load 298(f32)
+ 329: 153(fvec3) CompositeConstruct 328 328 328
+ 330: 153(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 326 327 329
+ Store 302(f32v3) 330
+ 331: 153(fvec3) Load 277(f32v1)
+ 332: 153(fvec3) Load 276(f32v2)
+ 333: 26(float) Load 298(f32)
+ 334: 153(fvec3) CompositeConstruct 333 333 333
+ 335: 153(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 331 332 334
+ Store 302(f32v3) 335
+ 336: 153(fvec3) Load 277(f32v1)
+ 337: 153(fvec3) Load 276(f32v2)
+ 338: 153(fvec3) Load 302(f32v3)
+ 339: 153(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 336 337 338
+ Store 302(f32v3) 339
+ 340: 153(fvec3) Load 277(f32v1)
+ 341: 153(fvec3) Load 276(f32v2)
+ 343: 158(bvec3) Load 342(bv)
+ 344: 153(fvec3) Select 343 341 340
+ Store 302(f32v3) 344
+ 345: 153(fvec3) Load 277(f32v1)
+ 346: 153(fvec3) Load 276(f32v2)
+ 347: 153(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 345 346
+ Store 302(f32v3) 347
+ 348: 26(float) Load 298(f32)
+ 349: 153(fvec3) Load 302(f32v3)
+ 350: 153(fvec3) CompositeConstruct 348 348 348
+ 351: 153(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 350 349
+ Store 302(f32v3) 351
+ 352: 153(fvec3) Load 277(f32v1)
+ 353: 153(fvec3) Load 276(f32v2)
+ 354: 153(fvec3) Load 302(f32v3)
+ 355: 153(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 352 353 354
+ Store 302(f32v3) 355
+ 356: 26(float) Load 298(f32)
+ 357: 33(ptr) AccessChain 277(f32v1) 32
+ 358: 26(float) Load 357
+ 359: 153(fvec3) Load 276(f32v2)
+ 360: 153(fvec3) CompositeConstruct 356 356 356
+ 361: 153(fvec3) CompositeConstruct 358 358 358
+ 362: 153(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 360 361 359
+ Store 302(f32v3) 362
+ 364: 26(float) Load 298(f32)
+ 365: 107(bool) IsNan 364
+ Store 363(b) 365
+ 366: 153(fvec3) Load 277(f32v1)
+ 367: 158(bvec3) IsInf 366
+ Store 342(bv) 367
+ 368: 153(fvec3) Load 277(f32v1)
+ 369: 153(fvec3) Load 276(f32v2)
+ 370: 153(fvec3) Load 302(f32v3)
+ 371: 153(fvec3) ExtInst 1(GLSL.std.450) 50(Fma) 368 369 370
+ Store 302(f32v3) 371
+ 372: 153(fvec3) Load 277(f32v1)
+ 375:374(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 372
+ 376: 193(ivec3) CompositeExtract 375 1
+ Store 373(iv) 376
+ 377: 153(fvec3) CompositeExtract 375 0
+ Store 276(f32v2) 377
+ 378: 153(fvec3) Load 277(f32v1)
+ 379: 193(ivec3) Load 373(iv)
+ 380: 153(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 378 379
+ Store 276(f32v2) 380
+ Return
+ FunctionEnd
+18(builtinGeometryFuncs(): 2 Function None 3
+ 19: Label
+ 381(f32): 33(ptr) Variable Function
+ 382(f32v1): 154(ptr) Variable Function
+ 386(f32v2): 154(ptr) Variable Function
+ 392(f32v3): 154(ptr) Variable Function
+ 383: 153(fvec3) Load 382(f32v1)
+ 384: 26(float) ExtInst 1(GLSL.std.450) 66(Length) 383
+ Store 381(f32) 384
+ 385: 153(fvec3) Load 382(f32v1)
+ 387: 153(fvec3) Load 386(f32v2)
+ 388: 26(float) ExtInst 1(GLSL.std.450) 67(Distance) 385 387
+ Store 381(f32) 388
+ 389: 153(fvec3) Load 382(f32v1)
+ 390: 153(fvec3) Load 386(f32v2)
+ 391: 26(float) Dot 389 390
+ Store 381(f32) 391
+ 393: 153(fvec3) Load 382(f32v1)
+ 394: 153(fvec3) Load 386(f32v2)
+ 395: 153(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 393 394
+ Store 392(f32v3) 395
+ 396: 153(fvec3) Load 382(f32v1)
+ 397: 153(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 396
+ Store 386(f32v2) 397
+ 398: 153(fvec3) Load 382(f32v1)
+ 399: 153(fvec3) Load 386(f32v2)
+ 400: 153(fvec3) Load 392(f32v3)
+ 401: 153(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 398 399 400
+ Store 392(f32v3) 401
+ 402: 153(fvec3) Load 382(f32v1)
+ 403: 153(fvec3) Load 386(f32v2)
+ 404: 153(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 402 403
+ Store 392(f32v3) 404
+ 405: 153(fvec3) Load 382(f32v1)
+ 406: 153(fvec3) Load 386(f32v2)
+ 407: 26(float) Load 381(f32)
+ 408: 153(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 405 406 407
+ Store 392(f32v3) 408
+ Return
+ FunctionEnd
+20(builtinMatrixFuncs(): 2 Function None 3
+ 21: Label
+ 411(f32m3): 410(ptr) Variable Function
+ 412(f32m1): 410(ptr) Variable Function
+ 414(f32m2): 410(ptr) Variable Function
+ 423(f32v1): 154(ptr) Variable Function
+ 425(f32v2): 28(ptr) Variable Function
+ 430(f32m4): 429(ptr) Variable Function
+ 433(f32): 33(ptr) Variable Function
+ 436(f32m5): 435(ptr) Variable Function
+ 441(f32m6): 440(ptr) Variable Function
+ 442(f32m7): 440(ptr) Variable Function
+ 413: 409 Load 412(f32m1)
+ 415: 409 Load 414(f32m2)
+ 416: 153(fvec3) CompositeExtract 413 0
+ 417: 153(fvec3) CompositeExtract 415 0
+ 418: 153(fvec3) FMul 416 417
+ 419: 153(fvec3) CompositeExtract 413 1
+ 420: 153(fvec3) CompositeExtract 415 1
+ 421: 153(fvec3) FMul 419 420
+ 422: 409 CompositeConstruct 418 421
+ Store 411(f32m3) 422
+ 424: 153(fvec3) Load 423(f32v1)
+ 426: 27(fvec2) Load 425(f32v2)
+ 427: 409 OuterProduct 424 426
+ Store 412(f32m1) 427
+ 431: 409 Load 412(f32m1)
+ 432: 428 Transpose 431
+ Store 430(f32m4) 432
+ 437: 434 Load 436(f32m5)
+ 438: 26(float) ExtInst 1(GLSL.std.450) 33(Determinant) 437
+ Store 433(f32) 438
+ 443: 439 Load 442(f32m7)
+ 444: 439 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 443
+ Store 441(f32m6) 444
+ Return
+ FunctionEnd
+22(builtinVecRelFuncs(): 2 Function None 3
+ 23: Label
+ 445(bv): 159(ptr) Variable Function
+ 446(f32v1): 154(ptr) Variable Function
+ 448(f32v2): 154(ptr) Variable Function
+ 447: 153(fvec3) Load 446(f32v1)
+ 449: 153(fvec3) Load 448(f32v2)
+ 450: 158(bvec3) FOrdLessThan 447 449
+ Store 445(bv) 450
+ 451: 153(fvec3) Load 446(f32v1)
+ 452: 153(fvec3) Load 448(f32v2)
+ 453: 158(bvec3) FOrdLessThanEqual 451 452
+ Store 445(bv) 453
+ 454: 153(fvec3) Load 446(f32v1)
+ 455: 153(fvec3) Load 448(f32v2)
+ 456: 158(bvec3) FOrdGreaterThan 454 455
+ Store 445(bv) 456
+ 457: 153(fvec3) Load 446(f32v1)
+ 458: 153(fvec3) Load 448(f32v2)
+ 459: 158(bvec3) FOrdGreaterThanEqual 457 458
+ Store 445(bv) 459
+ 460: 153(fvec3) Load 446(f32v1)
+ 461: 153(fvec3) Load 448(f32v2)
+ 462: 158(bvec3) FOrdEqual 460 461
+ Store 445(bv) 462
+ 463: 153(fvec3) Load 446(f32v1)
+ 464: 153(fvec3) Load 448(f32v2)
+ 465: 158(bvec3) FOrdNotEqual 463 464
+ Store 445(bv) 465
+ Return
+ FunctionEnd
+24(builtinFragProcFuncs(): 2 Function None 3
+ 25: Label
+ 466(f32v): 154(ptr) Variable Function
+ 470: 469(ptr) AccessChain 468(if32v) 32
+ 471: 26(float) Load 470
+ 472: 26(float) DPdx 471
+ 473: 33(ptr) AccessChain 466(f32v) 32
+ Store 473 472
+ 474: 469(ptr) AccessChain 468(if32v) 88
+ 475: 26(float) Load 474
+ 476: 26(float) DPdy 475
+ 477: 33(ptr) AccessChain 466(f32v) 88
+ Store 477 476
+ 478: 153(fvec3) Load 468(if32v)
+ 479: 27(fvec2) VectorShuffle 478 478 0 1
+ 480: 27(fvec2) DPdxFine 479
+ 481: 153(fvec3) Load 466(f32v)
+ 482: 153(fvec3) VectorShuffle 481 480 3 4 2
+ Store 466(f32v) 482
+ 483: 153(fvec3) Load 468(if32v)
+ 484: 27(fvec2) VectorShuffle 483 483 0 1
+ 485: 27(fvec2) DPdyFine 484
+ 486: 153(fvec3) Load 466(f32v)
+ 487: 153(fvec3) VectorShuffle 486 485 3 4 2
+ Store 466(f32v) 487
+ 488: 153(fvec3) Load 468(if32v)
+ 489: 153(fvec3) DPdxCoarse 488
+ Store 466(f32v) 489
+ 490: 153(fvec3) Load 468(if32v)
+ 491: 153(fvec3) DPdxCoarse 490
+ Store 466(f32v) 491
+ 492: 469(ptr) AccessChain 468(if32v) 32
+ 493: 26(float) Load 492
+ 494: 26(float) Fwidth 493
+ 495: 33(ptr) AccessChain 466(f32v) 32
+ Store 495 494
+ 496: 153(fvec3) Load 468(if32v)
+ 497: 27(fvec2) VectorShuffle 496 496 0 1
+ 498: 27(fvec2) FwidthFine 497
+ 499: 153(fvec3) Load 466(f32v)
+ 500: 153(fvec3) VectorShuffle 499 498 3 4 2
+ Store 466(f32v) 500
+ 501: 153(fvec3) Load 468(if32v)
+ 502: 153(fvec3) FwidthCoarse 501
+ Store 466(f32v) 502
+ 503: 469(ptr) AccessChain 468(if32v) 32
+ 504: 26(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 503
+ 505: 33(ptr) AccessChain 466(f32v) 32
+ Store 505 504
+ 507: 153(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 468(if32v) 506
+ 508: 27(fvec2) VectorShuffle 507 507 0 1
+ 509: 153(fvec3) Load 466(f32v)
+ 510: 153(fvec3) VectorShuffle 509 508 3 4 2
+ Store 466(f32v) 510
+ 513: 153(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 468(if32v) 512
+ Store 466(f32v) 513
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out
new file mode 100644
index 0000000..768de05
--- /dev/null
+++ b/Test/baseResults/spv.float64.frag.out
@@ -0,0 +1,788 @@
+spv.float64.frag
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 521
+
+ Capability Shader
+ Capability Float16
+ Capability Float64
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability DerivativeControl
+ Capability InterpolationFunction
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 458
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
+ Name 4 "main"
+ Name 6 "literal("
+ Name 8 "operators("
+ Name 10 "typeCast("
+ Name 12 "builtinAngleTrigFuncs("
+ Name 14 "builtinExpFuncs("
+ Name 16 "builtinCommonFuncs("
+ Name 18 "builtinGeometryFuncs("
+ Name 20 "builtinMatrixFuncs("
+ Name 22 "builtinVecRelFuncs("
+ Name 24 "builtinFragProcFuncs("
+ Name 29 "f64v"
+ Name 40 "f64v"
+ Name 62 "f64m"
+ Name 85 "f64"
+ Name 109 "b"
+ Name 151 "f64v"
+ Name 154 "bv"
+ Name 165 "f16v"
+ Name 173 "i8v"
+ Name 179 "i16v"
+ Name 185 "i32v"
+ Name 191 "i64v"
+ Name 194 "u8v"
+ Name 200 "u16v"
+ Name 205 "u32v"
+ Name 211 "u64v"
+ Name 216 "f64v2"
+ Name 217 "f64v1"
+ Name 249 "f64v2"
+ Name 250 "f64v1"
+ Name 266 "f64v2"
+ Name 267 "f64v1"
+ Name 288 "f64"
+ Name 292 "f64v3"
+ Name 332 "bv"
+ Name 353 "b"
+ Name 363 "iv"
+ Name 364 "ResType"
+ Name 371 "f64"
+ Name 372 "f64v1"
+ Name 376 "f64v2"
+ Name 382 "f64v3"
+ Name 401 "f64m3"
+ Name 402 "f64m1"
+ Name 404 "f64m2"
+ Name 413 "f64v1"
+ Name 415 "f64v2"
+ Name 420 "f64m4"
+ Name 423 "f64"
+ Name 426 "f64m5"
+ Name 431 "f64m6"
+ Name 432 "f64m7"
+ Name 435 "bv"
+ Name 436 "f64v1"
+ Name 438 "f64v2"
+ Name 456 "f64v"
+ Name 458 "if64v"
+ Name 507 "S"
+ MemberName 507(S) 0 "x"
+ MemberName 507(S) 1 "y"
+ MemberName 507(S) 2 "z"
+ Name 509 "B1"
+ MemberName 509(B1) 0 "a"
+ MemberName 509(B1) 1 "b"
+ MemberName 509(B1) 2 "c"
+ MemberName 509(B1) 3 "d"
+ MemberName 509(B1) 4 "e"
+ MemberName 509(B1) 5 "f"
+ MemberName 509(B1) 6 "g"
+ MemberName 509(B1) 7 "h"
+ Name 511 ""
+ Name 512 "sf16"
+ Name 514 "sf"
+ Name 515 "sd"
+ Decorate 458(if64v) Flat
+ Decorate 505 ArrayStride 16
+ Decorate 506 ArrayStride 64
+ MemberDecorate 507(S) 0 Offset 0
+ MemberDecorate 507(S) 1 Offset 16
+ MemberDecorate 507(S) 2 Offset 32
+ Decorate 508 ArrayStride 64
+ MemberDecorate 509(B1) 0 Offset 0
+ MemberDecorate 509(B1) 1 Offset 16
+ MemberDecorate 509(B1) 2 Offset 32
+ MemberDecorate 509(B1) 3 Offset 64
+ MemberDecorate 509(B1) 4 ColMajor
+ MemberDecorate 509(B1) 4 Offset 96
+ MemberDecorate 509(B1) 4 MatrixStride 32
+ MemberDecorate 509(B1) 5 ColMajor
+ MemberDecorate 509(B1) 5 Offset 160
+ MemberDecorate 509(B1) 5 MatrixStride 32
+ MemberDecorate 509(B1) 6 Offset 288
+ MemberDecorate 509(B1) 7 Offset 352
+ Decorate 509(B1) Block
+ Decorate 511 DescriptorSet 0
+ Decorate 512(sf16) SpecId 100
+ Decorate 514(sf) SpecId 101
+ Decorate 515(sd) SpecId 102
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 26: TypeFloat 64
+ 27: TypeVector 26(float) 2
+ 28: TypePointer Function 27(fvec2)
+ 30: 26(float) Constant 2696277389 1051772663
+ 31: TypeInt 32 0
+ 32: 31(int) Constant 0
+ 33: TypePointer Function 26(float)
+ 35: 26(float) Constant 0 3218079744
+ 36: 26(float) Constant 3951369912 1067366481
+ 37: 27(fvec2) ConstantComposite 35 36
+ 54: 26(float) Constant 0 1072693248
+ 60: TypeMatrix 27(fvec2) 2
+ 61: TypePointer Function 60
+ 88: 31(int) Constant 1
+ 107: TypeBool
+ 108: TypePointer Function 107(bool)
+ 149: TypeVector 26(float) 3
+ 150: TypePointer Function 149(fvec3)
+ 152: TypeVector 107(bool) 3
+ 153: TypePointer Function 152(bvec3)
+ 156: 26(float) Constant 0 0
+ 157: 149(fvec3) ConstantComposite 156 156 156
+ 158: 149(fvec3) ConstantComposite 54 54 54
+ 162: TypeFloat 16
+ 163: TypeVector 162(float) 3
+ 164: TypePointer Function 163(fvec3)
+ 170: TypeInt 8 1
+ 171: TypeVector 170(int) 3
+ 172: TypePointer Function 171(ivec3)
+ 176: TypeInt 16 1
+ 177: TypeVector 176(int) 3
+ 178: TypePointer Function 177(ivec3)
+ 182: TypeInt 32 1
+ 183: TypeVector 182(int) 3
+ 184: TypePointer Function 183(ivec3)
+ 188: TypeInt 64 1
+ 189: TypeVector 188(int) 3
+ 190: TypePointer Function 189(ivec3)
+ 197: TypeInt 16 0
+ 198: TypeVector 197(int) 3
+ 199: TypePointer Function 198(ivec3)
+ 203: TypeVector 31(int) 3
+ 204: TypePointer Function 203(ivec3)
+ 208: TypeInt 64 0
+ 209: TypeVector 208(int) 3
+ 210: TypePointer Function 209(ivec3)
+ 214: TypeVector 26(float) 4
+ 215: TypePointer Function 214(fvec4)
+ 364(ResType): TypeStruct 149(fvec3) 183(ivec3)
+ 399: TypeMatrix 149(fvec3) 2
+ 400: TypePointer Function 399
+ 418: TypeMatrix 27(fvec2) 3
+ 419: TypePointer Function 418
+ 424: TypeMatrix 149(fvec3) 3
+ 425: TypePointer Function 424
+ 429: TypeMatrix 214(fvec4) 4
+ 430: TypePointer Function 429
+ 457: TypePointer Input 149(fvec3)
+ 458(if64v): 457(ptr) Variable Input
+ 459: TypePointer Input 26(float)
+ 496: 182(int) Constant 1
+ 501: 26(float) Constant 0 1071644672
+ 502: 27(fvec2) ConstantComposite 501 501
+ 504: 31(int) Constant 2
+ 505: TypeArray 26(float) 504
+ 506: TypeArray 399 504
+ 507(S): TypeStruct 26(float) 27(fvec2) 149(fvec3)
+ 508: TypeArray 507(S) 504
+ 509(B1): TypeStruct 26(float) 27(fvec2) 149(fvec3) 505 399 506 507(S) 508
+ 510: TypePointer Uniform 509(B1)
+ 511: 510(ptr) Variable Uniform
+ 512(sf16): 162(float) SpecConstant 12288
+ 513: TypeFloat 32
+ 514(sf): 513(float) SpecConstant 1048576000
+ 515(sd): 26(float) SpecConstant 0 1071644672
+ 516: 513(float) SpecConstantOp 115 512(sf16)
+ 517: 513(float) SpecConstantOp 115 512(sf16)
+ 518: 26(float) SpecConstantOp 115 517
+ 519: 162(float) SpecConstantOp 115 514(sf)
+ 520: 162(float) SpecConstantOp 115 515(sd)
+ 4(main): 2 Function None 3
+ 5: Label
+ Return
+ FunctionEnd
+ 6(literal(): 2 Function None 3
+ 7: Label
+ 29(f64v): 28(ptr) Variable Function
+ 34: 33(ptr) AccessChain 29(f64v) 32
+ Store 34 30
+ 38: 27(fvec2) Load 29(f64v)
+ 39: 27(fvec2) FAdd 38 37
+ Store 29(f64v) 39
+ Return
+ FunctionEnd
+ 8(operators(): 2 Function None 3
+ 9: Label
+ 40(f64v): 28(ptr) Variable Function
+ 62(f64m): 61(ptr) Variable Function
+ 85(f64): 33(ptr) Variable Function
+ 109(b): 108(ptr) Variable Function
+ 41: 27(fvec2) Load 40(f64v)
+ 42: 27(fvec2) Load 40(f64v)
+ 43: 27(fvec2) FAdd 42 41
+ Store 40(f64v) 43
+ 44: 27(fvec2) Load 40(f64v)
+ 45: 27(fvec2) Load 40(f64v)
+ 46: 27(fvec2) FSub 45 44
+ Store 40(f64v) 46
+ 47: 27(fvec2) Load 40(f64v)
+ 48: 27(fvec2) Load 40(f64v)
+ 49: 27(fvec2) FMul 48 47
+ Store 40(f64v) 49
+ 50: 27(fvec2) Load 40(f64v)
+ 51: 27(fvec2) Load 40(f64v)
+ 52: 27(fvec2) FDiv 51 50
+ Store 40(f64v) 52
+ 53: 27(fvec2) Load 40(f64v)
+ 55: 27(fvec2) CompositeConstruct 54 54
+ 56: 27(fvec2) FAdd 53 55
+ Store 40(f64v) 56
+ 57: 27(fvec2) Load 40(f64v)
+ 58: 27(fvec2) CompositeConstruct 54 54
+ 59: 27(fvec2) FSub 57 58
+ Store 40(f64v) 59
+ 63: 60 Load 62(f64m)
+ 64: 27(fvec2) CompositeConstruct 54 54
+ 65: 27(fvec2) CompositeExtract 63 0
+ 66: 27(fvec2) FAdd 65 64
+ 67: 27(fvec2) CompositeExtract 63 1
+ 68: 27(fvec2) FAdd 67 64
+ 69: 60 CompositeConstruct 66 68
+ Store 62(f64m) 69
+ 70: 60 Load 62(f64m)
+ 71: 27(fvec2) CompositeConstruct 54 54
+ 72: 27(fvec2) CompositeExtract 70 0
+ 73: 27(fvec2) FSub 72 71
+ 74: 27(fvec2) CompositeExtract 70 1
+ 75: 27(fvec2) FSub 74 71
+ 76: 60 CompositeConstruct 73 75
+ Store 62(f64m) 76
+ 77: 27(fvec2) Load 40(f64v)
+ 78: 27(fvec2) FNegate 77
+ Store 40(f64v) 78
+ 79: 60 Load 62(f64m)
+ 80: 27(fvec2) CompositeExtract 79 0
+ 81: 27(fvec2) FNegate 80
+ 82: 27(fvec2) CompositeExtract 79 1
+ 83: 27(fvec2) FNegate 82
+ 84: 60 CompositeConstruct 81 83
+ Store 62(f64m) 84
+ 86: 33(ptr) AccessChain 40(f64v) 32
+ 87: 26(float) Load 86
+ 89: 33(ptr) AccessChain 40(f64v) 88
+ 90: 26(float) Load 89
+ 91: 26(float) FAdd 87 90
+ Store 85(f64) 91
+ 92: 33(ptr) AccessChain 40(f64v) 32
+ 93: 26(float) Load 92
+ 94: 33(ptr) AccessChain 40(f64v) 88
+ 95: 26(float) Load 94
+ 96: 26(float) FSub 93 95
+ Store 85(f64) 96
+ 97: 33(ptr) AccessChain 40(f64v) 32
+ 98: 26(float) Load 97
+ 99: 33(ptr) AccessChain 40(f64v) 88
+ 100: 26(float) Load 99
+ 101: 26(float) FMul 98 100
+ Store 85(f64) 101
+ 102: 33(ptr) AccessChain 40(f64v) 32
+ 103: 26(float) Load 102
+ 104: 33(ptr) AccessChain 40(f64v) 88
+ 105: 26(float) Load 104
+ 106: 26(float) FDiv 103 105
+ Store 85(f64) 106
+ 110: 33(ptr) AccessChain 40(f64v) 32
+ 111: 26(float) Load 110
+ 112: 26(float) Load 85(f64)
+ 113: 107(bool) FOrdNotEqual 111 112
+ Store 109(b) 113
+ 114: 33(ptr) AccessChain 40(f64v) 88
+ 115: 26(float) Load 114
+ 116: 26(float) Load 85(f64)
+ 117: 107(bool) FOrdEqual 115 116
+ Store 109(b) 117
+ 118: 33(ptr) AccessChain 40(f64v) 32
+ 119: 26(float) Load 118
+ 120: 26(float) Load 85(f64)
+ 121: 107(bool) FOrdGreaterThan 119 120
+ Store 109(b) 121
+ 122: 33(ptr) AccessChain 40(f64v) 88
+ 123: 26(float) Load 122
+ 124: 26(float) Load 85(f64)
+ 125: 107(bool) FOrdLessThan 123 124
+ Store 109(b) 125
+ 126: 33(ptr) AccessChain 40(f64v) 32
+ 127: 26(float) Load 126
+ 128: 26(float) Load 85(f64)
+ 129: 107(bool) FOrdGreaterThanEqual 127 128
+ Store 109(b) 129
+ 130: 33(ptr) AccessChain 40(f64v) 88
+ 131: 26(float) Load 130
+ 132: 26(float) Load 85(f64)
+ 133: 107(bool) FOrdLessThanEqual 131 132
+ Store 109(b) 133
+ 134: 27(fvec2) Load 40(f64v)
+ 135: 26(float) Load 85(f64)
+ 136: 27(fvec2) VectorTimesScalar 134 135
+ Store 40(f64v) 136
+ 137: 60 Load 62(f64m)
+ 138: 26(float) Load 85(f64)
+ 139: 60 MatrixTimesScalar 137 138
+ Store 62(f64m) 139
+ 140: 60 Load 62(f64m)
+ 141: 27(fvec2) Load 40(f64v)
+ 142: 27(fvec2) MatrixTimesVector 140 141
+ Store 40(f64v) 142
+ 143: 27(fvec2) Load 40(f64v)
+ 144: 60 Load 62(f64m)
+ 145: 27(fvec2) VectorTimesMatrix 143 144
+ Store 40(f64v) 145
+ 146: 60 Load 62(f64m)
+ 147: 60 Load 62(f64m)
+ 148: 60 MatrixTimesMatrix 146 147
+ Store 62(f64m) 148
+ Return
+ FunctionEnd
+ 10(typeCast(): 2 Function None 3
+ 11: Label
+ 151(f64v): 150(ptr) Variable Function
+ 154(bv): 153(ptr) Variable Function
+ 165(f16v): 164(ptr) Variable Function
+ 173(i8v): 172(ptr) Variable Function
+ 179(i16v): 178(ptr) Variable Function
+ 185(i32v): 184(ptr) Variable Function
+ 191(i64v): 190(ptr) Variable Function
+ 194(u8v): 172(ptr) Variable Function
+ 200(u16v): 199(ptr) Variable Function
+ 205(u32v): 204(ptr) Variable Function
+ 211(u64v): 210(ptr) Variable Function
+ 155: 152(bvec3) Load 154(bv)
+ 159: 149(fvec3) Select 155 158 157
+ Store 151(f64v) 159
+ 160: 149(fvec3) Load 151(f64v)
+ 161: 152(bvec3) FOrdNotEqual 160 157
+ Store 154(bv) 161
+ 166: 163(fvec3) Load 165(f16v)
+ 167: 149(fvec3) FConvert 166
+ Store 151(f64v) 167
+ 168: 149(fvec3) Load 151(f64v)
+ 169: 163(fvec3) FConvert 168
+ Store 165(f16v) 169
+ 174: 149(fvec3) Load 151(f64v)
+ 175: 171(ivec3) ConvertFToS 174
+ Store 173(i8v) 175
+ 180: 149(fvec3) Load 151(f64v)
+ 181: 177(ivec3) ConvertFToS 180
+ Store 179(i16v) 181
+ 186: 149(fvec3) Load 151(f64v)
+ 187: 183(ivec3) ConvertFToS 186
+ Store 185(i32v) 187
+ 192: 149(fvec3) Load 151(f64v)
+ 193: 189(ivec3) ConvertFToS 192
+ Store 191(i64v) 193
+ 195: 149(fvec3) Load 151(f64v)
+ 196: 171(ivec3) ConvertFToS 195
+ Store 194(u8v) 196
+ 201: 149(fvec3) Load 151(f64v)
+ 202: 198(ivec3) ConvertFToU 201
+ Store 200(u16v) 202
+ 206: 149(fvec3) Load 151(f64v)
+ 207: 203(ivec3) ConvertFToU 206
+ Store 205(u32v) 207
+ 212: 149(fvec3) Load 151(f64v)
+ 213: 209(ivec3) ConvertFToU 212
+ Store 211(u64v) 213
+ Return
+ FunctionEnd
+12(builtinAngleTrigFuncs(): 2 Function None 3
+ 13: Label
+ 216(f64v2): 215(ptr) Variable Function
+ 217(f64v1): 215(ptr) Variable Function
+ 218: 214(fvec4) Load 217(f64v1)
+ 219: 214(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 218
+ Store 216(f64v2) 219
+ 220: 214(fvec4) Load 217(f64v1)
+ 221: 214(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 220
+ Store 216(f64v2) 221
+ 222: 214(fvec4) Load 217(f64v1)
+ 223: 214(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 222
+ Store 216(f64v2) 223
+ 224: 214(fvec4) Load 217(f64v1)
+ 225: 214(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 224
+ Store 216(f64v2) 225
+ 226: 214(fvec4) Load 217(f64v1)
+ 227: 214(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 226
+ Store 216(f64v2) 227
+ 228: 214(fvec4) Load 217(f64v1)
+ 229: 214(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 228
+ Store 216(f64v2) 229
+ 230: 214(fvec4) Load 217(f64v1)
+ 231: 214(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 230
+ Store 216(f64v2) 231
+ 232: 214(fvec4) Load 217(f64v1)
+ 233: 214(fvec4) Load 216(f64v2)
+ 234: 214(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 232 233
+ Store 216(f64v2) 234
+ 235: 214(fvec4) Load 217(f64v1)
+ 236: 214(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 235
+ Store 216(f64v2) 236
+ 237: 214(fvec4) Load 217(f64v1)
+ 238: 214(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 237
+ Store 216(f64v2) 238
+ 239: 214(fvec4) Load 217(f64v1)
+ 240: 214(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 239
+ Store 216(f64v2) 240
+ 241: 214(fvec4) Load 217(f64v1)
+ 242: 214(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 241
+ Store 216(f64v2) 242
+ 243: 214(fvec4) Load 217(f64v1)
+ 244: 214(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 243
+ Store 216(f64v2) 244
+ 245: 214(fvec4) Load 217(f64v1)
+ 246: 214(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 245
+ Store 216(f64v2) 246
+ 247: 214(fvec4) Load 217(f64v1)
+ 248: 214(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 247
+ Store 216(f64v2) 248
+ Return
+ FunctionEnd
+14(builtinExpFuncs(): 2 Function None 3
+ 15: Label
+ 249(f64v2): 28(ptr) Variable Function
+ 250(f64v1): 28(ptr) Variable Function
+ 251: 27(fvec2) Load 250(f64v1)
+ 252: 27(fvec2) Load 249(f64v2)
+ 253: 27(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 251 252
+ Store 249(f64v2) 253
+ 254: 27(fvec2) Load 250(f64v1)
+ 255: 27(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 254
+ Store 249(f64v2) 255
+ 256: 27(fvec2) Load 250(f64v1)
+ 257: 27(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 256
+ Store 249(f64v2) 257
+ 258: 27(fvec2) Load 250(f64v1)
+ 259: 27(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 258
+ Store 249(f64v2) 259
+ 260: 27(fvec2) Load 250(f64v1)
+ 261: 27(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 260
+ Store 249(f64v2) 261
+ 262: 27(fvec2) Load 250(f64v1)
+ 263: 27(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 262
+ Store 249(f64v2) 263
+ 264: 27(fvec2) Load 250(f64v1)
+ 265: 27(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 264
+ Store 249(f64v2) 265
+ Return
+ FunctionEnd
+16(builtinCommonFuncs(): 2 Function None 3
+ 17: Label
+ 266(f64v2): 150(ptr) Variable Function
+ 267(f64v1): 150(ptr) Variable Function
+ 288(f64): 33(ptr) Variable Function
+ 292(f64v3): 150(ptr) Variable Function
+ 332(bv): 153(ptr) Variable Function
+ 353(b): 108(ptr) Variable Function
+ 363(iv): 184(ptr) Variable Function
+ 268: 149(fvec3) Load 267(f64v1)
+ 269: 149(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 268
+ Store 266(f64v2) 269
+ 270: 149(fvec3) Load 267(f64v1)
+ 271: 149(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 270
+ Store 266(f64v2) 271
+ 272: 149(fvec3) Load 267(f64v1)
+ 273: 149(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 272
+ Store 266(f64v2) 273
+ 274: 149(fvec3) Load 267(f64v1)
+ 275: 149(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 274
+ Store 266(f64v2) 275
+ 276: 149(fvec3) Load 267(f64v1)
+ 277: 149(fvec3) ExtInst 1(GLSL.std.450) 1(Round) 276
+ Store 266(f64v2) 277
+ 278: 149(fvec3) Load 267(f64v1)
+ 279: 149(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 278
+ Store 266(f64v2) 279
+ 280: 149(fvec3) Load 267(f64v1)
+ 281: 149(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 280
+ Store 266(f64v2) 281
+ 282: 149(fvec3) Load 267(f64v1)
+ 283: 149(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 282
+ Store 266(f64v2) 283
+ 284: 149(fvec3) Load 267(f64v1)
+ 285: 149(fvec3) Load 266(f64v2)
+ 286: 149(fvec3) FMod 284 285
+ Store 266(f64v2) 286
+ 287: 149(fvec3) Load 267(f64v1)
+ 289: 26(float) Load 288(f64)
+ 290: 149(fvec3) CompositeConstruct 289 289 289
+ 291: 149(fvec3) FMod 287 290
+ Store 266(f64v2) 291
+ 293: 149(fvec3) Load 267(f64v1)
+ 294: 149(fvec3) ExtInst 1(GLSL.std.450) 35(Modf) 293 266(f64v2)
+ Store 292(f64v3) 294
+ 295: 149(fvec3) Load 267(f64v1)
+ 296: 149(fvec3) Load 266(f64v2)
+ 297: 149(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 295 296
+ Store 292(f64v3) 297
+ 298: 149(fvec3) Load 267(f64v1)
+ 299: 26(float) Load 288(f64)
+ 300: 149(fvec3) CompositeConstruct 299 299 299
+ 301: 149(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 300
+ Store 292(f64v3) 301
+ 302: 149(fvec3) Load 267(f64v1)
+ 303: 149(fvec3) Load 266(f64v2)
+ 304: 149(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 302 303
+ Store 292(f64v3) 304
+ 305: 149(fvec3) Load 267(f64v1)
+ 306: 26(float) Load 288(f64)
+ 307: 149(fvec3) CompositeConstruct 306 306 306
+ 308: 149(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 307
+ Store 292(f64v3) 308
+ 309: 149(fvec3) Load 267(f64v1)
+ 310: 26(float) Load 288(f64)
+ 311: 33(ptr) AccessChain 266(f64v2) 32
+ 312: 26(float) Load 311
+ 313: 149(fvec3) CompositeConstruct 310 310 310
+ 314: 149(fvec3) CompositeConstruct 312 312 312
+ 315: 149(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 309 313 314
+ Store 292(f64v3) 315
+ 316: 149(fvec3) Load 267(f64v1)
+ 317: 149(fvec3) Load 266(f64v2)
+ 318: 26(float) Load 288(f64)
+ 319: 149(fvec3) CompositeConstruct 318 318 318
+ 320: 149(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 316 317 319
+ Store 292(f64v3) 320
+ 321: 149(fvec3) Load 267(f64v1)
+ 322: 149(fvec3) Load 266(f64v2)
+ 323: 26(float) Load 288(f64)
+ 324: 149(fvec3) CompositeConstruct 323 323 323
+ 325: 149(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 321 322 324
+ Store 292(f64v3) 325
+ 326: 149(fvec3) Load 267(f64v1)
+ 327: 149(fvec3) Load 266(f64v2)
+ 328: 149(fvec3) Load 292(f64v3)
+ 329: 149(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 326 327 328
+ Store 292(f64v3) 329
+ 330: 149(fvec3) Load 267(f64v1)
+ 331: 149(fvec3) Load 266(f64v2)
+ 333: 152(bvec3) Load 332(bv)
+ 334: 149(fvec3) Select 333 331 330
+ Store 292(f64v3) 334
+ 335: 149(fvec3) Load 267(f64v1)
+ 336: 149(fvec3) Load 266(f64v2)
+ 337: 149(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 335 336
+ Store 292(f64v3) 337
+ 338: 26(float) Load 288(f64)
+ 339: 149(fvec3) Load 292(f64v3)
+ 340: 149(fvec3) CompositeConstruct 338 338 338
+ 341: 149(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 340 339
+ Store 292(f64v3) 341
+ 342: 149(fvec3) Load 267(f64v1)
+ 343: 149(fvec3) Load 266(f64v2)
+ 344: 149(fvec3) Load 292(f64v3)
+ 345: 149(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 342 343 344
+ Store 292(f64v3) 345
+ 346: 26(float) Load 288(f64)
+ 347: 33(ptr) AccessChain 267(f64v1) 32
+ 348: 26(float) Load 347
+ 349: 149(fvec3) Load 266(f64v2)
+ 350: 149(fvec3) CompositeConstruct 346 346 346
+ 351: 149(fvec3) CompositeConstruct 348 348 348
+ 352: 149(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 350 351 349
+ Store 292(f64v3) 352
+ 354: 26(float) Load 288(f64)
+ 355: 107(bool) IsNan 354
+ Store 353(b) 355
+ 356: 149(fvec3) Load 267(f64v1)
+ 357: 152(bvec3) IsInf 356
+ Store 332(bv) 357
+ 358: 149(fvec3) Load 267(f64v1)
+ 359: 149(fvec3) Load 266(f64v2)
+ 360: 149(fvec3) Load 292(f64v3)
+ 361: 149(fvec3) ExtInst 1(GLSL.std.450) 50(Fma) 358 359 360
+ Store 292(f64v3) 361
+ 362: 149(fvec3) Load 267(f64v1)
+ 365:364(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 362
+ 366: 183(ivec3) CompositeExtract 365 1
+ Store 363(iv) 366
+ 367: 149(fvec3) CompositeExtract 365 0
+ Store 266(f64v2) 367
+ 368: 149(fvec3) Load 267(f64v1)
+ 369: 183(ivec3) Load 363(iv)
+ 370: 149(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 368 369
+ Store 266(f64v2) 370
+ Return
+ FunctionEnd
+18(builtinGeometryFuncs(): 2 Function None 3
+ 19: Label
+ 371(f64): 33(ptr) Variable Function
+ 372(f64v1): 150(ptr) Variable Function
+ 376(f64v2): 150(ptr) Variable Function
+ 382(f64v3): 150(ptr) Variable Function
+ 373: 149(fvec3) Load 372(f64v1)
+ 374: 26(float) ExtInst 1(GLSL.std.450) 66(Length) 373
+ Store 371(f64) 374
+ 375: 149(fvec3) Load 372(f64v1)
+ 377: 149(fvec3) Load 376(f64v2)
+ 378: 26(float) ExtInst 1(GLSL.std.450) 67(Distance) 375 377
+ Store 371(f64) 378
+ 379: 149(fvec3) Load 372(f64v1)
+ 380: 149(fvec3) Load 376(f64v2)
+ 381: 26(float) Dot 379 380
+ Store 371(f64) 381
+ 383: 149(fvec3) Load 372(f64v1)
+ 384: 149(fvec3) Load 376(f64v2)
+ 385: 149(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 383 384
+ Store 382(f64v3) 385
+ 386: 149(fvec3) Load 372(f64v1)
+ 387: 149(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 386
+ Store 376(f64v2) 387
+ 388: 149(fvec3) Load 372(f64v1)
+ 389: 149(fvec3) Load 376(f64v2)
+ 390: 149(fvec3) Load 382(f64v3)
+ 391: 149(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 388 389 390
+ Store 382(f64v3) 391
+ 392: 149(fvec3) Load 372(f64v1)
+ 393: 149(fvec3) Load 376(f64v2)
+ 394: 149(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 392 393
+ Store 382(f64v3) 394
+ 395: 149(fvec3) Load 372(f64v1)
+ 396: 149(fvec3) Load 376(f64v2)
+ 397: 26(float) Load 371(f64)
+ 398: 149(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 395 396 397
+ Store 382(f64v3) 398
+ Return
+ FunctionEnd
+20(builtinMatrixFuncs(): 2 Function None 3
+ 21: Label
+ 401(f64m3): 400(ptr) Variable Function
+ 402(f64m1): 400(ptr) Variable Function
+ 404(f64m2): 400(ptr) Variable Function
+ 413(f64v1): 150(ptr) Variable Function
+ 415(f64v2): 28(ptr) Variable Function
+ 420(f64m4): 419(ptr) Variable Function
+ 423(f64): 33(ptr) Variable Function
+ 426(f64m5): 425(ptr) Variable Function
+ 431(f64m6): 430(ptr) Variable Function
+ 432(f64m7): 430(ptr) Variable Function
+ 403: 399 Load 402(f64m1)
+ 405: 399 Load 404(f64m2)
+ 406: 149(fvec3) CompositeExtract 403 0
+ 407: 149(fvec3) CompositeExtract 405 0
+ 408: 149(fvec3) FMul 406 407
+ 409: 149(fvec3) CompositeExtract 403 1
+ 410: 149(fvec3) CompositeExtract 405 1
+ 411: 149(fvec3) FMul 409 410
+ 412: 399 CompositeConstruct 408 411
+ Store 401(f64m3) 412
+ 414: 149(fvec3) Load 413(f64v1)
+ 416: 27(fvec2) Load 415(f64v2)
+ 417: 399 OuterProduct 414 416
+ Store 402(f64m1) 417
+ 421: 399 Load 402(f64m1)
+ 422: 418 Transpose 421
+ Store 420(f64m4) 422
+ 427: 424 Load 426(f64m5)
+ 428: 26(float) ExtInst 1(GLSL.std.450) 33(Determinant) 427
+ Store 423(f64) 428
+ 433: 429 Load 432(f64m7)
+ 434: 429 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 433
+ Store 431(f64m6) 434
+ Return
+ FunctionEnd
+22(builtinVecRelFuncs(): 2 Function None 3
+ 23: Label
+ 435(bv): 153(ptr) Variable Function
+ 436(f64v1): 150(ptr) Variable Function
+ 438(f64v2): 150(ptr) Variable Function
+ 437: 149(fvec3) Load 436(f64v1)
+ 439: 149(fvec3) Load 438(f64v2)
+ 440: 152(bvec3) FOrdLessThan 437 439
+ Store 435(bv) 440
+ 441: 149(fvec3) Load 436(f64v1)
+ 442: 149(fvec3) Load 438(f64v2)
+ 443: 152(bvec3) FOrdLessThanEqual 441 442
+ Store 435(bv) 443
+ 444: 149(fvec3) Load 436(f64v1)
+ 445: 149(fvec3) Load 438(f64v2)
+ 446: 152(bvec3) FOrdGreaterThan 444 445
+ Store 435(bv) 446
+ 447: 149(fvec3) Load 436(f64v1)
+ 448: 149(fvec3) Load 438(f64v2)
+ 449: 152(bvec3) FOrdGreaterThanEqual 447 448
+ Store 435(bv) 449
+ 450: 149(fvec3) Load 436(f64v1)
+ 451: 149(fvec3) Load 438(f64v2)
+ 452: 152(bvec3) FOrdEqual 450 451
+ Store 435(bv) 452
+ 453: 149(fvec3) Load 436(f64v1)
+ 454: 149(fvec3) Load 438(f64v2)
+ 455: 152(bvec3) FOrdNotEqual 453 454
+ Store 435(bv) 455
+ Return
+ FunctionEnd
+24(builtinFragProcFuncs(): 2 Function None 3
+ 25: Label
+ 456(f64v): 150(ptr) Variable Function
+ 460: 459(ptr) AccessChain 458(if64v) 32
+ 461: 26(float) Load 460
+ 462: 26(float) DPdx 461
+ 463: 33(ptr) AccessChain 456(f64v) 32
+ Store 463 462
+ 464: 459(ptr) AccessChain 458(if64v) 88
+ 465: 26(float) Load 464
+ 466: 26(float) DPdy 465
+ 467: 33(ptr) AccessChain 456(f64v) 88
+ Store 467 466
+ 468: 149(fvec3) Load 458(if64v)
+ 469: 27(fvec2) VectorShuffle 468 468 0 1
+ 470: 27(fvec2) DPdxFine 469
+ 471: 149(fvec3) Load 456(f64v)
+ 472: 149(fvec3) VectorShuffle 471 470 3 4 2
+ Store 456(f64v) 472
+ 473: 149(fvec3) Load 458(if64v)
+ 474: 27(fvec2) VectorShuffle 473 473 0 1
+ 475: 27(fvec2) DPdyFine 474
+ 476: 149(fvec3) Load 456(f64v)
+ 477: 149(fvec3) VectorShuffle 476 475 3 4 2
+ Store 456(f64v) 477
+ 478: 149(fvec3) Load 458(if64v)
+ 479: 149(fvec3) DPdxCoarse 478
+ Store 456(f64v) 479
+ 480: 149(fvec3) Load 458(if64v)
+ 481: 149(fvec3) DPdxCoarse 480
+ Store 456(f64v) 481
+ 482: 459(ptr) AccessChain 458(if64v) 32
+ 483: 26(float) Load 482
+ 484: 26(float) Fwidth 483
+ 485: 33(ptr) AccessChain 456(f64v) 32
+ Store 485 484
+ 486: 149(fvec3) Load 458(if64v)
+ 487: 27(fvec2) VectorShuffle 486 486 0 1
+ 488: 27(fvec2) FwidthFine 487
+ 489: 149(fvec3) Load 456(f64v)
+ 490: 149(fvec3) VectorShuffle 489 488 3 4 2
+ Store 456(f64v) 490
+ 491: 149(fvec3) Load 458(if64v)
+ 492: 149(fvec3) FwidthCoarse 491
+ Store 456(f64v) 492
+ 493: 459(ptr) AccessChain 458(if64v) 32
+ 494: 26(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 493
+ 495: 33(ptr) AccessChain 456(f64v) 32
+ Store 495 494
+ 497: 149(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 458(if64v) 496
+ 498: 27(fvec2) VectorShuffle 497 497 0 1
+ 499: 149(fvec3) Load 456(f64v)
+ 500: 149(fvec3) VectorShuffle 499 498 3 4 2
+ Store 456(f64v) 500
+ 503: 149(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 458(if64v) 502
+ Store 456(f64v) 503
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out
new file mode 100644
index 0000000..466bb6a
--- /dev/null
+++ b/Test/baseResults/spv.int16.amd.frag.out
@@ -0,0 +1,778 @@
+spv.int16.amd.frag
+// Module Version 10000
+// Generated by (magic number): 80005
+// Id's are bound by 560
+
+ Capability Shader
+ Capability Float16
+ Capability Float64
+ Capability Int64
+ Capability Int16
+ Capability StorageUniform16
+ Capability StorageInputOutput16
+ Extension "SPV_AMD_gpu_shader_half_float"
+ Extension "SPV_AMD_gpu_shader_int16"
+ Extension "SPV_KHR_16bit_storage"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 519 521
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_AMD_gpu_shader_half_float"
+ SourceExtension "GL_AMD_gpu_shader_int16"
+ SourceExtension "GL_ARB_gpu_shader_int64"
+ Name 4 "main"
+ Name 6 "literal("
+ Name 8 "operators("
+ Name 10 "typeCast("
+ Name 12 "builtinFuncs("
+ Name 16 "u16"
+ Name 25 "Uniforms"
+ MemberName 25(Uniforms) 0 "i"
+ Name 27 ""
+ Name 34 "indexable"
+ Name 45 "indexable"
+ Name 51 "u16v"
+ Name 57 "i16"
+ Name 70 "u16"
+ Name 127 "b"
+ Name 148 "u"
+ Name 159 "i"
+ Name 189 "i16v"
+ Name 192 "bv"
+ Name 200 "u16v"
+ Name 213 "iv"
+ Name 226 "uv"
+ Name 240 "fv"
+ Name 252 "dv"
+ Name 264 "f16v"
+ Name 276 "i64v"
+ Name 290 "u64v"
+ Name 305 "i16v"
+ Name 311 "i16"
+ Name 319 "u16v"
+ Name 321 "u16"
+ Name 393 "f16v"
+ Name 396 "exp"
+ Name 397 "ResType"
+ Name 418 "packi"
+ Name 423 "packu"
+ Name 432 "packi64"
+ Name 441 "packu64"
+ Name 450 "bv"
+ Name 515 "Block"
+ MemberName 515(Block) 0 "i16v"
+ MemberName 515(Block) 1 "u16"
+ Name 517 "block"
+ Name 519 "iu16v"
+ Name 521 "ii16"
+ Name 522 "si64"
+ Name 523 "su64"
+ Name 524 "si"
+ Name 525 "su"
+ Name 526 "sb"
+ Name 527 "si16"
+ Name 528 "su16"
+ MemberDecorate 25(Uniforms) 0 Offset 0
+ Decorate 25(Uniforms) Block
+ Decorate 27 DescriptorSet 0
+ Decorate 27 Binding 0
+ MemberDecorate 515(Block) 0 Offset 0
+ MemberDecorate 515(Block) 1 Offset 6
+ Decorate 515(Block) Block
+ Decorate 517(block) DescriptorSet 0
+ Decorate 517(block) Binding 1
+ Decorate 519(iu16v) Flat
+ Decorate 519(iu16v) Location 0
+ Decorate 521(ii16) Flat
+ Decorate 521(ii16) Location 1
+ Decorate 522(si64) SpecId 100
+ Decorate 523(su64) SpecId 101
+ Decorate 524(si) SpecId 102
+ Decorate 525(su) SpecId 103
+ Decorate 526(sb) SpecId 104
+ Decorate 527(si16) SpecId 105
+ Decorate 528(su16) SpecId 106
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 14: TypeInt 16 0
+ 15: TypePointer Function 14(int)
+ 17: TypeInt 16 1
+ 18: TypeInt 32 0
+ 19: 18(int) Constant 3
+ 20: TypeArray 17(int) 19
+ 21: 17(int) Constant 273
+ 22: 17(int) Constant 4294967294
+ 23: 17(int) Constant 256
+ 24: 20 ConstantComposite 21 22 23
+ 25(Uniforms): TypeStruct 18(int)
+ 26: TypePointer Uniform 25(Uniforms)
+ 27: 26(ptr) Variable Uniform
+ 28: TypeInt 32 1
+ 29: 28(int) Constant 0
+ 30: TypePointer Uniform 18(int)
+ 33: TypePointer Function 20
+ 35: TypePointer Function 17(int)
+ 39: TypeArray 14(int) 19
+ 40: 14(int) Constant 65535
+ 41: 39 ConstantComposite 40 40 40
+ 44: TypePointer Function 39
+ 49: TypeVector 14(int) 3
+ 50: TypePointer Function 49(ivec3)
+ 53: 17(int) Constant 1
+ 54: TypeVector 17(int) 3
+ 111: 18(int) Constant 1
+ 117: 18(int) Constant 2
+ 125: TypeBool
+ 126: TypePointer Function 125(bool)
+ 128: 18(int) Constant 0
+ 147: TypePointer Function 18(int)
+ 158: TypePointer Function 28(int)
+ 187: TypeVector 17(int) 2
+ 188: TypePointer Function 187(ivec2)
+ 190: TypeVector 125(bool) 2
+ 191: TypePointer Function 190(bvec2)
+ 194: 17(int) Constant 0
+ 195: 187(ivec2) ConstantComposite 194 194
+ 196: 187(ivec2) ConstantComposite 53 53
+ 198: TypeVector 14(int) 2
+ 199: TypePointer Function 198(ivec2)
+ 202: 14(int) Constant 0
+ 203: 14(int) Constant 1
+ 204: 198(ivec2) ConstantComposite 202 202
+ 205: 198(ivec2) ConstantComposite 203 203
+ 211: TypeVector 28(int) 2
+ 212: TypePointer Function 211(ivec2)
+ 224: TypeVector 18(int) 2
+ 225: TypePointer Function 224(ivec2)
+ 237: TypeFloat 32
+ 238: TypeVector 237(float) 2
+ 239: TypePointer Function 238(fvec2)
+ 249: TypeFloat 64
+ 250: TypeVector 249(float) 2
+ 251: TypePointer Function 250(fvec2)
+ 261: TypeFloat 16
+ 262: TypeVector 261(float) 2
+ 263: TypePointer Function 262(fvec2)
+ 273: TypeInt 64 1
+ 274: TypeVector 273(int) 2
+ 275: TypePointer Function 274(ivec2)
+ 287: TypeInt 64 0
+ 288: TypeVector 287(int) 2
+ 289: TypePointer Function 288(ivec2)
+ 316: 17(int) Constant 4294967295
+ 317: 187(ivec2) ConstantComposite 316 316
+ 326: 49(ivec3) ConstantComposite 202 202 202
+ 368: 125(bool) ConstantTrue
+ 375: 125(bool) ConstantFalse
+ 376: 190(bvec2) ConstantComposite 375 375
+ 388: TypeVector 125(bool) 3
+ 389: 388(bvec3) ConstantComposite 375 375 375
+ 391: TypeVector 261(float) 3
+ 392: TypePointer Function 391(fvec3)
+ 395: TypePointer Function 54(ivec3)
+ 397(ResType): TypeStruct 391(fvec3) 54(ivec3)
+ 407: TypePointer Function 261(float)
+ 431: TypePointer Function 273(int)
+ 434: TypeVector 17(int) 4
+ 440: TypePointer Function 287(int)
+ 443: TypeVector 14(int) 4
+ 449: TypePointer Function 388(bvec3)
+ 515(Block): TypeStruct 54(ivec3) 14(int)
+ 516: TypePointer Uniform 515(Block)
+ 517(block): 516(ptr) Variable Uniform
+ 518: TypePointer Input 49(ivec3)
+ 519(iu16v): 518(ptr) Variable Input
+ 520: TypePointer Input 17(int)
+ 521(ii16): 520(ptr) Variable Input
+ 522(si64): 273(int) SpecConstant 4294967286 4294967295
+ 523(su64): 287(int) SpecConstant 20 0
+ 524(si): 28(int) SpecConstant 4294967291
+ 525(su): 18(int) SpecConstant 4
+ 526(sb): 125(bool) SpecConstantTrue
+ 527(si16): 17(int) SpecConstant 4294967291
+ 528(su16): 14(int) SpecConstant 4
+ 529: 125(bool) SpecConstantOp 171 527(si16) 202
+ 530: 125(bool) SpecConstantOp 171 528(su16) 202
+ 531: 17(int) SpecConstantOp 169 526(sb) 53 194
+ 532: 14(int) SpecConstantOp 169 526(sb) 203 202
+ 533: 28(int) SpecConstantOp 114 527(si16)
+ 534: 28(int) SpecConstantOp 113 528(su16)
+ 535: 28(int) SpecConstantOp 128 534 128
+ 536: 17(int) SpecConstantOp 114 524(si)
+ 537: 17(int) SpecConstantOp 114 524(si)
+ 538: 14(int) SpecConstantOp 128 537 202
+ 539: 28(int) SpecConstantOp 114 527(si16)
+ 540: 18(int) SpecConstantOp 128 539 128
+ 541: 18(int) SpecConstantOp 113 528(su16)
+ 542: 17(int) SpecConstantOp 113 525(su)
+ 543: 17(int) SpecConstantOp 128 542 202
+ 544: 14(int) SpecConstantOp 113 525(su)
+ 545: 273(int) SpecConstantOp 114 527(si16)
+ 546: 273(int) SpecConstantOp 113 528(su16)
+ 547: 287(int) Constant 0 0
+ 548: 273(int) SpecConstantOp 128 546 547
+ 549: 17(int) SpecConstantOp 114 522(si64)
+ 550: 17(int) SpecConstantOp 114 522(si64)
+ 551: 14(int) SpecConstantOp 128 550 202
+ 552: 273(int) SpecConstantOp 114 527(si16)
+ 553: 287(int) SpecConstantOp 128 552 547
+ 554: 287(int) SpecConstantOp 113 528(su16)
+ 555: 17(int) SpecConstantOp 113 523(su64)
+ 556: 17(int) SpecConstantOp 128 555 202
+ 557: 14(int) SpecConstantOp 113 523(su64)
+ 558: 14(int) SpecConstantOp 128 527(si16) 202
+ 559: 17(int) SpecConstantOp 128 528(su16) 202
+ 4(main): 2 Function None 3
+ 5: Label
+ 511: 2 FunctionCall 6(literal()
+ 512: 2 FunctionCall 8(operators()
+ 513: 2 FunctionCall 10(typeCast()
+ 514: 2 FunctionCall 12(builtinFuncs()
+ Return
+ FunctionEnd
+ 6(literal(): 2 Function None 3
+ 7: Label
+ 16(u16): 15(ptr) Variable Function
+ 34(indexable): 33(ptr) Variable Function
+ 45(indexable): 44(ptr) Variable Function
+ 31: 30(ptr) AccessChain 27 29
+ 32: 18(int) Load 31
+ Store 34(indexable) 24
+ 36: 35(ptr) AccessChain 34(indexable) 32
+ 37: 17(int) Load 36
+ 38: 14(int) Bitcast 37
+ 42: 30(ptr) AccessChain 27 29
+ 43: 18(int) Load 42
+ Store 45(indexable) 41
+ 46: 15(ptr) AccessChain 45(indexable) 43
+ 47: 14(int) Load 46
+ 48: 14(int) IAdd 38 47
+ Store 16(u16) 48
+ Return
+ FunctionEnd
+ 8(operators(): 2 Function None 3
+ 9: Label
+ 51(u16v): 50(ptr) Variable Function
+ 57(i16): 35(ptr) Variable Function
+ 70(u16): 15(ptr) Variable Function
+ 127(b): 126(ptr) Variable Function
+ 148(u): 147(ptr) Variable Function
+ 159(i): 158(ptr) Variable Function
+ 52: 49(ivec3) Load 51(u16v)
+ 55: 54(ivec3) CompositeConstruct 53 53 53
+ 56: 49(ivec3) IAdd 52 55
+ Store 51(u16v) 56
+ 58: 17(int) Load 57(i16)
+ 59: 17(int) ISub 58 53
+ Store 57(i16) 59
+ 60: 17(int) Load 57(i16)
+ 61: 17(int) IAdd 60 53
+ Store 57(i16) 61
+ 62: 49(ivec3) Load 51(u16v)
+ 63: 54(ivec3) CompositeConstruct 53 53 53
+ 64: 49(ivec3) ISub 62 63
+ Store 51(u16v) 64
+ 65: 49(ivec3) Load 51(u16v)
+ 66: 49(ivec3) Not 65
+ Store 51(u16v) 66
+ 67: 17(int) Load 57(i16)
+ Store 57(i16) 67
+ 68: 49(ivec3) Load 51(u16v)
+ 69: 49(ivec3) SNegate 68
+ Store 51(u16v) 69
+ 71: 17(int) Load 57(i16)
+ 72: 14(int) Bitcast 71
+ 73: 14(int) Load 70(u16)
+ 74: 14(int) IAdd 73 72
+ Store 70(u16) 74
+ 75: 49(ivec3) Load 51(u16v)
+ 76: 49(ivec3) Load 51(u16v)
+ 77: 49(ivec3) ISub 76 75
+ Store 51(u16v) 77
+ 78: 17(int) Load 57(i16)
+ 79: 17(int) Load 57(i16)
+ 80: 17(int) IMul 79 78
+ Store 57(i16) 80
+ 81: 49(ivec3) Load 51(u16v)
+ 82: 49(ivec3) Load 51(u16v)
+ 83: 49(ivec3) UDiv 82 81
+ Store 51(u16v) 83
+ 84: 17(int) Load 57(i16)
+ 85: 14(int) Bitcast 84
+ 86: 49(ivec3) Load 51(u16v)
+ 87: 49(ivec3) CompositeConstruct 85 85 85
+ 88: 49(ivec3) UMod 86 87
+ Store 51(u16v) 88
+ 89: 49(ivec3) Load 51(u16v)
+ 90: 49(ivec3) Load 51(u16v)
+ 91: 49(ivec3) IAdd 89 90
+ Store 51(u16v) 91
+ 92: 17(int) Load 57(i16)
+ 93: 14(int) Bitcast 92
+ 94: 14(int) Load 70(u16)
+ 95: 14(int) ISub 93 94
+ Store 70(u16) 95
+ 96: 49(ivec3) Load 51(u16v)
+ 97: 17(int) Load 57(i16)
+ 98: 14(int) Bitcast 97
+ 99: 49(ivec3) CompositeConstruct 98 98 98
+ 100: 49(ivec3) IMul 96 99
+ Store 51(u16v) 100
+ 101: 17(int) Load 57(i16)
+ 102: 17(int) Load 57(i16)
+ 103: 17(int) IMul 101 102
+ Store 57(i16) 103
+ 104: 17(int) Load 57(i16)
+ 105: 17(int) Load 57(i16)
+ 106: 17(int) SMod 104 105
+ Store 57(i16) 106
+ 107: 17(int) Load 57(i16)
+ 108: 49(ivec3) Load 51(u16v)
+ 109: 54(ivec3) CompositeConstruct 107 107 107
+ 110: 49(ivec3) ShiftLeftLogical 108 109
+ Store 51(u16v) 110
+ 112: 15(ptr) AccessChain 51(u16v) 111
+ 113: 14(int) Load 112
+ 114: 17(int) Load 57(i16)
+ 115: 17(int) ShiftRightArithmetic 114 113
+ Store 57(i16) 115
+ 116: 17(int) Load 57(i16)
+ 118: 15(ptr) AccessChain 51(u16v) 117
+ 119: 14(int) Load 118
+ 120: 17(int) ShiftLeftLogical 116 119
+ Store 57(i16) 120
+ 121: 49(ivec3) Load 51(u16v)
+ 122: 17(int) Load 57(i16)
+ 123: 54(ivec3) CompositeConstruct 122 122 122
+ 124: 49(ivec3) ShiftLeftLogical 121 123
+ Store 51(u16v) 124
+ 129: 15(ptr) AccessChain 51(u16v) 128
+ 130: 14(int) Load 129
+ 131: 17(int) Load 57(i16)
+ 132: 14(int) Bitcast 131
+ 133: 125(bool) INotEqual 130 132
+ Store 127(b) 133
+ 134: 17(int) Load 57(i16)
+ 135: 14(int) Bitcast 134
+ 136: 15(ptr) AccessChain 51(u16v) 128
+ 137: 14(int) Load 136
+ 138: 125(bool) IEqual 135 137
+ Store 127(b) 138
+ 139: 15(ptr) AccessChain 51(u16v) 128
+ 140: 14(int) Load 139
+ 141: 15(ptr) AccessChain 51(u16v) 111
+ 142: 14(int) Load 141
+ 143: 125(bool) UGreaterThan 140 142
+ Store 127(b) 143
+ 144: 17(int) Load 57(i16)
+ 145: 28(int) SConvert 144
+ 146: 18(int) Bitcast 145
+ 149: 18(int) Load 148(u)
+ 150: 125(bool) ULessThan 146 149
+ Store 127(b) 150
+ 151: 15(ptr) AccessChain 51(u16v) 111
+ 152: 14(int) Load 151
+ 153: 15(ptr) AccessChain 51(u16v) 128
+ 154: 14(int) Load 153
+ 155: 125(bool) UGreaterThanEqual 152 154
+ Store 127(b) 155
+ 156: 17(int) Load 57(i16)
+ 157: 28(int) SConvert 156
+ 160: 28(int) Load 159(i)
+ 161: 125(bool) SLessThanEqual 157 160
+ Store 127(b) 161
+ 162: 17(int) Load 57(i16)
+ 163: 14(int) Bitcast 162
+ 164: 49(ivec3) Load 51(u16v)
+ 165: 49(ivec3) CompositeConstruct 163 163 163
+ 166: 49(ivec3) BitwiseOr 164 165
+ Store 51(u16v) 166
+ 167: 17(int) Load 57(i16)
+ 168: 14(int) Bitcast 167
+ 169: 14(int) Load 70(u16)
+ 170: 14(int) BitwiseOr 168 169
+ Store 70(u16) 170
+ 171: 17(int) Load 57(i16)
+ 172: 17(int) Load 57(i16)
+ 173: 17(int) BitwiseAnd 172 171
+ Store 57(i16) 173
+ 174: 49(ivec3) Load 51(u16v)
+ 175: 49(ivec3) Load 51(u16v)
+ 176: 49(ivec3) BitwiseAnd 174 175
+ Store 51(u16v) 176
+ 177: 17(int) Load 57(i16)
+ 178: 14(int) Bitcast 177
+ 179: 49(ivec3) Load 51(u16v)
+ 180: 49(ivec3) CompositeConstruct 178 178 178
+ 181: 49(ivec3) BitwiseXor 179 180
+ Store 51(u16v) 181
+ 182: 49(ivec3) Load 51(u16v)
+ 183: 17(int) Load 57(i16)
+ 184: 14(int) Bitcast 183
+ 185: 49(ivec3) CompositeConstruct 184 184 184
+ 186: 49(ivec3) BitwiseXor 182 185
+ Store 51(u16v) 186
+ Return
+ FunctionEnd
+ 10(typeCast(): 2 Function None 3
+ 11: Label
+ 189(i16v): 188(ptr) Variable Function
+ 192(bv): 191(ptr) Variable Function
+ 200(u16v): 199(ptr) Variable Function
+ 213(iv): 212(ptr) Variable Function
+ 226(uv): 225(ptr) Variable Function
+ 240(fv): 239(ptr) Variable Function
+ 252(dv): 251(ptr) Variable Function
+ 264(f16v): 263(ptr) Variable Function
+ 276(i64v): 275(ptr) Variable Function
+ 290(u64v): 289(ptr) Variable Function
+ 193: 190(bvec2) Load 192(bv)
+ 197: 187(ivec2) Select 193 196 195
+ Store 189(i16v) 197
+ 201: 190(bvec2) Load 192(bv)
+ 206: 198(ivec2) Select 201 205 204
+ Store 200(u16v) 206
+ 207: 187(ivec2) Load 189(i16v)
+ 208: 190(bvec2) INotEqual 207 204
+ Store 192(bv) 208
+ 209: 198(ivec2) Load 200(u16v)
+ 210: 190(bvec2) INotEqual 209 204
+ Store 192(bv) 210
+ 214: 211(ivec2) Load 213(iv)
+ 215: 187(ivec2) SConvert 214
+ Store 189(i16v) 215
+ 216: 211(ivec2) Load 213(iv)
+ 217: 187(ivec2) SConvert 216
+ 218: 198(ivec2) Bitcast 217
+ Store 200(u16v) 218
+ 219: 187(ivec2) Load 189(i16v)
+ 220: 211(ivec2) SConvert 219
+ Store 213(iv) 220
+ 221: 198(ivec2) Load 200(u16v)
+ 222: 211(ivec2) UConvert 221
+ 223: 211(ivec2) Bitcast 222
+ Store 213(iv) 223
+ 227: 224(ivec2) Load 226(uv)
+ 228: 187(ivec2) UConvert 227
+ 229: 187(ivec2) Bitcast 228
+ Store 189(i16v) 229
+ 230: 224(ivec2) Load 226(uv)
+ 231: 198(ivec2) UConvert 230
+ Store 200(u16v) 231
+ 232: 187(ivec2) Load 189(i16v)
+ 233: 211(ivec2) SConvert 232
+ 234: 224(ivec2) Bitcast 233
+ Store 226(uv) 234
+ 235: 198(ivec2) Load 200(u16v)
+ 236: 224(ivec2) UConvert 235
+ Store 226(uv) 236
+ 241: 238(fvec2) Load 240(fv)
+ 242: 187(ivec2) ConvertFToS 241
+ Store 189(i16v) 242
+ 243: 238(fvec2) Load 240(fv)
+ 244: 198(ivec2) ConvertFToU 243
+ Store 200(u16v) 244
+ 245: 187(ivec2) Load 189(i16v)
+ 246: 238(fvec2) ConvertSToF 245
+ Store 240(fv) 246
+ 247: 198(ivec2) Load 200(u16v)
+ 248: 238(fvec2) ConvertUToF 247
+ Store 240(fv) 248
+ 253: 250(fvec2) Load 252(dv)
+ 254: 187(ivec2) ConvertFToS 253
+ Store 189(i16v) 254
+ 255: 250(fvec2) Load 252(dv)
+ 256: 198(ivec2) ConvertFToU 255
+ Store 200(u16v) 256
+ 257: 187(ivec2) Load 189(i16v)
+ 258: 250(fvec2) ConvertSToF 257
+ Store 252(dv) 258
+ 259: 198(ivec2) Load 200(u16v)
+ 260: 250(fvec2) ConvertUToF 259
+ Store 252(dv) 260
+ 265: 262(fvec2) Load 264(f16v)
+ 266: 187(ivec2) ConvertFToS 265
+ Store 189(i16v) 266
+ 267: 262(fvec2) Load 264(f16v)
+ 268: 198(ivec2) ConvertFToU 267
+ Store 200(u16v) 268
+ 269: 187(ivec2) Load 189(i16v)
+ 270: 262(fvec2) ConvertSToF 269
+ Store 264(f16v) 270
+ 271: 198(ivec2) Load 200(u16v)
+ 272: 262(fvec2) ConvertUToF 271
+ Store 264(f16v) 272
+ 277: 274(ivec2) Load 276(i64v)
+ 278: 187(ivec2) SConvert 277
+ Store 189(i16v) 278
+ 279: 274(ivec2) Load 276(i64v)
+ 280: 187(ivec2) SConvert 279
+ 281: 198(ivec2) Bitcast 280
+ Store 200(u16v) 281
+ 282: 187(ivec2) Load 189(i16v)
+ 283: 274(ivec2) SConvert 282
+ Store 276(i64v) 283
+ 284: 198(ivec2) Load 200(u16v)
+ 285: 274(ivec2) UConvert 284
+ 286: 274(ivec2) Bitcast 285
+ Store 276(i64v) 286
+ 291: 288(ivec2) Load 290(u64v)
+ 292: 187(ivec2) UConvert 291
+ 293: 187(ivec2) Bitcast 292
+ Store 189(i16v) 293
+ 294: 288(ivec2) Load 290(u64v)
+ 295: 198(ivec2) UConvert 294
+ Store 200(u16v) 295
+ 296: 187(ivec2) Load 189(i16v)
+ 297: 274(ivec2) SConvert 296
+ 298: 288(ivec2) Bitcast 297
+ Store 290(u64v) 298
+ 299: 198(ivec2) Load 200(u16v)
+ 300: 288(ivec2) UConvert 299
+ Store 290(u64v) 300
+ 301: 198(ivec2) Load 200(u16v)
+ 302: 187(ivec2) Bitcast 301
+ Store 189(i16v) 302
+ 303: 187(ivec2) Load 189(i16v)
+ 304: 198(ivec2) Bitcast 303
+ Store 200(u16v) 304
+ Return
+ FunctionEnd
+12(builtinFuncs(): 2 Function None 3
+ 13: Label
+ 305(i16v): 188(ptr) Variable Function
+ 311(i16): 35(ptr) Variable Function
+ 319(u16v): 50(ptr) Variable Function
+ 321(u16): 15(ptr) Variable Function
+ 393(f16v): 392(ptr) Variable Function
+ 396(exp): 395(ptr) Variable Function
+ 418(packi): 158(ptr) Variable Function
+ 423(packu): 147(ptr) Variable Function
+ 432(packi64): 431(ptr) Variable Function
+ 441(packu64): 440(ptr) Variable Function
+ 450(bv): 449(ptr) Variable Function
+ 306: 187(ivec2) Load 305(i16v)
+ 307: 187(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 306
+ Store 305(i16v) 307
+ 308: 187(ivec2) Load 305(i16v)
+ 309: 187(ivec2) ExtInst 1(GLSL.std.450) 7(SSign) 308
+ Store 305(i16v) 309
+ 310: 187(ivec2) Load 305(i16v)
+ 312: 17(int) Load 311(i16)
+ 313: 187(ivec2) CompositeConstruct 312 312
+ 314: 187(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 310 313
+ Store 305(i16v) 314
+ 315: 187(ivec2) Load 305(i16v)
+ 318: 187(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 315 317
+ Store 305(i16v) 318
+ 320: 49(ivec3) Load 319(u16v)
+ 322: 14(int) Load 321(u16)
+ 323: 49(ivec3) CompositeConstruct 322 322 322
+ 324: 49(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 320 323
+ Store 319(u16v) 324
+ 325: 49(ivec3) Load 319(u16v)
+ 327: 49(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 325 326
+ Store 319(u16v) 327
+ 328: 187(ivec2) Load 305(i16v)
+ 329: 17(int) Load 311(i16)
+ 330: 187(ivec2) CompositeConstruct 329 329
+ 331: 187(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 328 330
+ Store 305(i16v) 331
+ 332: 187(ivec2) Load 305(i16v)
+ 333: 187(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 332 317
+ Store 305(i16v) 333
+ 334: 49(ivec3) Load 319(u16v)
+ 335: 14(int) Load 321(u16)
+ 336: 49(ivec3) CompositeConstruct 335 335 335
+ 337: 49(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 334 336
+ Store 319(u16v) 337
+ 338: 49(ivec3) Load 319(u16v)
+ 339: 49(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 338 326
+ Store 319(u16v) 339
+ 340: 187(ivec2) Load 305(i16v)
+ 341: 17(int) Load 311(i16)
+ 342: 17(int) SNegate 341
+ 343: 17(int) Load 311(i16)
+ 344: 187(ivec2) CompositeConstruct 342 342
+ 345: 187(ivec2) CompositeConstruct 343 343
+ 346: 187(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 340 344 345
+ Store 305(i16v) 346
+ 347: 187(ivec2) Load 305(i16v)
+ 348: 187(ivec2) Load 305(i16v)
+ 349: 187(ivec2) SNegate 348
+ 350: 187(ivec2) Load 305(i16v)
+ 351: 187(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 347 349 350
+ Store 305(i16v) 351
+ 352: 49(ivec3) Load 319(u16v)
+ 353: 14(int) Load 321(u16)
+ 354: 14(int) SNegate 353
+ 355: 14(int) Load 321(u16)
+ 356: 49(ivec3) CompositeConstruct 354 354 354
+ 357: 49(ivec3) CompositeConstruct 355 355 355
+ 358: 49(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 352 356 357
+ Store 319(u16v) 358
+ 359: 49(ivec3) Load 319(u16v)
+ 360: 49(ivec3) Load 319(u16v)
+ 361: 49(ivec3) SNegate 360
+ 362: 49(ivec3) Load 319(u16v)
+ 363: 49(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 359 361 362
+ Store 319(u16v) 363
+ 364: 35(ptr) AccessChain 305(i16v) 128
+ 365: 17(int) Load 364
+ 366: 35(ptr) AccessChain 305(i16v) 111
+ 367: 17(int) Load 366
+ 369: 17(int) Select 368 367 365
+ Store 311(i16) 369
+ 370: 17(int) Load 311(i16)
+ 371: 187(ivec2) CompositeConstruct 370 370
+ 372: 17(int) Load 311(i16)
+ 373: 17(int) SNegate 372
+ 374: 187(ivec2) CompositeConstruct 373 373
+ 377: 187(ivec2) Select 376 374 371
+ Store 305(i16v) 377
+ 378: 15(ptr) AccessChain 319(u16v) 128
+ 379: 14(int) Load 378
+ 380: 15(ptr) AccessChain 319(u16v) 111
+ 381: 14(int) Load 380
+ 382: 14(int) Select 368 381 379
+ Store 321(u16) 382
+ 383: 14(int) Load 321(u16)
+ 384: 49(ivec3) CompositeConstruct 383 383 383
+ 385: 14(int) Load 321(u16)
+ 386: 14(int) SNegate 385
+ 387: 49(ivec3) CompositeConstruct 386 386 386
+ 390: 49(ivec3) Select 389 387 384
+ Store 319(u16v) 390
+ 394: 391(fvec3) Load 393(f16v)
+ 398:397(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 394
+ 399: 54(ivec3) CompositeExtract 398 1
+ Store 396(exp) 399
+ 400: 391(fvec3) CompositeExtract 398 0
+ Store 393(f16v) 400
+ 401: 391(fvec3) Load 393(f16v)
+ 402: 54(ivec3) Load 396(exp)
+ 403: 391(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 401 402
+ Store 393(f16v) 403
+ 404: 391(fvec3) Load 393(f16v)
+ 405: 262(fvec2) VectorShuffle 404 404 0 1
+ 406: 187(ivec2) Bitcast 405
+ Store 305(i16v) 406
+ 408: 407(ptr) AccessChain 393(f16v) 117
+ 409: 261(float) Load 408
+ 410: 14(int) Bitcast 409
+ 411: 15(ptr) AccessChain 319(u16v) 128
+ Store 411 410
+ 412: 187(ivec2) Load 305(i16v)
+ 413: 262(fvec2) Bitcast 412
+ 414: 391(fvec3) Load 393(f16v)
+ 415: 391(fvec3) VectorShuffle 414 413 3 4 2
+ Store 393(f16v) 415
+ 416: 49(ivec3) Load 319(u16v)
+ 417: 391(fvec3) Bitcast 416
+ Store 393(f16v) 417
+ 419: 187(ivec2) Load 305(i16v)
+ 420: 28(int) Bitcast 419
+ Store 418(packi) 420
+ 421: 28(int) Load 418(packi)
+ 422: 187(ivec2) Bitcast 421
+ Store 305(i16v) 422
+ 424: 49(ivec3) Load 319(u16v)
+ 425: 198(ivec2) VectorShuffle 424 424 0 1
+ 426: 18(int) Bitcast 425
+ Store 423(packu) 426
+ 427: 18(int) Load 423(packu)
+ 428: 198(ivec2) Bitcast 427
+ 429: 49(ivec3) Load 319(u16v)
+ 430: 49(ivec3) VectorShuffle 429 428 3 4 2
+ Store 319(u16v) 430
+ 433: 17(int) Load 311(i16)
+ 435: 434(ivec4) CompositeConstruct 433 433 433 433
+ 436: 273(int) Bitcast 435
+ Store 432(packi64) 436
+ 437: 273(int) Load 432(packi64)
+ 438: 434(ivec4) Bitcast 437
+ 439: 187(ivec2) VectorShuffle 438 438 0 1
+ Store 305(i16v) 439
+ 442: 14(int) Load 321(u16)
+ 444: 443(ivec4) CompositeConstruct 442 442 442 442
+ 445: 287(int) Bitcast 444
+ Store 441(packu64) 445
+ 446: 287(int) Load 441(packu64)
+ 447: 443(ivec4) Bitcast 446
+ 448: 49(ivec3) VectorShuffle 447 447 0 1 2
+ Store 319(u16v) 448
+ 451: 49(ivec3) Load 319(u16v)
+ 452: 14(int) Load 321(u16)
+ 453: 49(ivec3) CompositeConstruct 452 452 452
+ 454: 388(bvec3) ULessThan 451 453
+ Store 450(bv) 454
+ 455: 187(ivec2) Load 305(i16v)
+ 456: 17(int) Load 311(i16)
+ 457: 187(ivec2) CompositeConstruct 456 456
+ 458: 190(bvec2) SLessThan 455 457
+ 459: 388(bvec3) Load 450(bv)
+ 460: 388(bvec3) VectorShuffle 459 458 3 4 2
+ Store 450(bv) 460
+ 461: 49(ivec3) Load 319(u16v)
+ 462: 14(int) Load 321(u16)
+ 463: 49(ivec3) CompositeConstruct 462 462 462
+ 464: 388(bvec3) ULessThanEqual 461 463
+ Store 450(bv) 464
+ 465: 187(ivec2) Load 305(i16v)
+ 466: 17(int) Load 311(i16)
+ 467: 187(ivec2) CompositeConstruct 466 466
+ 468: 190(bvec2) SLessThanEqual 465 467
+ 469: 388(bvec3) Load 450(bv)
+ 470: 388(bvec3) VectorShuffle 469 468 3 4 2
+ Store 450(bv) 470
+ 471: 49(ivec3) Load 319(u16v)
+ 472: 14(int) Load 321(u16)
+ 473: 49(ivec3) CompositeConstruct 472 472 472
+ 474: 388(bvec3) UGreaterThan 471 473
+ Store 450(bv) 474
+ 475: 187(ivec2) Load 305(i16v)
+ 476: 17(int) Load 311(i16)
+ 477: 187(ivec2) CompositeConstruct 476 476
+ 478: 190(bvec2) SGreaterThan 475 477
+ 479: 388(bvec3) Load 450(bv)
+ 480: 388(bvec3) VectorShuffle 479 478 3 4 2
+ Store 450(bv) 480
+ 481: 49(ivec3) Load 319(u16v)
+ 482: 14(int) Load 321(u16)
+ 483: 49(ivec3) CompositeConstruct 482 482 482
+ 484: 388(bvec3) UGreaterThanEqual 481 483
+ Store 450(bv) 484
+ 485: 187(ivec2) Load 305(i16v)
+ 486: 17(int) Load 311(i16)
+ 487: 187(ivec2) CompositeConstruct 486 486
+ 488: 190(bvec2) SGreaterThanEqual 485 487
+ 489: 388(bvec3) Load 450(bv)
+ 490: 388(bvec3) VectorShuffle 489 488 3 4 2
+ Store 450(bv) 490
+ 491: 49(ivec3) Load 319(u16v)
+ 492: 14(int) Load 321(u16)
+ 493: 49(ivec3) CompositeConstruct 492 492 492
+ 494: 388(bvec3) IEqual 491 493
+ Store 450(bv) 494
+ 495: 187(ivec2) Load 305(i16v)
+ 496: 17(int) Load 311(i16)
+ 497: 187(ivec2) CompositeConstruct 496 496
+ 498: 190(bvec2) IEqual 495 497
+ 499: 388(bvec3) Load 450(bv)
+ 500: 388(bvec3) VectorShuffle 499 498 3 4 2
+ Store 450(bv) 500
+ 501: 49(ivec3) Load 319(u16v)
+ 502: 14(int) Load 321(u16)
+ 503: 49(ivec3) CompositeConstruct 502 502 502
+ 504: 388(bvec3) INotEqual 501 503
+ Store 450(bv) 504
+ 505: 187(ivec2) Load 305(i16v)
+ 506: 17(int) Load 311(i16)
+ 507: 187(ivec2) CompositeConstruct 506 506
+ 508: 190(bvec2) INotEqual 505 507
+ 509: 388(bvec3) Load 450(bv)
+ 510: 388(bvec3) VectorShuffle 509 508 3 4 2
+ Store 450(bv) 510
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out
index 3cb8af8..e5f3e7f 100644
--- a/Test/baseResults/spv.int16.frag.out
+++ b/Test/baseResults/spv.int16.frag.out
@@ -1,779 +1,746 @@
spv.int16.frag
// Module Version 10000
// Generated by (magic number): 80005
-// Id's are bound by 561
+// Id's are bound by 525
Capability Shader
Capability Float16
Capability Float64
Capability Int64
Capability Int16
+ Capability Int8
Capability StorageUniform16
- Capability StorageInputOutput16
Extension "SPV_AMD_gpu_shader_half_float"
Extension "SPV_AMD_gpu_shader_int16"
Extension "SPV_KHR_16bit_storage"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 520 522
+ EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
- SourceExtension "GL_AMD_gpu_shader_half_float"
- SourceExtension "GL_AMD_gpu_shader_int16"
- SourceExtension "GL_ARB_gpu_shader_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
Name 4 "main"
Name 6 "literal("
- Name 8 "operators("
- Name 10 "typeCast("
+ Name 8 "typeCast16("
+ Name 10 "operators("
Name 12 "builtinFuncs("
- Name 16 "u16"
- Name 25 "Uniforms"
- MemberName 25(Uniforms) 0 "i"
- Name 27 ""
- Name 34 "indexable"
- Name 45 "indexable"
- Name 51 "u16v"
- Name 57 "i16"
- Name 70 "u16"
- Name 108 "i"
- Name 130 "b"
- Name 151 "u"
- Name 190 "i16v"
- Name 193 "bv"
- Name 201 "u16v"
- Name 214 "iv"
+ Name 16 "i16"
+ Name 24 "Uniforms"
+ MemberName 24(Uniforms) 0 "index"
+ Name 26 ""
+ Name 33 "indexable"
+ Name 38 "u16"
+ Name 46 "indexable"
+ Name 51 "i32v"
+ Name 54 "i16v"
+ Name 59 "u16v"
+ Name 67 "u32v"
+ Name 74 "i64v"
+ Name 80 "u64v"
+ Name 94 "f16v"
+ Name 100 "f32v"
+ Name 106 "f64v"
+ Name 154 "i8v"
+ Name 163 "u8v"
+ Name 176 "bv"
+ Name 195 "u16v"
+ Name 200 "i16"
+ Name 220 "i"
Name 227 "uv"
- Name 241 "fv"
- Name 253 "dv"
- Name 265 "f16v"
- Name 277 "i64v"
- Name 291 "u64v"
- Name 306 "i16v"
- Name 312 "i16"
- Name 320 "u16v"
- Name 322 "u16"
- Name 394 "f16v"
- Name 397 "exp"
- Name 398 "ResType"
- Name 419 "packi"
- Name 424 "packu"
- Name 433 "packi64"
- Name 442 "packu64"
- Name 451 "bv"
- Name 516 "Block"
- MemberName 516(Block) 0 "i16v"
- MemberName 516(Block) 1 "u16"
- Name 518 "block"
- Name 520 "iu16v"
- Name 522 "ii16"
- Name 523 "si64"
- Name 524 "su64"
- Name 525 "si"
- Name 526 "su"
- Name 527 "sb"
- Name 528 "si16"
- Name 529 "su16"
- MemberDecorate 25(Uniforms) 0 Offset 0
- Decorate 25(Uniforms) Block
- Decorate 27 DescriptorSet 0
- Decorate 27 Binding 0
- MemberDecorate 516(Block) 0 Offset 0
- MemberDecorate 516(Block) 1 Offset 6
- Decorate 516(Block) Block
- Decorate 518(block) DescriptorSet 0
- Decorate 518(block) Binding 1
- Decorate 520(iu16v) Flat
- Decorate 520(iu16v) Location 0
- Decorate 522(ii16) Flat
- Decorate 522(ii16) Location 1
- Decorate 523(si64) SpecId 100
- Decorate 524(su64) SpecId 101
- Decorate 525(si) SpecId 102
- Decorate 526(su) SpecId 103
- Decorate 527(sb) SpecId 104
- Decorate 528(si16) SpecId 105
- Decorate 529(su16) SpecId 106
+ Name 243 "i64"
+ Name 283 "b"
+ Name 345 "i16v"
+ Name 348 "i16"
+ Name 358 "u16v"
+ Name 360 "u16"
+ Name 430 "i32"
+ Name 433 "i64"
+ Name 436 "i16v4"
+ Name 439 "u32"
+ Name 440 "u16v2"
+ Name 444 "u64"
+ Name 447 "u16v4"
+ Name 459 "bv"
+ Name 520 "Block"
+ MemberName 520(Block) 0 "i16"
+ MemberName 520(Block) 1 "i16v2"
+ MemberName 520(Block) 2 "i16v3"
+ MemberName 520(Block) 3 "i16v4"
+ MemberName 520(Block) 4 "u16"
+ MemberName 520(Block) 5 "u16v2"
+ MemberName 520(Block) 6 "u16v3"
+ MemberName 520(Block) 7 "u16v4"
+ Name 522 "block"
+ Name 523 "si16"
+ Name 524 "su16"
+ MemberDecorate 24(Uniforms) 0 Offset 0
+ Decorate 24(Uniforms) Block
+ Decorate 26 DescriptorSet 0
+ Decorate 26 Binding 0
+ MemberDecorate 520(Block) 0 Offset 0
+ MemberDecorate 520(Block) 1 Offset 4
+ MemberDecorate 520(Block) 2 Offset 8
+ MemberDecorate 520(Block) 3 Offset 16
+ MemberDecorate 520(Block) 4 Offset 24
+ MemberDecorate 520(Block) 5 Offset 28
+ MemberDecorate 520(Block) 6 Offset 32
+ MemberDecorate 520(Block) 7 Offset 40
+ Decorate 520(Block) Block
+ Decorate 522(block) DescriptorSet 0
+ Decorate 522(block) Binding 1
+ Decorate 523(si16) SpecId 100
+ Decorate 524(su16) SpecId 101
2: TypeVoid
3: TypeFunction 2
- 14: TypeInt 16 0
+ 14: TypeInt 16 1
15: TypePointer Function 14(int)
- 17: TypeInt 16 1
- 18: TypeInt 32 0
- 19: 18(int) Constant 3
- 20: TypeArray 17(int) 19
- 21: 17(int) Constant 273
- 22: 17(int) Constant 65534
- 23: 17(int) Constant 256
- 24: 20 ConstantComposite 21 22 23
- 25(Uniforms): TypeStruct 18(int)
- 26: TypePointer Uniform 25(Uniforms)
- 27: 26(ptr) Variable Uniform
- 28: TypeInt 32 1
- 29: 28(int) Constant 0
- 30: TypePointer Uniform 18(int)
- 33: TypePointer Function 20
- 35: TypePointer Function 17(int)
- 39: TypeArray 14(int) 19
- 40: 14(int) Constant 65535
- 41: 39 ConstantComposite 40 40 40
- 44: TypePointer Function 39
- 49: TypeVector 14(int) 3
- 50: TypePointer Function 49(ivec3)
- 53: 17(int) Constant 1
- 54: TypeVector 17(int) 3
- 107: TypePointer Function 28(int)
- 111: TypeVector 28(int) 3
- 114: 18(int) Constant 1
- 120: 18(int) Constant 2
- 128: TypeBool
- 129: TypePointer Function 128(bool)
- 131: 18(int) Constant 0
- 150: TypePointer Function 18(int)
- 188: TypeVector 17(int) 2
- 189: TypePointer Function 188(ivec2)
- 191: TypeVector 128(bool) 2
- 192: TypePointer Function 191(bvec2)
- 195: 17(int) Constant 0
- 196: 188(ivec2) ConstantComposite 195 195
- 197: 188(ivec2) ConstantComposite 53 53
- 199: TypeVector 14(int) 2
- 200: TypePointer Function 199(ivec2)
- 203: 14(int) Constant 0
- 204: 14(int) Constant 1
- 205: 199(ivec2) ConstantComposite 203 203
- 206: 199(ivec2) ConstantComposite 204 204
- 212: TypeVector 28(int) 2
- 213: TypePointer Function 212(ivec2)
- 223: TypeVector 18(int) 2
- 226: TypePointer Function 223(ivec2)
- 238: TypeFloat 32
- 239: TypeVector 238(float) 2
- 240: TypePointer Function 239(fvec2)
- 250: TypeFloat 64
- 251: TypeVector 250(float) 2
- 252: TypePointer Function 251(fvec2)
- 262: TypeFloat 16
- 263: TypeVector 262(float) 2
- 264: TypePointer Function 263(fvec2)
- 274: TypeInt 64 1
- 275: TypeVector 274(int) 2
- 276: TypePointer Function 275(ivec2)
- 286: TypeInt 64 0
- 287: TypeVector 286(int) 2
- 290: TypePointer Function 287(ivec2)
- 317: 17(int) Constant 65535
- 318: 188(ivec2) ConstantComposite 317 317
- 327: 49(ivec3) ConstantComposite 203 203 203
- 369: 128(bool) ConstantTrue
- 376: 128(bool) ConstantFalse
- 377: 191(bvec2) ConstantComposite 376 376
- 389: TypeVector 128(bool) 3
- 390: 389(bvec3) ConstantComposite 376 376 376
- 392: TypeVector 262(float) 3
- 393: TypePointer Function 392(fvec3)
- 396: TypePointer Function 54(ivec3)
- 398(ResType): TypeStruct 392(fvec3) 54(ivec3)
- 408: TypePointer Function 262(float)
- 432: TypePointer Function 274(int)
- 435: TypeVector 17(int) 4
- 441: TypePointer Function 286(int)
- 444: TypeVector 14(int) 4
- 450: TypePointer Function 389(bvec3)
- 516(Block): TypeStruct 54(ivec3) 14(int)
- 517: TypePointer Uniform 516(Block)
- 518(block): 517(ptr) Variable Uniform
- 519: TypePointer Input 49(ivec3)
- 520(iu16v): 519(ptr) Variable Input
- 521: TypePointer Input 17(int)
- 522(ii16): 521(ptr) Variable Input
- 523(si64): 274(int) SpecConstant 4294967286 4294967295
- 524(su64): 286(int) SpecConstant 20 0
- 525(si): 28(int) SpecConstant 4294967291
- 526(su): 18(int) SpecConstant 4
- 527(sb): 128(bool) SpecConstantTrue
- 528(si16): 17(int) SpecConstant 65531
- 529(su16): 14(int) SpecConstant 4
- 530: 128(bool) SpecConstantOp 171 528(si16) 203
- 531: 128(bool) SpecConstantOp 171 529(su16) 203
- 532: 17(int) SpecConstantOp 169 527(sb) 53 195
- 533: 14(int) SpecConstantOp 169 527(sb) 204 203
- 534: 28(int) SpecConstantOp 114 528(si16)
- 535: 18(int) SpecConstantOp 113 529(su16)
- 536: 28(int) SpecConstantOp 128 535 131
- 537: 17(int) SpecConstantOp 114 525(si)
- 538: 17(int) SpecConstantOp 114 525(si)
- 539: 14(int) SpecConstantOp 128 538 203
- 540: 28(int) SpecConstantOp 114 528(si16)
- 541: 18(int) SpecConstantOp 128 540 131
- 542: 18(int) SpecConstantOp 113 529(su16)
- 543: 14(int) SpecConstantOp 113 526(su)
- 544: 17(int) SpecConstantOp 128 543 203
- 545: 14(int) SpecConstantOp 113 526(su)
- 546: 274(int) SpecConstantOp 114 528(si16)
- 547: 286(int) SpecConstantOp 113 529(su16)
- 548: 286(int) Constant 0 0
- 549: 274(int) SpecConstantOp 128 547 548
- 550: 17(int) SpecConstantOp 114 523(si64)
- 551: 17(int) SpecConstantOp 114 523(si64)
- 552: 14(int) SpecConstantOp 128 551 203
- 553: 274(int) SpecConstantOp 114 528(si16)
- 554: 286(int) SpecConstantOp 128 553 548
- 555: 286(int) SpecConstantOp 113 529(su16)
- 556: 14(int) SpecConstantOp 113 524(su64)
- 557: 17(int) SpecConstantOp 128 556 203
- 558: 14(int) SpecConstantOp 113 524(su64)
- 559: 14(int) SpecConstantOp 128 528(si16) 203
- 560: 17(int) SpecConstantOp 128 529(su16) 203
+ 17: TypeInt 32 0
+ 18: 17(int) Constant 3
+ 19: TypeArray 14(int) 18
+ 20: 14(int) Constant 4294962927
+ 21: 14(int) Constant 4294967295
+ 22: 14(int) Constant 16384
+ 23: 19 ConstantComposite 20 21 22
+ 24(Uniforms): TypeStruct 17(int)
+ 25: TypePointer Uniform 24(Uniforms)
+ 26: 25(ptr) Variable Uniform
+ 27: TypeInt 32 1
+ 28: 27(int) Constant 0
+ 29: TypePointer Uniform 17(int)
+ 32: TypePointer Function 19
+ 36: TypeInt 16 0
+ 37: TypePointer Function 36(int)
+ 39: TypeArray 36(int) 18
+ 40: 36(int) Constant 65535
+ 41: 36(int) Constant 32767
+ 42: 39 ConstantComposite 40 40 41
+ 45: TypePointer Function 39
+ 49: TypeVector 27(int) 2
+ 50: TypePointer Function 49(ivec2)
+ 52: TypeVector 14(int) 2
+ 53: TypePointer Function 52(ivec2)
+ 57: TypeVector 36(int) 2
+ 58: TypePointer Function 57(ivec2)
+ 65: TypeVector 17(int) 2
+ 66: TypePointer Function 65(ivec2)
+ 71: TypeInt 64 1
+ 72: TypeVector 71(int) 2
+ 73: TypePointer Function 72(ivec2)
+ 77: TypeInt 64 0
+ 78: TypeVector 77(int) 2
+ 79: TypePointer Function 78(ivec2)
+ 91: TypeFloat 16
+ 92: TypeVector 91(float) 2
+ 93: TypePointer Function 92(fvec2)
+ 97: TypeFloat 32
+ 98: TypeVector 97(float) 2
+ 99: TypePointer Function 98(fvec2)
+ 103: TypeFloat 64
+ 104: TypeVector 103(float) 2
+ 105: TypePointer Function 104(fvec2)
+ 151: TypeInt 8 1
+ 152: TypeVector 151(int) 2
+ 153: TypePointer Function 152(ivec2)
+ 160: TypeInt 8 0
+ 161: TypeVector 160(int) 2
+ 162: TypePointer Function 161(ivec2)
+ 173: TypeBool
+ 174: TypeVector 173(bool) 2
+ 175: TypePointer Function 174(bvec2)
+ 178: 14(int) Constant 0
+ 179: 14(int) Constant 1
+ 180: 52(ivec2) ConstantComposite 178 178
+ 181: 52(ivec2) ConstantComposite 179 179
+ 184: 36(int) Constant 0
+ 185: 36(int) Constant 1
+ 186: 57(ivec2) ConstantComposite 184 184
+ 187: 57(ivec2) ConstantComposite 185 185
+ 193: TypeVector 36(int) 3
+ 194: TypePointer Function 193(ivec3)
+ 197: TypeVector 14(int) 3
+ 219: TypePointer Function 27(int)
+ 225: TypeVector 17(int) 3
+ 226: TypePointer Function 225(ivec3)
+ 242: TypePointer Function 71(int)
+ 264: 17(int) Constant 1
+ 270: 17(int) Constant 2
+ 275: TypeVector 27(int) 3
+ 282: TypePointer Function 173(bool)
+ 284: 17(int) Constant 0
+ 298: TypePointer Function 17(int)
+ 356: 52(ivec2) ConstantComposite 21 21
+ 365: 193(ivec3) ConstantComposite 184 184 184
+ 407: 173(bool) ConstantTrue
+ 414: 173(bool) ConstantFalse
+ 415: 174(bvec2) ConstantComposite 414 414
+ 427: TypeVector 173(bool) 3
+ 428: 427(bvec3) ConstantComposite 414 414 414
+ 434: TypeVector 14(int) 4
+ 435: TypePointer Function 434(ivec4)
+ 443: TypePointer Function 77(int)
+ 445: TypeVector 36(int) 4
+ 446: TypePointer Function 445(ivec4)
+ 458: TypePointer Function 427(bvec3)
+ 520(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445(ivec4)
+ 521: TypePointer Uniform 520(Block)
+ 522(block): 521(ptr) Variable Uniform
+ 523(si16): 14(int) SpecConstant 4294967286
+ 524(su16): 36(int) SpecConstant 20
4(main): 2 Function None 3
5: Label
- 512: 2 FunctionCall 6(literal()
- 513: 2 FunctionCall 8(operators()
- 514: 2 FunctionCall 10(typeCast()
- 515: 2 FunctionCall 12(builtinFuncs()
Return
FunctionEnd
6(literal(): 2 Function None 3
7: Label
- 16(u16): 15(ptr) Variable Function
- 34(indexable): 33(ptr) Variable Function
- 45(indexable): 44(ptr) Variable Function
- 31: 30(ptr) AccessChain 27 29
- 32: 18(int) Load 31
- Store 34(indexable) 24
- 36: 35(ptr) AccessChain 34(indexable) 32
- 37: 17(int) Load 36
- 38: 14(int) Bitcast 37
- 42: 30(ptr) AccessChain 27 29
- 43: 18(int) Load 42
- Store 45(indexable) 41
- 46: 15(ptr) AccessChain 45(indexable) 43
- 47: 14(int) Load 46
- 48: 14(int) IAdd 38 47
- Store 16(u16) 48
+ 16(i16): 15(ptr) Variable Function
+ 33(indexable): 32(ptr) Variable Function
+ 38(u16): 37(ptr) Variable Function
+ 46(indexable): 45(ptr) Variable Function
+ 30: 29(ptr) AccessChain 26 28
+ 31: 17(int) Load 30
+ Store 33(indexable) 23
+ 34: 15(ptr) AccessChain 33(indexable) 31
+ 35: 14(int) Load 34
+ Store 16(i16) 35
+ 43: 29(ptr) AccessChain 26 28
+ 44: 17(int) Load 43
+ Store 46(indexable) 42
+ 47: 37(ptr) AccessChain 46(indexable) 44
+ 48: 36(int) Load 47
+ Store 38(u16) 48
Return
FunctionEnd
- 8(operators(): 2 Function None 3
+ 8(typeCast16(): 2 Function None 3
9: Label
- 51(u16v): 50(ptr) Variable Function
- 57(i16): 35(ptr) Variable Function
- 70(u16): 15(ptr) Variable Function
- 108(i): 107(ptr) Variable Function
- 130(b): 129(ptr) Variable Function
- 151(u): 150(ptr) Variable Function
- 52: 49(ivec3) Load 51(u16v)
- 55: 54(ivec3) CompositeConstruct 53 53 53
- 56: 49(ivec3) IAdd 52 55
- Store 51(u16v) 56
- 58: 17(int) Load 57(i16)
- 59: 17(int) ISub 58 53
- Store 57(i16) 59
- 60: 17(int) Load 57(i16)
- 61: 17(int) IAdd 60 53
- Store 57(i16) 61
- 62: 49(ivec3) Load 51(u16v)
- 63: 54(ivec3) CompositeConstruct 53 53 53
- 64: 49(ivec3) ISub 62 63
- Store 51(u16v) 64
- 65: 49(ivec3) Load 51(u16v)
- 66: 49(ivec3) Not 65
- Store 51(u16v) 66
- 67: 17(int) Load 57(i16)
- Store 57(i16) 67
- 68: 49(ivec3) Load 51(u16v)
- 69: 49(ivec3) SNegate 68
- Store 51(u16v) 69
- 71: 17(int) Load 57(i16)
- 72: 14(int) Bitcast 71
- 73: 14(int) Load 70(u16)
- 74: 14(int) IAdd 73 72
- Store 70(u16) 74
- 75: 49(ivec3) Load 51(u16v)
- 76: 49(ivec3) Load 51(u16v)
- 77: 49(ivec3) ISub 76 75
- Store 51(u16v) 77
- 78: 17(int) Load 57(i16)
- 79: 17(int) Load 57(i16)
- 80: 17(int) IMul 79 78
- Store 57(i16) 80
- 81: 49(ivec3) Load 51(u16v)
- 82: 49(ivec3) Load 51(u16v)
- 83: 49(ivec3) UDiv 82 81
- Store 51(u16v) 83
- 84: 17(int) Load 57(i16)
- 85: 14(int) Bitcast 84
- 86: 49(ivec3) Load 51(u16v)
- 87: 49(ivec3) CompositeConstruct 85 85 85
- 88: 49(ivec3) UMod 86 87
- Store 51(u16v) 88
- 89: 49(ivec3) Load 51(u16v)
- 90: 49(ivec3) Load 51(u16v)
- 91: 49(ivec3) IAdd 89 90
- Store 51(u16v) 91
- 92: 17(int) Load 57(i16)
- 93: 14(int) Bitcast 92
- 94: 14(int) Load 70(u16)
- 95: 14(int) ISub 93 94
- Store 70(u16) 95
- 96: 49(ivec3) Load 51(u16v)
- 97: 17(int) Load 57(i16)
- 98: 14(int) Bitcast 97
- 99: 49(ivec3) CompositeConstruct 98 98 98
- 100: 49(ivec3) IMul 96 99
- Store 51(u16v) 100
- 101: 17(int) Load 57(i16)
- 102: 17(int) Load 57(i16)
- 103: 17(int) IMul 101 102
- Store 57(i16) 103
- 104: 17(int) Load 57(i16)
- 105: 17(int) Load 57(i16)
- 106: 17(int) SMod 104 105
- Store 57(i16) 106
- 109: 28(int) Load 108(i)
- 110: 49(ivec3) Load 51(u16v)
- 112: 111(ivec3) CompositeConstruct 109 109 109
- 113: 49(ivec3) ShiftLeftLogical 110 112
- Store 51(u16v) 113
- 115: 15(ptr) AccessChain 51(u16v) 114
- 116: 14(int) Load 115
- 117: 17(int) Load 57(i16)
- 118: 17(int) ShiftRightArithmetic 117 116
- Store 57(i16) 118
- 119: 17(int) Load 57(i16)
- 121: 15(ptr) AccessChain 51(u16v) 120
- 122: 14(int) Load 121
- 123: 17(int) ShiftLeftLogical 119 122
- Store 57(i16) 123
- 124: 49(ivec3) Load 51(u16v)
- 125: 17(int) Load 57(i16)
- 126: 54(ivec3) CompositeConstruct 125 125 125
- 127: 49(ivec3) ShiftLeftLogical 124 126
- Store 51(u16v) 127
- 132: 15(ptr) AccessChain 51(u16v) 131
- 133: 14(int) Load 132
- 134: 17(int) Load 57(i16)
- 135: 14(int) Bitcast 134
- 136: 128(bool) INotEqual 133 135
- Store 130(b) 136
- 137: 17(int) Load 57(i16)
- 138: 14(int) Bitcast 137
- 139: 15(ptr) AccessChain 51(u16v) 131
- 140: 14(int) Load 139
- 141: 128(bool) IEqual 138 140
- Store 130(b) 141
- 142: 15(ptr) AccessChain 51(u16v) 131
- 143: 14(int) Load 142
- 144: 15(ptr) AccessChain 51(u16v) 114
- 145: 14(int) Load 144
- 146: 128(bool) UGreaterThan 143 145
- Store 130(b) 146
- 147: 17(int) Load 57(i16)
- 148: 28(int) SConvert 147
- 149: 18(int) Bitcast 148
- 152: 18(int) Load 151(u)
- 153: 128(bool) ULessThan 149 152
- Store 130(b) 153
- 154: 15(ptr) AccessChain 51(u16v) 114
- 155: 14(int) Load 154
- 156: 15(ptr) AccessChain 51(u16v) 131
- 157: 14(int) Load 156
- 158: 128(bool) UGreaterThanEqual 155 157
- Store 130(b) 158
- 159: 17(int) Load 57(i16)
- 160: 28(int) SConvert 159
- 161: 28(int) Load 108(i)
- 162: 128(bool) SLessThanEqual 160 161
- Store 130(b) 162
- 163: 17(int) Load 57(i16)
- 164: 14(int) Bitcast 163
- 165: 49(ivec3) Load 51(u16v)
- 166: 49(ivec3) CompositeConstruct 164 164 164
- 167: 49(ivec3) BitwiseOr 165 166
- Store 51(u16v) 167
- 168: 17(int) Load 57(i16)
- 169: 14(int) Bitcast 168
- 170: 14(int) Load 70(u16)
- 171: 14(int) BitwiseOr 169 170
- Store 70(u16) 171
- 172: 17(int) Load 57(i16)
- 173: 17(int) Load 57(i16)
- 174: 17(int) BitwiseAnd 173 172
- Store 57(i16) 174
- 175: 49(ivec3) Load 51(u16v)
- 176: 49(ivec3) Load 51(u16v)
- 177: 49(ivec3) BitwiseAnd 175 176
- Store 51(u16v) 177
- 178: 17(int) Load 57(i16)
- 179: 14(int) Bitcast 178
- 180: 49(ivec3) Load 51(u16v)
- 181: 49(ivec3) CompositeConstruct 179 179 179
- 182: 49(ivec3) BitwiseXor 180 181
- Store 51(u16v) 182
- 183: 49(ivec3) Load 51(u16v)
- 184: 17(int) Load 57(i16)
- 185: 14(int) Bitcast 184
- 186: 49(ivec3) CompositeConstruct 185 185 185
- 187: 49(ivec3) BitwiseXor 183 186
- Store 51(u16v) 187
+ 51(i32v): 50(ptr) Variable Function
+ 54(i16v): 53(ptr) Variable Function
+ 59(u16v): 58(ptr) Variable Function
+ 67(u32v): 66(ptr) Variable Function
+ 74(i64v): 73(ptr) Variable Function
+ 80(u64v): 79(ptr) Variable Function
+ 94(f16v): 93(ptr) Variable Function
+ 100(f32v): 99(ptr) Variable Function
+ 106(f64v): 105(ptr) Variable Function
+ 154(i8v): 153(ptr) Variable Function
+ 163(u8v): 162(ptr) Variable Function
+ 176(bv): 175(ptr) Variable Function
+ 55: 52(ivec2) Load 54(i16v)
+ 56: 49(ivec2) SConvert 55
+ Store 51(i32v) 56
+ 60: 57(ivec2) Load 59(u16v)
+ 61: 49(ivec2) UConvert 60
+ 62: 49(ivec2) Bitcast 61
+ Store 51(i32v) 62
+ 63: 52(ivec2) Load 54(i16v)
+ 64: 57(ivec2) Bitcast 63
+ Store 59(u16v) 64
+ 68: 52(ivec2) Load 54(i16v)
+ 69: 49(ivec2) SConvert 68
+ 70: 65(ivec2) Bitcast 69
+ Store 67(u32v) 70
+ 75: 52(ivec2) Load 54(i16v)
+ 76: 72(ivec2) SConvert 75
+ Store 74(i64v) 76
+ 81: 52(ivec2) Load 54(i16v)
+ 82: 72(ivec2) SConvert 81
+ 83: 78(ivec2) Bitcast 82
+ Store 80(u64v) 83
+ 84: 57(ivec2) Load 59(u16v)
+ 85: 65(ivec2) UConvert 84
+ Store 67(u32v) 85
+ 86: 57(ivec2) Load 59(u16v)
+ 87: 72(ivec2) UConvert 86
+ 88: 72(ivec2) Bitcast 87
+ Store 74(i64v) 88
+ 89: 57(ivec2) Load 59(u16v)
+ 90: 78(ivec2) UConvert 89
+ Store 80(u64v) 90
+ 95: 52(ivec2) Load 54(i16v)
+ 96: 92(fvec2) ConvertSToF 95
+ Store 94(f16v) 96
+ 101: 52(ivec2) Load 54(i16v)
+ 102: 98(fvec2) ConvertSToF 101
+ Store 100(f32v) 102
+ 107: 52(ivec2) Load 54(i16v)
+ 108: 104(fvec2) ConvertSToF 107
+ Store 106(f64v) 108
+ 109: 57(ivec2) Load 59(u16v)
+ 110: 92(fvec2) ConvertUToF 109
+ Store 94(f16v) 110
+ 111: 57(ivec2) Load 59(u16v)
+ 112: 98(fvec2) ConvertUToF 111
+ Store 100(f32v) 112
+ 113: 57(ivec2) Load 59(u16v)
+ 114: 104(fvec2) ConvertUToF 113
+ Store 106(f64v) 114
+ 115: 52(ivec2) Load 54(i16v)
+ 116: 49(ivec2) SConvert 115
+ Store 51(i32v) 116
+ 117: 57(ivec2) Load 59(u16v)
+ 118: 49(ivec2) UConvert 117
+ 119: 49(ivec2) Bitcast 118
+ Store 51(i32v) 119
+ 120: 52(ivec2) Load 54(i16v)
+ 121: 57(ivec2) Bitcast 120
+ Store 59(u16v) 121
+ 122: 52(ivec2) Load 54(i16v)
+ 123: 49(ivec2) SConvert 122
+ 124: 65(ivec2) Bitcast 123
+ Store 67(u32v) 124
+ 125: 52(ivec2) Load 54(i16v)
+ 126: 72(ivec2) SConvert 125
+ Store 74(i64v) 126
+ 127: 52(ivec2) Load 54(i16v)
+ 128: 72(ivec2) SConvert 127
+ 129: 78(ivec2) Bitcast 128
+ Store 80(u64v) 129
+ 130: 57(ivec2) Load 59(u16v)
+ 131: 65(ivec2) UConvert 130
+ Store 67(u32v) 131
+ 132: 57(ivec2) Load 59(u16v)
+ 133: 72(ivec2) UConvert 132
+ 134: 72(ivec2) Bitcast 133
+ Store 74(i64v) 134
+ 135: 57(ivec2) Load 59(u16v)
+ 136: 72(ivec2) UConvert 135
+ 137: 72(ivec2) Bitcast 136
+ 138: 78(ivec2) Bitcast 137
+ Store 80(u64v) 138
+ 139: 52(ivec2) Load 54(i16v)
+ 140: 92(fvec2) ConvertSToF 139
+ Store 94(f16v) 140
+ 141: 52(ivec2) Load 54(i16v)
+ 142: 98(fvec2) ConvertSToF 141
+ Store 100(f32v) 142
+ 143: 52(ivec2) Load 54(i16v)
+ 144: 104(fvec2) ConvertSToF 143
+ Store 106(f64v) 144
+ 145: 57(ivec2) Load 59(u16v)
+ 146: 92(fvec2) ConvertUToF 145
+ Store 94(f16v) 146
+ 147: 57(ivec2) Load 59(u16v)
+ 148: 98(fvec2) ConvertUToF 147
+ Store 100(f32v) 148
+ 149: 57(ivec2) Load 59(u16v)
+ 150: 104(fvec2) ConvertUToF 149
+ Store 106(f64v) 150
+ 155: 52(ivec2) Load 54(i16v)
+ 156: 152(ivec2) SConvert 155
+ Store 154(i8v) 156
+ 157: 57(ivec2) Load 59(u16v)
+ 158: 152(ivec2) UConvert 157
+ 159: 152(ivec2) Bitcast 158
+ Store 154(i8v) 159
+ 164: 52(ivec2) Load 54(i16v)
+ 165: 152(ivec2) SConvert 164
+ 166: 161(ivec2) Bitcast 165
+ Store 163(u8v) 166
+ 167: 57(ivec2) Load 59(u16v)
+ 168: 161(ivec2) UConvert 167
+ Store 163(u8v) 168
+ 169: 57(ivec2) Load 59(u16v)
+ 170: 161(ivec2) UConvert 169
+ 171: 52(ivec2) UConvert 170
+ 172: 52(ivec2) Bitcast 171
+ Store 54(i16v) 172
+ 177: 174(bvec2) Load 176(bv)
+ 182: 52(ivec2) Select 177 181 180
+ Store 54(i16v) 182
+ 183: 174(bvec2) Load 176(bv)
+ 188: 57(ivec2) Select 183 187 186
+ Store 59(u16v) 188
+ 189: 52(ivec2) Load 54(i16v)
+ 190: 174(bvec2) INotEqual 189 186
+ Store 176(bv) 190
+ 191: 57(ivec2) Load 59(u16v)
+ 192: 174(bvec2) INotEqual 191 186
+ Store 176(bv) 192
Return
FunctionEnd
- 10(typeCast(): 2 Function None 3
+ 10(operators(): 2 Function None 3
11: Label
- 190(i16v): 189(ptr) Variable Function
- 193(bv): 192(ptr) Variable Function
- 201(u16v): 200(ptr) Variable Function
- 214(iv): 213(ptr) Variable Function
+ 195(u16v): 194(ptr) Variable Function
+ 200(i16): 15(ptr) Variable Function
+ 220(i): 219(ptr) Variable Function
227(uv): 226(ptr) Variable Function
- 241(fv): 240(ptr) Variable Function
- 253(dv): 252(ptr) Variable Function
- 265(f16v): 264(ptr) Variable Function
- 277(i64v): 276(ptr) Variable Function
- 291(u64v): 290(ptr) Variable Function
- 194: 191(bvec2) Load 193(bv)
- 198: 188(ivec2) Select 194 197 196
- Store 190(i16v) 198
- 202: 191(bvec2) Load 193(bv)
- 207: 199(ivec2) Select 202 206 205
- Store 201(u16v) 207
- 208: 188(ivec2) Load 190(i16v)
- 209: 191(bvec2) INotEqual 208 205
- Store 193(bv) 209
- 210: 199(ivec2) Load 201(u16v)
- 211: 191(bvec2) INotEqual 210 205
- Store 193(bv) 211
- 215: 212(ivec2) Load 214(iv)
- 216: 188(ivec2) SConvert 215
- Store 190(i16v) 216
- 217: 212(ivec2) Load 214(iv)
- 218: 188(ivec2) SConvert 217
- 219: 199(ivec2) Bitcast 218
- Store 201(u16v) 219
- 220: 188(ivec2) Load 190(i16v)
- 221: 212(ivec2) SConvert 220
- Store 214(iv) 221
- 222: 199(ivec2) Load 201(u16v)
- 224: 223(ivec2) UConvert 222
- 225: 212(ivec2) Bitcast 224
- Store 214(iv) 225
- 228: 223(ivec2) Load 227(uv)
- 229: 199(ivec2) UConvert 228
- 230: 188(ivec2) Bitcast 229
- Store 190(i16v) 230
- 231: 223(ivec2) Load 227(uv)
- 232: 199(ivec2) UConvert 231
- Store 201(u16v) 232
- 233: 188(ivec2) Load 190(i16v)
- 234: 212(ivec2) SConvert 233
- 235: 223(ivec2) Bitcast 234
- Store 227(uv) 235
- 236: 199(ivec2) Load 201(u16v)
- 237: 223(ivec2) UConvert 236
+ 243(i64): 242(ptr) Variable Function
+ 283(b): 282(ptr) Variable Function
+ 196: 193(ivec3) Load 195(u16v)
+ 198: 197(ivec3) CompositeConstruct 179 179 179
+ 199: 193(ivec3) IAdd 196 198
+ Store 195(u16v) 199
+ 201: 14(int) Load 200(i16)
+ 202: 14(int) ISub 201 179
+ Store 200(i16) 202
+ 203: 14(int) Load 200(i16)
+ 204: 14(int) IAdd 203 179
+ Store 200(i16) 204
+ 205: 193(ivec3) Load 195(u16v)
+ 206: 197(ivec3) CompositeConstruct 179 179 179
+ 207: 193(ivec3) ISub 205 206
+ Store 195(u16v) 207
+ 208: 193(ivec3) Load 195(u16v)
+ 209: 193(ivec3) Not 208
+ Store 195(u16v) 209
+ 210: 14(int) Load 200(i16)
+ Store 200(i16) 210
+ 211: 193(ivec3) Load 195(u16v)
+ 212: 193(ivec3) SNegate 211
+ Store 195(u16v) 212
+ 213: 14(int) Load 200(i16)
+ 214: 14(int) Load 200(i16)
+ 215: 14(int) IAdd 214 213
+ Store 200(i16) 215
+ 216: 193(ivec3) Load 195(u16v)
+ 217: 193(ivec3) Load 195(u16v)
+ 218: 193(ivec3) ISub 217 216
+ Store 195(u16v) 218
+ 221: 14(int) Load 200(i16)
+ 222: 27(int) SConvert 221
+ 223: 27(int) Load 220(i)
+ 224: 27(int) IMul 223 222
+ Store 220(i) 224
+ 228: 193(ivec3) Load 195(u16v)
+ 229: 225(ivec3) UConvert 228
+ 230: 225(ivec3) Load 227(uv)
+ 231: 225(ivec3) UDiv 230 229
+ Store 227(uv) 231
+ 232: 14(int) Load 200(i16)
+ 233: 27(int) SConvert 232
+ 234: 17(int) Bitcast 233
+ 235: 225(ivec3) Load 227(uv)
+ 236: 225(ivec3) CompositeConstruct 234 234 234
+ 237: 225(ivec3) UMod 235 236
Store 227(uv) 237
- 242: 239(fvec2) Load 241(fv)
- 243: 188(ivec2) ConvertFToS 242
- Store 190(i16v) 243
- 244: 239(fvec2) Load 241(fv)
- 245: 199(ivec2) ConvertFToU 244
- Store 201(u16v) 245
- 246: 188(ivec2) Load 190(i16v)
- 247: 239(fvec2) ConvertSToF 246
- Store 241(fv) 247
- 248: 199(ivec2) Load 201(u16v)
- 249: 239(fvec2) ConvertUToF 248
- Store 241(fv) 249
- 254: 251(fvec2) Load 253(dv)
- 255: 188(ivec2) ConvertFToS 254
- Store 190(i16v) 255
- 256: 251(fvec2) Load 253(dv)
- 257: 199(ivec2) ConvertFToU 256
- Store 201(u16v) 257
- 258: 188(ivec2) Load 190(i16v)
- 259: 251(fvec2) ConvertSToF 258
- Store 253(dv) 259
- 260: 199(ivec2) Load 201(u16v)
- 261: 251(fvec2) ConvertUToF 260
- Store 253(dv) 261
- 266: 263(fvec2) Load 265(f16v)
- 267: 188(ivec2) ConvertFToS 266
- Store 190(i16v) 267
- 268: 263(fvec2) Load 265(f16v)
- 269: 199(ivec2) ConvertFToU 268
- Store 201(u16v) 269
- 270: 188(ivec2) Load 190(i16v)
- 271: 263(fvec2) ConvertSToF 270
- Store 265(f16v) 271
- 272: 199(ivec2) Load 201(u16v)
- 273: 263(fvec2) ConvertUToF 272
- Store 265(f16v) 273
- 278: 275(ivec2) Load 277(i64v)
- 279: 188(ivec2) SConvert 278
- Store 190(i16v) 279
- 280: 275(ivec2) Load 277(i64v)
- 281: 188(ivec2) SConvert 280
- 282: 199(ivec2) Bitcast 281
- Store 201(u16v) 282
- 283: 188(ivec2) Load 190(i16v)
- 284: 275(ivec2) SConvert 283
- Store 277(i64v) 284
- 285: 199(ivec2) Load 201(u16v)
- 288: 287(ivec2) UConvert 285
- 289: 275(ivec2) Bitcast 288
- Store 277(i64v) 289
- 292: 287(ivec2) Load 291(u64v)
- 293: 199(ivec2) UConvert 292
- 294: 188(ivec2) Bitcast 293
- Store 190(i16v) 294
- 295: 287(ivec2) Load 291(u64v)
- 296: 199(ivec2) UConvert 295
- Store 201(u16v) 296
- 297: 188(ivec2) Load 190(i16v)
- 298: 275(ivec2) SConvert 297
- 299: 287(ivec2) Bitcast 298
- Store 291(u64v) 299
- 300: 199(ivec2) Load 201(u16v)
- 301: 287(ivec2) UConvert 300
- Store 291(u64v) 301
- 302: 199(ivec2) Load 201(u16v)
- 303: 188(ivec2) Bitcast 302
- Store 190(i16v) 303
- 304: 188(ivec2) Load 190(i16v)
- 305: 199(ivec2) Bitcast 304
- Store 201(u16v) 305
+ 238: 193(ivec3) Load 195(u16v)
+ 239: 225(ivec3) UConvert 238
+ 240: 225(ivec3) Load 227(uv)
+ 241: 225(ivec3) IAdd 239 240
+ Store 227(uv) 241
+ 244: 14(int) Load 200(i16)
+ 245: 71(int) SConvert 244
+ 246: 71(int) Load 243(i64)
+ 247: 71(int) ISub 245 246
+ Store 243(i64) 247
+ 248: 193(ivec3) Load 195(u16v)
+ 249: 225(ivec3) UConvert 248
+ 250: 225(ivec3) Load 227(uv)
+ 251: 225(ivec3) IMul 249 250
+ Store 227(uv) 251
+ 252: 14(int) Load 200(i16)
+ 253: 71(int) SConvert 252
+ 254: 71(int) Load 243(i64)
+ 255: 71(int) IMul 253 254
+ Store 243(i64) 255
+ 256: 14(int) Load 200(i16)
+ 257: 27(int) SConvert 256
+ 258: 27(int) Load 220(i)
+ 259: 27(int) SMod 257 258
+ Store 220(i) 259
+ 260: 14(int) Load 200(i16)
+ 261: 193(ivec3) Load 195(u16v)
+ 262: 197(ivec3) CompositeConstruct 260 260 260
+ 263: 193(ivec3) ShiftLeftLogical 261 262
+ Store 195(u16v) 263
+ 265: 37(ptr) AccessChain 195(u16v) 264
+ 266: 36(int) Load 265
+ 267: 14(int) Load 200(i16)
+ 268: 14(int) ShiftRightArithmetic 267 266
+ Store 200(i16) 268
+ 269: 14(int) Load 200(i16)
+ 271: 37(ptr) AccessChain 195(u16v) 270
+ 272: 36(int) Load 271
+ 273: 14(int) ShiftLeftLogical 269 272
+ Store 200(i16) 273
+ 274: 193(ivec3) Load 195(u16v)
+ 276: 275(ivec3) UConvert 274
+ 277: 275(ivec3) Bitcast 276
+ 278: 27(int) Load 220(i)
+ 279: 275(ivec3) CompositeConstruct 278 278 278
+ 280: 275(ivec3) ShiftLeftLogical 277 279
+ 281: 225(ivec3) Bitcast 280
+ Store 227(uv) 281
+ 285: 37(ptr) AccessChain 195(u16v) 284
+ 286: 36(int) Load 285
+ 287: 14(int) Load 200(i16)
+ 288: 36(int) Bitcast 287
+ 289: 173(bool) INotEqual 286 288
+ Store 283(b) 289
+ 290: 14(int) Load 200(i16)
+ 291: 36(int) Bitcast 290
+ 292: 37(ptr) AccessChain 195(u16v) 284
+ 293: 36(int) Load 292
+ 294: 173(bool) IEqual 291 293
+ Store 283(b) 294
+ 295: 37(ptr) AccessChain 195(u16v) 284
+ 296: 36(int) Load 295
+ 297: 17(int) UConvert 296
+ 299: 298(ptr) AccessChain 227(uv) 264
+ 300: 17(int) Load 299
+ 301: 173(bool) UGreaterThan 297 300
+ Store 283(b) 301
+ 302: 14(int) Load 200(i16)
+ 303: 27(int) SConvert 302
+ 304: 27(int) Load 220(i)
+ 305: 173(bool) SLessThan 303 304
+ Store 283(b) 305
+ 306: 37(ptr) AccessChain 195(u16v) 264
+ 307: 36(int) Load 306
+ 308: 17(int) UConvert 307
+ 309: 298(ptr) AccessChain 227(uv) 284
+ 310: 17(int) Load 309
+ 311: 173(bool) UGreaterThanEqual 308 310
+ Store 283(b) 311
+ 312: 14(int) Load 200(i16)
+ 313: 27(int) SConvert 312
+ 314: 27(int) Load 220(i)
+ 315: 173(bool) SLessThanEqual 313 314
+ Store 283(b) 315
+ 316: 14(int) Load 200(i16)
+ 317: 27(int) SConvert 316
+ 318: 17(int) Bitcast 317
+ 319: 225(ivec3) Load 227(uv)
+ 320: 225(ivec3) CompositeConstruct 318 318 318
+ 321: 225(ivec3) BitwiseOr 319 320
+ Store 227(uv) 321
+ 322: 14(int) Load 200(i16)
+ 323: 27(int) SConvert 322
+ 324: 27(int) Load 220(i)
+ 325: 27(int) BitwiseOr 323 324
+ Store 220(i) 325
+ 326: 14(int) Load 200(i16)
+ 327: 71(int) SConvert 326
+ 328: 71(int) Load 243(i64)
+ 329: 71(int) BitwiseAnd 328 327
+ Store 243(i64) 329
+ 330: 193(ivec3) Load 195(u16v)
+ 331: 225(ivec3) UConvert 330
+ 332: 225(ivec3) Load 227(uv)
+ 333: 225(ivec3) BitwiseAnd 331 332
+ Store 227(uv) 333
+ 334: 14(int) Load 200(i16)
+ 335: 27(int) SConvert 334
+ 336: 17(int) Bitcast 335
+ 337: 225(ivec3) Load 227(uv)
+ 338: 225(ivec3) CompositeConstruct 336 336 336
+ 339: 225(ivec3) BitwiseXor 337 338
+ Store 227(uv) 339
+ 340: 193(ivec3) Load 195(u16v)
+ 341: 14(int) Load 200(i16)
+ 342: 36(int) Bitcast 341
+ 343: 193(ivec3) CompositeConstruct 342 342 342
+ 344: 193(ivec3) BitwiseXor 340 343
+ Store 195(u16v) 344
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
- 306(i16v): 189(ptr) Variable Function
- 312(i16): 35(ptr) Variable Function
- 320(u16v): 50(ptr) Variable Function
- 322(u16): 15(ptr) Variable Function
- 394(f16v): 393(ptr) Variable Function
- 397(exp): 396(ptr) Variable Function
- 419(packi): 107(ptr) Variable Function
- 424(packu): 150(ptr) Variable Function
- 433(packi64): 432(ptr) Variable Function
- 442(packu64): 441(ptr) Variable Function
- 451(bv): 450(ptr) Variable Function
- 307: 188(ivec2) Load 306(i16v)
- 308: 188(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 307
- Store 306(i16v) 308
- 309: 188(ivec2) Load 306(i16v)
- 310: 188(ivec2) ExtInst 1(GLSL.std.450) 7(SSign) 309
- Store 306(i16v) 310
- 311: 188(ivec2) Load 306(i16v)
- 313: 17(int) Load 312(i16)
- 314: 188(ivec2) CompositeConstruct 313 313
- 315: 188(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 311 314
- Store 306(i16v) 315
- 316: 188(ivec2) Load 306(i16v)
- 319: 188(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 316 318
- Store 306(i16v) 319
- 321: 49(ivec3) Load 320(u16v)
- 323: 14(int) Load 322(u16)
- 324: 49(ivec3) CompositeConstruct 323 323 323
- 325: 49(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 321 324
- Store 320(u16v) 325
- 326: 49(ivec3) Load 320(u16v)
- 328: 49(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 326 327
- Store 320(u16v) 328
- 329: 188(ivec2) Load 306(i16v)
- 330: 17(int) Load 312(i16)
- 331: 188(ivec2) CompositeConstruct 330 330
- 332: 188(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 329 331
- Store 306(i16v) 332
- 333: 188(ivec2) Load 306(i16v)
- 334: 188(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 333 318
- Store 306(i16v) 334
- 335: 49(ivec3) Load 320(u16v)
- 336: 14(int) Load 322(u16)
- 337: 49(ivec3) CompositeConstruct 336 336 336
- 338: 49(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 335 337
- Store 320(u16v) 338
- 339: 49(ivec3) Load 320(u16v)
- 340: 49(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 339 327
- Store 320(u16v) 340
- 341: 188(ivec2) Load 306(i16v)
- 342: 17(int) Load 312(i16)
- 343: 17(int) SNegate 342
- 344: 17(int) Load 312(i16)
- 345: 188(ivec2) CompositeConstruct 343 343
- 346: 188(ivec2) CompositeConstruct 344 344
- 347: 188(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 341 345 346
- Store 306(i16v) 347
- 348: 188(ivec2) Load 306(i16v)
- 349: 188(ivec2) Load 306(i16v)
- 350: 188(ivec2) SNegate 349
- 351: 188(ivec2) Load 306(i16v)
- 352: 188(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 348 350 351
- Store 306(i16v) 352
- 353: 49(ivec3) Load 320(u16v)
- 354: 14(int) Load 322(u16)
- 355: 14(int) SNegate 354
- 356: 14(int) Load 322(u16)
- 357: 49(ivec3) CompositeConstruct 355 355 355
- 358: 49(ivec3) CompositeConstruct 356 356 356
- 359: 49(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 353 357 358
- Store 320(u16v) 359
- 360: 49(ivec3) Load 320(u16v)
- 361: 49(ivec3) Load 320(u16v)
- 362: 49(ivec3) SNegate 361
- 363: 49(ivec3) Load 320(u16v)
- 364: 49(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 360 362 363
- Store 320(u16v) 364
- 365: 35(ptr) AccessChain 306(i16v) 131
- 366: 17(int) Load 365
- 367: 35(ptr) AccessChain 306(i16v) 114
- 368: 17(int) Load 367
- 370: 17(int) Select 369 368 366
- Store 312(i16) 370
- 371: 17(int) Load 312(i16)
- 372: 188(ivec2) CompositeConstruct 371 371
- 373: 17(int) Load 312(i16)
- 374: 17(int) SNegate 373
- 375: 188(ivec2) CompositeConstruct 374 374
- 378: 188(ivec2) Select 377 375 372
- Store 306(i16v) 378
- 379: 15(ptr) AccessChain 320(u16v) 131
- 380: 14(int) Load 379
- 381: 15(ptr) AccessChain 320(u16v) 114
- 382: 14(int) Load 381
- 383: 14(int) Select 369 382 380
- Store 322(u16) 383
- 384: 14(int) Load 322(u16)
- 385: 49(ivec3) CompositeConstruct 384 384 384
- 386: 14(int) Load 322(u16)
- 387: 14(int) SNegate 386
- 388: 49(ivec3) CompositeConstruct 387 387 387
- 391: 49(ivec3) Select 390 388 385
- Store 320(u16v) 391
- 395: 392(fvec3) Load 394(f16v)
- 399:398(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 395
- 400: 54(ivec3) CompositeExtract 399 1
- Store 397(exp) 400
- 401: 392(fvec3) CompositeExtract 399 0
- Store 394(f16v) 401
- 402: 392(fvec3) Load 394(f16v)
- 403: 54(ivec3) Load 397(exp)
- 404: 392(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 402 403
- Store 394(f16v) 404
- 405: 392(fvec3) Load 394(f16v)
- 406: 263(fvec2) VectorShuffle 405 405 0 1
- 407: 188(ivec2) Bitcast 406
- Store 306(i16v) 407
- 409: 408(ptr) AccessChain 394(f16v) 120
- 410: 262(float) Load 409
- 411: 14(int) Bitcast 410
- 412: 15(ptr) AccessChain 320(u16v) 131
- Store 412 411
- 413: 188(ivec2) Load 306(i16v)
- 414: 263(fvec2) Bitcast 413
- 415: 392(fvec3) Load 394(f16v)
- 416: 392(fvec3) VectorShuffle 415 414 3 4 2
- Store 394(f16v) 416
- 417: 49(ivec3) Load 320(u16v)
- 418: 392(fvec3) Bitcast 417
- Store 394(f16v) 418
- 420: 188(ivec2) Load 306(i16v)
- 421: 28(int) Bitcast 420
- Store 419(packi) 421
- 422: 28(int) Load 419(packi)
- 423: 188(ivec2) Bitcast 422
- Store 306(i16v) 423
- 425: 49(ivec3) Load 320(u16v)
- 426: 199(ivec2) VectorShuffle 425 425 0 1
- 427: 18(int) Bitcast 426
- Store 424(packu) 427
- 428: 18(int) Load 424(packu)
- 429: 199(ivec2) Bitcast 428
- 430: 49(ivec3) Load 320(u16v)
- 431: 49(ivec3) VectorShuffle 430 429 3 4 2
- Store 320(u16v) 431
- 434: 17(int) Load 312(i16)
- 436: 435(ivec4) CompositeConstruct 434 434 434 434
- 437: 274(int) Bitcast 436
- Store 433(packi64) 437
- 438: 274(int) Load 433(packi64)
- 439: 435(ivec4) Bitcast 438
- 440: 188(ivec2) VectorShuffle 439 439 0 1
- Store 306(i16v) 440
- 443: 14(int) Load 322(u16)
- 445: 444(ivec4) CompositeConstruct 443 443 443 443
- 446: 286(int) Bitcast 445
- Store 442(packu64) 446
- 447: 286(int) Load 442(packu64)
- 448: 444(ivec4) Bitcast 447
- 449: 49(ivec3) VectorShuffle 448 448 0 1 2
- Store 320(u16v) 449
- 452: 49(ivec3) Load 320(u16v)
- 453: 14(int) Load 322(u16)
- 454: 49(ivec3) CompositeConstruct 453 453 453
- 455: 389(bvec3) ULessThan 452 454
- Store 451(bv) 455
- 456: 188(ivec2) Load 306(i16v)
- 457: 17(int) Load 312(i16)
- 458: 188(ivec2) CompositeConstruct 457 457
- 459: 191(bvec2) SLessThan 456 458
- 460: 389(bvec3) Load 451(bv)
- 461: 389(bvec3) VectorShuffle 460 459 3 4 2
- Store 451(bv) 461
- 462: 49(ivec3) Load 320(u16v)
- 463: 14(int) Load 322(u16)
- 464: 49(ivec3) CompositeConstruct 463 463 463
- 465: 389(bvec3) ULessThanEqual 462 464
- Store 451(bv) 465
- 466: 188(ivec2) Load 306(i16v)
- 467: 17(int) Load 312(i16)
- 468: 188(ivec2) CompositeConstruct 467 467
- 469: 191(bvec2) SLessThanEqual 466 468
- 470: 389(bvec3) Load 451(bv)
- 471: 389(bvec3) VectorShuffle 470 469 3 4 2
- Store 451(bv) 471
- 472: 49(ivec3) Load 320(u16v)
- 473: 14(int) Load 322(u16)
- 474: 49(ivec3) CompositeConstruct 473 473 473
- 475: 389(bvec3) UGreaterThan 472 474
- Store 451(bv) 475
- 476: 188(ivec2) Load 306(i16v)
- 477: 17(int) Load 312(i16)
- 478: 188(ivec2) CompositeConstruct 477 477
- 479: 191(bvec2) SGreaterThan 476 478
- 480: 389(bvec3) Load 451(bv)
- 481: 389(bvec3) VectorShuffle 480 479 3 4 2
- Store 451(bv) 481
- 482: 49(ivec3) Load 320(u16v)
- 483: 14(int) Load 322(u16)
- 484: 49(ivec3) CompositeConstruct 483 483 483
- 485: 389(bvec3) UGreaterThanEqual 482 484
- Store 451(bv) 485
- 486: 188(ivec2) Load 306(i16v)
- 487: 17(int) Load 312(i16)
- 488: 188(ivec2) CompositeConstruct 487 487
- 489: 191(bvec2) SGreaterThanEqual 486 488
- 490: 389(bvec3) Load 451(bv)
- 491: 389(bvec3) VectorShuffle 490 489 3 4 2
- Store 451(bv) 491
- 492: 49(ivec3) Load 320(u16v)
- 493: 14(int) Load 322(u16)
- 494: 49(ivec3) CompositeConstruct 493 493 493
- 495: 389(bvec3) IEqual 492 494
- Store 451(bv) 495
- 496: 188(ivec2) Load 306(i16v)
- 497: 17(int) Load 312(i16)
- 498: 188(ivec2) CompositeConstruct 497 497
- 499: 191(bvec2) IEqual 496 498
- 500: 389(bvec3) Load 451(bv)
- 501: 389(bvec3) VectorShuffle 500 499 3 4 2
- Store 451(bv) 501
- 502: 49(ivec3) Load 320(u16v)
- 503: 14(int) Load 322(u16)
- 504: 49(ivec3) CompositeConstruct 503 503 503
- 505: 389(bvec3) INotEqual 502 504
- Store 451(bv) 505
- 506: 188(ivec2) Load 306(i16v)
- 507: 17(int) Load 312(i16)
- 508: 188(ivec2) CompositeConstruct 507 507
- 509: 191(bvec2) INotEqual 506 508
- 510: 389(bvec3) Load 451(bv)
- 511: 389(bvec3) VectorShuffle 510 509 3 4 2
- Store 451(bv) 511
+ 345(i16v): 53(ptr) Variable Function
+ 348(i16): 15(ptr) Variable Function
+ 358(u16v): 194(ptr) Variable Function
+ 360(u16): 37(ptr) Variable Function
+ 430(i32): 219(ptr) Variable Function
+ 433(i64): 242(ptr) Variable Function
+ 436(i16v4): 435(ptr) Variable Function
+ 439(u32): 298(ptr) Variable Function
+ 440(u16v2): 58(ptr) Variable Function
+ 444(u64): 443(ptr) Variable Function
+ 447(u16v4): 446(ptr) Variable Function
+ 459(bv): 458(ptr) Variable Function
+ 346: 52(ivec2) Load 345(i16v)
+ 347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346
+ Store 345(i16v) 347
+ 349: 14(int) Load 348(i16)
+ 350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349
+ Store 348(i16) 350
+ 351: 52(ivec2) Load 345(i16v)
+ 352: 14(int) Load 348(i16)
+ 353: 52(ivec2) CompositeConstruct 352 352
+ 354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353
+ Store 345(i16v) 354
+ 355: 52(ivec2) Load 345(i16v)
+ 357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356
+ Store 345(i16v) 357
+ 359: 193(ivec3) Load 358(u16v)
+ 361: 36(int) Load 360(u16)
+ 362: 193(ivec3) CompositeConstruct 361 361 361
+ 363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362
+ Store 358(u16v) 363
+ 364: 193(ivec3) Load 358(u16v)
+ 366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365
+ Store 358(u16v) 366
+ 367: 52(ivec2) Load 345(i16v)
+ 368: 14(int) Load 348(i16)
+ 369: 52(ivec2) CompositeConstruct 368 368
+ 370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369
+ Store 345(i16v) 370
+ 371: 52(ivec2) Load 345(i16v)
+ 372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356
+ Store 345(i16v) 372
+ 373: 193(ivec3) Load 358(u16v)
+ 374: 36(int) Load 360(u16)
+ 375: 193(ivec3) CompositeConstruct 374 374 374
+ 376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375
+ Store 358(u16v) 376
+ 377: 193(ivec3) Load 358(u16v)
+ 378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365
+ Store 358(u16v) 378
+ 379: 52(ivec2) Load 345(i16v)
+ 380: 14(int) Load 348(i16)
+ 381: 14(int) SNegate 380
+ 382: 14(int) Load 348(i16)
+ 383: 52(ivec2) CompositeConstruct 381 381
+ 384: 52(ivec2) CompositeConstruct 382 382
+ 385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384
+ Store 345(i16v) 385
+ 386: 52(ivec2) Load 345(i16v)
+ 387: 52(ivec2) Load 345(i16v)
+ 388: 52(ivec2) SNegate 387
+ 389: 52(ivec2) Load 345(i16v)
+ 390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389
+ Store 345(i16v) 390
+ 391: 193(ivec3) Load 358(u16v)
+ 392: 36(int) Load 360(u16)
+ 393: 36(int) SNegate 392
+ 394: 36(int) Load 360(u16)
+ 395: 193(ivec3) CompositeConstruct 393 393 393
+ 396: 193(ivec3) CompositeConstruct 394 394 394
+ 397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396
+ Store 358(u16v) 397
+ 398: 193(ivec3) Load 358(u16v)
+ 399: 193(ivec3) Load 358(u16v)
+ 400: 193(ivec3) SNegate 399
+ 401: 193(ivec3) Load 358(u16v)
+ 402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401
+ Store 358(u16v) 402
+ 403: 15(ptr) AccessChain 345(i16v) 284
+ 404: 14(int) Load 403
+ 405: 15(ptr) AccessChain 345(i16v) 264
+ 406: 14(int) Load 405
+ 408: 14(int) Select 407 406 404
+ Store 348(i16) 408
+ 409: 14(int) Load 348(i16)
+ 410: 52(ivec2) CompositeConstruct 409 409
+ 411: 14(int) Load 348(i16)
+ 412: 14(int) SNegate 411
+ 413: 52(ivec2) CompositeConstruct 412 412
+ 416: 52(ivec2) Select 415 413 410
+ Store 345(i16v) 416
+ 417: 37(ptr) AccessChain 358(u16v) 284
+ 418: 36(int) Load 417
+ 419: 37(ptr) AccessChain 358(u16v) 264
+ 420: 36(int) Load 419
+ 421: 36(int) Select 407 420 418
+ Store 360(u16) 421
+ 422: 36(int) Load 360(u16)
+ 423: 193(ivec3) CompositeConstruct 422 422 422
+ 424: 36(int) Load 360(u16)
+ 425: 36(int) SNegate 424
+ 426: 193(ivec3) CompositeConstruct 425 425 425
+ 429: 193(ivec3) Select 428 426 423
+ Store 358(u16v) 429
+ 431: 52(ivec2) Load 345(i16v)
+ 432: 27(int) Bitcast 431
+ Store 430(i32) 432
+ 437: 434(ivec4) Load 436(i16v4)
+ 438: 71(int) Bitcast 437
+ Store 433(i64) 438
+ 441: 57(ivec2) Load 440(u16v2)
+ 442: 17(int) Bitcast 441
+ Store 439(u32) 442
+ 448: 445(ivec4) Load 447(u16v4)
+ 449: 77(int) Bitcast 448
+ Store 444(u64) 449
+ 450: 27(int) Load 430(i32)
+ 451: 52(ivec2) Bitcast 450
+ Store 345(i16v) 451
+ 452: 71(int) Load 433(i64)
+ 453: 434(ivec4) Bitcast 452
+ Store 436(i16v4) 453
+ 454: 17(int) Load 439(u32)
+ 455: 57(ivec2) Bitcast 454
+ Store 440(u16v2) 455
+ 456: 77(int) Load 444(u64)
+ 457: 445(ivec4) Bitcast 456
+ Store 447(u16v4) 457
+ 460: 193(ivec3) Load 358(u16v)
+ 461: 36(int) Load 360(u16)
+ 462: 193(ivec3) CompositeConstruct 461 461 461
+ 463: 427(bvec3) ULessThan 460 462
+ Store 459(bv) 463
+ 464: 52(ivec2) Load 345(i16v)
+ 465: 14(int) Load 348(i16)
+ 466: 52(ivec2) CompositeConstruct 465 465
+ 467: 174(bvec2) SLessThan 464 466
+ 468: 427(bvec3) Load 459(bv)
+ 469: 427(bvec3) VectorShuffle 468 467 3 4 2
+ Store 459(bv) 469
+ 470: 193(ivec3) Load 358(u16v)
+ 471: 36(int) Load 360(u16)
+ 472: 193(ivec3) CompositeConstruct 471 471 471
+ 473: 427(bvec3) ULessThanEqual 470 472
+ Store 459(bv) 473
+ 474: 52(ivec2) Load 345(i16v)
+ 475: 14(int) Load 348(i16)
+ 476: 52(ivec2) CompositeConstruct 475 475
+ 477: 174(bvec2) SLessThanEqual 474 476
+ 478: 427(bvec3) Load 459(bv)
+ 479: 427(bvec3) VectorShuffle 478 477 3 4 2
+ Store 459(bv) 479
+ 480: 193(ivec3) Load 358(u16v)
+ 481: 36(int) Load 360(u16)
+ 482: 193(ivec3) CompositeConstruct 481 481 481
+ 483: 427(bvec3) UGreaterThan 480 482
+ Store 459(bv) 483
+ 484: 52(ivec2) Load 345(i16v)
+ 485: 14(int) Load 348(i16)
+ 486: 52(ivec2) CompositeConstruct 485 485
+ 487: 174(bvec2) SGreaterThan 484 486
+ 488: 427(bvec3) Load 459(bv)
+ 489: 427(bvec3) VectorShuffle 488 487 3 4 2
+ Store 459(bv) 489
+ 490: 193(ivec3) Load 358(u16v)
+ 491: 36(int) Load 360(u16)
+ 492: 193(ivec3) CompositeConstruct 491 491 491
+ 493: 427(bvec3) UGreaterThanEqual 490 492
+ Store 459(bv) 493
+ 494: 52(ivec2) Load 345(i16v)
+ 495: 14(int) Load 348(i16)
+ 496: 52(ivec2) CompositeConstruct 495 495
+ 497: 174(bvec2) SGreaterThanEqual 494 496
+ 498: 427(bvec3) Load 459(bv)
+ 499: 427(bvec3) VectorShuffle 498 497 3 4 2
+ Store 459(bv) 499
+ 500: 193(ivec3) Load 358(u16v)
+ 501: 36(int) Load 360(u16)
+ 502: 193(ivec3) CompositeConstruct 501 501 501
+ 503: 427(bvec3) IEqual 500 502
+ Store 459(bv) 503
+ 504: 52(ivec2) Load 345(i16v)
+ 505: 14(int) Load 348(i16)
+ 506: 52(ivec2) CompositeConstruct 505 505
+ 507: 174(bvec2) IEqual 504 506
+ 508: 427(bvec3) Load 459(bv)
+ 509: 427(bvec3) VectorShuffle 508 507 3 4 2
+ Store 459(bv) 509
+ 510: 193(ivec3) Load 358(u16v)
+ 511: 36(int) Load 360(u16)
+ 512: 193(ivec3) CompositeConstruct 511 511 511
+ 513: 427(bvec3) INotEqual 510 512
+ Store 459(bv) 513
+ 514: 52(ivec2) Load 345(i16v)
+ 515: 14(int) Load 348(i16)
+ 516: 52(ivec2) CompositeConstruct 515 515
+ 517: 174(bvec2) INotEqual 514 516
+ 518: 427(bvec3) Load 459(bv)
+ 519: 427(bvec3) VectorShuffle 518 517 3 4 2
+ Store 459(bv) 519
Return
FunctionEnd
diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out
new file mode 100644
index 0000000..1a433f5
--- /dev/null
+++ b/Test/baseResults/spv.int32.frag.out
@@ -0,0 +1,714 @@
+spv.int32.frag
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 495
+
+ Capability Shader
+ Capability Float16
+ Capability Float64
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
+ Name 4 "main"
+ Name 6 "literal("
+ Name 8 "typeCast32("
+ Name 10 "operators("
+ Name 12 "builtinFuncs("
+ Name 16 "u32Max"
+ Name 20 "i32"
+ Name 27 "Uniforms"
+ MemberName 27(Uniforms) 0 "index"
+ Name 29 ""
+ Name 35 "indexable"
+ Name 39 "u32"
+ Name 46 "indexable"
+ Name 51 "u32v"
+ Name 54 "i32v"
+ Name 60 "i64v"
+ Name 66 "u64v"
+ Name 78 "f32v"
+ Name 84 "f64v"
+ Name 94 "i8v"
+ Name 103 "i16v"
+ Name 123 "u8v"
+ Name 132 "u16v"
+ Name 152 "f16v"
+ Name 168 "bv"
+ Name 186 "u32v"
+ Name 191 "i32"
+ Name 210 "i"
+ Name 214 "uv"
+ Name 227 "i64"
+ Name 262 "b"
+ Name 314 "i32v"
+ Name 317 "i32"
+ Name 327 "u32v"
+ Name 329 "u32"
+ Name 401 "i8v4"
+ Name 404 "i16v2"
+ Name 409 "u8v4"
+ Name 412 "u16v2"
+ Name 415 "i64"
+ Name 418 "u32v2"
+ Name 420 "u64"
+ Name 424 "bv"
+ Name 487 "Block"
+ MemberName 487(Block) 0 "i32"
+ MemberName 487(Block) 1 "i32v2"
+ MemberName 487(Block) 2 "i32v3"
+ MemberName 487(Block) 3 "i32v4"
+ MemberName 487(Block) 4 "u32"
+ MemberName 487(Block) 5 "u32v2"
+ MemberName 487(Block) 6 "u32v3"
+ MemberName 487(Block) 7 "u32v4"
+ Name 489 "block"
+ Name 490 "si32"
+ Name 491 "su32"
+ Name 492 "si"
+ Name 493 "su"
+ Name 494 "sb"
+ MemberDecorate 27(Uniforms) 0 Offset 0
+ Decorate 27(Uniforms) Block
+ Decorate 29 DescriptorSet 0
+ Decorate 29 Binding 0
+ MemberDecorate 487(Block) 0 Offset 0
+ MemberDecorate 487(Block) 1 Offset 8
+ MemberDecorate 487(Block) 2 Offset 16
+ MemberDecorate 487(Block) 3 Offset 32
+ MemberDecorate 487(Block) 4 Offset 48
+ MemberDecorate 487(Block) 5 Offset 56
+ MemberDecorate 487(Block) 6 Offset 64
+ MemberDecorate 487(Block) 7 Offset 80
+ Decorate 487(Block) Block
+ Decorate 489(block) DescriptorSet 0
+ Decorate 489(block) Binding 1
+ Decorate 490(si32) SpecId 100
+ Decorate 491(su32) SpecId 101
+ Decorate 492(si) SpecId 102
+ Decorate 493(su) SpecId 103
+ Decorate 494(sb) SpecId 104
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 14: TypeInt 32 0
+ 15: TypePointer Private 14(int)
+ 16(u32Max): 15(ptr) Variable Private
+ 17: 14(int) Constant 4294967295
+ 18: TypeInt 32 1
+ 19: TypePointer Function 18(int)
+ 21: 14(int) Constant 3
+ 22: TypeArray 18(int) 21
+ 23: 18(int) Constant 4008636143
+ 24: 18(int) Constant 4294967295
+ 25: 18(int) Constant 536870912
+ 26: 22 ConstantComposite 23 24 25
+ 27(Uniforms): TypeStruct 14(int)
+ 28: TypePointer Uniform 27(Uniforms)
+ 29: 28(ptr) Variable Uniform
+ 30: 18(int) Constant 0
+ 31: TypePointer Uniform 14(int)
+ 34: TypePointer Function 22
+ 38: TypePointer Function 14(int)
+ 40: TypeArray 14(int) 21
+ 41: 14(int) Constant 2147483647
+ 42: 40 ConstantComposite 17 17 41
+ 45: TypePointer Function 40
+ 49: TypeVector 14(int) 2
+ 50: TypePointer Function 49(ivec2)
+ 52: TypeVector 18(int) 2
+ 53: TypePointer Function 52(ivec2)
+ 57: TypeInt 64 1
+ 58: TypeVector 57(int) 2
+ 59: TypePointer Function 58(ivec2)
+ 63: TypeInt 64 0
+ 64: TypeVector 63(int) 2
+ 65: TypePointer Function 64(ivec2)
+ 75: TypeFloat 32
+ 76: TypeVector 75(float) 2
+ 77: TypePointer Function 76(fvec2)
+ 81: TypeFloat 64
+ 82: TypeVector 81(float) 2
+ 83: TypePointer Function 82(fvec2)
+ 91: TypeInt 8 1
+ 92: TypeVector 91(int) 2
+ 93: TypePointer Function 92(ivec2)
+ 100: TypeInt 16 1
+ 101: TypeVector 100(int) 2
+ 102: TypePointer Function 101(ivec2)
+ 120: TypeInt 8 0
+ 121: TypeVector 120(int) 2
+ 122: TypePointer Function 121(ivec2)
+ 129: TypeInt 16 0
+ 130: TypeVector 129(int) 2
+ 131: TypePointer Function 130(ivec2)
+ 149: TypeFloat 16
+ 150: TypeVector 149(float) 2
+ 151: TypePointer Function 150(fvec2)
+ 165: TypeBool
+ 166: TypeVector 165(bool) 2
+ 167: TypePointer Function 166(bvec2)
+ 170: 18(int) Constant 1
+ 171: 52(ivec2) ConstantComposite 30 30
+ 172: 52(ivec2) ConstantComposite 170 170
+ 175: 14(int) Constant 0
+ 176: 14(int) Constant 1
+ 177: 49(ivec2) ConstantComposite 175 175
+ 178: 49(ivec2) ConstantComposite 176 176
+ 184: TypeVector 14(int) 3
+ 185: TypePointer Function 184(ivec3)
+ 188: TypeVector 18(int) 3
+ 226: TypePointer Function 57(int)
+ 251: 14(int) Constant 2
+ 261: TypePointer Function 165(bool)
+ 325: 52(ivec2) ConstantComposite 24 24
+ 334: 184(ivec3) ConstantComposite 175 175 175
+ 376: 165(bool) ConstantTrue
+ 383: 165(bool) ConstantFalse
+ 384: 166(bvec2) ConstantComposite 383 383
+ 396: TypeVector 165(bool) 3
+ 397: 396(bvec3) ConstantComposite 383 383 383
+ 399: TypeVector 91(int) 4
+ 400: TypePointer Function 399(ivec4)
+ 407: TypeVector 120(int) 4
+ 408: TypePointer Function 407(ivec4)
+ 419: TypePointer Function 63(int)
+ 423: TypePointer Function 396(bvec3)
+ 485: TypeVector 18(int) 4
+ 486: TypeVector 14(int) 4
+ 487(Block): TypeStruct 18(int) 52(ivec2) 188(ivec3) 485(ivec4) 14(int) 49(ivec2) 184(ivec3) 486(ivec4)
+ 488: TypePointer Uniform 487(Block)
+ 489(block): 488(ptr) Variable Uniform
+ 490(si32): 18(int) SpecConstant 4294967286
+ 491(su32): 14(int) SpecConstant 20
+ 492(si): 18(int) SpecConstant 4294967291
+ 493(su): 14(int) SpecConstant 4
+ 494(sb): 165(bool) SpecConstantTrue
+ 4(main): 2 Function None 3
+ 5: Label
+ Store 16(u32Max) 17
+ Return
+ FunctionEnd
+ 6(literal(): 2 Function None 3
+ 7: Label
+ 20(i32): 19(ptr) Variable Function
+ 35(indexable): 34(ptr) Variable Function
+ 39(u32): 38(ptr) Variable Function
+ 46(indexable): 45(ptr) Variable Function
+ 32: 31(ptr) AccessChain 29 30
+ 33: 14(int) Load 32
+ Store 35(indexable) 26
+ 36: 19(ptr) AccessChain 35(indexable) 33
+ 37: 18(int) Load 36
+ Store 20(i32) 37
+ 43: 31(ptr) AccessChain 29 30
+ 44: 14(int) Load 43
+ Store 46(indexable) 42
+ 47: 38(ptr) AccessChain 46(indexable) 44
+ 48: 14(int) Load 47
+ Store 39(u32) 48
+ Return
+ FunctionEnd
+ 8(typeCast32(): 2 Function None 3
+ 9: Label
+ 51(u32v): 50(ptr) Variable Function
+ 54(i32v): 53(ptr) Variable Function
+ 60(i64v): 59(ptr) Variable Function
+ 66(u64v): 65(ptr) Variable Function
+ 78(f32v): 77(ptr) Variable Function
+ 84(f64v): 83(ptr) Variable Function
+ 94(i8v): 93(ptr) Variable Function
+ 103(i16v): 102(ptr) Variable Function
+ 123(u8v): 122(ptr) Variable Function
+ 132(u16v): 131(ptr) Variable Function
+ 152(f16v): 151(ptr) Variable Function
+ 168(bv): 167(ptr) Variable Function
+ 55: 52(ivec2) Load 54(i32v)
+ 56: 49(ivec2) Bitcast 55
+ Store 51(u32v) 56
+ 61: 52(ivec2) Load 54(i32v)
+ 62: 58(ivec2) SConvert 61
+ Store 60(i64v) 62
+ 67: 52(ivec2) Load 54(i32v)
+ 68: 58(ivec2) SConvert 67
+ 69: 64(ivec2) Bitcast 68
+ Store 66(u64v) 69
+ 70: 49(ivec2) Load 51(u32v)
+ 71: 58(ivec2) UConvert 70
+ 72: 58(ivec2) Bitcast 71
+ Store 60(i64v) 72
+ 73: 49(ivec2) Load 51(u32v)
+ 74: 64(ivec2) UConvert 73
+ Store 66(u64v) 74
+ 79: 52(ivec2) Load 54(i32v)
+ 80: 76(fvec2) ConvertSToF 79
+ Store 78(f32v) 80
+ 85: 52(ivec2) Load 54(i32v)
+ 86: 82(fvec2) ConvertSToF 85
+ Store 84(f64v) 86
+ 87: 49(ivec2) Load 51(u32v)
+ 88: 76(fvec2) ConvertUToF 87
+ Store 78(f32v) 88
+ 89: 49(ivec2) Load 51(u32v)
+ 90: 82(fvec2) ConvertUToF 89
+ Store 84(f64v) 90
+ 95: 52(ivec2) Load 54(i32v)
+ 96: 92(ivec2) SConvert 95
+ Store 94(i8v) 96
+ 97: 49(ivec2) Load 51(u32v)
+ 98: 92(ivec2) UConvert 97
+ 99: 92(ivec2) Bitcast 98
+ Store 94(i8v) 99
+ 104: 52(ivec2) Load 54(i32v)
+ 105: 101(ivec2) SConvert 104
+ Store 103(i16v) 105
+ 106: 49(ivec2) Load 51(u32v)
+ 107: 101(ivec2) UConvert 106
+ 108: 101(ivec2) Bitcast 107
+ Store 103(i16v) 108
+ 109: 52(ivec2) Load 54(i32v)
+ 110: 18(int) CompositeExtract 109 0
+ 111: 18(int) CompositeExtract 109 1
+ 112: 52(ivec2) CompositeConstruct 110 111
+ Store 54(i32v) 112
+ 113: 49(ivec2) Load 51(u32v)
+ 114: 52(ivec2) Bitcast 113
+ Store 54(i32v) 114
+ 115: 52(ivec2) Load 54(i32v)
+ 116: 58(ivec2) SConvert 115
+ Store 60(i64v) 116
+ 117: 49(ivec2) Load 51(u32v)
+ 118: 58(ivec2) UConvert 117
+ 119: 58(ivec2) Bitcast 118
+ Store 60(i64v) 119
+ 124: 52(ivec2) Load 54(i32v)
+ 125: 92(ivec2) SConvert 124
+ 126: 121(ivec2) Bitcast 125
+ Store 123(u8v) 126
+ 127: 49(ivec2) Load 51(u32v)
+ 128: 121(ivec2) UConvert 127
+ Store 123(u8v) 128
+ 133: 52(ivec2) Load 54(i32v)
+ 134: 101(ivec2) SConvert 133
+ 135: 130(ivec2) Bitcast 134
+ Store 132(u16v) 135
+ 136: 49(ivec2) Load 51(u32v)
+ 137: 130(ivec2) UConvert 136
+ Store 132(u16v) 137
+ 138: 52(ivec2) Load 54(i32v)
+ 139: 49(ivec2) Bitcast 138
+ Store 51(u32v) 139
+ 140: 49(ivec2) Load 51(u32v)
+ 141: 14(int) CompositeExtract 140 0
+ 142: 14(int) CompositeExtract 140 1
+ 143: 49(ivec2) CompositeConstruct 141 142
+ Store 51(u32v) 143
+ 144: 52(ivec2) Load 54(i32v)
+ 145: 58(ivec2) SConvert 144
+ 146: 64(ivec2) Bitcast 145
+ Store 66(u64v) 146
+ 147: 49(ivec2) Load 51(u32v)
+ 148: 64(ivec2) UConvert 147
+ Store 66(u64v) 148
+ 153: 52(ivec2) Load 54(i32v)
+ 154: 150(fvec2) ConvertSToF 153
+ Store 152(f16v) 154
+ 155: 52(ivec2) Load 54(i32v)
+ 156: 76(fvec2) ConvertSToF 155
+ Store 78(f32v) 156
+ 157: 52(ivec2) Load 54(i32v)
+ 158: 82(fvec2) ConvertSToF 157
+ Store 84(f64v) 158
+ 159: 49(ivec2) Load 51(u32v)
+ 160: 150(fvec2) ConvertUToF 159
+ Store 152(f16v) 160
+ 161: 49(ivec2) Load 51(u32v)
+ 162: 76(fvec2) ConvertUToF 161
+ Store 78(f32v) 162
+ 163: 49(ivec2) Load 51(u32v)
+ 164: 82(fvec2) ConvertUToF 163
+ Store 84(f64v) 164
+ 169: 166(bvec2) Load 168(bv)
+ 173: 52(ivec2) Select 169 172 171
+ Store 54(i32v) 173
+ 174: 166(bvec2) Load 168(bv)
+ 179: 49(ivec2) Select 174 178 177
+ Store 51(u32v) 179
+ 180: 52(ivec2) Load 54(i32v)
+ 181: 166(bvec2) INotEqual 180 177
+ Store 168(bv) 181
+ 182: 49(ivec2) Load 51(u32v)
+ 183: 166(bvec2) INotEqual 182 177
+ Store 168(bv) 183
+ Return
+ FunctionEnd
+ 10(operators(): 2 Function None 3
+ 11: Label
+ 186(u32v): 185(ptr) Variable Function
+ 191(i32): 19(ptr) Variable Function
+ 210(i): 19(ptr) Variable Function
+ 214(uv): 185(ptr) Variable Function
+ 227(i64): 226(ptr) Variable Function
+ 262(b): 261(ptr) Variable Function
+ 187: 184(ivec3) Load 186(u32v)
+ 189: 188(ivec3) CompositeConstruct 170 170 170
+ 190: 184(ivec3) IAdd 187 189
+ Store 186(u32v) 190
+ 192: 18(int) Load 191(i32)
+ 193: 18(int) ISub 192 170
+ Store 191(i32) 193
+ 194: 18(int) Load 191(i32)
+ 195: 18(int) IAdd 194 170
+ Store 191(i32) 195
+ 196: 184(ivec3) Load 186(u32v)
+ 197: 188(ivec3) CompositeConstruct 170 170 170
+ 198: 184(ivec3) ISub 196 197
+ Store 186(u32v) 198
+ 199: 184(ivec3) Load 186(u32v)
+ 200: 184(ivec3) Not 199
+ Store 186(u32v) 200
+ 201: 18(int) Load 191(i32)
+ Store 191(i32) 201
+ 202: 184(ivec3) Load 186(u32v)
+ 203: 184(ivec3) SNegate 202
+ Store 186(u32v) 203
+ 204: 18(int) Load 191(i32)
+ 205: 18(int) Load 191(i32)
+ 206: 18(int) IAdd 205 204
+ Store 191(i32) 206
+ 207: 184(ivec3) Load 186(u32v)
+ 208: 184(ivec3) Load 186(u32v)
+ 209: 184(ivec3) ISub 208 207
+ Store 186(u32v) 209
+ 211: 18(int) Load 191(i32)
+ 212: 18(int) Load 210(i)
+ 213: 18(int) IMul 212 211
+ Store 210(i) 213
+ 215: 184(ivec3) Load 186(u32v)
+ 216: 184(ivec3) Load 214(uv)
+ 217: 184(ivec3) UDiv 216 215
+ Store 214(uv) 217
+ 218: 18(int) Load 191(i32)
+ 219: 14(int) Bitcast 218
+ 220: 184(ivec3) Load 214(uv)
+ 221: 184(ivec3) CompositeConstruct 219 219 219
+ 222: 184(ivec3) UMod 220 221
+ Store 214(uv) 222
+ 223: 184(ivec3) Load 186(u32v)
+ 224: 184(ivec3) Load 214(uv)
+ 225: 184(ivec3) IAdd 223 224
+ Store 214(uv) 225
+ 228: 18(int) Load 191(i32)
+ 229: 57(int) SConvert 228
+ 230: 57(int) Load 227(i64)
+ 231: 57(int) ISub 229 230
+ Store 227(i64) 231
+ 232: 184(ivec3) Load 186(u32v)
+ 233: 184(ivec3) Load 214(uv)
+ 234: 184(ivec3) IMul 232 233
+ Store 214(uv) 234
+ 235: 18(int) Load 191(i32)
+ 236: 57(int) SConvert 235
+ 237: 57(int) Load 227(i64)
+ 238: 57(int) IMul 236 237
+ Store 227(i64) 238
+ 239: 18(int) Load 191(i32)
+ 240: 18(int) Load 210(i)
+ 241: 18(int) SMod 239 240
+ Store 210(i) 241
+ 242: 18(int) Load 191(i32)
+ 243: 184(ivec3) Load 186(u32v)
+ 244: 188(ivec3) CompositeConstruct 242 242 242
+ 245: 184(ivec3) ShiftLeftLogical 243 244
+ Store 186(u32v) 245
+ 246: 38(ptr) AccessChain 186(u32v) 176
+ 247: 14(int) Load 246
+ 248: 18(int) Load 191(i32)
+ 249: 18(int) ShiftRightArithmetic 248 247
+ Store 191(i32) 249
+ 250: 57(int) Load 227(i64)
+ 252: 38(ptr) AccessChain 186(u32v) 251
+ 253: 14(int) Load 252
+ 254: 57(int) UConvert 253
+ 255: 57(int) Bitcast 254
+ 256: 57(int) ShiftLeftLogical 250 255
+ Store 227(i64) 256
+ 257: 184(ivec3) Load 186(u32v)
+ 258: 18(int) Load 210(i)
+ 259: 188(ivec3) CompositeConstruct 258 258 258
+ 260: 184(ivec3) ShiftLeftLogical 257 259
+ Store 214(uv) 260
+ 263: 38(ptr) AccessChain 186(u32v) 175
+ 264: 14(int) Load 263
+ 265: 18(int) Load 191(i32)
+ 266: 14(int) Bitcast 265
+ 267: 165(bool) INotEqual 264 266
+ Store 262(b) 267
+ 268: 18(int) Load 191(i32)
+ 269: 14(int) Bitcast 268
+ 270: 38(ptr) AccessChain 186(u32v) 175
+ 271: 14(int) Load 270
+ 272: 165(bool) IEqual 269 271
+ Store 262(b) 272
+ 273: 38(ptr) AccessChain 186(u32v) 175
+ 274: 14(int) Load 273
+ 275: 38(ptr) AccessChain 214(uv) 176
+ 276: 14(int) Load 275
+ 277: 165(bool) UGreaterThan 274 276
+ Store 262(b) 277
+ 278: 18(int) Load 191(i32)
+ 279: 18(int) Load 210(i)
+ 280: 165(bool) SLessThan 278 279
+ Store 262(b) 280
+ 281: 38(ptr) AccessChain 186(u32v) 176
+ 282: 14(int) Load 281
+ 283: 38(ptr) AccessChain 214(uv) 175
+ 284: 14(int) Load 283
+ 285: 165(bool) UGreaterThanEqual 282 284
+ Store 262(b) 285
+ 286: 18(int) Load 191(i32)
+ 287: 18(int) Load 210(i)
+ 288: 165(bool) SLessThanEqual 286 287
+ Store 262(b) 288
+ 289: 18(int) Load 191(i32)
+ 290: 14(int) Bitcast 289
+ 291: 184(ivec3) Load 214(uv)
+ 292: 184(ivec3) CompositeConstruct 290 290 290
+ 293: 184(ivec3) BitwiseOr 291 292
+ Store 214(uv) 293
+ 294: 18(int) Load 191(i32)
+ 295: 18(int) Load 210(i)
+ 296: 18(int) BitwiseOr 294 295
+ Store 210(i) 296
+ 297: 18(int) Load 191(i32)
+ 298: 57(int) SConvert 297
+ 299: 57(int) Load 227(i64)
+ 300: 57(int) BitwiseAnd 299 298
+ Store 227(i64) 300
+ 301: 184(ivec3) Load 186(u32v)
+ 302: 184(ivec3) Load 214(uv)
+ 303: 184(ivec3) BitwiseAnd 301 302
+ Store 214(uv) 303
+ 304: 18(int) Load 191(i32)
+ 305: 14(int) Bitcast 304
+ 306: 184(ivec3) Load 214(uv)
+ 307: 184(ivec3) CompositeConstruct 305 305 305
+ 308: 184(ivec3) BitwiseXor 306 307
+ Store 214(uv) 308
+ 309: 184(ivec3) Load 186(u32v)
+ 310: 18(int) Load 191(i32)
+ 311: 14(int) Bitcast 310
+ 312: 184(ivec3) CompositeConstruct 311 311 311
+ 313: 184(ivec3) BitwiseXor 309 312
+ Store 186(u32v) 313
+ Return
+ FunctionEnd
+12(builtinFuncs(): 2 Function None 3
+ 13: Label
+ 314(i32v): 53(ptr) Variable Function
+ 317(i32): 19(ptr) Variable Function
+ 327(u32v): 185(ptr) Variable Function
+ 329(u32): 38(ptr) Variable Function
+ 401(i8v4): 400(ptr) Variable Function
+ 404(i16v2): 102(ptr) Variable Function
+ 409(u8v4): 408(ptr) Variable Function
+ 412(u16v2): 131(ptr) Variable Function
+ 415(i64): 226(ptr) Variable Function
+ 418(u32v2): 50(ptr) Variable Function
+ 420(u64): 419(ptr) Variable Function
+ 424(bv): 423(ptr) Variable Function
+ 315: 52(ivec2) Load 314(i32v)
+ 316: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 315
+ Store 314(i32v) 316
+ 318: 18(int) Load 317(i32)
+ 319: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 318
+ Store 317(i32) 319
+ 320: 52(ivec2) Load 314(i32v)
+ 321: 18(int) Load 317(i32)
+ 322: 52(ivec2) CompositeConstruct 321 321
+ 323: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 320 322
+ Store 314(i32v) 323
+ 324: 52(ivec2) Load 314(i32v)
+ 326: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 324 325
+ Store 314(i32v) 326
+ 328: 184(ivec3) Load 327(u32v)
+ 330: 14(int) Load 329(u32)
+ 331: 184(ivec3) CompositeConstruct 330 330 330
+ 332: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 328 331
+ Store 327(u32v) 332
+ 333: 184(ivec3) Load 327(u32v)
+ 335: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 333 334
+ Store 327(u32v) 335
+ 336: 52(ivec2) Load 314(i32v)
+ 337: 18(int) Load 317(i32)
+ 338: 52(ivec2) CompositeConstruct 337 337
+ 339: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 336 338
+ Store 314(i32v) 339
+ 340: 52(ivec2) Load 314(i32v)
+ 341: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 340 325
+ Store 314(i32v) 341
+ 342: 184(ivec3) Load 327(u32v)
+ 343: 14(int) Load 329(u32)
+ 344: 184(ivec3) CompositeConstruct 343 343 343
+ 345: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 342 344
+ Store 327(u32v) 345
+ 346: 184(ivec3) Load 327(u32v)
+ 347: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 346 334
+ Store 327(u32v) 347
+ 348: 52(ivec2) Load 314(i32v)
+ 349: 18(int) Load 317(i32)
+ 350: 18(int) SNegate 349
+ 351: 18(int) Load 317(i32)
+ 352: 52(ivec2) CompositeConstruct 350 350
+ 353: 52(ivec2) CompositeConstruct 351 351
+ 354: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 348 352 353
+ Store 314(i32v) 354
+ 355: 52(ivec2) Load 314(i32v)
+ 356: 52(ivec2) Load 314(i32v)
+ 357: 52(ivec2) SNegate 356
+ 358: 52(ivec2) Load 314(i32v)
+ 359: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 355 357 358
+ Store 314(i32v) 359
+ 360: 184(ivec3) Load 327(u32v)
+ 361: 14(int) Load 329(u32)
+ 362: 14(int) SNegate 361
+ 363: 14(int) Load 329(u32)
+ 364: 184(ivec3) CompositeConstruct 362 362 362
+ 365: 184(ivec3) CompositeConstruct 363 363 363
+ 366: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 360 364 365
+ Store 327(u32v) 366
+ 367: 184(ivec3) Load 327(u32v)
+ 368: 184(ivec3) Load 327(u32v)
+ 369: 184(ivec3) SNegate 368
+ 370: 184(ivec3) Load 327(u32v)
+ 371: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 367 369 370
+ Store 327(u32v) 371
+ 372: 19(ptr) AccessChain 314(i32v) 175
+ 373: 18(int) Load 372
+ 374: 19(ptr) AccessChain 314(i32v) 176
+ 375: 18(int) Load 374
+ 377: 18(int) Select 376 375 373
+ Store 317(i32) 377
+ 378: 18(int) Load 317(i32)
+ 379: 52(ivec2) CompositeConstruct 378 378
+ 380: 18(int) Load 317(i32)
+ 381: 18(int) SNegate 380
+ 382: 52(ivec2) CompositeConstruct 381 381
+ 385: 52(ivec2) Select 384 382 379
+ Store 314(i32v) 385
+ 386: 38(ptr) AccessChain 327(u32v) 175
+ 387: 14(int) Load 386
+ 388: 38(ptr) AccessChain 327(u32v) 176
+ 389: 14(int) Load 388
+ 390: 14(int) Select 376 389 387
+ Store 329(u32) 390
+ 391: 14(int) Load 329(u32)
+ 392: 184(ivec3) CompositeConstruct 391 391 391
+ 393: 14(int) Load 329(u32)
+ 394: 14(int) SNegate 393
+ 395: 184(ivec3) CompositeConstruct 394 394 394
+ 398: 184(ivec3) Select 397 395 392
+ Store 327(u32v) 398
+ 402: 399(ivec4) Load 401(i8v4)
+ 403: 18(int) Bitcast 402
+ Store 317(i32) 403
+ 405: 101(ivec2) Load 404(i16v2)
+ 406: 18(int) Bitcast 405
+ Store 317(i32) 406
+ 410: 407(ivec4) Load 409(u8v4)
+ 411: 14(int) Bitcast 410
+ Store 329(u32) 411
+ 413: 130(ivec2) Load 412(u16v2)
+ 414: 14(int) Bitcast 413
+ Store 329(u32) 414
+ 416: 57(int) Load 415(i64)
+ 417: 52(ivec2) Bitcast 416
+ Store 314(i32v) 417
+ 421: 63(int) Load 420(u64)
+ 422: 49(ivec2) Bitcast 421
+ Store 418(u32v2) 422
+ 425: 184(ivec3) Load 327(u32v)
+ 426: 14(int) Load 329(u32)
+ 427: 184(ivec3) CompositeConstruct 426 426 426
+ 428: 396(bvec3) ULessThan 425 427
+ Store 424(bv) 428
+ 429: 52(ivec2) Load 314(i32v)
+ 430: 18(int) Load 317(i32)
+ 431: 52(ivec2) CompositeConstruct 430 430
+ 432: 166(bvec2) SLessThan 429 431
+ 433: 396(bvec3) Load 424(bv)
+ 434: 396(bvec3) VectorShuffle 433 432 3 4 2
+ Store 424(bv) 434
+ 435: 184(ivec3) Load 327(u32v)
+ 436: 14(int) Load 329(u32)
+ 437: 184(ivec3) CompositeConstruct 436 436 436
+ 438: 396(bvec3) ULessThanEqual 435 437
+ Store 424(bv) 438
+ 439: 52(ivec2) Load 314(i32v)
+ 440: 18(int) Load 317(i32)
+ 441: 52(ivec2) CompositeConstruct 440 440
+ 442: 166(bvec2) SLessThanEqual 439 441
+ 443: 396(bvec3) Load 424(bv)
+ 444: 396(bvec3) VectorShuffle 443 442 3 4 2
+ Store 424(bv) 444
+ 445: 184(ivec3) Load 327(u32v)
+ 446: 14(int) Load 329(u32)
+ 447: 184(ivec3) CompositeConstruct 446 446 446
+ 448: 396(bvec3) UGreaterThan 445 447
+ Store 424(bv) 448
+ 449: 52(ivec2) Load 314(i32v)
+ 450: 18(int) Load 317(i32)
+ 451: 52(ivec2) CompositeConstruct 450 450
+ 452: 166(bvec2) SGreaterThan 449 451
+ 453: 396(bvec3) Load 424(bv)
+ 454: 396(bvec3) VectorShuffle 453 452 3 4 2
+ Store 424(bv) 454
+ 455: 184(ivec3) Load 327(u32v)
+ 456: 14(int) Load 329(u32)
+ 457: 184(ivec3) CompositeConstruct 456 456 456
+ 458: 396(bvec3) UGreaterThanEqual 455 457
+ Store 424(bv) 458
+ 459: 52(ivec2) Load 314(i32v)
+ 460: 18(int) Load 317(i32)
+ 461: 52(ivec2) CompositeConstruct 460 460
+ 462: 166(bvec2) SGreaterThanEqual 459 461
+ 463: 396(bvec3) Load 424(bv)
+ 464: 396(bvec3) VectorShuffle 463 462 3 4 2
+ Store 424(bv) 464
+ 465: 184(ivec3) Load 327(u32v)
+ 466: 14(int) Load 329(u32)
+ 467: 184(ivec3) CompositeConstruct 466 466 466
+ 468: 396(bvec3) IEqual 465 467
+ Store 424(bv) 468
+ 469: 52(ivec2) Load 314(i32v)
+ 470: 18(int) Load 317(i32)
+ 471: 52(ivec2) CompositeConstruct 470 470
+ 472: 166(bvec2) IEqual 469 471
+ 473: 396(bvec3) Load 424(bv)
+ 474: 396(bvec3) VectorShuffle 473 472 3 4 2
+ Store 424(bv) 474
+ 475: 184(ivec3) Load 327(u32v)
+ 476: 14(int) Load 329(u32)
+ 477: 184(ivec3) CompositeConstruct 476 476 476
+ 478: 396(bvec3) INotEqual 475 477
+ Store 424(bv) 478
+ 479: 52(ivec2) Load 314(i32v)
+ 480: 18(int) Load 317(i32)
+ 481: 52(ivec2) CompositeConstruct 480 480
+ 482: 166(bvec2) INotEqual 479 481
+ 483: 396(bvec3) Load 424(bv)
+ 484: 396(bvec3) VectorShuffle 483 482 3 4 2
+ Store 424(bv) 484
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out
index d58d596..5e09dbd 100644
--- a/Test/baseResults/spv.int64.frag.out
+++ b/Test/baseResults/spv.int64.frag.out
@@ -1,7 +1,7 @@
spv.int64.frag
// Module Version 10000
// Generated by (magic number): 80005
-// Id's are bound by 480
+// Id's are bound by 483
Capability Shader
Capability Float64
@@ -12,6 +12,7 @@
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_ARB_gpu_shader_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
Name 4 "main"
Name 6 "literal("
Name 8 "typeCast("
@@ -36,38 +37,38 @@
Name 139 "i64"
Name 159 "i"
Name 166 "uv"
- Name 218 "b"
- Name 278 "i64v"
- Name 281 "i64"
- Name 291 "u64v"
- Name 293 "u64"
- Name 365 "dv"
- Name 384 "iv"
- Name 389 "uv"
- Name 393 "bv"
- Name 454 "Block"
- MemberName 454(Block) 0 "i64v"
- MemberName 454(Block) 1 "u64"
- Name 456 "block"
- Name 457 "si64"
- Name 458 "su64"
- Name 459 "si"
- Name 460 "su"
- Name 461 "sb"
+ Name 221 "b"
+ Name 281 "i64v"
+ Name 284 "i64"
+ Name 294 "u64v"
+ Name 296 "u64"
+ Name 368 "dv"
+ Name 387 "iv"
+ Name 392 "uv"
+ Name 396 "bv"
+ Name 457 "Block"
+ MemberName 457(Block) 0 "i64v"
+ MemberName 457(Block) 1 "u64"
+ Name 459 "block"
+ Name 460 "si64"
+ Name 461 "su64"
+ Name 462 "si"
+ Name 463 "su"
+ Name 464 "sb"
MemberDecorate 28(Uniforms) 0 Offset 0
Decorate 28(Uniforms) Block
Decorate 30 DescriptorSet 0
Decorate 30 Binding 0
- MemberDecorate 454(Block) 0 Offset 0
- MemberDecorate 454(Block) 1 Offset 24
- Decorate 454(Block) Block
- Decorate 456(block) DescriptorSet 0
- Decorate 456(block) Binding 1
- Decorate 457(si64) SpecId 100
- Decorate 458(su64) SpecId 101
- Decorate 459(si) SpecId 102
- Decorate 460(su) SpecId 103
- Decorate 461(sb) SpecId 104
+ MemberDecorate 457(Block) 0 Offset 0
+ MemberDecorate 457(Block) 1 Offset 24
+ Decorate 457(Block) Block
+ Decorate 459(block) DescriptorSet 0
+ Decorate 459(block) Binding 1
+ Decorate 460(si64) SpecId 100
+ Decorate 461(su64) SpecId 101
+ Decorate 462(si) SpecId 102
+ Decorate 463(su) SpecId 103
+ Decorate 464(sb) SpecId 104
2: TypeVoid
3: TypeFunction 2
14: TypeInt 64 0
@@ -127,53 +128,52 @@
158: TypePointer Function 31(int)
164: TypeVector 21(int) 3
165: TypePointer Function 164(ivec3)
- 199: TypeVector 31(int) 3
- 202: 21(int) Constant 1
- 203: TypePointer Function 21(int)
- 209: 21(int) Constant 2
- 217: TypePointer Function 55(bool)
- 219: 21(int) Constant 0
- 289: 52(ivec2) ConstantComposite 25 25
- 298: 132(ivec3) ConstantComposite 69 69 69
- 340: 55(bool) ConstantTrue
- 347: 55(bool) ConstantFalse
- 348: 56(bvec2) ConstantComposite 347 347
- 360: TypeVector 55(bool) 3
- 361: 360(bvec3) ConstantComposite 347 347 347
- 363: TypeVector 94(float) 3
- 364: TypePointer Function 363(fvec3)
- 369: TypePointer Function 94(float)
- 380: 31(int) Constant 1
- 381: 31(int) Constant 2
- 382: 74(ivec2) ConstantComposite 380 381
- 387: 81(ivec2) ConstantComposite 209 22
- 392: TypePointer Function 360(bvec3)
- 454(Block): TypeStruct 136(ivec3) 14(int)
- 455: TypePointer Uniform 454(Block)
- 456(block): 455(ptr) Variable Uniform
- 457(si64): 18(int) SpecConstant 4294967286 4294967295
- 458(su64): 14(int) SpecConstant 20 0
- 459(si): 31(int) SpecConstant 4294967291
- 460(su): 21(int) SpecConstant 4
- 461(sb): 55(bool) SpecConstantTrue
- 462: 55(bool) SpecConstantOp 171 457(si64) 69
- 463: 55(bool) SpecConstantOp 171 458(su64) 69
- 464: 18(int) SpecConstantOp 169 461(sb) 61 60
- 465: 14(int) SpecConstantOp 169 461(sb) 70 69
- 466: 31(int) SpecConstantOp 114 457(si64)
- 467: 18(int) SpecConstantOp 114 459(si)
- 468: 21(int) SpecConstantOp 113 458(su64)
- 469: 14(int) SpecConstantOp 113 460(su)
- 470: 18(int) SpecConstantOp 128 458(su64) 69
- 471: 14(int) SpecConstantOp 128 457(si64) 69
- 472: 21(int) SpecConstantOp 113 458(su64)
- 473: 31(int) SpecConstantOp 128 472 219
- 474: 18(int) SpecConstantOp 114 459(si)
- 475: 14(int) SpecConstantOp 128 474 69
- 476: 31(int) SpecConstantOp 114 457(si64)
- 477: 21(int) SpecConstantOp 128 476 219
- 478: 14(int) SpecConstantOp 113 460(su)
- 479: 18(int) SpecConstantOp 128 478 69
+ 203: 21(int) Constant 1
+ 204: TypePointer Function 21(int)
+ 212: 21(int) Constant 2
+ 220: TypePointer Function 55(bool)
+ 222: 21(int) Constant 0
+ 292: 52(ivec2) ConstantComposite 25 25
+ 301: 132(ivec3) ConstantComposite 69 69 69
+ 343: 55(bool) ConstantTrue
+ 350: 55(bool) ConstantFalse
+ 351: 56(bvec2) ConstantComposite 350 350
+ 363: TypeVector 55(bool) 3
+ 364: 363(bvec3) ConstantComposite 350 350 350
+ 366: TypeVector 94(float) 3
+ 367: TypePointer Function 366(fvec3)
+ 372: TypePointer Function 94(float)
+ 383: 31(int) Constant 1
+ 384: 31(int) Constant 2
+ 385: 74(ivec2) ConstantComposite 383 384
+ 390: 81(ivec2) ConstantComposite 212 22
+ 395: TypePointer Function 363(bvec3)
+ 457(Block): TypeStruct 136(ivec3) 14(int)
+ 458: TypePointer Uniform 457(Block)
+ 459(block): 458(ptr) Variable Uniform
+ 460(si64): 18(int) SpecConstant 4294967286 4294967295
+ 461(su64): 14(int) SpecConstant 20 0
+ 462(si): 31(int) SpecConstant 4294967291
+ 463(su): 21(int) SpecConstant 4
+ 464(sb): 55(bool) SpecConstantTrue
+ 465: 55(bool) SpecConstantOp 171 460(si64) 69
+ 466: 55(bool) SpecConstantOp 171 461(su64) 69
+ 467: 18(int) SpecConstantOp 169 464(sb) 61 60
+ 468: 14(int) SpecConstantOp 169 464(sb) 70 69
+ 469: 31(int) SpecConstantOp 114 460(si64)
+ 470: 18(int) SpecConstantOp 114 462(si)
+ 471: 21(int) SpecConstantOp 113 461(su64)
+ 472: 14(int) SpecConstantOp 113 463(su)
+ 473: 18(int) SpecConstantOp 128 461(su64) 69
+ 474: 14(int) SpecConstantOp 128 460(si64) 69
+ 475: 31(int) SpecConstantOp 113 461(su64)
+ 476: 31(int) SpecConstantOp 128 475 222
+ 477: 18(int) SpecConstantOp 114 462(si)
+ 478: 14(int) SpecConstantOp 128 477 69
+ 479: 31(int) SpecConstantOp 114 460(si64)
+ 480: 21(int) SpecConstantOp 128 479 222
+ 481: 18(int) SpecConstantOp 113 463(su)
+ 482: 18(int) SpecConstantOp 128 481 69
4(main): 2 Function None 3
5: Label
Store 16(u64Max) 17
@@ -267,11 +267,11 @@
122: 81(ivec2) Bitcast 121
Store 83(uv) 122
123: 81(ivec2) Load 83(uv)
- 124: 65(ivec2) UConvert 123
+ 124: 52(ivec2) UConvert 123
125: 52(ivec2) Bitcast 124
Store 54(i64v) 125
126: 65(ivec2) Load 67(u64v)
- 127: 81(ivec2) UConvert 126
+ 127: 74(ivec2) UConvert 126
128: 74(ivec2) Bitcast 127
Store 76(iv) 128
129: 74(ivec2) Load 76(iv)
@@ -286,7 +286,7 @@
139(i64): 19(ptr) Variable Function
159(i): 158(ptr) Variable Function
166(uv): 165(ptr) Variable Function
- 218(b): 217(ptr) Variable Function
+ 221(b): 220(ptr) Variable Function
135: 132(ivec3) Load 134(u64v)
137: 136(ivec3) CompositeConstruct 61 61 61
138: 132(ivec3) IAdd 135 137
@@ -360,297 +360,301 @@
196: 18(int) SMod 193 195
Store 139(i64) 196
197: 31(int) Load 159(i)
- 198: 132(ivec3) Load 134(u64v)
- 200: 199(ivec3) CompositeConstruct 197 197 197
- 201: 132(ivec3) ShiftLeftLogical 198 200
- Store 134(u64v) 201
- 204: 203(ptr) AccessChain 166(uv) 202
- 205: 21(int) Load 204
- 206: 18(int) Load 139(i64)
- 207: 18(int) ShiftRightArithmetic 206 205
- Store 139(i64) 207
- 208: 18(int) Load 139(i64)
- 210: 40(ptr) AccessChain 134(u64v) 209
- 211: 14(int) Load 210
- 212: 18(int) ShiftLeftLogical 208 211
- Store 139(i64) 212
- 213: 132(ivec3) Load 134(u64v)
- 214: 18(int) Load 139(i64)
- 215: 136(ivec3) CompositeConstruct 214 214 214
- 216: 132(ivec3) ShiftLeftLogical 213 215
- Store 134(u64v) 216
- 220: 40(ptr) AccessChain 134(u64v) 219
- 221: 14(int) Load 220
- 222: 18(int) Load 139(i64)
- 223: 14(int) Bitcast 222
- 224: 55(bool) INotEqual 221 223
- Store 218(b) 224
+ 198: 18(int) SConvert 197
+ 199: 14(int) Bitcast 198
+ 200: 132(ivec3) Load 134(u64v)
+ 201: 132(ivec3) CompositeConstruct 199 199 199
+ 202: 132(ivec3) ShiftLeftLogical 200 201
+ Store 134(u64v) 202
+ 205: 204(ptr) AccessChain 166(uv) 203
+ 206: 21(int) Load 205
+ 207: 18(int) UConvert 206
+ 208: 18(int) Bitcast 207
+ 209: 18(int) Load 139(i64)
+ 210: 18(int) ShiftRightArithmetic 209 208
+ Store 139(i64) 210
+ 211: 18(int) Load 139(i64)
+ 213: 40(ptr) AccessChain 134(u64v) 212
+ 214: 14(int) Load 213
+ 215: 18(int) ShiftLeftLogical 211 214
+ Store 139(i64) 215
+ 216: 132(ivec3) Load 134(u64v)
+ 217: 18(int) Load 139(i64)
+ 218: 136(ivec3) CompositeConstruct 217 217 217
+ 219: 132(ivec3) ShiftLeftLogical 216 218
+ Store 134(u64v) 219
+ 223: 40(ptr) AccessChain 134(u64v) 222
+ 224: 14(int) Load 223
225: 18(int) Load 139(i64)
226: 14(int) Bitcast 225
- 227: 40(ptr) AccessChain 134(u64v) 219
- 228: 14(int) Load 227
- 229: 55(bool) IEqual 226 228
- Store 218(b) 229
- 230: 40(ptr) AccessChain 134(u64v) 219
+ 227: 55(bool) INotEqual 224 226
+ Store 221(b) 227
+ 228: 18(int) Load 139(i64)
+ 229: 14(int) Bitcast 228
+ 230: 40(ptr) AccessChain 134(u64v) 222
231: 14(int) Load 230
- 232: 203(ptr) AccessChain 166(uv) 202
- 233: 21(int) Load 232
- 234: 14(int) UConvert 233
- 235: 55(bool) UGreaterThan 231 234
- Store 218(b) 235
- 236: 18(int) Load 139(i64)
- 237: 31(int) Load 159(i)
- 238: 18(int) SConvert 237
- 239: 55(bool) SLessThan 236 238
- Store 218(b) 239
- 240: 40(ptr) AccessChain 134(u64v) 202
- 241: 14(int) Load 240
- 242: 203(ptr) AccessChain 166(uv) 219
- 243: 21(int) Load 242
- 244: 14(int) UConvert 243
- 245: 55(bool) UGreaterThanEqual 241 244
- Store 218(b) 245
- 246: 18(int) Load 139(i64)
- 247: 31(int) Load 159(i)
- 248: 18(int) SConvert 247
- 249: 55(bool) SLessThanEqual 246 248
- Store 218(b) 249
+ 232: 55(bool) IEqual 229 231
+ Store 221(b) 232
+ 233: 40(ptr) AccessChain 134(u64v) 222
+ 234: 14(int) Load 233
+ 235: 204(ptr) AccessChain 166(uv) 203
+ 236: 21(int) Load 235
+ 237: 14(int) UConvert 236
+ 238: 55(bool) UGreaterThan 234 237
+ Store 221(b) 238
+ 239: 18(int) Load 139(i64)
+ 240: 31(int) Load 159(i)
+ 241: 18(int) SConvert 240
+ 242: 55(bool) SLessThan 239 241
+ Store 221(b) 242
+ 243: 40(ptr) AccessChain 134(u64v) 203
+ 244: 14(int) Load 243
+ 245: 204(ptr) AccessChain 166(uv) 222
+ 246: 21(int) Load 245
+ 247: 14(int) UConvert 246
+ 248: 55(bool) UGreaterThanEqual 244 247
+ Store 221(b) 248
+ 249: 18(int) Load 139(i64)
250: 31(int) Load 159(i)
251: 18(int) SConvert 250
- 252: 14(int) Bitcast 251
- 253: 132(ivec3) Load 134(u64v)
- 254: 132(ivec3) CompositeConstruct 252 252 252
- 255: 132(ivec3) BitwiseOr 253 254
- Store 134(u64v) 255
- 256: 18(int) Load 139(i64)
- 257: 31(int) Load 159(i)
- 258: 18(int) SConvert 257
- 259: 18(int) BitwiseOr 256 258
- Store 139(i64) 259
+ 252: 55(bool) SLessThanEqual 249 251
+ Store 221(b) 252
+ 253: 31(int) Load 159(i)
+ 254: 18(int) SConvert 253
+ 255: 14(int) Bitcast 254
+ 256: 132(ivec3) Load 134(u64v)
+ 257: 132(ivec3) CompositeConstruct 255 255 255
+ 258: 132(ivec3) BitwiseOr 256 257
+ Store 134(u64v) 258
+ 259: 18(int) Load 139(i64)
260: 31(int) Load 159(i)
261: 18(int) SConvert 260
- 262: 18(int) Load 139(i64)
- 263: 18(int) BitwiseAnd 262 261
- Store 139(i64) 263
- 264: 132(ivec3) Load 134(u64v)
- 265: 164(ivec3) Load 166(uv)
- 266: 132(ivec3) UConvert 265
- 267: 132(ivec3) BitwiseAnd 264 266
- Store 134(u64v) 267
- 268: 18(int) Load 139(i64)
- 269: 14(int) Bitcast 268
- 270: 132(ivec3) Load 134(u64v)
- 271: 132(ivec3) CompositeConstruct 269 269 269
- 272: 132(ivec3) BitwiseXor 270 271
- Store 134(u64v) 272
+ 262: 18(int) BitwiseOr 259 261
+ Store 139(i64) 262
+ 263: 31(int) Load 159(i)
+ 264: 18(int) SConvert 263
+ 265: 18(int) Load 139(i64)
+ 266: 18(int) BitwiseAnd 265 264
+ Store 139(i64) 266
+ 267: 132(ivec3) Load 134(u64v)
+ 268: 164(ivec3) Load 166(uv)
+ 269: 132(ivec3) UConvert 268
+ 270: 132(ivec3) BitwiseAnd 267 269
+ Store 134(u64v) 270
+ 271: 18(int) Load 139(i64)
+ 272: 14(int) Bitcast 271
273: 132(ivec3) Load 134(u64v)
- 274: 18(int) Load 139(i64)
- 275: 14(int) Bitcast 274
- 276: 132(ivec3) CompositeConstruct 275 275 275
- 277: 132(ivec3) BitwiseXor 273 276
- Store 134(u64v) 277
+ 274: 132(ivec3) CompositeConstruct 272 272 272
+ 275: 132(ivec3) BitwiseXor 273 274
+ Store 134(u64v) 275
+ 276: 132(ivec3) Load 134(u64v)
+ 277: 18(int) Load 139(i64)
+ 278: 14(int) Bitcast 277
+ 279: 132(ivec3) CompositeConstruct 278 278 278
+ 280: 132(ivec3) BitwiseXor 276 279
+ Store 134(u64v) 280
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
- 278(i64v): 53(ptr) Variable Function
- 281(i64): 19(ptr) Variable Function
- 291(u64v): 133(ptr) Variable Function
- 293(u64): 40(ptr) Variable Function
- 365(dv): 364(ptr) Variable Function
- 384(iv): 75(ptr) Variable Function
- 389(uv): 82(ptr) Variable Function
- 393(bv): 392(ptr) Variable Function
- 279: 52(ivec2) Load 278(i64v)
- 280: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 279
- Store 278(i64v) 280
- 282: 18(int) Load 281(i64)
- 283: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 282
- Store 281(i64) 283
- 284: 52(ivec2) Load 278(i64v)
- 285: 18(int) Load 281(i64)
- 286: 52(ivec2) CompositeConstruct 285 285
- 287: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 284 286
- Store 278(i64v) 287
- 288: 52(ivec2) Load 278(i64v)
- 290: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 288 289
- Store 278(i64v) 290
- 292: 132(ivec3) Load 291(u64v)
- 294: 14(int) Load 293(u64)
- 295: 132(ivec3) CompositeConstruct 294 294 294
- 296: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 292 295
- Store 291(u64v) 296
- 297: 132(ivec3) Load 291(u64v)
- 299: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 297 298
- Store 291(u64v) 299
- 300: 52(ivec2) Load 278(i64v)
- 301: 18(int) Load 281(i64)
- 302: 52(ivec2) CompositeConstruct 301 301
- 303: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 300 302
- Store 278(i64v) 303
- 304: 52(ivec2) Load 278(i64v)
- 305: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 304 289
- Store 278(i64v) 305
- 306: 132(ivec3) Load 291(u64v)
- 307: 14(int) Load 293(u64)
- 308: 132(ivec3) CompositeConstruct 307 307 307
- 309: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 306 308
- Store 291(u64v) 309
- 310: 132(ivec3) Load 291(u64v)
- 311: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 310 298
- Store 291(u64v) 311
- 312: 52(ivec2) Load 278(i64v)
- 313: 18(int) Load 281(i64)
- 314: 18(int) SNegate 313
- 315: 18(int) Load 281(i64)
- 316: 52(ivec2) CompositeConstruct 314 314
- 317: 52(ivec2) CompositeConstruct 315 315
- 318: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 312 316 317
- Store 278(i64v) 318
- 319: 52(ivec2) Load 278(i64v)
- 320: 52(ivec2) Load 278(i64v)
- 321: 52(ivec2) SNegate 320
- 322: 52(ivec2) Load 278(i64v)
- 323: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 319 321 322
- Store 278(i64v) 323
- 324: 132(ivec3) Load 291(u64v)
- 325: 14(int) Load 293(u64)
- 326: 14(int) SNegate 325
- 327: 14(int) Load 293(u64)
- 328: 132(ivec3) CompositeConstruct 326 326 326
- 329: 132(ivec3) CompositeConstruct 327 327 327
- 330: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 324 328 329
- Store 291(u64v) 330
- 331: 132(ivec3) Load 291(u64v)
- 332: 132(ivec3) Load 291(u64v)
- 333: 132(ivec3) SNegate 332
- 334: 132(ivec3) Load 291(u64v)
- 335: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 331 333 334
- Store 291(u64v) 335
- 336: 19(ptr) AccessChain 278(i64v) 219
- 337: 18(int) Load 336
- 338: 19(ptr) AccessChain 278(i64v) 202
- 339: 18(int) Load 338
- 341: 18(int) Select 340 339 337
- Store 281(i64) 341
- 342: 18(int) Load 281(i64)
- 343: 52(ivec2) CompositeConstruct 342 342
- 344: 18(int) Load 281(i64)
- 345: 18(int) SNegate 344
+ 281(i64v): 53(ptr) Variable Function
+ 284(i64): 19(ptr) Variable Function
+ 294(u64v): 133(ptr) Variable Function
+ 296(u64): 40(ptr) Variable Function
+ 368(dv): 367(ptr) Variable Function
+ 387(iv): 75(ptr) Variable Function
+ 392(uv): 82(ptr) Variable Function
+ 396(bv): 395(ptr) Variable Function
+ 282: 52(ivec2) Load 281(i64v)
+ 283: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 282
+ Store 281(i64v) 283
+ 285: 18(int) Load 284(i64)
+ 286: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 285
+ Store 284(i64) 286
+ 287: 52(ivec2) Load 281(i64v)
+ 288: 18(int) Load 284(i64)
+ 289: 52(ivec2) CompositeConstruct 288 288
+ 290: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 287 289
+ Store 281(i64v) 290
+ 291: 52(ivec2) Load 281(i64v)
+ 293: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 291 292
+ Store 281(i64v) 293
+ 295: 132(ivec3) Load 294(u64v)
+ 297: 14(int) Load 296(u64)
+ 298: 132(ivec3) CompositeConstruct 297 297 297
+ 299: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 295 298
+ Store 294(u64v) 299
+ 300: 132(ivec3) Load 294(u64v)
+ 302: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 300 301
+ Store 294(u64v) 302
+ 303: 52(ivec2) Load 281(i64v)
+ 304: 18(int) Load 284(i64)
+ 305: 52(ivec2) CompositeConstruct 304 304
+ 306: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 303 305
+ Store 281(i64v) 306
+ 307: 52(ivec2) Load 281(i64v)
+ 308: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 307 292
+ Store 281(i64v) 308
+ 309: 132(ivec3) Load 294(u64v)
+ 310: 14(int) Load 296(u64)
+ 311: 132(ivec3) CompositeConstruct 310 310 310
+ 312: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 309 311
+ Store 294(u64v) 312
+ 313: 132(ivec3) Load 294(u64v)
+ 314: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 313 301
+ Store 294(u64v) 314
+ 315: 52(ivec2) Load 281(i64v)
+ 316: 18(int) Load 284(i64)
+ 317: 18(int) SNegate 316
+ 318: 18(int) Load 284(i64)
+ 319: 52(ivec2) CompositeConstruct 317 317
+ 320: 52(ivec2) CompositeConstruct 318 318
+ 321: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 315 319 320
+ Store 281(i64v) 321
+ 322: 52(ivec2) Load 281(i64v)
+ 323: 52(ivec2) Load 281(i64v)
+ 324: 52(ivec2) SNegate 323
+ 325: 52(ivec2) Load 281(i64v)
+ 326: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 322 324 325
+ Store 281(i64v) 326
+ 327: 132(ivec3) Load 294(u64v)
+ 328: 14(int) Load 296(u64)
+ 329: 14(int) SNegate 328
+ 330: 14(int) Load 296(u64)
+ 331: 132(ivec3) CompositeConstruct 329 329 329
+ 332: 132(ivec3) CompositeConstruct 330 330 330
+ 333: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 327 331 332
+ Store 294(u64v) 333
+ 334: 132(ivec3) Load 294(u64v)
+ 335: 132(ivec3) Load 294(u64v)
+ 336: 132(ivec3) SNegate 335
+ 337: 132(ivec3) Load 294(u64v)
+ 338: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 334 336 337
+ Store 294(u64v) 338
+ 339: 19(ptr) AccessChain 281(i64v) 222
+ 340: 18(int) Load 339
+ 341: 19(ptr) AccessChain 281(i64v) 203
+ 342: 18(int) Load 341
+ 344: 18(int) Select 343 342 340
+ Store 284(i64) 344
+ 345: 18(int) Load 284(i64)
346: 52(ivec2) CompositeConstruct 345 345
- 349: 52(ivec2) Select 348 346 343
- Store 278(i64v) 349
- 350: 40(ptr) AccessChain 291(u64v) 219
- 351: 14(int) Load 350
- 352: 40(ptr) AccessChain 291(u64v) 202
- 353: 14(int) Load 352
- 354: 14(int) Select 340 353 351
- Store 293(u64) 354
- 355: 14(int) Load 293(u64)
- 356: 132(ivec3) CompositeConstruct 355 355 355
- 357: 14(int) Load 293(u64)
- 358: 14(int) SNegate 357
+ 347: 18(int) Load 284(i64)
+ 348: 18(int) SNegate 347
+ 349: 52(ivec2) CompositeConstruct 348 348
+ 352: 52(ivec2) Select 351 349 346
+ Store 281(i64v) 352
+ 353: 40(ptr) AccessChain 294(u64v) 222
+ 354: 14(int) Load 353
+ 355: 40(ptr) AccessChain 294(u64v) 203
+ 356: 14(int) Load 355
+ 357: 14(int) Select 343 356 354
+ Store 296(u64) 357
+ 358: 14(int) Load 296(u64)
359: 132(ivec3) CompositeConstruct 358 358 358
- 362: 132(ivec3) Select 361 359 356
- Store 291(u64v) 362
- 366: 363(fvec3) Load 365(dv)
- 367: 95(fvec2) VectorShuffle 366 366 0 1
- 368: 52(ivec2) Bitcast 367
- Store 278(i64v) 368
- 370: 369(ptr) AccessChain 365(dv) 209
- 371: 94(float) Load 370
- 372: 14(int) Bitcast 371
- 373: 40(ptr) AccessChain 291(u64v) 219
- Store 373 372
- 374: 52(ivec2) Load 278(i64v)
- 375: 95(fvec2) Bitcast 374
- 376: 363(fvec3) Load 365(dv)
- 377: 363(fvec3) VectorShuffle 376 375 3 4 2
- Store 365(dv) 377
- 378: 132(ivec3) Load 291(u64v)
- 379: 363(fvec3) Bitcast 378
- Store 365(dv) 379
- 383: 18(int) Bitcast 382
- Store 281(i64) 383
- 385: 18(int) Load 281(i64)
- 386: 74(ivec2) Bitcast 385
- Store 384(iv) 386
- 388: 14(int) Bitcast 387
- Store 293(u64) 388
- 390: 14(int) Load 293(u64)
- 391: 81(ivec2) Bitcast 390
- Store 389(uv) 391
- 394: 132(ivec3) Load 291(u64v)
- 395: 14(int) Load 293(u64)
- 396: 132(ivec3) CompositeConstruct 395 395 395
- 397: 360(bvec3) ULessThan 394 396
- Store 393(bv) 397
- 398: 52(ivec2) Load 278(i64v)
- 399: 18(int) Load 281(i64)
- 400: 52(ivec2) CompositeConstruct 399 399
- 401: 56(bvec2) SLessThan 398 400
- 402: 360(bvec3) Load 393(bv)
- 403: 360(bvec3) VectorShuffle 402 401 3 4 2
- Store 393(bv) 403
- 404: 132(ivec3) Load 291(u64v)
- 405: 14(int) Load 293(u64)
- 406: 132(ivec3) CompositeConstruct 405 405 405
- 407: 360(bvec3) ULessThanEqual 404 406
- Store 393(bv) 407
- 408: 52(ivec2) Load 278(i64v)
- 409: 18(int) Load 281(i64)
- 410: 52(ivec2) CompositeConstruct 409 409
- 411: 56(bvec2) SLessThanEqual 408 410
- 412: 360(bvec3) Load 393(bv)
- 413: 360(bvec3) VectorShuffle 412 411 3 4 2
- Store 393(bv) 413
- 414: 132(ivec3) Load 291(u64v)
- 415: 14(int) Load 293(u64)
- 416: 132(ivec3) CompositeConstruct 415 415 415
- 417: 360(bvec3) UGreaterThan 414 416
- Store 393(bv) 417
- 418: 52(ivec2) Load 278(i64v)
- 419: 18(int) Load 281(i64)
- 420: 52(ivec2) CompositeConstruct 419 419
- 421: 56(bvec2) SGreaterThan 418 420
- 422: 360(bvec3) Load 393(bv)
- 423: 360(bvec3) VectorShuffle 422 421 3 4 2
- Store 393(bv) 423
- 424: 132(ivec3) Load 291(u64v)
- 425: 14(int) Load 293(u64)
- 426: 132(ivec3) CompositeConstruct 425 425 425
- 427: 360(bvec3) UGreaterThanEqual 424 426
- Store 393(bv) 427
- 428: 52(ivec2) Load 278(i64v)
- 429: 18(int) Load 281(i64)
- 430: 52(ivec2) CompositeConstruct 429 429
- 431: 56(bvec2) SGreaterThanEqual 428 430
- 432: 360(bvec3) Load 393(bv)
- 433: 360(bvec3) VectorShuffle 432 431 3 4 2
- Store 393(bv) 433
- 434: 132(ivec3) Load 291(u64v)
- 435: 14(int) Load 293(u64)
- 436: 132(ivec3) CompositeConstruct 435 435 435
- 437: 360(bvec3) IEqual 434 436
- Store 393(bv) 437
- 438: 52(ivec2) Load 278(i64v)
- 439: 18(int) Load 281(i64)
- 440: 52(ivec2) CompositeConstruct 439 439
- 441: 56(bvec2) IEqual 438 440
- 442: 360(bvec3) Load 393(bv)
- 443: 360(bvec3) VectorShuffle 442 441 3 4 2
- Store 393(bv) 443
- 444: 132(ivec3) Load 291(u64v)
- 445: 14(int) Load 293(u64)
- 446: 132(ivec3) CompositeConstruct 445 445 445
- 447: 360(bvec3) INotEqual 444 446
- Store 393(bv) 447
- 448: 52(ivec2) Load 278(i64v)
- 449: 18(int) Load 281(i64)
- 450: 52(ivec2) CompositeConstruct 449 449
- 451: 56(bvec2) INotEqual 448 450
- 452: 360(bvec3) Load 393(bv)
- 453: 360(bvec3) VectorShuffle 452 451 3 4 2
- Store 393(bv) 453
+ 360: 14(int) Load 296(u64)
+ 361: 14(int) SNegate 360
+ 362: 132(ivec3) CompositeConstruct 361 361 361
+ 365: 132(ivec3) Select 364 362 359
+ Store 294(u64v) 365
+ 369: 366(fvec3) Load 368(dv)
+ 370: 95(fvec2) VectorShuffle 369 369 0 1
+ 371: 52(ivec2) Bitcast 370
+ Store 281(i64v) 371
+ 373: 372(ptr) AccessChain 368(dv) 212
+ 374: 94(float) Load 373
+ 375: 14(int) Bitcast 374
+ 376: 40(ptr) AccessChain 294(u64v) 222
+ Store 376 375
+ 377: 52(ivec2) Load 281(i64v)
+ 378: 95(fvec2) Bitcast 377
+ 379: 366(fvec3) Load 368(dv)
+ 380: 366(fvec3) VectorShuffle 379 378 3 4 2
+ Store 368(dv) 380
+ 381: 132(ivec3) Load 294(u64v)
+ 382: 366(fvec3) Bitcast 381
+ Store 368(dv) 382
+ 386: 18(int) Bitcast 385
+ Store 284(i64) 386
+ 388: 18(int) Load 284(i64)
+ 389: 74(ivec2) Bitcast 388
+ Store 387(iv) 389
+ 391: 14(int) Bitcast 390
+ Store 296(u64) 391
+ 393: 14(int) Load 296(u64)
+ 394: 81(ivec2) Bitcast 393
+ Store 392(uv) 394
+ 397: 132(ivec3) Load 294(u64v)
+ 398: 14(int) Load 296(u64)
+ 399: 132(ivec3) CompositeConstruct 398 398 398
+ 400: 363(bvec3) ULessThan 397 399
+ Store 396(bv) 400
+ 401: 52(ivec2) Load 281(i64v)
+ 402: 18(int) Load 284(i64)
+ 403: 52(ivec2) CompositeConstruct 402 402
+ 404: 56(bvec2) SLessThan 401 403
+ 405: 363(bvec3) Load 396(bv)
+ 406: 363(bvec3) VectorShuffle 405 404 3 4 2
+ Store 396(bv) 406
+ 407: 132(ivec3) Load 294(u64v)
+ 408: 14(int) Load 296(u64)
+ 409: 132(ivec3) CompositeConstruct 408 408 408
+ 410: 363(bvec3) ULessThanEqual 407 409
+ Store 396(bv) 410
+ 411: 52(ivec2) Load 281(i64v)
+ 412: 18(int) Load 284(i64)
+ 413: 52(ivec2) CompositeConstruct 412 412
+ 414: 56(bvec2) SLessThanEqual 411 413
+ 415: 363(bvec3) Load 396(bv)
+ 416: 363(bvec3) VectorShuffle 415 414 3 4 2
+ Store 396(bv) 416
+ 417: 132(ivec3) Load 294(u64v)
+ 418: 14(int) Load 296(u64)
+ 419: 132(ivec3) CompositeConstruct 418 418 418
+ 420: 363(bvec3) UGreaterThan 417 419
+ Store 396(bv) 420
+ 421: 52(ivec2) Load 281(i64v)
+ 422: 18(int) Load 284(i64)
+ 423: 52(ivec2) CompositeConstruct 422 422
+ 424: 56(bvec2) SGreaterThan 421 423
+ 425: 363(bvec3) Load 396(bv)
+ 426: 363(bvec3) VectorShuffle 425 424 3 4 2
+ Store 396(bv) 426
+ 427: 132(ivec3) Load 294(u64v)
+ 428: 14(int) Load 296(u64)
+ 429: 132(ivec3) CompositeConstruct 428 428 428
+ 430: 363(bvec3) UGreaterThanEqual 427 429
+ Store 396(bv) 430
+ 431: 52(ivec2) Load 281(i64v)
+ 432: 18(int) Load 284(i64)
+ 433: 52(ivec2) CompositeConstruct 432 432
+ 434: 56(bvec2) SGreaterThanEqual 431 433
+ 435: 363(bvec3) Load 396(bv)
+ 436: 363(bvec3) VectorShuffle 435 434 3 4 2
+ Store 396(bv) 436
+ 437: 132(ivec3) Load 294(u64v)
+ 438: 14(int) Load 296(u64)
+ 439: 132(ivec3) CompositeConstruct 438 438 438
+ 440: 363(bvec3) IEqual 437 439
+ Store 396(bv) 440
+ 441: 52(ivec2) Load 281(i64v)
+ 442: 18(int) Load 284(i64)
+ 443: 52(ivec2) CompositeConstruct 442 442
+ 444: 56(bvec2) IEqual 441 443
+ 445: 363(bvec3) Load 396(bv)
+ 446: 363(bvec3) VectorShuffle 445 444 3 4 2
+ Store 396(bv) 446
+ 447: 132(ivec3) Load 294(u64v)
+ 448: 14(int) Load 296(u64)
+ 449: 132(ivec3) CompositeConstruct 448 448 448
+ 450: 363(bvec3) INotEqual 447 449
+ Store 396(bv) 450
+ 451: 52(ivec2) Load 281(i64v)
+ 452: 18(int) Load 284(i64)
+ 453: 52(ivec2) CompositeConstruct 452 452
+ 454: 56(bvec2) INotEqual 451 453
+ 455: 363(bvec3) Load 396(bv)
+ 456: 363(bvec3) VectorShuffle 455 454 3 4 2
+ Store 396(bv) 456
Return
FunctionEnd
diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out
new file mode 100644
index 0000000..1bfc439
--- /dev/null
+++ b/Test/baseResults/spv.int8.frag.out
@@ -0,0 +1,748 @@
+spv.int8.frag
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 531
+
+ Capability Shader
+ Capability Float16
+ Capability Float64
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
+ Name 4 "main"
+ Name 6 "literal("
+ Name 8 "typeCast8("
+ Name 10 "operators("
+ Name 12 "builtinFuncs("
+ Name 16 "i8"
+ Name 24 "Uniforms"
+ MemberName 24(Uniforms) 0 "index"
+ Name 26 ""
+ Name 33 "indexable"
+ Name 38 "u8"
+ Name 46 "indexable"
+ Name 51 "u8v"
+ Name 54 "i8v"
+ Name 60 "i16v"
+ Name 68 "i32v"
+ Name 76 "u32v"
+ Name 83 "i64v"
+ Name 89 "u64v"
+ Name 103 "f16v"
+ Name 109 "f32v"
+ Name 115 "f64v"
+ Name 144 "u16v"
+ Name 174 "bv"
+ Name 192 "u8v"
+ Name 196 "i8"
+ Name 216 "i"
+ Name 223 "uv"
+ Name 242 "i16"
+ Name 279 "b"
+ Name 341 "i8v"
+ Name 344 "i8"
+ Name 354 "u8v"
+ Name 356 "u8"
+ Name 430 "i16"
+ Name 433 "i32"
+ Name 436 "i8v4"
+ Name 440 "u16"
+ Name 441 "u8v2"
+ Name 444 "u32"
+ Name 447 "u8v4"
+ Name 459 "bv"
+ Name 526 "Block"
+ MemberName 526(Block) 0 "i8"
+ MemberName 526(Block) 1 "i8v2"
+ MemberName 526(Block) 2 "i8v3"
+ MemberName 526(Block) 3 "i8v4"
+ MemberName 526(Block) 4 "u8"
+ MemberName 526(Block) 5 "u8v2"
+ MemberName 526(Block) 6 "u8v3"
+ MemberName 526(Block) 7 "u8v4"
+ Name 528 "block"
+ Name 529 "si8"
+ Name 530 "su8"
+ MemberDecorate 24(Uniforms) 0 Offset 0
+ Decorate 24(Uniforms) Block
+ Decorate 26 DescriptorSet 0
+ Decorate 26 Binding 0
+ MemberDecorate 526(Block) 0 Offset 0
+ MemberDecorate 526(Block) 1 Offset 2
+ MemberDecorate 526(Block) 2 Offset 4
+ MemberDecorate 526(Block) 3 Offset 8
+ MemberDecorate 526(Block) 4 Offset 12
+ MemberDecorate 526(Block) 5 Offset 14
+ MemberDecorate 526(Block) 6 Offset 16
+ MemberDecorate 526(Block) 7 Offset 20
+ Decorate 526(Block) Block
+ Decorate 528(block) DescriptorSet 0
+ Decorate 528(block) Binding 1
+ Decorate 529(si8) SpecId 100
+ Decorate 530(su8) SpecId 101
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 14: TypeInt 8 1
+ 15: TypePointer Function 14(int)
+ 17: TypeInt 32 0
+ 18: 17(int) Constant 3
+ 19: TypeArray 14(int) 18
+ 20: 14(int) Constant 4294967279
+ 21: 14(int) Constant 4294967295
+ 22: 14(int) Constant 0
+ 23: 19 ConstantComposite 20 21 22
+ 24(Uniforms): TypeStruct 17(int)
+ 25: TypePointer Uniform 24(Uniforms)
+ 26: 25(ptr) Variable Uniform
+ 27: TypeInt 32 1
+ 28: 27(int) Constant 0
+ 29: TypePointer Uniform 17(int)
+ 32: TypePointer Function 19
+ 36: TypeInt 8 0
+ 37: TypePointer Function 36(int)
+ 39: TypeArray 36(int) 18
+ 40: 36(int) Constant 255
+ 41: 36(int) Constant 127
+ 42: 39 ConstantComposite 40 40 41
+ 45: TypePointer Function 39
+ 49: TypeVector 36(int) 2
+ 50: TypePointer Function 49(ivec2)
+ 52: TypeVector 14(int) 2
+ 53: TypePointer Function 52(ivec2)
+ 57: TypeInt 16 1
+ 58: TypeVector 57(int) 2
+ 59: TypePointer Function 58(ivec2)
+ 66: TypeVector 27(int) 2
+ 67: TypePointer Function 66(ivec2)
+ 74: TypeVector 17(int) 2
+ 75: TypePointer Function 74(ivec2)
+ 80: TypeInt 64 1
+ 81: TypeVector 80(int) 2
+ 82: TypePointer Function 81(ivec2)
+ 86: TypeInt 64 0
+ 87: TypeVector 86(int) 2
+ 88: TypePointer Function 87(ivec2)
+ 100: TypeFloat 16
+ 101: TypeVector 100(float) 2
+ 102: TypePointer Function 101(fvec2)
+ 106: TypeFloat 32
+ 107: TypeVector 106(float) 2
+ 108: TypePointer Function 107(fvec2)
+ 112: TypeFloat 64
+ 113: TypeVector 112(float) 2
+ 114: TypePointer Function 113(fvec2)
+ 141: TypeInt 16 0
+ 142: TypeVector 141(int) 2
+ 143: TypePointer Function 142(ivec2)
+ 171: TypeBool
+ 172: TypeVector 171(bool) 2
+ 173: TypePointer Function 172(bvec2)
+ 176: 14(int) Constant 1
+ 177: 52(ivec2) ConstantComposite 22 22
+ 178: 52(ivec2) ConstantComposite 176 176
+ 181: 36(int) Constant 0
+ 182: 36(int) Constant 1
+ 183: 49(ivec2) ConstantComposite 181 181
+ 184: 49(ivec2) ConstantComposite 182 182
+ 190: TypeVector 14(int) 3
+ 191: TypePointer Function 190(ivec3)
+ 215: TypePointer Function 27(int)
+ 221: TypeVector 17(int) 3
+ 222: TypePointer Function 221(ivec3)
+ 225: TypeVector 27(int) 3
+ 241: TypePointer Function 57(int)
+ 264: 17(int) Constant 1
+ 270: 17(int) Constant 2
+ 278: TypePointer Function 171(bool)
+ 280: 17(int) Constant 0
+ 293: TypePointer Function 17(int)
+ 352: 52(ivec2) ConstantComposite 21 21
+ 358: TypeVector 36(int) 3
+ 362: 190(ivec3) ConstantComposite 22 22 22
+ 404: 171(bool) ConstantTrue
+ 411: 171(bool) ConstantFalse
+ 412: 172(bvec2) ConstantComposite 411 411
+ 427: TypeVector 171(bool) 3
+ 428: 427(bvec3) ConstantComposite 411 411 411
+ 434: TypeVector 14(int) 4
+ 435: TypePointer Function 434(ivec4)
+ 439: TypePointer Function 141(int)
+ 445: TypeVector 36(int) 4
+ 446: TypePointer Function 445(ivec4)
+ 458: TypePointer Function 427(bvec3)
+ 526(Block): TypeStruct 14(int) 52(ivec2) 190(ivec3) 434(ivec4) 36(int) 49(ivec2) 190(ivec3) 445(ivec4)
+ 527: TypePointer Uniform 526(Block)
+ 528(block): 527(ptr) Variable Uniform
+ 529(si8): 14(int) SpecConstant 4294967286
+ 530(su8): 36(int) SpecConstant 20
+ 4(main): 2 Function None 3
+ 5: Label
+ Return
+ FunctionEnd
+ 6(literal(): 2 Function None 3
+ 7: Label
+ 16(i8): 15(ptr) Variable Function
+ 33(indexable): 32(ptr) Variable Function
+ 38(u8): 37(ptr) Variable Function
+ 46(indexable): 45(ptr) Variable Function
+ 30: 29(ptr) AccessChain 26 28
+ 31: 17(int) Load 30
+ Store 33(indexable) 23
+ 34: 15(ptr) AccessChain 33(indexable) 31
+ 35: 14(int) Load 34
+ Store 16(i8) 35
+ 43: 29(ptr) AccessChain 26 28
+ 44: 17(int) Load 43
+ Store 46(indexable) 42
+ 47: 37(ptr) AccessChain 46(indexable) 44
+ 48: 36(int) Load 47
+ Store 38(u8) 48
+ Return
+ FunctionEnd
+ 8(typeCast8(): 2 Function None 3
+ 9: Label
+ 51(u8v): 50(ptr) Variable Function
+ 54(i8v): 53(ptr) Variable Function
+ 60(i16v): 59(ptr) Variable Function
+ 68(i32v): 67(ptr) Variable Function
+ 76(u32v): 75(ptr) Variable Function
+ 83(i64v): 82(ptr) Variable Function
+ 89(u64v): 88(ptr) Variable Function
+ 103(f16v): 102(ptr) Variable Function
+ 109(f32v): 108(ptr) Variable Function
+ 115(f64v): 114(ptr) Variable Function
+ 144(u16v): 143(ptr) Variable Function
+ 174(bv): 173(ptr) Variable Function
+ 55: 52(ivec2) Load 54(i8v)
+ 56: 49(ivec2) Bitcast 55
+ Store 51(u8v) 56
+ 61: 52(ivec2) Load 54(i8v)
+ 62: 58(ivec2) SConvert 61
+ Store 60(i16v) 62
+ 63: 49(ivec2) Load 51(u8v)
+ 64: 58(ivec2) UConvert 63
+ 65: 58(ivec2) Bitcast 64
+ Store 60(i16v) 65
+ 69: 52(ivec2) Load 54(i8v)
+ 70: 66(ivec2) SConvert 69
+ Store 68(i32v) 70
+ 71: 49(ivec2) Load 51(u8v)
+ 72: 66(ivec2) UConvert 71
+ 73: 66(ivec2) Bitcast 72
+ Store 68(i32v) 73
+ 77: 52(ivec2) Load 54(i8v)
+ 78: 66(ivec2) SConvert 77
+ 79: 74(ivec2) Bitcast 78
+ Store 76(u32v) 79
+ 84: 52(ivec2) Load 54(i8v)
+ 85: 81(ivec2) SConvert 84
+ Store 83(i64v) 85
+ 90: 52(ivec2) Load 54(i8v)
+ 91: 81(ivec2) SConvert 90
+ 92: 87(ivec2) Bitcast 91
+ Store 89(u64v) 92
+ 93: 49(ivec2) Load 51(u8v)
+ 94: 74(ivec2) UConvert 93
+ Store 76(u32v) 94
+ 95: 49(ivec2) Load 51(u8v)
+ 96: 81(ivec2) UConvert 95
+ 97: 81(ivec2) Bitcast 96
+ Store 83(i64v) 97
+ 98: 49(ivec2) Load 51(u8v)
+ 99: 87(ivec2) UConvert 98
+ Store 89(u64v) 99
+ 104: 52(ivec2) Load 54(i8v)
+ 105: 101(fvec2) ConvertSToF 104
+ Store 103(f16v) 105
+ 110: 52(ivec2) Load 54(i8v)
+ 111: 107(fvec2) ConvertSToF 110
+ Store 109(f32v) 111
+ 116: 52(ivec2) Load 54(i8v)
+ 117: 113(fvec2) ConvertSToF 116
+ Store 115(f64v) 117
+ 118: 49(ivec2) Load 51(u8v)
+ 119: 101(fvec2) ConvertUToF 118
+ Store 103(f16v) 119
+ 120: 49(ivec2) Load 51(u8v)
+ 121: 107(fvec2) ConvertUToF 120
+ Store 109(f32v) 121
+ 122: 49(ivec2) Load 51(u8v)
+ 123: 113(fvec2) ConvertUToF 122
+ Store 115(f64v) 123
+ 124: 49(ivec2) Load 51(u8v)
+ 125: 52(ivec2) Bitcast 124
+ Store 54(i8v) 125
+ 126: 52(ivec2) Load 54(i8v)
+ 127: 58(ivec2) SConvert 126
+ Store 60(i16v) 127
+ 128: 49(ivec2) Load 51(u8v)
+ 129: 58(ivec2) UConvert 128
+ 130: 58(ivec2) Bitcast 129
+ Store 60(i16v) 130
+ 131: 52(ivec2) Load 54(i8v)
+ 132: 66(ivec2) SConvert 131
+ Store 68(i32v) 132
+ 133: 49(ivec2) Load 51(u8v)
+ 134: 66(ivec2) UConvert 133
+ 135: 66(ivec2) Bitcast 134
+ Store 68(i32v) 135
+ 136: 52(ivec2) Load 54(i8v)
+ 137: 81(ivec2) SConvert 136
+ Store 83(i64v) 137
+ 138: 52(ivec2) Load 54(i8v)
+ 139: 81(ivec2) SConvert 138
+ 140: 87(ivec2) Bitcast 139
+ Store 89(u64v) 140
+ 145: 52(ivec2) Load 54(i8v)
+ 146: 58(ivec2) SConvert 145
+ 147: 142(ivec2) Bitcast 146
+ Store 144(u16v) 147
+ 148: 49(ivec2) Load 51(u8v)
+ 149: 142(ivec2) UConvert 148
+ Store 144(u16v) 149
+ 150: 49(ivec2) Load 51(u8v)
+ 151: 74(ivec2) UConvert 150
+ Store 76(u32v) 151
+ 152: 49(ivec2) Load 51(u8v)
+ 153: 81(ivec2) UConvert 152
+ 154: 81(ivec2) Bitcast 153
+ Store 83(i64v) 154
+ 155: 49(ivec2) Load 51(u8v)
+ 156: 81(ivec2) UConvert 155
+ 157: 81(ivec2) Bitcast 156
+ 158: 87(ivec2) Bitcast 157
+ Store 89(u64v) 158
+ 159: 52(ivec2) Load 54(i8v)
+ 160: 101(fvec2) ConvertSToF 159
+ Store 103(f16v) 160
+ 161: 52(ivec2) Load 54(i8v)
+ 162: 107(fvec2) ConvertSToF 161
+ Store 109(f32v) 162
+ 163: 52(ivec2) Load 54(i8v)
+ 164: 113(fvec2) ConvertSToF 163
+ Store 115(f64v) 164
+ 165: 49(ivec2) Load 51(u8v)
+ 166: 101(fvec2) ConvertUToF 165
+ Store 103(f16v) 166
+ 167: 49(ivec2) Load 51(u8v)
+ 168: 107(fvec2) ConvertUToF 167
+ Store 109(f32v) 168
+ 169: 49(ivec2) Load 51(u8v)
+ 170: 113(fvec2) ConvertUToF 169
+ Store 115(f64v) 170
+ 175: 172(bvec2) Load 174(bv)
+ 179: 52(ivec2) Select 175 178 177
+ Store 54(i8v) 179
+ 180: 172(bvec2) Load 174(bv)
+ 185: 49(ivec2) Select 180 184 183
+ Store 51(u8v) 185
+ 186: 52(ivec2) Load 54(i8v)
+ 187: 172(bvec2) INotEqual 186 183
+ Store 174(bv) 187
+ 188: 49(ivec2) Load 51(u8v)
+ 189: 172(bvec2) INotEqual 188 183
+ Store 174(bv) 189
+ Return
+ FunctionEnd
+ 10(operators(): 2 Function None 3
+ 11: Label
+ 192(u8v): 191(ptr) Variable Function
+ 196(i8): 15(ptr) Variable Function
+ 216(i): 215(ptr) Variable Function
+ 223(uv): 222(ptr) Variable Function
+ 242(i16): 241(ptr) Variable Function
+ 279(b): 278(ptr) Variable Function
+ 193: 190(ivec3) Load 192(u8v)
+ 194: 190(ivec3) CompositeConstruct 176 176 176
+ 195: 190(ivec3) IAdd 193 194
+ Store 192(u8v) 195
+ 197: 14(int) Load 196(i8)
+ 198: 14(int) ISub 197 176
+ Store 196(i8) 198
+ 199: 14(int) Load 196(i8)
+ 200: 14(int) IAdd 199 176
+ Store 196(i8) 200
+ 201: 190(ivec3) Load 192(u8v)
+ 202: 190(ivec3) CompositeConstruct 176 176 176
+ 203: 190(ivec3) ISub 201 202
+ Store 192(u8v) 203
+ 204: 190(ivec3) Load 192(u8v)
+ 205: 190(ivec3) Not 204
+ Store 192(u8v) 205
+ 206: 14(int) Load 196(i8)
+ Store 196(i8) 206
+ 207: 190(ivec3) Load 192(u8v)
+ 208: 190(ivec3) SNegate 207
+ Store 192(u8v) 208
+ 209: 14(int) Load 196(i8)
+ 210: 14(int) Load 196(i8)
+ 211: 14(int) IAdd 210 209
+ Store 196(i8) 211
+ 212: 190(ivec3) Load 192(u8v)
+ 213: 190(ivec3) Load 192(u8v)
+ 214: 190(ivec3) ISub 213 212
+ Store 192(u8v) 214
+ 217: 14(int) Load 196(i8)
+ 218: 27(int) SConvert 217
+ 219: 27(int) Load 216(i)
+ 220: 27(int) IMul 219 218
+ Store 216(i) 220
+ 224: 190(ivec3) Load 192(u8v)
+ 226: 225(ivec3) SConvert 224
+ 227: 221(ivec3) Bitcast 226
+ 228: 221(ivec3) Load 223(uv)
+ 229: 221(ivec3) UDiv 228 227
+ Store 223(uv) 229
+ 230: 14(int) Load 196(i8)
+ 231: 27(int) SConvert 230
+ 232: 17(int) Bitcast 231
+ 233: 221(ivec3) Load 223(uv)
+ 234: 221(ivec3) CompositeConstruct 232 232 232
+ 235: 221(ivec3) UMod 233 234
+ Store 223(uv) 235
+ 236: 190(ivec3) Load 192(u8v)
+ 237: 225(ivec3) SConvert 236
+ 238: 221(ivec3) Bitcast 237
+ 239: 221(ivec3) Load 223(uv)
+ 240: 221(ivec3) IAdd 238 239
+ Store 223(uv) 240
+ 243: 14(int) Load 196(i8)
+ 244: 57(int) SConvert 243
+ 245: 57(int) Load 242(i16)
+ 246: 57(int) ISub 244 245
+ Store 242(i16) 246
+ 247: 190(ivec3) Load 192(u8v)
+ 248: 225(ivec3) SConvert 247
+ 249: 221(ivec3) Bitcast 248
+ 250: 221(ivec3) Load 223(uv)
+ 251: 221(ivec3) IMul 249 250
+ Store 223(uv) 251
+ 252: 14(int) Load 196(i8)
+ 253: 57(int) SConvert 252
+ 254: 57(int) Load 242(i16)
+ 255: 57(int) IMul 253 254
+ Store 242(i16) 255
+ 256: 14(int) Load 196(i8)
+ 257: 27(int) SConvert 256
+ 258: 27(int) Load 216(i)
+ 259: 27(int) SMod 257 258
+ Store 216(i) 259
+ 260: 14(int) Load 196(i8)
+ 261: 190(ivec3) Load 192(u8v)
+ 262: 190(ivec3) CompositeConstruct 260 260 260
+ 263: 190(ivec3) ShiftLeftLogical 261 262
+ Store 192(u8v) 263
+ 265: 15(ptr) AccessChain 192(u8v) 264
+ 266: 14(int) Load 265
+ 267: 14(int) Load 196(i8)
+ 268: 14(int) ShiftRightArithmetic 267 266
+ Store 196(i8) 268
+ 269: 14(int) Load 196(i8)
+ 271: 15(ptr) AccessChain 192(u8v) 270
+ 272: 14(int) Load 271
+ 273: 14(int) ShiftLeftLogical 269 272
+ Store 196(i8) 273
+ 274: 190(ivec3) Load 192(u8v)
+ 275: 14(int) Load 196(i8)
+ 276: 190(ivec3) CompositeConstruct 275 275 275
+ 277: 190(ivec3) ShiftLeftLogical 274 276
+ Store 192(u8v) 277
+ 281: 15(ptr) AccessChain 192(u8v) 280
+ 282: 14(int) Load 281
+ 283: 14(int) Load 196(i8)
+ 284: 171(bool) INotEqual 282 283
+ Store 279(b) 284
+ 285: 14(int) Load 196(i8)
+ 286: 15(ptr) AccessChain 192(u8v) 280
+ 287: 14(int) Load 286
+ 288: 171(bool) IEqual 285 287
+ Store 279(b) 288
+ 289: 15(ptr) AccessChain 192(u8v) 280
+ 290: 14(int) Load 289
+ 291: 27(int) SConvert 290
+ 292: 17(int) Bitcast 291
+ 294: 293(ptr) AccessChain 223(uv) 264
+ 295: 17(int) Load 294
+ 296: 171(bool) UGreaterThan 292 295
+ Store 279(b) 296
+ 297: 14(int) Load 196(i8)
+ 298: 27(int) SConvert 297
+ 299: 27(int) Load 216(i)
+ 300: 171(bool) SLessThan 298 299
+ Store 279(b) 300
+ 301: 15(ptr) AccessChain 192(u8v) 264
+ 302: 14(int) Load 301
+ 303: 27(int) SConvert 302
+ 304: 17(int) Bitcast 303
+ 305: 293(ptr) AccessChain 223(uv) 280
+ 306: 17(int) Load 305
+ 307: 171(bool) UGreaterThanEqual 304 306
+ Store 279(b) 307
+ 308: 14(int) Load 196(i8)
+ 309: 27(int) SConvert 308
+ 310: 27(int) Load 216(i)
+ 311: 171(bool) SLessThanEqual 309 310
+ Store 279(b) 311
+ 312: 14(int) Load 196(i8)
+ 313: 27(int) SConvert 312
+ 314: 17(int) Bitcast 313
+ 315: 221(ivec3) Load 223(uv)
+ 316: 221(ivec3) CompositeConstruct 314 314 314
+ 317: 221(ivec3) BitwiseOr 315 316
+ Store 223(uv) 317
+ 318: 14(int) Load 196(i8)
+ 319: 27(int) SConvert 318
+ 320: 27(int) Load 216(i)
+ 321: 27(int) BitwiseOr 319 320
+ Store 216(i) 321
+ 322: 14(int) Load 196(i8)
+ 323: 57(int) SConvert 322
+ 324: 57(int) Load 242(i16)
+ 325: 57(int) BitwiseAnd 324 323
+ Store 242(i16) 325
+ 326: 190(ivec3) Load 192(u8v)
+ 327: 225(ivec3) SConvert 326
+ 328: 221(ivec3) Bitcast 327
+ 329: 221(ivec3) Load 223(uv)
+ 330: 221(ivec3) BitwiseAnd 328 329
+ Store 223(uv) 330
+ 331: 14(int) Load 196(i8)
+ 332: 27(int) SConvert 331
+ 333: 17(int) Bitcast 332
+ 334: 221(ivec3) Load 223(uv)
+ 335: 221(ivec3) CompositeConstruct 333 333 333
+ 336: 221(ivec3) BitwiseXor 334 335
+ Store 223(uv) 336
+ 337: 190(ivec3) Load 192(u8v)
+ 338: 14(int) Load 196(i8)
+ 339: 190(ivec3) CompositeConstruct 338 338 338
+ 340: 190(ivec3) BitwiseXor 337 339
+ Store 192(u8v) 340
+ Return
+ FunctionEnd
+12(builtinFuncs(): 2 Function None 3
+ 13: Label
+ 341(i8v): 53(ptr) Variable Function
+ 344(i8): 15(ptr) Variable Function
+ 354(u8v): 191(ptr) Variable Function
+ 356(u8): 37(ptr) Variable Function
+ 430(i16): 241(ptr) Variable Function
+ 433(i32): 215(ptr) Variable Function
+ 436(i8v4): 435(ptr) Variable Function
+ 440(u16): 439(ptr) Variable Function
+ 441(u8v2): 50(ptr) Variable Function
+ 444(u32): 293(ptr) Variable Function
+ 447(u8v4): 446(ptr) Variable Function
+ 459(bv): 458(ptr) Variable Function
+ 342: 52(ivec2) Load 341(i8v)
+ 343: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 342
+ Store 341(i8v) 343
+ 345: 14(int) Load 344(i8)
+ 346: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 345
+ Store 344(i8) 346
+ 347: 52(ivec2) Load 341(i8v)
+ 348: 14(int) Load 344(i8)
+ 349: 52(ivec2) CompositeConstruct 348 348
+ 350: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 347 349
+ Store 341(i8v) 350
+ 351: 52(ivec2) Load 341(i8v)
+ 353: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 352
+ Store 341(i8v) 353
+ 355: 190(ivec3) Load 354(u8v)
+ 357: 36(int) Load 356(u8)
+ 359: 358(ivec3) CompositeConstruct 357 357 357
+ 360: 190(ivec3) ExtInst 1(GLSL.std.450) 39(SMin) 355 359
+ Store 354(u8v) 360
+ 361: 190(ivec3) Load 354(u8v)
+ 363: 190(ivec3) ExtInst 1(GLSL.std.450) 39(SMin) 361 362
+ Store 354(u8v) 363
+ 364: 52(ivec2) Load 341(i8v)
+ 365: 14(int) Load 344(i8)
+ 366: 52(ivec2) CompositeConstruct 365 365
+ 367: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 364 366
+ Store 341(i8v) 367
+ 368: 52(ivec2) Load 341(i8v)
+ 369: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 368 352
+ Store 341(i8v) 369
+ 370: 190(ivec3) Load 354(u8v)
+ 371: 36(int) Load 356(u8)
+ 372: 358(ivec3) CompositeConstruct 371 371 371
+ 373: 190(ivec3) ExtInst 1(GLSL.std.450) 42(SMax) 370 372
+ Store 354(u8v) 373
+ 374: 190(ivec3) Load 354(u8v)
+ 375: 190(ivec3) ExtInst 1(GLSL.std.450) 42(SMax) 374 362
+ Store 354(u8v) 375
+ 376: 52(ivec2) Load 341(i8v)
+ 377: 14(int) Load 344(i8)
+ 378: 14(int) SNegate 377
+ 379: 14(int) Load 344(i8)
+ 380: 52(ivec2) CompositeConstruct 378 378
+ 381: 52(ivec2) CompositeConstruct 379 379
+ 382: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 376 380 381
+ Store 341(i8v) 382
+ 383: 52(ivec2) Load 341(i8v)
+ 384: 52(ivec2) Load 341(i8v)
+ 385: 52(ivec2) SNegate 384
+ 386: 52(ivec2) Load 341(i8v)
+ 387: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 383 385 386
+ Store 341(i8v) 387
+ 388: 190(ivec3) Load 354(u8v)
+ 389: 36(int) Load 356(u8)
+ 390: 36(int) SNegate 389
+ 391: 36(int) Load 356(u8)
+ 392: 358(ivec3) CompositeConstruct 390 390 390
+ 393: 358(ivec3) CompositeConstruct 391 391 391
+ 394: 190(ivec3) ExtInst 1(GLSL.std.450) 45(SClamp) 388 392 393
+ Store 354(u8v) 394
+ 395: 190(ivec3) Load 354(u8v)
+ 396: 190(ivec3) Load 354(u8v)
+ 397: 190(ivec3) SNegate 396
+ 398: 190(ivec3) Load 354(u8v)
+ 399: 190(ivec3) ExtInst 1(GLSL.std.450) 45(SClamp) 395 397 398
+ Store 354(u8v) 399
+ 400: 15(ptr) AccessChain 341(i8v) 280
+ 401: 14(int) Load 400
+ 402: 15(ptr) AccessChain 341(i8v) 264
+ 403: 14(int) Load 402
+ 405: 14(int) Select 404 403 401
+ Store 344(i8) 405
+ 406: 14(int) Load 344(i8)
+ 407: 52(ivec2) CompositeConstruct 406 406
+ 408: 14(int) Load 344(i8)
+ 409: 14(int) SNegate 408
+ 410: 52(ivec2) CompositeConstruct 409 409
+ 413: 52(ivec2) Select 412 410 407
+ Store 341(i8v) 413
+ 414: 15(ptr) AccessChain 354(u8v) 280
+ 415: 14(int) Load 414
+ 416: 15(ptr) AccessChain 354(u8v) 264
+ 417: 14(int) Load 416
+ 418: 14(int) Select 404 417 415
+ 419: 36(int) Bitcast 418
+ Store 356(u8) 419
+ 420: 36(int) Load 356(u8)
+ 421: 14(int) Bitcast 420
+ 422: 190(ivec3) CompositeConstruct 421 421 421
+ 423: 36(int) Load 356(u8)
+ 424: 36(int) SNegate 423
+ 425: 14(int) Bitcast 424
+ 426: 190(ivec3) CompositeConstruct 425 425 425
+ 429: 190(ivec3) Select 428 426 422
+ Store 354(u8v) 429
+ 431: 52(ivec2) Load 341(i8v)
+ 432: 57(int) Bitcast 431
+ Store 430(i16) 432
+ 437: 434(ivec4) Load 436(i8v4)
+ 438: 27(int) Bitcast 437
+ Store 433(i32) 438
+ 442: 49(ivec2) Load 441(u8v2)
+ 443: 141(int) Bitcast 442
+ Store 440(u16) 443
+ 448: 445(ivec4) Load 447(u8v4)
+ 449: 17(int) Bitcast 448
+ Store 444(u32) 449
+ 450: 57(int) Load 430(i16)
+ 451: 52(ivec2) Bitcast 450
+ Store 341(i8v) 451
+ 452: 27(int) Load 433(i32)
+ 453: 434(ivec4) Bitcast 452
+ Store 436(i8v4) 453
+ 454: 141(int) Load 440(u16)
+ 455: 49(ivec2) Bitcast 454
+ Store 441(u8v2) 455
+ 456: 17(int) Load 444(u32)
+ 457: 445(ivec4) Bitcast 456
+ Store 447(u8v4) 457
+ 460: 190(ivec3) Load 354(u8v)
+ 461: 36(int) Load 356(u8)
+ 462: 14(int) Bitcast 461
+ 463: 190(ivec3) CompositeConstruct 462 462 462
+ 464: 427(bvec3) SLessThan 460 463
+ Store 459(bv) 464
+ 465: 52(ivec2) Load 341(i8v)
+ 466: 14(int) Load 344(i8)
+ 467: 52(ivec2) CompositeConstruct 466 466
+ 468: 172(bvec2) SLessThan 465 467
+ 469: 427(bvec3) Load 459(bv)
+ 470: 427(bvec3) VectorShuffle 469 468 3 4 2
+ Store 459(bv) 470
+ 471: 190(ivec3) Load 354(u8v)
+ 472: 36(int) Load 356(u8)
+ 473: 14(int) Bitcast 472
+ 474: 190(ivec3) CompositeConstruct 473 473 473
+ 475: 427(bvec3) SLessThanEqual 471 474
+ Store 459(bv) 475
+ 476: 52(ivec2) Load 341(i8v)
+ 477: 14(int) Load 344(i8)
+ 478: 52(ivec2) CompositeConstruct 477 477
+ 479: 172(bvec2) SLessThanEqual 476 478
+ 480: 427(bvec3) Load 459(bv)
+ 481: 427(bvec3) VectorShuffle 480 479 3 4 2
+ Store 459(bv) 481
+ 482: 190(ivec3) Load 354(u8v)
+ 483: 36(int) Load 356(u8)
+ 484: 14(int) Bitcast 483
+ 485: 190(ivec3) CompositeConstruct 484 484 484
+ 486: 427(bvec3) SGreaterThan 482 485
+ Store 459(bv) 486
+ 487: 52(ivec2) Load 341(i8v)
+ 488: 14(int) Load 344(i8)
+ 489: 52(ivec2) CompositeConstruct 488 488
+ 490: 172(bvec2) SGreaterThan 487 489
+ 491: 427(bvec3) Load 459(bv)
+ 492: 427(bvec3) VectorShuffle 491 490 3 4 2
+ Store 459(bv) 492
+ 493: 190(ivec3) Load 354(u8v)
+ 494: 36(int) Load 356(u8)
+ 495: 14(int) Bitcast 494
+ 496: 190(ivec3) CompositeConstruct 495 495 495
+ 497: 427(bvec3) SGreaterThanEqual 493 496
+ Store 459(bv) 497
+ 498: 52(ivec2) Load 341(i8v)
+ 499: 14(int) Load 344(i8)
+ 500: 52(ivec2) CompositeConstruct 499 499
+ 501: 172(bvec2) SGreaterThanEqual 498 500
+ 502: 427(bvec3) Load 459(bv)
+ 503: 427(bvec3) VectorShuffle 502 501 3 4 2
+ Store 459(bv) 503
+ 504: 190(ivec3) Load 354(u8v)
+ 505: 36(int) Load 356(u8)
+ 506: 14(int) Bitcast 505
+ 507: 190(ivec3) CompositeConstruct 506 506 506
+ 508: 427(bvec3) IEqual 504 507
+ Store 459(bv) 508
+ 509: 52(ivec2) Load 341(i8v)
+ 510: 14(int) Load 344(i8)
+ 511: 52(ivec2) CompositeConstruct 510 510
+ 512: 172(bvec2) IEqual 509 511
+ 513: 427(bvec3) Load 459(bv)
+ 514: 427(bvec3) VectorShuffle 513 512 3 4 2
+ Store 459(bv) 514
+ 515: 190(ivec3) Load 354(u8v)
+ 516: 36(int) Load 356(u8)
+ 517: 14(int) Bitcast 516
+ 518: 190(ivec3) CompositeConstruct 517 517 517
+ 519: 427(bvec3) INotEqual 515 518
+ Store 459(bv) 519
+ 520: 52(ivec2) Load 341(i8v)
+ 521: 14(int) Load 344(i8)
+ 522: 52(ivec2) CompositeConstruct 521 521
+ 523: 172(bvec2) INotEqual 520 522
+ 524: 427(bvec3) Load 459(bv)
+ 525: 427(bvec3) VectorShuffle 524 523 3 4 2
+ Store 459(bv) 525
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out
old mode 100755
new mode 100644
index 9dc2067..ef4ba20
--- a/Test/baseResults/spv.multiView.frag.out
+++ b/Test/baseResults/spv.multiView.frag.out
@@ -1,11 +1,10 @@
spv.multiView.frag
-// Module Version 10000
+// Module Version 10300
// Generated by (magic number): 80005
// Id's are bound by 17
Capability Shader
Capability MultiView
- Extension "SPV_KHR_multiview"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 9 12
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index 74ac82a..26d14ca 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[s1506];"
+ Name 14 "foo(vf4[s2148];"
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[s1506];) 47(param)
+ 49: 2 FunctionCall 14(foo(vf4[s2148];) 47(param)
Return
FunctionEnd
-14(foo(vf4[s1506];): 2 Function None 12
+14(foo(vf4[s2148];): 2 Function None 12
13(p): 11(ptr) FunctionParameter
15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23
diff --git a/Test/baseResults/spv.subgroup.frag.out b/Test/baseResults/spv.subgroup.frag.out
new file mode 100644
index 0000000..4d9f502
--- /dev/null
+++ b/Test/baseResults/spv.subgroup.frag.out
@@ -0,0 +1,44 @@
+spv.subgroup.frag
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 17
+
+ Capability Shader
+ Capability GroupNonUniform
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 11 13
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 9 "data"
+ Name 11 "gl_SubgroupSize"
+ Name 13 "gl_SubgroupInvocationID"
+ Decorate 9(data) Location 0
+ Decorate 11(gl_SubgroupSize) RelaxedPrecision
+ Decorate 11(gl_SubgroupSize) Flat
+ Decorate 11(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 12 RelaxedPrecision
+ Decorate 13(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 13(gl_SubgroupInvocationID) Flat
+ Decorate 13(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 14 RelaxedPrecision
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 4
+ 8: TypePointer Output 7(ivec4)
+ 9(data): 8(ptr) Variable Output
+ 10: TypePointer Input 6(int)
+11(gl_SubgroupSize): 10(ptr) Variable Input
+13(gl_SubgroupInvocationID): 10(ptr) Variable Input
+ 15: 6(int) Constant 0
+ 4(main): 2 Function None 3
+ 5: Label
+ 12: 6(int) Load 11(gl_SubgroupSize)
+ 14: 6(int) Load 13(gl_SubgroupInvocationID)
+ 16: 7(ivec4) CompositeConstruct 12 14 15 15
+ Store 9(data) 16
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroup.geom.out b/Test/baseResults/spv.subgroup.geom.out
new file mode 100644
index 0000000..ec3a3b0
--- /dev/null
+++ b/Test/baseResults/spv.subgroup.geom.out
@@ -0,0 +1,62 @@
+spv.subgroup.geom
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 26
+
+ Capability Geometry
+ Capability GroupNonUniform
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Geometry 4 "main" 15 18 20
+ ExecutionMode 4 InputPoints
+ ExecutionMode 4 Invocations 1
+ ExecutionMode 4 OutputPoints
+ ExecutionMode 4 OutputVertices 1
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 9 "Output"
+ MemberName 9(Output) 0 "result"
+ Name 11 ""
+ Name 15 "gl_PrimitiveIDIn"
+ Name 18 "gl_SubgroupSize"
+ Name 20 "gl_SubgroupInvocationID"
+ Decorate 8 ArrayStride 16
+ MemberDecorate 9(Output) 0 Offset 0
+ Decorate 9(Output) BufferBlock
+ Decorate 11 DescriptorSet 0
+ Decorate 11 Binding 0
+ Decorate 15(gl_PrimitiveIDIn) BuiltIn PrimitiveId
+ Decorate 18(gl_SubgroupSize) RelaxedPrecision
+ Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 19 RelaxedPrecision
+ Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 21 RelaxedPrecision
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 4
+ 8: TypeRuntimeArray 7(ivec4)
+ 9(Output): TypeStruct 8
+ 10: TypePointer Uniform 9(Output)
+ 11: 10(ptr) Variable Uniform
+ 12: TypeInt 32 1
+ 13: 12(int) Constant 0
+ 14: TypePointer Input 12(int)
+15(gl_PrimitiveIDIn): 14(ptr) Variable Input
+ 17: TypePointer Input 6(int)
+18(gl_SubgroupSize): 17(ptr) Variable Input
+20(gl_SubgroupInvocationID): 17(ptr) Variable Input
+ 22: 6(int) Constant 0
+ 24: TypePointer Uniform 7(ivec4)
+ 4(main): 2 Function None 3
+ 5: Label
+ 16: 12(int) Load 15(gl_PrimitiveIDIn)
+ 19: 6(int) Load 18(gl_SubgroupSize)
+ 21: 6(int) Load 20(gl_SubgroupInvocationID)
+ 23: 7(ivec4) CompositeConstruct 19 21 22 22
+ 25: 24(ptr) AccessChain 11 13 16
+ Store 25 23
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroup.tesc.out b/Test/baseResults/spv.subgroup.tesc.out
new file mode 100644
index 0000000..46ab8fc
--- /dev/null
+++ b/Test/baseResults/spv.subgroup.tesc.out
@@ -0,0 +1,59 @@
+spv.subgroup.tesc
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 26
+
+ Capability Tessellation
+ Capability GroupNonUniform
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationControl 4 "main" 15 18 20
+ ExecutionMode 4 OutputVertices 1
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 9 "Output"
+ MemberName 9(Output) 0 "result"
+ Name 11 ""
+ Name 15 "gl_PrimitiveID"
+ Name 18 "gl_SubgroupSize"
+ Name 20 "gl_SubgroupInvocationID"
+ Decorate 8 ArrayStride 16
+ MemberDecorate 9(Output) 0 Offset 0
+ Decorate 9(Output) BufferBlock
+ Decorate 11 DescriptorSet 0
+ Decorate 11 Binding 0
+ Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId
+ Decorate 18(gl_SubgroupSize) RelaxedPrecision
+ Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 19 RelaxedPrecision
+ Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 21 RelaxedPrecision
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 4
+ 8: TypeRuntimeArray 7(ivec4)
+ 9(Output): TypeStruct 8
+ 10: TypePointer Uniform 9(Output)
+ 11: 10(ptr) Variable Uniform
+ 12: TypeInt 32 1
+ 13: 12(int) Constant 0
+ 14: TypePointer Input 12(int)
+15(gl_PrimitiveID): 14(ptr) Variable Input
+ 17: TypePointer Input 6(int)
+18(gl_SubgroupSize): 17(ptr) Variable Input
+20(gl_SubgroupInvocationID): 17(ptr) Variable Input
+ 22: 6(int) Constant 0
+ 24: TypePointer Uniform 7(ivec4)
+ 4(main): 2 Function None 3
+ 5: Label
+ 16: 12(int) Load 15(gl_PrimitiveID)
+ 19: 6(int) Load 18(gl_SubgroupSize)
+ 21: 6(int) Load 20(gl_SubgroupInvocationID)
+ 23: 7(ivec4) CompositeConstruct 19 21 22 22
+ 25: 24(ptr) AccessChain 11 13 16
+ Store 25 23
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroup.tese.out b/Test/baseResults/spv.subgroup.tese.out
new file mode 100644
index 0000000..c29ecfd
--- /dev/null
+++ b/Test/baseResults/spv.subgroup.tese.out
@@ -0,0 +1,61 @@
+spv.subgroup.tese
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 26
+
+ Capability Tessellation
+ Capability GroupNonUniform
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint TessellationEvaluation 4 "main" 15 18 20
+ ExecutionMode 4 Isolines
+ ExecutionMode 4 SpacingEqual
+ ExecutionMode 4 VertexOrderCcw
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 9 "Output"
+ MemberName 9(Output) 0 "result"
+ Name 11 ""
+ Name 15 "gl_PrimitiveID"
+ Name 18 "gl_SubgroupSize"
+ Name 20 "gl_SubgroupInvocationID"
+ Decorate 8 ArrayStride 16
+ MemberDecorate 9(Output) 0 Offset 0
+ Decorate 9(Output) BufferBlock
+ Decorate 11 DescriptorSet 0
+ Decorate 11 Binding 0
+ Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId
+ Decorate 18(gl_SubgroupSize) RelaxedPrecision
+ Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 19 RelaxedPrecision
+ Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 21 RelaxedPrecision
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 4
+ 8: TypeRuntimeArray 7(ivec4)
+ 9(Output): TypeStruct 8
+ 10: TypePointer Uniform 9(Output)
+ 11: 10(ptr) Variable Uniform
+ 12: TypeInt 32 1
+ 13: 12(int) Constant 0
+ 14: TypePointer Input 12(int)
+15(gl_PrimitiveID): 14(ptr) Variable Input
+ 17: TypePointer Input 6(int)
+18(gl_SubgroupSize): 17(ptr) Variable Input
+20(gl_SubgroupInvocationID): 17(ptr) Variable Input
+ 22: 6(int) Constant 0
+ 24: TypePointer Uniform 7(ivec4)
+ 4(main): 2 Function None 3
+ 5: Label
+ 16: 12(int) Load 15(gl_PrimitiveID)
+ 19: 6(int) Load 18(gl_SubgroupSize)
+ 21: 6(int) Load 20(gl_SubgroupInvocationID)
+ 23: 7(ivec4) CompositeConstruct 19 21 22 22
+ 25: 24(ptr) AccessChain 11 13 16
+ Store 25 23
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroup.vert.out b/Test/baseResults/spv.subgroup.vert.out
new file mode 100644
index 0000000..b7514cc
--- /dev/null
+++ b/Test/baseResults/spv.subgroup.vert.out
@@ -0,0 +1,58 @@
+spv.subgroup.vert
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 26
+
+ Capability Shader
+ Capability GroupNonUniform
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 15 18 20
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 9 "Output"
+ MemberName 9(Output) 0 "result"
+ Name 11 ""
+ Name 15 "gl_VertexIndex"
+ Name 18 "gl_SubgroupSize"
+ Name 20 "gl_SubgroupInvocationID"
+ Decorate 8 ArrayStride 16
+ MemberDecorate 9(Output) 0 Offset 0
+ Decorate 9(Output) BufferBlock
+ Decorate 11 DescriptorSet 0
+ Decorate 11 Binding 0
+ Decorate 15(gl_VertexIndex) BuiltIn VertexIndex
+ Decorate 18(gl_SubgroupSize) RelaxedPrecision
+ Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 19 RelaxedPrecision
+ Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 21 RelaxedPrecision
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypeVector 6(int) 4
+ 8: TypeRuntimeArray 7(ivec4)
+ 9(Output): TypeStruct 8
+ 10: TypePointer Uniform 9(Output)
+ 11: 10(ptr) Variable Uniform
+ 12: TypeInt 32 1
+ 13: 12(int) Constant 0
+ 14: TypePointer Input 12(int)
+15(gl_VertexIndex): 14(ptr) Variable Input
+ 17: TypePointer Input 6(int)
+18(gl_SubgroupSize): 17(ptr) Variable Input
+20(gl_SubgroupInvocationID): 17(ptr) Variable Input
+ 22: 6(int) Constant 0
+ 24: TypePointer Uniform 7(ivec4)
+ 4(main): 2 Function None 3
+ 5: Label
+ 16: 12(int) Load 15(gl_VertexIndex)
+ 19: 6(int) Load 18(gl_SubgroupSize)
+ 21: 6(int) Load 20(gl_SubgroupInvocationID)
+ 23: 7(ivec4) CompositeConstruct 19 21 22 22
+ 25: 24(ptr) AccessChain 11 13 16
+ Store 25 23
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupArithmetic.comp.out b/Test/baseResults/spv.subgroupArithmetic.comp.out
new file mode 100644
index 0000000..052c29f
--- /dev/null
+++ b/Test/baseResults/spv.subgroupArithmetic.comp.out
@@ -0,0 +1,2428 @@
+spv.subgroupArithmetic.comp
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 2085
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformArithmetic
+ 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_arithmetic"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 24 "Buffers"
+ MemberName 24(Buffers) 0 "f4"
+ MemberName 24(Buffers) 1 "i4"
+ MemberName 24(Buffers) 2 "u4"
+ MemberName 24(Buffers) 3 "d4"
+ Name 27 "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 24(Buffers) 0 Offset 0
+ MemberDecorate 24(Buffers) 1 Offset 16
+ MemberDecorate 24(Buffers) 2 Offset 32
+ MemberDecorate 24(Buffers) 3 Offset 64
+ Decorate 24(Buffers) BufferBlock
+ Decorate 27(data) DescriptorSet 0
+ Decorate 27(data) Binding 0
+ Decorate 2084 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: TypeFloat 32
+ 18: TypeVector 17(float) 4
+ 19: TypeInt 32 1
+ 20: TypeVector 19(int) 4
+ 21: TypeVector 6(int) 4
+ 22: TypeFloat 64
+ 23: TypeVector 22(float) 4
+ 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(fvec4)
+ 25: TypeArray 24(Buffers) 15
+ 26: TypePointer Uniform 25
+ 27(data): 26(ptr) Variable Uniform
+ 29: 19(int) Constant 0
+ 30: 6(int) Constant 0
+ 31: TypePointer Uniform 17(float)
+ 34: 6(int) Constant 3
+ 38: 19(int) Constant 1
+ 39: TypeVector 17(float) 2
+ 40: TypePointer Uniform 18(fvec4)
+ 49: 19(int) Constant 2
+ 50: TypeVector 17(float) 3
+ 59: 19(int) Constant 3
+ 65: TypePointer Uniform 19(int)
+ 71: TypeVector 19(int) 2
+ 72: TypePointer Uniform 20(ivec4)
+ 81: TypeVector 19(int) 3
+ 95: TypePointer Uniform 6(int)
+ 101: TypeVector 6(int) 2
+ 102: TypePointer Uniform 21(ivec4)
+ 111: TypeVector 6(int) 3
+ 125: TypePointer Uniform 22(float)
+ 131: TypeVector 22(float) 2
+ 132: TypePointer Uniform 23(fvec4)
+ 141: TypeVector 22(float) 3
+ 521: TypeBool
+ 530: 71(ivec2) ConstantComposite 29 29
+ 531: TypeVector 521(bool) 2
+ 534: 71(ivec2) ConstantComposite 38 38
+ 543: 81(ivec3) ConstantComposite 29 29 29
+ 544: TypeVector 521(bool) 3
+ 547: 81(ivec3) ConstantComposite 38 38 38
+ 555: 20(ivec4) ConstantComposite 29 29 29 29
+ 556: TypeVector 521(bool) 4
+ 559: 20(ivec4) ConstantComposite 38 38 38 38
+ 2082: 6(int) Constant 8
+ 2083: 6(int) Constant 1
+ 2084: 111(ivec3) ConstantComposite 2082 2083 2083
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(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
+ 28: 6(int) Load 8(invocation)
+ 32: 31(ptr) AccessChain 27(data) 29 29 30
+ 33: 17(float) Load 32
+ 35: 17(float) GroupNonUniformFAdd 34 Reduce 33
+ 36: 31(ptr) AccessChain 27(data) 28 29 30
+ Store 36 35
+ 37: 6(int) Load 8(invocation)
+ 41: 40(ptr) AccessChain 27(data) 38 29
+ 42: 18(fvec4) Load 41
+ 43: 39(fvec2) VectorShuffle 42 42 0 1
+ 44: 39(fvec2) GroupNonUniformFAdd 34 Reduce 43
+ 45: 40(ptr) AccessChain 27(data) 37 29
+ 46: 18(fvec4) Load 45
+ 47: 18(fvec4) VectorShuffle 46 44 4 5 2 3
+ Store 45 47
+ 48: 6(int) Load 8(invocation)
+ 51: 40(ptr) AccessChain 27(data) 49 29
+ 52: 18(fvec4) Load 51
+ 53: 50(fvec3) VectorShuffle 52 52 0 1 2
+ 54: 50(fvec3) GroupNonUniformFAdd 34 Reduce 53
+ 55: 40(ptr) AccessChain 27(data) 48 29
+ 56: 18(fvec4) Load 55
+ 57: 18(fvec4) VectorShuffle 56 54 4 5 6 3
+ Store 55 57
+ 58: 6(int) Load 8(invocation)
+ 60: 40(ptr) AccessChain 27(data) 59 29
+ 61: 18(fvec4) Load 60
+ 62: 18(fvec4) GroupNonUniformFAdd 34 Reduce 61
+ 63: 40(ptr) AccessChain 27(data) 58 29
+ Store 63 62
+ 64: 6(int) Load 8(invocation)
+ 66: 65(ptr) AccessChain 27(data) 29 38 30
+ 67: 19(int) Load 66
+ 68: 19(int) GroupNonUniformIAdd 34 Reduce 67
+ 69: 65(ptr) AccessChain 27(data) 64 38 30
+ Store 69 68
+ 70: 6(int) Load 8(invocation)
+ 73: 72(ptr) AccessChain 27(data) 38 38
+ 74: 20(ivec4) Load 73
+ 75: 71(ivec2) VectorShuffle 74 74 0 1
+ 76: 71(ivec2) GroupNonUniformIAdd 34 Reduce 75
+ 77: 72(ptr) AccessChain 27(data) 70 38
+ 78: 20(ivec4) Load 77
+ 79: 20(ivec4) VectorShuffle 78 76 4 5 2 3
+ Store 77 79
+ 80: 6(int) Load 8(invocation)
+ 82: 72(ptr) AccessChain 27(data) 49 38
+ 83: 20(ivec4) Load 82
+ 84: 81(ivec3) VectorShuffle 83 83 0 1 2
+ 85: 81(ivec3) GroupNonUniformIAdd 34 Reduce 84
+ 86: 72(ptr) AccessChain 27(data) 80 38
+ 87: 20(ivec4) Load 86
+ 88: 20(ivec4) VectorShuffle 87 85 4 5 6 3
+ Store 86 88
+ 89: 6(int) Load 8(invocation)
+ 90: 72(ptr) AccessChain 27(data) 59 38
+ 91: 20(ivec4) Load 90
+ 92: 20(ivec4) GroupNonUniformIAdd 34 Reduce 91
+ 93: 72(ptr) AccessChain 27(data) 89 38
+ Store 93 92
+ 94: 6(int) Load 8(invocation)
+ 96: 95(ptr) AccessChain 27(data) 29 49 30
+ 97: 6(int) Load 96
+ 98: 6(int) GroupNonUniformIAdd 34 Reduce 97
+ 99: 95(ptr) AccessChain 27(data) 94 49 30
+ Store 99 98
+ 100: 6(int) Load 8(invocation)
+ 103: 102(ptr) AccessChain 27(data) 38 49
+ 104: 21(ivec4) Load 103
+ 105: 101(ivec2) VectorShuffle 104 104 0 1
+ 106: 101(ivec2) GroupNonUniformIAdd 34 Reduce 105
+ 107: 102(ptr) AccessChain 27(data) 100 49
+ 108: 21(ivec4) Load 107
+ 109: 21(ivec4) VectorShuffle 108 106 4 5 2 3
+ Store 107 109
+ 110: 6(int) Load 8(invocation)
+ 112: 102(ptr) AccessChain 27(data) 49 49
+ 113: 21(ivec4) Load 112
+ 114: 111(ivec3) VectorShuffle 113 113 0 1 2
+ 115: 111(ivec3) GroupNonUniformIAdd 34 Reduce 114
+ 116: 102(ptr) AccessChain 27(data) 110 49
+ 117: 21(ivec4) Load 116
+ 118: 21(ivec4) VectorShuffle 117 115 4 5 6 3
+ Store 116 118
+ 119: 6(int) Load 8(invocation)
+ 120: 102(ptr) AccessChain 27(data) 59 49
+ 121: 21(ivec4) Load 120
+ 122: 21(ivec4) GroupNonUniformIAdd 34 Reduce 121
+ 123: 102(ptr) AccessChain 27(data) 119 49
+ Store 123 122
+ 124: 6(int) Load 8(invocation)
+ 126: 125(ptr) AccessChain 27(data) 29 59 30
+ 127: 22(float) Load 126
+ 128: 22(float) GroupNonUniformFAdd 34 Reduce 127
+ 129: 125(ptr) AccessChain 27(data) 124 59 30
+ Store 129 128
+ 130: 6(int) Load 8(invocation)
+ 133: 132(ptr) AccessChain 27(data) 38 59
+ 134: 23(fvec4) Load 133
+ 135: 131(fvec2) VectorShuffle 134 134 0 1
+ 136: 131(fvec2) GroupNonUniformFAdd 34 Reduce 135
+ 137: 132(ptr) AccessChain 27(data) 130 59
+ 138: 23(fvec4) Load 137
+ 139: 23(fvec4) VectorShuffle 138 136 4 5 2 3
+ Store 137 139
+ 140: 6(int) Load 8(invocation)
+ 142: 132(ptr) AccessChain 27(data) 49 59
+ 143: 23(fvec4) Load 142
+ 144: 141(fvec3) VectorShuffle 143 143 0 1 2
+ 145: 141(fvec3) GroupNonUniformFAdd 34 Reduce 144
+ 146: 132(ptr) AccessChain 27(data) 140 59
+ 147: 23(fvec4) Load 146
+ 148: 23(fvec4) VectorShuffle 147 145 4 5 6 3
+ Store 146 148
+ 149: 6(int) Load 8(invocation)
+ 150: 132(ptr) AccessChain 27(data) 59 59
+ 151: 23(fvec4) Load 150
+ 152: 23(fvec4) GroupNonUniformFAdd 34 Reduce 151
+ 153: 132(ptr) AccessChain 27(data) 149 59
+ Store 153 152
+ 154: 6(int) Load 8(invocation)
+ 155: 31(ptr) AccessChain 27(data) 29 29 30
+ 156: 17(float) Load 155
+ 157: 17(float) GroupNonUniformFMul 34 Reduce 156
+ 158: 31(ptr) AccessChain 27(data) 154 29 30
+ Store 158 157
+ 159: 6(int) Load 8(invocation)
+ 160: 40(ptr) AccessChain 27(data) 38 29
+ 161: 18(fvec4) Load 160
+ 162: 39(fvec2) VectorShuffle 161 161 0 1
+ 163: 39(fvec2) GroupNonUniformFMul 34 Reduce 162
+ 164: 40(ptr) AccessChain 27(data) 159 29
+ 165: 18(fvec4) Load 164
+ 166: 18(fvec4) VectorShuffle 165 163 4 5 2 3
+ Store 164 166
+ 167: 6(int) Load 8(invocation)
+ 168: 40(ptr) AccessChain 27(data) 49 29
+ 169: 18(fvec4) Load 168
+ 170: 50(fvec3) VectorShuffle 169 169 0 1 2
+ 171: 50(fvec3) GroupNonUniformFMul 34 Reduce 170
+ 172: 40(ptr) AccessChain 27(data) 167 29
+ 173: 18(fvec4) Load 172
+ 174: 18(fvec4) VectorShuffle 173 171 4 5 6 3
+ Store 172 174
+ 175: 6(int) Load 8(invocation)
+ 176: 40(ptr) AccessChain 27(data) 59 29
+ 177: 18(fvec4) Load 176
+ 178: 18(fvec4) GroupNonUniformFMul 34 Reduce 177
+ 179: 40(ptr) AccessChain 27(data) 175 29
+ Store 179 178
+ 180: 6(int) Load 8(invocation)
+ 181: 65(ptr) AccessChain 27(data) 29 38 30
+ 182: 19(int) Load 181
+ 183: 19(int) GroupNonUniformIMul 34 Reduce 182
+ 184: 65(ptr) AccessChain 27(data) 180 38 30
+ Store 184 183
+ 185: 6(int) Load 8(invocation)
+ 186: 72(ptr) AccessChain 27(data) 38 38
+ 187: 20(ivec4) Load 186
+ 188: 71(ivec2) VectorShuffle 187 187 0 1
+ 189: 71(ivec2) GroupNonUniformIMul 34 Reduce 188
+ 190: 72(ptr) AccessChain 27(data) 185 38
+ 191: 20(ivec4) Load 190
+ 192: 20(ivec4) VectorShuffle 191 189 4 5 2 3
+ Store 190 192
+ 193: 6(int) Load 8(invocation)
+ 194: 72(ptr) AccessChain 27(data) 49 38
+ 195: 20(ivec4) Load 194
+ 196: 81(ivec3) VectorShuffle 195 195 0 1 2
+ 197: 81(ivec3) GroupNonUniformIMul 34 Reduce 196
+ 198: 72(ptr) AccessChain 27(data) 193 38
+ 199: 20(ivec4) Load 198
+ 200: 20(ivec4) VectorShuffle 199 197 4 5 6 3
+ Store 198 200
+ 201: 6(int) Load 8(invocation)
+ 202: 72(ptr) AccessChain 27(data) 59 38
+ 203: 20(ivec4) Load 202
+ 204: 20(ivec4) GroupNonUniformIMul 34 Reduce 203
+ 205: 72(ptr) AccessChain 27(data) 201 38
+ Store 205 204
+ 206: 6(int) Load 8(invocation)
+ 207: 95(ptr) AccessChain 27(data) 29 49 30
+ 208: 6(int) Load 207
+ 209: 6(int) GroupNonUniformIMul 34 Reduce 208
+ 210: 95(ptr) AccessChain 27(data) 206 49 30
+ Store 210 209
+ 211: 6(int) Load 8(invocation)
+ 212: 102(ptr) AccessChain 27(data) 38 49
+ 213: 21(ivec4) Load 212
+ 214: 101(ivec2) VectorShuffle 213 213 0 1
+ 215: 101(ivec2) GroupNonUniformIMul 34 Reduce 214
+ 216: 102(ptr) AccessChain 27(data) 211 49
+ 217: 21(ivec4) Load 216
+ 218: 21(ivec4) VectorShuffle 217 215 4 5 2 3
+ Store 216 218
+ 219: 6(int) Load 8(invocation)
+ 220: 102(ptr) AccessChain 27(data) 49 49
+ 221: 21(ivec4) Load 220
+ 222: 111(ivec3) VectorShuffle 221 221 0 1 2
+ 223: 111(ivec3) GroupNonUniformIMul 34 Reduce 222
+ 224: 102(ptr) AccessChain 27(data) 219 49
+ 225: 21(ivec4) Load 224
+ 226: 21(ivec4) VectorShuffle 225 223 4 5 6 3
+ Store 224 226
+ 227: 6(int) Load 8(invocation)
+ 228: 102(ptr) AccessChain 27(data) 59 49
+ 229: 21(ivec4) Load 228
+ 230: 21(ivec4) GroupNonUniformIMul 34 Reduce 229
+ 231: 102(ptr) AccessChain 27(data) 227 49
+ Store 231 230
+ 232: 6(int) Load 8(invocation)
+ 233: 125(ptr) AccessChain 27(data) 29 59 30
+ 234: 22(float) Load 233
+ 235: 22(float) GroupNonUniformFMul 34 Reduce 234
+ 236: 125(ptr) AccessChain 27(data) 232 59 30
+ Store 236 235
+ 237: 6(int) Load 8(invocation)
+ 238: 132(ptr) AccessChain 27(data) 38 59
+ 239: 23(fvec4) Load 238
+ 240: 131(fvec2) VectorShuffle 239 239 0 1
+ 241: 131(fvec2) GroupNonUniformFMul 34 Reduce 240
+ 242: 132(ptr) AccessChain 27(data) 237 59
+ 243: 23(fvec4) Load 242
+ 244: 23(fvec4) VectorShuffle 243 241 4 5 2 3
+ Store 242 244
+ 245: 6(int) Load 8(invocation)
+ 246: 132(ptr) AccessChain 27(data) 49 59
+ 247: 23(fvec4) Load 246
+ 248: 141(fvec3) VectorShuffle 247 247 0 1 2
+ 249: 141(fvec3) GroupNonUniformFMul 34 Reduce 248
+ 250: 132(ptr) AccessChain 27(data) 245 59
+ 251: 23(fvec4) Load 250
+ 252: 23(fvec4) VectorShuffle 251 249 4 5 6 3
+ Store 250 252
+ 253: 6(int) Load 8(invocation)
+ 254: 132(ptr) AccessChain 27(data) 59 59
+ 255: 23(fvec4) Load 254
+ 256: 23(fvec4) GroupNonUniformFMul 34 Reduce 255
+ 257: 132(ptr) AccessChain 27(data) 253 59
+ Store 257 256
+ 258: 6(int) Load 8(invocation)
+ 259: 31(ptr) AccessChain 27(data) 29 29 30
+ 260: 17(float) Load 259
+ 261: 17(float) GroupNonUniformFMin 34 Reduce 260
+ 262: 31(ptr) AccessChain 27(data) 258 29 30
+ Store 262 261
+ 263: 6(int) Load 8(invocation)
+ 264: 40(ptr) AccessChain 27(data) 38 29
+ 265: 18(fvec4) Load 264
+ 266: 39(fvec2) VectorShuffle 265 265 0 1
+ 267: 39(fvec2) GroupNonUniformFMin 34 Reduce 266
+ 268: 40(ptr) AccessChain 27(data) 263 29
+ 269: 18(fvec4) Load 268
+ 270: 18(fvec4) VectorShuffle 269 267 4 5 2 3
+ Store 268 270
+ 271: 6(int) Load 8(invocation)
+ 272: 40(ptr) AccessChain 27(data) 49 29
+ 273: 18(fvec4) Load 272
+ 274: 50(fvec3) VectorShuffle 273 273 0 1 2
+ 275: 50(fvec3) GroupNonUniformFMin 34 Reduce 274
+ 276: 40(ptr) AccessChain 27(data) 271 29
+ 277: 18(fvec4) Load 276
+ 278: 18(fvec4) VectorShuffle 277 275 4 5 6 3
+ Store 276 278
+ 279: 6(int) Load 8(invocation)
+ 280: 40(ptr) AccessChain 27(data) 59 29
+ 281: 18(fvec4) Load 280
+ 282: 18(fvec4) GroupNonUniformFMin 34 Reduce 281
+ 283: 40(ptr) AccessChain 27(data) 279 29
+ Store 283 282
+ 284: 6(int) Load 8(invocation)
+ 285: 65(ptr) AccessChain 27(data) 29 38 30
+ 286: 19(int) Load 285
+ 287: 19(int) GroupNonUniformSMin 34 Reduce 286
+ 288: 65(ptr) AccessChain 27(data) 284 38 30
+ Store 288 287
+ 289: 6(int) Load 8(invocation)
+ 290: 72(ptr) AccessChain 27(data) 38 38
+ 291: 20(ivec4) Load 290
+ 292: 71(ivec2) VectorShuffle 291 291 0 1
+ 293: 71(ivec2) GroupNonUniformSMin 34 Reduce 292
+ 294: 72(ptr) AccessChain 27(data) 289 38
+ 295: 20(ivec4) Load 294
+ 296: 20(ivec4) VectorShuffle 295 293 4 5 2 3
+ Store 294 296
+ 297: 6(int) Load 8(invocation)
+ 298: 72(ptr) AccessChain 27(data) 49 38
+ 299: 20(ivec4) Load 298
+ 300: 81(ivec3) VectorShuffle 299 299 0 1 2
+ 301: 81(ivec3) GroupNonUniformSMin 34 Reduce 300
+ 302: 72(ptr) AccessChain 27(data) 297 38
+ 303: 20(ivec4) Load 302
+ 304: 20(ivec4) VectorShuffle 303 301 4 5 6 3
+ Store 302 304
+ 305: 6(int) Load 8(invocation)
+ 306: 72(ptr) AccessChain 27(data) 59 38
+ 307: 20(ivec4) Load 306
+ 308: 20(ivec4) GroupNonUniformSMin 34 Reduce 307
+ 309: 72(ptr) AccessChain 27(data) 305 38
+ Store 309 308
+ 310: 6(int) Load 8(invocation)
+ 311: 95(ptr) AccessChain 27(data) 29 49 30
+ 312: 6(int) Load 311
+ 313: 6(int) GroupNonUniformUMin 34 Reduce 312
+ 314: 95(ptr) AccessChain 27(data) 310 49 30
+ Store 314 313
+ 315: 6(int) Load 8(invocation)
+ 316: 102(ptr) AccessChain 27(data) 38 49
+ 317: 21(ivec4) Load 316
+ 318: 101(ivec2) VectorShuffle 317 317 0 1
+ 319: 101(ivec2) GroupNonUniformUMin 34 Reduce 318
+ 320: 102(ptr) AccessChain 27(data) 315 49
+ 321: 21(ivec4) Load 320
+ 322: 21(ivec4) VectorShuffle 321 319 4 5 2 3
+ Store 320 322
+ 323: 6(int) Load 8(invocation)
+ 324: 102(ptr) AccessChain 27(data) 49 49
+ 325: 21(ivec4) Load 324
+ 326: 111(ivec3) VectorShuffle 325 325 0 1 2
+ 327: 111(ivec3) GroupNonUniformUMin 34 Reduce 326
+ 328: 102(ptr) AccessChain 27(data) 323 49
+ 329: 21(ivec4) Load 328
+ 330: 21(ivec4) VectorShuffle 329 327 4 5 6 3
+ Store 328 330
+ 331: 6(int) Load 8(invocation)
+ 332: 102(ptr) AccessChain 27(data) 59 49
+ 333: 21(ivec4) Load 332
+ 334: 21(ivec4) GroupNonUniformUMin 34 Reduce 333
+ 335: 102(ptr) AccessChain 27(data) 331 49
+ Store 335 334
+ 336: 6(int) Load 8(invocation)
+ 337: 125(ptr) AccessChain 27(data) 29 59 30
+ 338: 22(float) Load 337
+ 339: 22(float) GroupNonUniformFMin 34 Reduce 338
+ 340: 125(ptr) AccessChain 27(data) 336 59 30
+ Store 340 339
+ 341: 6(int) Load 8(invocation)
+ 342: 132(ptr) AccessChain 27(data) 38 59
+ 343: 23(fvec4) Load 342
+ 344: 131(fvec2) VectorShuffle 343 343 0 1
+ 345: 131(fvec2) GroupNonUniformFMin 34 Reduce 344
+ 346: 132(ptr) AccessChain 27(data) 341 59
+ 347: 23(fvec4) Load 346
+ 348: 23(fvec4) VectorShuffle 347 345 4 5 2 3
+ Store 346 348
+ 349: 6(int) Load 8(invocation)
+ 350: 132(ptr) AccessChain 27(data) 49 59
+ 351: 23(fvec4) Load 350
+ 352: 141(fvec3) VectorShuffle 351 351 0 1 2
+ 353: 141(fvec3) GroupNonUniformFMin 34 Reduce 352
+ 354: 132(ptr) AccessChain 27(data) 349 59
+ 355: 23(fvec4) Load 354
+ 356: 23(fvec4) VectorShuffle 355 353 4 5 6 3
+ Store 354 356
+ 357: 6(int) Load 8(invocation)
+ 358: 132(ptr) AccessChain 27(data) 59 59
+ 359: 23(fvec4) Load 358
+ 360: 23(fvec4) GroupNonUniformFMin 34 Reduce 359
+ 361: 132(ptr) AccessChain 27(data) 357 59
+ Store 361 360
+ 362: 6(int) Load 8(invocation)
+ 363: 31(ptr) AccessChain 27(data) 29 29 30
+ 364: 17(float) Load 363
+ 365: 17(float) GroupNonUniformFMax 34 Reduce 364
+ 366: 31(ptr) AccessChain 27(data) 362 29 30
+ Store 366 365
+ 367: 6(int) Load 8(invocation)
+ 368: 40(ptr) AccessChain 27(data) 38 29
+ 369: 18(fvec4) Load 368
+ 370: 39(fvec2) VectorShuffle 369 369 0 1
+ 371: 39(fvec2) GroupNonUniformFMax 34 Reduce 370
+ 372: 40(ptr) AccessChain 27(data) 367 29
+ 373: 18(fvec4) Load 372
+ 374: 18(fvec4) VectorShuffle 373 371 4 5 2 3
+ Store 372 374
+ 375: 6(int) Load 8(invocation)
+ 376: 40(ptr) AccessChain 27(data) 49 29
+ 377: 18(fvec4) Load 376
+ 378: 50(fvec3) VectorShuffle 377 377 0 1 2
+ 379: 50(fvec3) GroupNonUniformFMax 34 Reduce 378
+ 380: 40(ptr) AccessChain 27(data) 375 29
+ 381: 18(fvec4) Load 380
+ 382: 18(fvec4) VectorShuffle 381 379 4 5 6 3
+ Store 380 382
+ 383: 6(int) Load 8(invocation)
+ 384: 40(ptr) AccessChain 27(data) 59 29
+ 385: 18(fvec4) Load 384
+ 386: 18(fvec4) GroupNonUniformFMax 34 Reduce 385
+ 387: 40(ptr) AccessChain 27(data) 383 29
+ Store 387 386
+ 388: 6(int) Load 8(invocation)
+ 389: 65(ptr) AccessChain 27(data) 29 38 30
+ 390: 19(int) Load 389
+ 391: 19(int) GroupNonUniformSMax 34 Reduce 390
+ 392: 65(ptr) AccessChain 27(data) 388 38 30
+ Store 392 391
+ 393: 6(int) Load 8(invocation)
+ 394: 72(ptr) AccessChain 27(data) 38 38
+ 395: 20(ivec4) Load 394
+ 396: 71(ivec2) VectorShuffle 395 395 0 1
+ 397: 71(ivec2) GroupNonUniformSMax 34 Reduce 396
+ 398: 72(ptr) AccessChain 27(data) 393 38
+ 399: 20(ivec4) Load 398
+ 400: 20(ivec4) VectorShuffle 399 397 4 5 2 3
+ Store 398 400
+ 401: 6(int) Load 8(invocation)
+ 402: 72(ptr) AccessChain 27(data) 49 38
+ 403: 20(ivec4) Load 402
+ 404: 81(ivec3) VectorShuffle 403 403 0 1 2
+ 405: 81(ivec3) GroupNonUniformSMax 34 Reduce 404
+ 406: 72(ptr) AccessChain 27(data) 401 38
+ 407: 20(ivec4) Load 406
+ 408: 20(ivec4) VectorShuffle 407 405 4 5 6 3
+ Store 406 408
+ 409: 6(int) Load 8(invocation)
+ 410: 72(ptr) AccessChain 27(data) 59 38
+ 411: 20(ivec4) Load 410
+ 412: 20(ivec4) GroupNonUniformSMax 34 Reduce 411
+ 413: 72(ptr) AccessChain 27(data) 409 38
+ Store 413 412
+ 414: 6(int) Load 8(invocation)
+ 415: 95(ptr) AccessChain 27(data) 29 49 30
+ 416: 6(int) Load 415
+ 417: 6(int) GroupNonUniformUMax 34 Reduce 416
+ 418: 95(ptr) AccessChain 27(data) 414 49 30
+ Store 418 417
+ 419: 6(int) Load 8(invocation)
+ 420: 102(ptr) AccessChain 27(data) 38 49
+ 421: 21(ivec4) Load 420
+ 422: 101(ivec2) VectorShuffle 421 421 0 1
+ 423: 101(ivec2) GroupNonUniformUMax 34 Reduce 422
+ 424: 102(ptr) AccessChain 27(data) 419 49
+ 425: 21(ivec4) Load 424
+ 426: 21(ivec4) VectorShuffle 425 423 4 5 2 3
+ Store 424 426
+ 427: 6(int) Load 8(invocation)
+ 428: 102(ptr) AccessChain 27(data) 49 49
+ 429: 21(ivec4) Load 428
+ 430: 111(ivec3) VectorShuffle 429 429 0 1 2
+ 431: 111(ivec3) GroupNonUniformUMax 34 Reduce 430
+ 432: 102(ptr) AccessChain 27(data) 427 49
+ 433: 21(ivec4) Load 432
+ 434: 21(ivec4) VectorShuffle 433 431 4 5 6 3
+ Store 432 434
+ 435: 6(int) Load 8(invocation)
+ 436: 102(ptr) AccessChain 27(data) 59 49
+ 437: 21(ivec4) Load 436
+ 438: 21(ivec4) GroupNonUniformUMax 34 Reduce 437
+ 439: 102(ptr) AccessChain 27(data) 435 49
+ Store 439 438
+ 440: 6(int) Load 8(invocation)
+ 441: 125(ptr) AccessChain 27(data) 29 59 30
+ 442: 22(float) Load 441
+ 443: 22(float) GroupNonUniformFMax 34 Reduce 442
+ 444: 125(ptr) AccessChain 27(data) 440 59 30
+ Store 444 443
+ 445: 6(int) Load 8(invocation)
+ 446: 132(ptr) AccessChain 27(data) 38 59
+ 447: 23(fvec4) Load 446
+ 448: 131(fvec2) VectorShuffle 447 447 0 1
+ 449: 131(fvec2) GroupNonUniformFMax 34 Reduce 448
+ 450: 132(ptr) AccessChain 27(data) 445 59
+ 451: 23(fvec4) Load 450
+ 452: 23(fvec4) VectorShuffle 451 449 4 5 2 3
+ Store 450 452
+ 453: 6(int) Load 8(invocation)
+ 454: 132(ptr) AccessChain 27(data) 49 59
+ 455: 23(fvec4) Load 454
+ 456: 141(fvec3) VectorShuffle 455 455 0 1 2
+ 457: 141(fvec3) GroupNonUniformFMax 34 Reduce 456
+ 458: 132(ptr) AccessChain 27(data) 453 59
+ 459: 23(fvec4) Load 458
+ 460: 23(fvec4) VectorShuffle 459 457 4 5 6 3
+ Store 458 460
+ 461: 6(int) Load 8(invocation)
+ 462: 132(ptr) AccessChain 27(data) 59 59
+ 463: 23(fvec4) Load 462
+ 464: 23(fvec4) GroupNonUniformFMax 34 Reduce 463
+ 465: 132(ptr) AccessChain 27(data) 461 59
+ Store 465 464
+ 466: 6(int) Load 8(invocation)
+ 467: 65(ptr) AccessChain 27(data) 29 38 30
+ 468: 19(int) Load 467
+ 469: 19(int) GroupNonUniformBitwiseAnd 34 Reduce 468
+ 470: 65(ptr) AccessChain 27(data) 466 38 30
+ Store 470 469
+ 471: 6(int) Load 8(invocation)
+ 472: 72(ptr) AccessChain 27(data) 38 38
+ 473: 20(ivec4) Load 472
+ 474: 71(ivec2) VectorShuffle 473 473 0 1
+ 475: 71(ivec2) GroupNonUniformBitwiseAnd 34 Reduce 474
+ 476: 72(ptr) AccessChain 27(data) 471 38
+ 477: 20(ivec4) Load 476
+ 478: 20(ivec4) VectorShuffle 477 475 4 5 2 3
+ Store 476 478
+ 479: 6(int) Load 8(invocation)
+ 480: 72(ptr) AccessChain 27(data) 49 38
+ 481: 20(ivec4) Load 480
+ 482: 81(ivec3) VectorShuffle 481 481 0 1 2
+ 483: 81(ivec3) GroupNonUniformBitwiseAnd 34 Reduce 482
+ 484: 72(ptr) AccessChain 27(data) 479 38
+ 485: 20(ivec4) Load 484
+ 486: 20(ivec4) VectorShuffle 485 483 4 5 6 3
+ Store 484 486
+ 487: 6(int) Load 8(invocation)
+ 488: 72(ptr) AccessChain 27(data) 59 38
+ 489: 20(ivec4) Load 488
+ 490: 20(ivec4) GroupNonUniformBitwiseAnd 34 Reduce 489
+ 491: 72(ptr) AccessChain 27(data) 487 38
+ Store 491 490
+ 492: 6(int) Load 8(invocation)
+ 493: 95(ptr) AccessChain 27(data) 29 49 30
+ 494: 6(int) Load 493
+ 495: 6(int) GroupNonUniformBitwiseAnd 34 Reduce 494
+ 496: 95(ptr) AccessChain 27(data) 492 49 30
+ Store 496 495
+ 497: 6(int) Load 8(invocation)
+ 498: 102(ptr) AccessChain 27(data) 38 49
+ 499: 21(ivec4) Load 498
+ 500: 101(ivec2) VectorShuffle 499 499 0 1
+ 501: 101(ivec2) GroupNonUniformBitwiseAnd 34 Reduce 500
+ 502: 102(ptr) AccessChain 27(data) 497 49
+ 503: 21(ivec4) Load 502
+ 504: 21(ivec4) VectorShuffle 503 501 4 5 2 3
+ Store 502 504
+ 505: 6(int) Load 8(invocation)
+ 506: 102(ptr) AccessChain 27(data) 49 49
+ 507: 21(ivec4) Load 506
+ 508: 111(ivec3) VectorShuffle 507 507 0 1 2
+ 509: 111(ivec3) GroupNonUniformBitwiseAnd 34 Reduce 508
+ 510: 102(ptr) AccessChain 27(data) 505 49
+ 511: 21(ivec4) Load 510
+ 512: 21(ivec4) VectorShuffle 511 509 4 5 6 3
+ Store 510 512
+ 513: 6(int) Load 8(invocation)
+ 514: 102(ptr) AccessChain 27(data) 59 49
+ 515: 21(ivec4) Load 514
+ 516: 21(ivec4) GroupNonUniformBitwiseAnd 34 Reduce 515
+ 517: 102(ptr) AccessChain 27(data) 513 49
+ Store 517 516
+ 518: 6(int) Load 8(invocation)
+ 519: 65(ptr) AccessChain 27(data) 29 38 30
+ 520: 19(int) Load 519
+ 522: 521(bool) SLessThan 520 29
+ 523: 521(bool) GroupNonUniformLogicalAnd 34 Reduce 522
+ 524: 19(int) Select 523 38 29
+ 525: 65(ptr) AccessChain 27(data) 518 38 30
+ Store 525 524
+ 526: 6(int) Load 8(invocation)
+ 527: 72(ptr) AccessChain 27(data) 38 38
+ 528: 20(ivec4) Load 527
+ 529: 71(ivec2) VectorShuffle 528 528 0 1
+ 532: 531(bvec2) SLessThan 529 530
+ 533: 531(bvec2) GroupNonUniformLogicalAnd 34 Reduce 532
+ 535: 71(ivec2) Select 533 534 530
+ 536: 72(ptr) AccessChain 27(data) 526 38
+ 537: 20(ivec4) Load 536
+ 538: 20(ivec4) VectorShuffle 537 535 4 5 2 3
+ Store 536 538
+ 539: 6(int) Load 8(invocation)
+ 540: 72(ptr) AccessChain 27(data) 38 38
+ 541: 20(ivec4) Load 540
+ 542: 81(ivec3) VectorShuffle 541 541 0 1 2
+ 545: 544(bvec3) SLessThan 542 543
+ 546: 544(bvec3) GroupNonUniformLogicalAnd 34 Reduce 545
+ 548: 81(ivec3) Select 546 547 543
+ 549: 72(ptr) AccessChain 27(data) 539 38
+ 550: 20(ivec4) Load 549
+ 551: 20(ivec4) VectorShuffle 550 548 4 5 6 3
+ Store 549 551
+ 552: 6(int) Load 8(invocation)
+ 553: 72(ptr) AccessChain 27(data) 38 38
+ 554: 20(ivec4) Load 553
+ 557: 556(bvec4) SLessThan 554 555
+ 558: 556(bvec4) GroupNonUniformLogicalAnd 34 Reduce 557
+ 560: 20(ivec4) Select 558 559 555
+ 561: 72(ptr) AccessChain 27(data) 552 38
+ Store 561 560
+ 562: 6(int) Load 8(invocation)
+ 563: 65(ptr) AccessChain 27(data) 29 38 30
+ 564: 19(int) Load 563
+ 565: 19(int) GroupNonUniformBitwiseOr 34 Reduce 564
+ 566: 65(ptr) AccessChain 27(data) 562 38 30
+ Store 566 565
+ 567: 6(int) Load 8(invocation)
+ 568: 72(ptr) AccessChain 27(data) 38 38
+ 569: 20(ivec4) Load 568
+ 570: 71(ivec2) VectorShuffle 569 569 0 1
+ 571: 71(ivec2) GroupNonUniformBitwiseOr 34 Reduce 570
+ 572: 72(ptr) AccessChain 27(data) 567 38
+ 573: 20(ivec4) Load 572
+ 574: 20(ivec4) VectorShuffle 573 571 4 5 2 3
+ Store 572 574
+ 575: 6(int) Load 8(invocation)
+ 576: 72(ptr) AccessChain 27(data) 49 38
+ 577: 20(ivec4) Load 576
+ 578: 81(ivec3) VectorShuffle 577 577 0 1 2
+ 579: 81(ivec3) GroupNonUniformBitwiseOr 34 Reduce 578
+ 580: 72(ptr) AccessChain 27(data) 575 38
+ 581: 20(ivec4) Load 580
+ 582: 20(ivec4) VectorShuffle 581 579 4 5 6 3
+ Store 580 582
+ 583: 6(int) Load 8(invocation)
+ 584: 72(ptr) AccessChain 27(data) 59 38
+ 585: 20(ivec4) Load 584
+ 586: 20(ivec4) GroupNonUniformBitwiseOr 34 Reduce 585
+ 587: 72(ptr) AccessChain 27(data) 583 38
+ Store 587 586
+ 588: 6(int) Load 8(invocation)
+ 589: 95(ptr) AccessChain 27(data) 29 49 30
+ 590: 6(int) Load 589
+ 591: 6(int) GroupNonUniformBitwiseOr 34 Reduce 590
+ 592: 95(ptr) AccessChain 27(data) 588 49 30
+ Store 592 591
+ 593: 6(int) Load 8(invocation)
+ 594: 102(ptr) AccessChain 27(data) 38 49
+ 595: 21(ivec4) Load 594
+ 596: 101(ivec2) VectorShuffle 595 595 0 1
+ 597: 101(ivec2) GroupNonUniformBitwiseOr 34 Reduce 596
+ 598: 102(ptr) AccessChain 27(data) 593 49
+ 599: 21(ivec4) Load 598
+ 600: 21(ivec4) VectorShuffle 599 597 4 5 2 3
+ Store 598 600
+ 601: 6(int) Load 8(invocation)
+ 602: 102(ptr) AccessChain 27(data) 49 49
+ 603: 21(ivec4) Load 602
+ 604: 111(ivec3) VectorShuffle 603 603 0 1 2
+ 605: 111(ivec3) GroupNonUniformBitwiseOr 34 Reduce 604
+ 606: 102(ptr) AccessChain 27(data) 601 49
+ 607: 21(ivec4) Load 606
+ 608: 21(ivec4) VectorShuffle 607 605 4 5 6 3
+ Store 606 608
+ 609: 6(int) Load 8(invocation)
+ 610: 102(ptr) AccessChain 27(data) 59 49
+ 611: 21(ivec4) Load 610
+ 612: 21(ivec4) GroupNonUniformBitwiseOr 34 Reduce 611
+ 613: 102(ptr) AccessChain 27(data) 609 49
+ Store 613 612
+ 614: 6(int) Load 8(invocation)
+ 615: 65(ptr) AccessChain 27(data) 29 38 30
+ 616: 19(int) Load 615
+ 617: 521(bool) SLessThan 616 29
+ 618: 521(bool) GroupNonUniformLogicalOr 34 Reduce 617
+ 619: 19(int) Select 618 38 29
+ 620: 65(ptr) AccessChain 27(data) 614 38 30
+ Store 620 619
+ 621: 6(int) Load 8(invocation)
+ 622: 72(ptr) AccessChain 27(data) 38 38
+ 623: 20(ivec4) Load 622
+ 624: 71(ivec2) VectorShuffle 623 623 0 1
+ 625: 531(bvec2) SLessThan 624 530
+ 626: 531(bvec2) GroupNonUniformLogicalOr 34 Reduce 625
+ 627: 71(ivec2) Select 626 534 530
+ 628: 72(ptr) AccessChain 27(data) 621 38
+ 629: 20(ivec4) Load 628
+ 630: 20(ivec4) VectorShuffle 629 627 4 5 2 3
+ Store 628 630
+ 631: 6(int) Load 8(invocation)
+ 632: 72(ptr) AccessChain 27(data) 38 38
+ 633: 20(ivec4) Load 632
+ 634: 81(ivec3) VectorShuffle 633 633 0 1 2
+ 635: 544(bvec3) SLessThan 634 543
+ 636: 544(bvec3) GroupNonUniformLogicalOr 34 Reduce 635
+ 637: 81(ivec3) Select 636 547 543
+ 638: 72(ptr) AccessChain 27(data) 631 38
+ 639: 20(ivec4) Load 638
+ 640: 20(ivec4) VectorShuffle 639 637 4 5 6 3
+ Store 638 640
+ 641: 6(int) Load 8(invocation)
+ 642: 72(ptr) AccessChain 27(data) 38 38
+ 643: 20(ivec4) Load 642
+ 644: 556(bvec4) SLessThan 643 555
+ 645: 556(bvec4) GroupNonUniformLogicalOr 34 Reduce 644
+ 646: 20(ivec4) Select 645 559 555
+ 647: 72(ptr) AccessChain 27(data) 641 38
+ Store 647 646
+ 648: 6(int) Load 8(invocation)
+ 649: 65(ptr) AccessChain 27(data) 29 38 30
+ 650: 19(int) Load 649
+ 651: 19(int) GroupNonUniformBitwiseXor 34 Reduce 650
+ 652: 65(ptr) AccessChain 27(data) 648 38 30
+ Store 652 651
+ 653: 6(int) Load 8(invocation)
+ 654: 72(ptr) AccessChain 27(data) 38 38
+ 655: 20(ivec4) Load 654
+ 656: 71(ivec2) VectorShuffle 655 655 0 1
+ 657: 71(ivec2) GroupNonUniformBitwiseXor 34 Reduce 656
+ 658: 72(ptr) AccessChain 27(data) 653 38
+ 659: 20(ivec4) Load 658
+ 660: 20(ivec4) VectorShuffle 659 657 4 5 2 3
+ Store 658 660
+ 661: 6(int) Load 8(invocation)
+ 662: 72(ptr) AccessChain 27(data) 49 38
+ 663: 20(ivec4) Load 662
+ 664: 81(ivec3) VectorShuffle 663 663 0 1 2
+ 665: 81(ivec3) GroupNonUniformBitwiseXor 34 Reduce 664
+ 666: 72(ptr) AccessChain 27(data) 661 38
+ 667: 20(ivec4) Load 666
+ 668: 20(ivec4) VectorShuffle 667 665 4 5 6 3
+ Store 666 668
+ 669: 6(int) Load 8(invocation)
+ 670: 72(ptr) AccessChain 27(data) 59 38
+ 671: 20(ivec4) Load 670
+ 672: 20(ivec4) GroupNonUniformBitwiseXor 34 Reduce 671
+ 673: 72(ptr) AccessChain 27(data) 669 38
+ Store 673 672
+ 674: 6(int) Load 8(invocation)
+ 675: 95(ptr) AccessChain 27(data) 29 49 30
+ 676: 6(int) Load 675
+ 677: 6(int) GroupNonUniformBitwiseXor 34 Reduce 676
+ 678: 95(ptr) AccessChain 27(data) 674 49 30
+ Store 678 677
+ 679: 6(int) Load 8(invocation)
+ 680: 102(ptr) AccessChain 27(data) 38 49
+ 681: 21(ivec4) Load 680
+ 682: 101(ivec2) VectorShuffle 681 681 0 1
+ 683: 101(ivec2) GroupNonUniformBitwiseXor 34 Reduce 682
+ 684: 102(ptr) AccessChain 27(data) 679 49
+ 685: 21(ivec4) Load 684
+ 686: 21(ivec4) VectorShuffle 685 683 4 5 2 3
+ Store 684 686
+ 687: 6(int) Load 8(invocation)
+ 688: 102(ptr) AccessChain 27(data) 49 49
+ 689: 21(ivec4) Load 688
+ 690: 111(ivec3) VectorShuffle 689 689 0 1 2
+ 691: 111(ivec3) GroupNonUniformBitwiseXor 34 Reduce 690
+ 692: 102(ptr) AccessChain 27(data) 687 49
+ 693: 21(ivec4) Load 692
+ 694: 21(ivec4) VectorShuffle 693 691 4 5 6 3
+ Store 692 694
+ 695: 6(int) Load 8(invocation)
+ 696: 102(ptr) AccessChain 27(data) 59 49
+ 697: 21(ivec4) Load 696
+ 698: 21(ivec4) GroupNonUniformBitwiseXor 34 Reduce 697
+ 699: 102(ptr) AccessChain 27(data) 695 49
+ Store 699 698
+ 700: 6(int) Load 8(invocation)
+ 701: 65(ptr) AccessChain 27(data) 29 38 30
+ 702: 19(int) Load 701
+ 703: 521(bool) SLessThan 702 29
+ 704: 521(bool) GroupNonUniformLogicalXor 34 Reduce 703
+ 705: 19(int) Select 704 38 29
+ 706: 65(ptr) AccessChain 27(data) 700 38 30
+ Store 706 705
+ 707: 6(int) Load 8(invocation)
+ 708: 72(ptr) AccessChain 27(data) 38 38
+ 709: 20(ivec4) Load 708
+ 710: 71(ivec2) VectorShuffle 709 709 0 1
+ 711: 531(bvec2) SLessThan 710 530
+ 712: 531(bvec2) GroupNonUniformLogicalXor 34 Reduce 711
+ 713: 71(ivec2) Select 712 534 530
+ 714: 72(ptr) AccessChain 27(data) 707 38
+ 715: 20(ivec4) Load 714
+ 716: 20(ivec4) VectorShuffle 715 713 4 5 2 3
+ Store 714 716
+ 717: 6(int) Load 8(invocation)
+ 718: 72(ptr) AccessChain 27(data) 38 38
+ 719: 20(ivec4) Load 718
+ 720: 81(ivec3) VectorShuffle 719 719 0 1 2
+ 721: 544(bvec3) SLessThan 720 543
+ 722: 544(bvec3) GroupNonUniformLogicalXor 34 Reduce 721
+ 723: 81(ivec3) Select 722 547 543
+ 724: 72(ptr) AccessChain 27(data) 717 38
+ 725: 20(ivec4) Load 724
+ 726: 20(ivec4) VectorShuffle 725 723 4 5 6 3
+ Store 724 726
+ 727: 6(int) Load 8(invocation)
+ 728: 72(ptr) AccessChain 27(data) 38 38
+ 729: 20(ivec4) Load 728
+ 730: 556(bvec4) SLessThan 729 555
+ 731: 556(bvec4) GroupNonUniformLogicalXor 34 Reduce 730
+ 732: 20(ivec4) Select 731 559 555
+ 733: 72(ptr) AccessChain 27(data) 727 38
+ Store 733 732
+ 734: 6(int) Load 8(invocation)
+ 735: 31(ptr) AccessChain 27(data) 29 29 30
+ 736: 17(float) Load 735
+ 737: 17(float) GroupNonUniformFAdd 34 InclusiveScan 736
+ 738: 31(ptr) AccessChain 27(data) 734 29 30
+ Store 738 737
+ 739: 6(int) Load 8(invocation)
+ 740: 40(ptr) AccessChain 27(data) 38 29
+ 741: 18(fvec4) Load 740
+ 742: 39(fvec2) VectorShuffle 741 741 0 1
+ 743: 39(fvec2) GroupNonUniformFAdd 34 InclusiveScan 742
+ 744: 40(ptr) AccessChain 27(data) 739 29
+ 745: 18(fvec4) Load 744
+ 746: 18(fvec4) VectorShuffle 745 743 4 5 2 3
+ Store 744 746
+ 747: 6(int) Load 8(invocation)
+ 748: 40(ptr) AccessChain 27(data) 49 29
+ 749: 18(fvec4) Load 748
+ 750: 50(fvec3) VectorShuffle 749 749 0 1 2
+ 751: 50(fvec3) GroupNonUniformFAdd 34 InclusiveScan 750
+ 752: 40(ptr) AccessChain 27(data) 747 29
+ 753: 18(fvec4) Load 752
+ 754: 18(fvec4) VectorShuffle 753 751 4 5 6 3
+ Store 752 754
+ 755: 6(int) Load 8(invocation)
+ 756: 40(ptr) AccessChain 27(data) 59 29
+ 757: 18(fvec4) Load 756
+ 758: 18(fvec4) GroupNonUniformFAdd 34 InclusiveScan 757
+ 759: 40(ptr) AccessChain 27(data) 755 29
+ Store 759 758
+ 760: 6(int) Load 8(invocation)
+ 761: 65(ptr) AccessChain 27(data) 29 38 30
+ 762: 19(int) Load 761
+ 763: 19(int) GroupNonUniformIAdd 34 InclusiveScan 762
+ 764: 65(ptr) AccessChain 27(data) 760 38 30
+ Store 764 763
+ 765: 6(int) Load 8(invocation)
+ 766: 72(ptr) AccessChain 27(data) 38 38
+ 767: 20(ivec4) Load 766
+ 768: 71(ivec2) VectorShuffle 767 767 0 1
+ 769: 71(ivec2) GroupNonUniformIAdd 34 InclusiveScan 768
+ 770: 72(ptr) AccessChain 27(data) 765 38
+ 771: 20(ivec4) Load 770
+ 772: 20(ivec4) VectorShuffle 771 769 4 5 2 3
+ Store 770 772
+ 773: 6(int) Load 8(invocation)
+ 774: 72(ptr) AccessChain 27(data) 49 38
+ 775: 20(ivec4) Load 774
+ 776: 81(ivec3) VectorShuffle 775 775 0 1 2
+ 777: 81(ivec3) GroupNonUniformIAdd 34 InclusiveScan 776
+ 778: 72(ptr) AccessChain 27(data) 773 38
+ 779: 20(ivec4) Load 778
+ 780: 20(ivec4) VectorShuffle 779 777 4 5 6 3
+ Store 778 780
+ 781: 6(int) Load 8(invocation)
+ 782: 72(ptr) AccessChain 27(data) 59 38
+ 783: 20(ivec4) Load 782
+ 784: 20(ivec4) GroupNonUniformIAdd 34 InclusiveScan 783
+ 785: 72(ptr) AccessChain 27(data) 781 38
+ Store 785 784
+ 786: 6(int) Load 8(invocation)
+ 787: 95(ptr) AccessChain 27(data) 29 49 30
+ 788: 6(int) Load 787
+ 789: 6(int) GroupNonUniformIAdd 34 InclusiveScan 788
+ 790: 95(ptr) AccessChain 27(data) 786 49 30
+ Store 790 789
+ 791: 6(int) Load 8(invocation)
+ 792: 102(ptr) AccessChain 27(data) 38 49
+ 793: 21(ivec4) Load 792
+ 794: 101(ivec2) VectorShuffle 793 793 0 1
+ 795: 101(ivec2) GroupNonUniformIAdd 34 InclusiveScan 794
+ 796: 102(ptr) AccessChain 27(data) 791 49
+ 797: 21(ivec4) Load 796
+ 798: 21(ivec4) VectorShuffle 797 795 4 5 2 3
+ Store 796 798
+ 799: 6(int) Load 8(invocation)
+ 800: 102(ptr) AccessChain 27(data) 49 49
+ 801: 21(ivec4) Load 800
+ 802: 111(ivec3) VectorShuffle 801 801 0 1 2
+ 803: 111(ivec3) GroupNonUniformIAdd 34 InclusiveScan 802
+ 804: 102(ptr) AccessChain 27(data) 799 49
+ 805: 21(ivec4) Load 804
+ 806: 21(ivec4) VectorShuffle 805 803 4 5 6 3
+ Store 804 806
+ 807: 6(int) Load 8(invocation)
+ 808: 102(ptr) AccessChain 27(data) 59 49
+ 809: 21(ivec4) Load 808
+ 810: 21(ivec4) GroupNonUniformIAdd 34 InclusiveScan 809
+ 811: 102(ptr) AccessChain 27(data) 807 49
+ Store 811 810
+ 812: 6(int) Load 8(invocation)
+ 813: 125(ptr) AccessChain 27(data) 29 59 30
+ 814: 22(float) Load 813
+ 815: 22(float) GroupNonUniformFAdd 34 InclusiveScan 814
+ 816: 125(ptr) AccessChain 27(data) 812 59 30
+ Store 816 815
+ 817: 6(int) Load 8(invocation)
+ 818: 132(ptr) AccessChain 27(data) 38 59
+ 819: 23(fvec4) Load 818
+ 820: 131(fvec2) VectorShuffle 819 819 0 1
+ 821: 131(fvec2) GroupNonUniformFAdd 34 InclusiveScan 820
+ 822: 132(ptr) AccessChain 27(data) 817 59
+ 823: 23(fvec4) Load 822
+ 824: 23(fvec4) VectorShuffle 823 821 4 5 2 3
+ Store 822 824
+ 825: 6(int) Load 8(invocation)
+ 826: 132(ptr) AccessChain 27(data) 49 59
+ 827: 23(fvec4) Load 826
+ 828: 141(fvec3) VectorShuffle 827 827 0 1 2
+ 829: 141(fvec3) GroupNonUniformFAdd 34 InclusiveScan 828
+ 830: 132(ptr) AccessChain 27(data) 825 59
+ 831: 23(fvec4) Load 830
+ 832: 23(fvec4) VectorShuffle 831 829 4 5 6 3
+ Store 830 832
+ 833: 6(int) Load 8(invocation)
+ 834: 132(ptr) AccessChain 27(data) 59 59
+ 835: 23(fvec4) Load 834
+ 836: 23(fvec4) GroupNonUniformFAdd 34 InclusiveScan 835
+ 837: 132(ptr) AccessChain 27(data) 833 59
+ Store 837 836
+ 838: 6(int) Load 8(invocation)
+ 839: 31(ptr) AccessChain 27(data) 29 29 30
+ 840: 17(float) Load 839
+ 841: 17(float) GroupNonUniformFMul 34 InclusiveScan 840
+ 842: 31(ptr) AccessChain 27(data) 838 29 30
+ Store 842 841
+ 843: 6(int) Load 8(invocation)
+ 844: 40(ptr) AccessChain 27(data) 38 29
+ 845: 18(fvec4) Load 844
+ 846: 39(fvec2) VectorShuffle 845 845 0 1
+ 847: 39(fvec2) GroupNonUniformFMul 34 InclusiveScan 846
+ 848: 40(ptr) AccessChain 27(data) 843 29
+ 849: 18(fvec4) Load 848
+ 850: 18(fvec4) VectorShuffle 849 847 4 5 2 3
+ Store 848 850
+ 851: 6(int) Load 8(invocation)
+ 852: 40(ptr) AccessChain 27(data) 49 29
+ 853: 18(fvec4) Load 852
+ 854: 50(fvec3) VectorShuffle 853 853 0 1 2
+ 855: 50(fvec3) GroupNonUniformFMul 34 InclusiveScan 854
+ 856: 40(ptr) AccessChain 27(data) 851 29
+ 857: 18(fvec4) Load 856
+ 858: 18(fvec4) VectorShuffle 857 855 4 5 6 3
+ Store 856 858
+ 859: 6(int) Load 8(invocation)
+ 860: 40(ptr) AccessChain 27(data) 59 29
+ 861: 18(fvec4) Load 860
+ 862: 18(fvec4) GroupNonUniformFMul 34 InclusiveScan 861
+ 863: 40(ptr) AccessChain 27(data) 859 29
+ Store 863 862
+ 864: 6(int) Load 8(invocation)
+ 865: 65(ptr) AccessChain 27(data) 29 38 30
+ 866: 19(int) Load 865
+ 867: 19(int) GroupNonUniformIMul 34 InclusiveScan 866
+ 868: 65(ptr) AccessChain 27(data) 864 38 30
+ Store 868 867
+ 869: 6(int) Load 8(invocation)
+ 870: 72(ptr) AccessChain 27(data) 38 38
+ 871: 20(ivec4) Load 870
+ 872: 71(ivec2) VectorShuffle 871 871 0 1
+ 873: 71(ivec2) GroupNonUniformIMul 34 InclusiveScan 872
+ 874: 72(ptr) AccessChain 27(data) 869 38
+ 875: 20(ivec4) Load 874
+ 876: 20(ivec4) VectorShuffle 875 873 4 5 2 3
+ Store 874 876
+ 877: 6(int) Load 8(invocation)
+ 878: 72(ptr) AccessChain 27(data) 49 38
+ 879: 20(ivec4) Load 878
+ 880: 81(ivec3) VectorShuffle 879 879 0 1 2
+ 881: 81(ivec3) GroupNonUniformIMul 34 InclusiveScan 880
+ 882: 72(ptr) AccessChain 27(data) 877 38
+ 883: 20(ivec4) Load 882
+ 884: 20(ivec4) VectorShuffle 883 881 4 5 6 3
+ Store 882 884
+ 885: 6(int) Load 8(invocation)
+ 886: 72(ptr) AccessChain 27(data) 59 38
+ 887: 20(ivec4) Load 886
+ 888: 20(ivec4) GroupNonUniformIMul 34 InclusiveScan 887
+ 889: 72(ptr) AccessChain 27(data) 885 38
+ Store 889 888
+ 890: 6(int) Load 8(invocation)
+ 891: 95(ptr) AccessChain 27(data) 29 49 30
+ 892: 6(int) Load 891
+ 893: 6(int) GroupNonUniformIMul 34 InclusiveScan 892
+ 894: 95(ptr) AccessChain 27(data) 890 49 30
+ Store 894 893
+ 895: 6(int) Load 8(invocation)
+ 896: 102(ptr) AccessChain 27(data) 38 49
+ 897: 21(ivec4) Load 896
+ 898: 101(ivec2) VectorShuffle 897 897 0 1
+ 899: 101(ivec2) GroupNonUniformIMul 34 InclusiveScan 898
+ 900: 102(ptr) AccessChain 27(data) 895 49
+ 901: 21(ivec4) Load 900
+ 902: 21(ivec4) VectorShuffle 901 899 4 5 2 3
+ Store 900 902
+ 903: 6(int) Load 8(invocation)
+ 904: 102(ptr) AccessChain 27(data) 49 49
+ 905: 21(ivec4) Load 904
+ 906: 111(ivec3) VectorShuffle 905 905 0 1 2
+ 907: 111(ivec3) GroupNonUniformIMul 34 InclusiveScan 906
+ 908: 102(ptr) AccessChain 27(data) 903 49
+ 909: 21(ivec4) Load 908
+ 910: 21(ivec4) VectorShuffle 909 907 4 5 6 3
+ Store 908 910
+ 911: 6(int) Load 8(invocation)
+ 912: 102(ptr) AccessChain 27(data) 59 49
+ 913: 21(ivec4) Load 912
+ 914: 21(ivec4) GroupNonUniformIMul 34 InclusiveScan 913
+ 915: 102(ptr) AccessChain 27(data) 911 49
+ Store 915 914
+ 916: 6(int) Load 8(invocation)
+ 917: 125(ptr) AccessChain 27(data) 29 59 30
+ 918: 22(float) Load 917
+ 919: 22(float) GroupNonUniformFMul 34 InclusiveScan 918
+ 920: 125(ptr) AccessChain 27(data) 916 59 30
+ Store 920 919
+ 921: 6(int) Load 8(invocation)
+ 922: 132(ptr) AccessChain 27(data) 38 59
+ 923: 23(fvec4) Load 922
+ 924: 131(fvec2) VectorShuffle 923 923 0 1
+ 925: 131(fvec2) GroupNonUniformFMul 34 InclusiveScan 924
+ 926: 132(ptr) AccessChain 27(data) 921 59
+ 927: 23(fvec4) Load 926
+ 928: 23(fvec4) VectorShuffle 927 925 4 5 2 3
+ Store 926 928
+ 929: 6(int) Load 8(invocation)
+ 930: 132(ptr) AccessChain 27(data) 49 59
+ 931: 23(fvec4) Load 930
+ 932: 141(fvec3) VectorShuffle 931 931 0 1 2
+ 933: 141(fvec3) GroupNonUniformFMul 34 InclusiveScan 932
+ 934: 132(ptr) AccessChain 27(data) 929 59
+ 935: 23(fvec4) Load 934
+ 936: 23(fvec4) VectorShuffle 935 933 4 5 6 3
+ Store 934 936
+ 937: 6(int) Load 8(invocation)
+ 938: 132(ptr) AccessChain 27(data) 59 59
+ 939: 23(fvec4) Load 938
+ 940: 23(fvec4) GroupNonUniformFMul 34 InclusiveScan 939
+ 941: 132(ptr) AccessChain 27(data) 937 59
+ Store 941 940
+ 942: 6(int) Load 8(invocation)
+ 943: 31(ptr) AccessChain 27(data) 29 29 30
+ 944: 17(float) Load 943
+ 945: 17(float) GroupNonUniformFMin 34 InclusiveScan 944
+ 946: 31(ptr) AccessChain 27(data) 942 29 30
+ Store 946 945
+ 947: 6(int) Load 8(invocation)
+ 948: 40(ptr) AccessChain 27(data) 38 29
+ 949: 18(fvec4) Load 948
+ 950: 39(fvec2) VectorShuffle 949 949 0 1
+ 951: 39(fvec2) GroupNonUniformFMin 34 InclusiveScan 950
+ 952: 40(ptr) AccessChain 27(data) 947 29
+ 953: 18(fvec4) Load 952
+ 954: 18(fvec4) VectorShuffle 953 951 4 5 2 3
+ Store 952 954
+ 955: 6(int) Load 8(invocation)
+ 956: 40(ptr) AccessChain 27(data) 49 29
+ 957: 18(fvec4) Load 956
+ 958: 50(fvec3) VectorShuffle 957 957 0 1 2
+ 959: 50(fvec3) GroupNonUniformFMin 34 InclusiveScan 958
+ 960: 40(ptr) AccessChain 27(data) 955 29
+ 961: 18(fvec4) Load 960
+ 962: 18(fvec4) VectorShuffle 961 959 4 5 6 3
+ Store 960 962
+ 963: 6(int) Load 8(invocation)
+ 964: 40(ptr) AccessChain 27(data) 59 29
+ 965: 18(fvec4) Load 964
+ 966: 18(fvec4) GroupNonUniformFMin 34 InclusiveScan 965
+ 967: 40(ptr) AccessChain 27(data) 963 29
+ Store 967 966
+ 968: 6(int) Load 8(invocation)
+ 969: 65(ptr) AccessChain 27(data) 29 38 30
+ 970: 19(int) Load 969
+ 971: 19(int) GroupNonUniformSMin 34 InclusiveScan 970
+ 972: 65(ptr) AccessChain 27(data) 968 38 30
+ Store 972 971
+ 973: 6(int) Load 8(invocation)
+ 974: 72(ptr) AccessChain 27(data) 38 38
+ 975: 20(ivec4) Load 974
+ 976: 71(ivec2) VectorShuffle 975 975 0 1
+ 977: 71(ivec2) GroupNonUniformSMin 34 InclusiveScan 976
+ 978: 72(ptr) AccessChain 27(data) 973 38
+ 979: 20(ivec4) Load 978
+ 980: 20(ivec4) VectorShuffle 979 977 4 5 2 3
+ Store 978 980
+ 981: 6(int) Load 8(invocation)
+ 982: 72(ptr) AccessChain 27(data) 49 38
+ 983: 20(ivec4) Load 982
+ 984: 81(ivec3) VectorShuffle 983 983 0 1 2
+ 985: 81(ivec3) GroupNonUniformSMin 34 InclusiveScan 984
+ 986: 72(ptr) AccessChain 27(data) 981 38
+ 987: 20(ivec4) Load 986
+ 988: 20(ivec4) VectorShuffle 987 985 4 5 6 3
+ Store 986 988
+ 989: 6(int) Load 8(invocation)
+ 990: 72(ptr) AccessChain 27(data) 59 38
+ 991: 20(ivec4) Load 990
+ 992: 20(ivec4) GroupNonUniformSMin 34 InclusiveScan 991
+ 993: 72(ptr) AccessChain 27(data) 989 38
+ Store 993 992
+ 994: 6(int) Load 8(invocation)
+ 995: 95(ptr) AccessChain 27(data) 29 49 30
+ 996: 6(int) Load 995
+ 997: 6(int) GroupNonUniformUMin 34 InclusiveScan 996
+ 998: 95(ptr) AccessChain 27(data) 994 49 30
+ Store 998 997
+ 999: 6(int) Load 8(invocation)
+ 1000: 102(ptr) AccessChain 27(data) 38 49
+ 1001: 21(ivec4) Load 1000
+ 1002: 101(ivec2) VectorShuffle 1001 1001 0 1
+ 1003: 101(ivec2) GroupNonUniformUMin 34 InclusiveScan 1002
+ 1004: 102(ptr) AccessChain 27(data) 999 49
+ 1005: 21(ivec4) Load 1004
+ 1006: 21(ivec4) VectorShuffle 1005 1003 4 5 2 3
+ Store 1004 1006
+ 1007: 6(int) Load 8(invocation)
+ 1008: 102(ptr) AccessChain 27(data) 49 49
+ 1009: 21(ivec4) Load 1008
+ 1010: 111(ivec3) VectorShuffle 1009 1009 0 1 2
+ 1011: 111(ivec3) GroupNonUniformUMin 34 InclusiveScan 1010
+ 1012: 102(ptr) AccessChain 27(data) 1007 49
+ 1013: 21(ivec4) Load 1012
+ 1014: 21(ivec4) VectorShuffle 1013 1011 4 5 6 3
+ Store 1012 1014
+ 1015: 6(int) Load 8(invocation)
+ 1016: 102(ptr) AccessChain 27(data) 59 49
+ 1017: 21(ivec4) Load 1016
+ 1018: 21(ivec4) GroupNonUniformUMin 34 InclusiveScan 1017
+ 1019: 102(ptr) AccessChain 27(data) 1015 49
+ Store 1019 1018
+ 1020: 6(int) Load 8(invocation)
+ 1021: 125(ptr) AccessChain 27(data) 29 59 30
+ 1022: 22(float) Load 1021
+ 1023: 22(float) GroupNonUniformFMin 34 InclusiveScan 1022
+ 1024: 125(ptr) AccessChain 27(data) 1020 59 30
+ Store 1024 1023
+ 1025: 6(int) Load 8(invocation)
+ 1026: 132(ptr) AccessChain 27(data) 38 59
+ 1027: 23(fvec4) Load 1026
+ 1028: 131(fvec2) VectorShuffle 1027 1027 0 1
+ 1029: 131(fvec2) GroupNonUniformFMin 34 InclusiveScan 1028
+ 1030: 132(ptr) AccessChain 27(data) 1025 59
+ 1031: 23(fvec4) Load 1030
+ 1032: 23(fvec4) VectorShuffle 1031 1029 4 5 2 3
+ Store 1030 1032
+ 1033: 6(int) Load 8(invocation)
+ 1034: 132(ptr) AccessChain 27(data) 49 59
+ 1035: 23(fvec4) Load 1034
+ 1036: 141(fvec3) VectorShuffle 1035 1035 0 1 2
+ 1037: 141(fvec3) GroupNonUniformFMin 34 InclusiveScan 1036
+ 1038: 132(ptr) AccessChain 27(data) 1033 59
+ 1039: 23(fvec4) Load 1038
+ 1040: 23(fvec4) VectorShuffle 1039 1037 4 5 6 3
+ Store 1038 1040
+ 1041: 6(int) Load 8(invocation)
+ 1042: 132(ptr) AccessChain 27(data) 59 59
+ 1043: 23(fvec4) Load 1042
+ 1044: 23(fvec4) GroupNonUniformFMin 34 InclusiveScan 1043
+ 1045: 132(ptr) AccessChain 27(data) 1041 59
+ Store 1045 1044
+ 1046: 6(int) Load 8(invocation)
+ 1047: 31(ptr) AccessChain 27(data) 29 29 30
+ 1048: 17(float) Load 1047
+ 1049: 17(float) GroupNonUniformFMax 34 InclusiveScan 1048
+ 1050: 31(ptr) AccessChain 27(data) 1046 29 30
+ Store 1050 1049
+ 1051: 6(int) Load 8(invocation)
+ 1052: 40(ptr) AccessChain 27(data) 38 29
+ 1053: 18(fvec4) Load 1052
+ 1054: 39(fvec2) VectorShuffle 1053 1053 0 1
+ 1055: 39(fvec2) GroupNonUniformFMax 34 InclusiveScan 1054
+ 1056: 40(ptr) AccessChain 27(data) 1051 29
+ 1057: 18(fvec4) Load 1056
+ 1058: 18(fvec4) VectorShuffle 1057 1055 4 5 2 3
+ Store 1056 1058
+ 1059: 6(int) Load 8(invocation)
+ 1060: 40(ptr) AccessChain 27(data) 49 29
+ 1061: 18(fvec4) Load 1060
+ 1062: 50(fvec3) VectorShuffle 1061 1061 0 1 2
+ 1063: 50(fvec3) GroupNonUniformFMax 34 InclusiveScan 1062
+ 1064: 40(ptr) AccessChain 27(data) 1059 29
+ 1065: 18(fvec4) Load 1064
+ 1066: 18(fvec4) VectorShuffle 1065 1063 4 5 6 3
+ Store 1064 1066
+ 1067: 6(int) Load 8(invocation)
+ 1068: 40(ptr) AccessChain 27(data) 59 29
+ 1069: 18(fvec4) Load 1068
+ 1070: 18(fvec4) GroupNonUniformFMax 34 InclusiveScan 1069
+ 1071: 40(ptr) AccessChain 27(data) 1067 29
+ Store 1071 1070
+ 1072: 6(int) Load 8(invocation)
+ 1073: 65(ptr) AccessChain 27(data) 29 38 30
+ 1074: 19(int) Load 1073
+ 1075: 19(int) GroupNonUniformSMax 34 InclusiveScan 1074
+ 1076: 65(ptr) AccessChain 27(data) 1072 38 30
+ Store 1076 1075
+ 1077: 6(int) Load 8(invocation)
+ 1078: 72(ptr) AccessChain 27(data) 38 38
+ 1079: 20(ivec4) Load 1078
+ 1080: 71(ivec2) VectorShuffle 1079 1079 0 1
+ 1081: 71(ivec2) GroupNonUniformSMax 34 InclusiveScan 1080
+ 1082: 72(ptr) AccessChain 27(data) 1077 38
+ 1083: 20(ivec4) Load 1082
+ 1084: 20(ivec4) VectorShuffle 1083 1081 4 5 2 3
+ Store 1082 1084
+ 1085: 6(int) Load 8(invocation)
+ 1086: 72(ptr) AccessChain 27(data) 49 38
+ 1087: 20(ivec4) Load 1086
+ 1088: 81(ivec3) VectorShuffle 1087 1087 0 1 2
+ 1089: 81(ivec3) GroupNonUniformSMax 34 InclusiveScan 1088
+ 1090: 72(ptr) AccessChain 27(data) 1085 38
+ 1091: 20(ivec4) Load 1090
+ 1092: 20(ivec4) VectorShuffle 1091 1089 4 5 6 3
+ Store 1090 1092
+ 1093: 6(int) Load 8(invocation)
+ 1094: 72(ptr) AccessChain 27(data) 59 38
+ 1095: 20(ivec4) Load 1094
+ 1096: 20(ivec4) GroupNonUniformSMax 34 InclusiveScan 1095
+ 1097: 72(ptr) AccessChain 27(data) 1093 38
+ Store 1097 1096
+ 1098: 6(int) Load 8(invocation)
+ 1099: 95(ptr) AccessChain 27(data) 29 49 30
+ 1100: 6(int) Load 1099
+ 1101: 6(int) GroupNonUniformUMax 34 InclusiveScan 1100
+ 1102: 95(ptr) AccessChain 27(data) 1098 49 30
+ Store 1102 1101
+ 1103: 6(int) Load 8(invocation)
+ 1104: 102(ptr) AccessChain 27(data) 38 49
+ 1105: 21(ivec4) Load 1104
+ 1106: 101(ivec2) VectorShuffle 1105 1105 0 1
+ 1107: 101(ivec2) GroupNonUniformUMax 34 InclusiveScan 1106
+ 1108: 102(ptr) AccessChain 27(data) 1103 49
+ 1109: 21(ivec4) Load 1108
+ 1110: 21(ivec4) VectorShuffle 1109 1107 4 5 2 3
+ Store 1108 1110
+ 1111: 6(int) Load 8(invocation)
+ 1112: 102(ptr) AccessChain 27(data) 49 49
+ 1113: 21(ivec4) Load 1112
+ 1114: 111(ivec3) VectorShuffle 1113 1113 0 1 2
+ 1115: 111(ivec3) GroupNonUniformUMax 34 InclusiveScan 1114
+ 1116: 102(ptr) AccessChain 27(data) 1111 49
+ 1117: 21(ivec4) Load 1116
+ 1118: 21(ivec4) VectorShuffle 1117 1115 4 5 6 3
+ Store 1116 1118
+ 1119: 6(int) Load 8(invocation)
+ 1120: 102(ptr) AccessChain 27(data) 59 49
+ 1121: 21(ivec4) Load 1120
+ 1122: 21(ivec4) GroupNonUniformUMax 34 InclusiveScan 1121
+ 1123: 102(ptr) AccessChain 27(data) 1119 49
+ Store 1123 1122
+ 1124: 6(int) Load 8(invocation)
+ 1125: 125(ptr) AccessChain 27(data) 29 59 30
+ 1126: 22(float) Load 1125
+ 1127: 22(float) GroupNonUniformFMax 34 InclusiveScan 1126
+ 1128: 125(ptr) AccessChain 27(data) 1124 59 30
+ Store 1128 1127
+ 1129: 6(int) Load 8(invocation)
+ 1130: 132(ptr) AccessChain 27(data) 38 59
+ 1131: 23(fvec4) Load 1130
+ 1132: 131(fvec2) VectorShuffle 1131 1131 0 1
+ 1133: 131(fvec2) GroupNonUniformFMax 34 InclusiveScan 1132
+ 1134: 132(ptr) AccessChain 27(data) 1129 59
+ 1135: 23(fvec4) Load 1134
+ 1136: 23(fvec4) VectorShuffle 1135 1133 4 5 2 3
+ Store 1134 1136
+ 1137: 6(int) Load 8(invocation)
+ 1138: 132(ptr) AccessChain 27(data) 49 59
+ 1139: 23(fvec4) Load 1138
+ 1140: 141(fvec3) VectorShuffle 1139 1139 0 1 2
+ 1141: 141(fvec3) GroupNonUniformFMax 34 InclusiveScan 1140
+ 1142: 132(ptr) AccessChain 27(data) 1137 59
+ 1143: 23(fvec4) Load 1142
+ 1144: 23(fvec4) VectorShuffle 1143 1141 4 5 6 3
+ Store 1142 1144
+ 1145: 6(int) Load 8(invocation)
+ 1146: 132(ptr) AccessChain 27(data) 59 59
+ 1147: 23(fvec4) Load 1146
+ 1148: 23(fvec4) GroupNonUniformFMax 34 InclusiveScan 1147
+ 1149: 132(ptr) AccessChain 27(data) 1145 59
+ Store 1149 1148
+ 1150: 6(int) Load 8(invocation)
+ 1151: 65(ptr) AccessChain 27(data) 29 38 30
+ 1152: 19(int) Load 1151
+ 1153: 19(int) GroupNonUniformBitwiseAnd 34 InclusiveScan 1152
+ 1154: 65(ptr) AccessChain 27(data) 1150 38 30
+ Store 1154 1153
+ 1155: 6(int) Load 8(invocation)
+ 1156: 72(ptr) AccessChain 27(data) 38 38
+ 1157: 20(ivec4) Load 1156
+ 1158: 71(ivec2) VectorShuffle 1157 1157 0 1
+ 1159: 71(ivec2) GroupNonUniformBitwiseAnd 34 InclusiveScan 1158
+ 1160: 72(ptr) AccessChain 27(data) 1155 38
+ 1161: 20(ivec4) Load 1160
+ 1162: 20(ivec4) VectorShuffle 1161 1159 4 5 2 3
+ Store 1160 1162
+ 1163: 6(int) Load 8(invocation)
+ 1164: 72(ptr) AccessChain 27(data) 49 38
+ 1165: 20(ivec4) Load 1164
+ 1166: 81(ivec3) VectorShuffle 1165 1165 0 1 2
+ 1167: 81(ivec3) GroupNonUniformBitwiseAnd 34 InclusiveScan 1166
+ 1168: 72(ptr) AccessChain 27(data) 1163 38
+ 1169: 20(ivec4) Load 1168
+ 1170: 20(ivec4) VectorShuffle 1169 1167 4 5 6 3
+ Store 1168 1170
+ 1171: 6(int) Load 8(invocation)
+ 1172: 72(ptr) AccessChain 27(data) 59 38
+ 1173: 20(ivec4) Load 1172
+ 1174: 20(ivec4) GroupNonUniformBitwiseAnd 34 InclusiveScan 1173
+ 1175: 72(ptr) AccessChain 27(data) 1171 38
+ Store 1175 1174
+ 1176: 6(int) Load 8(invocation)
+ 1177: 95(ptr) AccessChain 27(data) 29 49 30
+ 1178: 6(int) Load 1177
+ 1179: 6(int) GroupNonUniformBitwiseAnd 34 InclusiveScan 1178
+ 1180: 95(ptr) AccessChain 27(data) 1176 49 30
+ Store 1180 1179
+ 1181: 6(int) Load 8(invocation)
+ 1182: 102(ptr) AccessChain 27(data) 38 49
+ 1183: 21(ivec4) Load 1182
+ 1184: 101(ivec2) VectorShuffle 1183 1183 0 1
+ 1185: 101(ivec2) GroupNonUniformBitwiseAnd 34 InclusiveScan 1184
+ 1186: 102(ptr) AccessChain 27(data) 1181 49
+ 1187: 21(ivec4) Load 1186
+ 1188: 21(ivec4) VectorShuffle 1187 1185 4 5 2 3
+ Store 1186 1188
+ 1189: 6(int) Load 8(invocation)
+ 1190: 102(ptr) AccessChain 27(data) 49 49
+ 1191: 21(ivec4) Load 1190
+ 1192: 111(ivec3) VectorShuffle 1191 1191 0 1 2
+ 1193: 111(ivec3) GroupNonUniformBitwiseAnd 34 InclusiveScan 1192
+ 1194: 102(ptr) AccessChain 27(data) 1189 49
+ 1195: 21(ivec4) Load 1194
+ 1196: 21(ivec4) VectorShuffle 1195 1193 4 5 6 3
+ Store 1194 1196
+ 1197: 6(int) Load 8(invocation)
+ 1198: 102(ptr) AccessChain 27(data) 59 49
+ 1199: 21(ivec4) Load 1198
+ 1200: 21(ivec4) GroupNonUniformBitwiseAnd 34 InclusiveScan 1199
+ 1201: 102(ptr) AccessChain 27(data) 1197 49
+ Store 1201 1200
+ 1202: 6(int) Load 8(invocation)
+ 1203: 65(ptr) AccessChain 27(data) 29 38 30
+ 1204: 19(int) Load 1203
+ 1205: 521(bool) SLessThan 1204 29
+ 1206: 521(bool) GroupNonUniformLogicalAnd 34 InclusiveScan 1205
+ 1207: 19(int) Select 1206 38 29
+ 1208: 65(ptr) AccessChain 27(data) 1202 38 30
+ Store 1208 1207
+ 1209: 6(int) Load 8(invocation)
+ 1210: 72(ptr) AccessChain 27(data) 38 38
+ 1211: 20(ivec4) Load 1210
+ 1212: 71(ivec2) VectorShuffle 1211 1211 0 1
+ 1213: 531(bvec2) SLessThan 1212 530
+ 1214: 531(bvec2) GroupNonUniformLogicalAnd 34 InclusiveScan 1213
+ 1215: 71(ivec2) Select 1214 534 530
+ 1216: 72(ptr) AccessChain 27(data) 1209 38
+ 1217: 20(ivec4) Load 1216
+ 1218: 20(ivec4) VectorShuffle 1217 1215 4 5 2 3
+ Store 1216 1218
+ 1219: 6(int) Load 8(invocation)
+ 1220: 72(ptr) AccessChain 27(data) 38 38
+ 1221: 20(ivec4) Load 1220
+ 1222: 81(ivec3) VectorShuffle 1221 1221 0 1 2
+ 1223: 544(bvec3) SLessThan 1222 543
+ 1224: 544(bvec3) GroupNonUniformLogicalAnd 34 InclusiveScan 1223
+ 1225: 81(ivec3) Select 1224 547 543
+ 1226: 72(ptr) AccessChain 27(data) 1219 38
+ 1227: 20(ivec4) Load 1226
+ 1228: 20(ivec4) VectorShuffle 1227 1225 4 5 6 3
+ Store 1226 1228
+ 1229: 6(int) Load 8(invocation)
+ 1230: 72(ptr) AccessChain 27(data) 38 38
+ 1231: 20(ivec4) Load 1230
+ 1232: 556(bvec4) SLessThan 1231 555
+ 1233: 556(bvec4) GroupNonUniformLogicalAnd 34 InclusiveScan 1232
+ 1234: 20(ivec4) Select 1233 559 555
+ 1235: 72(ptr) AccessChain 27(data) 1229 38
+ Store 1235 1234
+ 1236: 6(int) Load 8(invocation)
+ 1237: 65(ptr) AccessChain 27(data) 29 38 30
+ 1238: 19(int) Load 1237
+ 1239: 19(int) GroupNonUniformBitwiseOr 34 InclusiveScan 1238
+ 1240: 65(ptr) AccessChain 27(data) 1236 38 30
+ Store 1240 1239
+ 1241: 6(int) Load 8(invocation)
+ 1242: 72(ptr) AccessChain 27(data) 38 38
+ 1243: 20(ivec4) Load 1242
+ 1244: 71(ivec2) VectorShuffle 1243 1243 0 1
+ 1245: 71(ivec2) GroupNonUniformBitwiseOr 34 InclusiveScan 1244
+ 1246: 72(ptr) AccessChain 27(data) 1241 38
+ 1247: 20(ivec4) Load 1246
+ 1248: 20(ivec4) VectorShuffle 1247 1245 4 5 2 3
+ Store 1246 1248
+ 1249: 6(int) Load 8(invocation)
+ 1250: 72(ptr) AccessChain 27(data) 49 38
+ 1251: 20(ivec4) Load 1250
+ 1252: 81(ivec3) VectorShuffle 1251 1251 0 1 2
+ 1253: 81(ivec3) GroupNonUniformBitwiseOr 34 InclusiveScan 1252
+ 1254: 72(ptr) AccessChain 27(data) 1249 38
+ 1255: 20(ivec4) Load 1254
+ 1256: 20(ivec4) VectorShuffle 1255 1253 4 5 6 3
+ Store 1254 1256
+ 1257: 6(int) Load 8(invocation)
+ 1258: 72(ptr) AccessChain 27(data) 59 38
+ 1259: 20(ivec4) Load 1258
+ 1260: 20(ivec4) GroupNonUniformBitwiseOr 34 InclusiveScan 1259
+ 1261: 72(ptr) AccessChain 27(data) 1257 38
+ Store 1261 1260
+ 1262: 6(int) Load 8(invocation)
+ 1263: 95(ptr) AccessChain 27(data) 29 49 30
+ 1264: 6(int) Load 1263
+ 1265: 6(int) GroupNonUniformBitwiseOr 34 InclusiveScan 1264
+ 1266: 95(ptr) AccessChain 27(data) 1262 49 30
+ Store 1266 1265
+ 1267: 6(int) Load 8(invocation)
+ 1268: 102(ptr) AccessChain 27(data) 38 49
+ 1269: 21(ivec4) Load 1268
+ 1270: 101(ivec2) VectorShuffle 1269 1269 0 1
+ 1271: 101(ivec2) GroupNonUniformBitwiseOr 34 InclusiveScan 1270
+ 1272: 102(ptr) AccessChain 27(data) 1267 49
+ 1273: 21(ivec4) Load 1272
+ 1274: 21(ivec4) VectorShuffle 1273 1271 4 5 2 3
+ Store 1272 1274
+ 1275: 6(int) Load 8(invocation)
+ 1276: 102(ptr) AccessChain 27(data) 49 49
+ 1277: 21(ivec4) Load 1276
+ 1278: 111(ivec3) VectorShuffle 1277 1277 0 1 2
+ 1279: 111(ivec3) GroupNonUniformBitwiseOr 34 InclusiveScan 1278
+ 1280: 102(ptr) AccessChain 27(data) 1275 49
+ 1281: 21(ivec4) Load 1280
+ 1282: 21(ivec4) VectorShuffle 1281 1279 4 5 6 3
+ Store 1280 1282
+ 1283: 6(int) Load 8(invocation)
+ 1284: 102(ptr) AccessChain 27(data) 59 49
+ 1285: 21(ivec4) Load 1284
+ 1286: 21(ivec4) GroupNonUniformBitwiseOr 34 InclusiveScan 1285
+ 1287: 102(ptr) AccessChain 27(data) 1283 49
+ Store 1287 1286
+ 1288: 6(int) Load 8(invocation)
+ 1289: 65(ptr) AccessChain 27(data) 29 38 30
+ 1290: 19(int) Load 1289
+ 1291: 521(bool) SLessThan 1290 29
+ 1292: 521(bool) GroupNonUniformLogicalOr 34 InclusiveScan 1291
+ 1293: 19(int) Select 1292 38 29
+ 1294: 65(ptr) AccessChain 27(data) 1288 38 30
+ Store 1294 1293
+ 1295: 6(int) Load 8(invocation)
+ 1296: 72(ptr) AccessChain 27(data) 38 38
+ 1297: 20(ivec4) Load 1296
+ 1298: 71(ivec2) VectorShuffle 1297 1297 0 1
+ 1299: 531(bvec2) SLessThan 1298 530
+ 1300: 531(bvec2) GroupNonUniformLogicalOr 34 InclusiveScan 1299
+ 1301: 71(ivec2) Select 1300 534 530
+ 1302: 72(ptr) AccessChain 27(data) 1295 38
+ 1303: 20(ivec4) Load 1302
+ 1304: 20(ivec4) VectorShuffle 1303 1301 4 5 2 3
+ Store 1302 1304
+ 1305: 6(int) Load 8(invocation)
+ 1306: 72(ptr) AccessChain 27(data) 38 38
+ 1307: 20(ivec4) Load 1306
+ 1308: 81(ivec3) VectorShuffle 1307 1307 0 1 2
+ 1309: 544(bvec3) SLessThan 1308 543
+ 1310: 544(bvec3) GroupNonUniformLogicalOr 34 InclusiveScan 1309
+ 1311: 81(ivec3) Select 1310 547 543
+ 1312: 72(ptr) AccessChain 27(data) 1305 38
+ 1313: 20(ivec4) Load 1312
+ 1314: 20(ivec4) VectorShuffle 1313 1311 4 5 6 3
+ Store 1312 1314
+ 1315: 6(int) Load 8(invocation)
+ 1316: 72(ptr) AccessChain 27(data) 38 38
+ 1317: 20(ivec4) Load 1316
+ 1318: 556(bvec4) SLessThan 1317 555
+ 1319: 556(bvec4) GroupNonUniformLogicalOr 34 InclusiveScan 1318
+ 1320: 20(ivec4) Select 1319 559 555
+ 1321: 72(ptr) AccessChain 27(data) 1315 38
+ Store 1321 1320
+ 1322: 6(int) Load 8(invocation)
+ 1323: 65(ptr) AccessChain 27(data) 29 38 30
+ 1324: 19(int) Load 1323
+ 1325: 19(int) GroupNonUniformBitwiseXor 34 InclusiveScan 1324
+ 1326: 65(ptr) AccessChain 27(data) 1322 38 30
+ Store 1326 1325
+ 1327: 6(int) Load 8(invocation)
+ 1328: 72(ptr) AccessChain 27(data) 38 38
+ 1329: 20(ivec4) Load 1328
+ 1330: 71(ivec2) VectorShuffle 1329 1329 0 1
+ 1331: 71(ivec2) GroupNonUniformBitwiseXor 34 InclusiveScan 1330
+ 1332: 72(ptr) AccessChain 27(data) 1327 38
+ 1333: 20(ivec4) Load 1332
+ 1334: 20(ivec4) VectorShuffle 1333 1331 4 5 2 3
+ Store 1332 1334
+ 1335: 6(int) Load 8(invocation)
+ 1336: 72(ptr) AccessChain 27(data) 49 38
+ 1337: 20(ivec4) Load 1336
+ 1338: 81(ivec3) VectorShuffle 1337 1337 0 1 2
+ 1339: 81(ivec3) GroupNonUniformBitwiseXor 34 InclusiveScan 1338
+ 1340: 72(ptr) AccessChain 27(data) 1335 38
+ 1341: 20(ivec4) Load 1340
+ 1342: 20(ivec4) VectorShuffle 1341 1339 4 5 6 3
+ Store 1340 1342
+ 1343: 6(int) Load 8(invocation)
+ 1344: 72(ptr) AccessChain 27(data) 59 38
+ 1345: 20(ivec4) Load 1344
+ 1346: 20(ivec4) GroupNonUniformBitwiseXor 34 InclusiveScan 1345
+ 1347: 72(ptr) AccessChain 27(data) 1343 38
+ Store 1347 1346
+ 1348: 6(int) Load 8(invocation)
+ 1349: 95(ptr) AccessChain 27(data) 29 49 30
+ 1350: 6(int) Load 1349
+ 1351: 6(int) GroupNonUniformBitwiseXor 34 InclusiveScan 1350
+ 1352: 95(ptr) AccessChain 27(data) 1348 49 30
+ Store 1352 1351
+ 1353: 6(int) Load 8(invocation)
+ 1354: 102(ptr) AccessChain 27(data) 38 49
+ 1355: 21(ivec4) Load 1354
+ 1356: 101(ivec2) VectorShuffle 1355 1355 0 1
+ 1357: 101(ivec2) GroupNonUniformBitwiseXor 34 InclusiveScan 1356
+ 1358: 102(ptr) AccessChain 27(data) 1353 49
+ 1359: 21(ivec4) Load 1358
+ 1360: 21(ivec4) VectorShuffle 1359 1357 4 5 2 3
+ Store 1358 1360
+ 1361: 6(int) Load 8(invocation)
+ 1362: 102(ptr) AccessChain 27(data) 49 49
+ 1363: 21(ivec4) Load 1362
+ 1364: 111(ivec3) VectorShuffle 1363 1363 0 1 2
+ 1365: 111(ivec3) GroupNonUniformBitwiseXor 34 InclusiveScan 1364
+ 1366: 102(ptr) AccessChain 27(data) 1361 49
+ 1367: 21(ivec4) Load 1366
+ 1368: 21(ivec4) VectorShuffle 1367 1365 4 5 6 3
+ Store 1366 1368
+ 1369: 6(int) Load 8(invocation)
+ 1370: 102(ptr) AccessChain 27(data) 59 49
+ 1371: 21(ivec4) Load 1370
+ 1372: 21(ivec4) GroupNonUniformBitwiseXor 34 InclusiveScan 1371
+ 1373: 102(ptr) AccessChain 27(data) 1369 49
+ Store 1373 1372
+ 1374: 6(int) Load 8(invocation)
+ 1375: 65(ptr) AccessChain 27(data) 29 38 30
+ 1376: 19(int) Load 1375
+ 1377: 521(bool) SLessThan 1376 29
+ 1378: 521(bool) GroupNonUniformLogicalXor 34 InclusiveScan 1377
+ 1379: 19(int) Select 1378 38 29
+ 1380: 65(ptr) AccessChain 27(data) 1374 38 30
+ Store 1380 1379
+ 1381: 6(int) Load 8(invocation)
+ 1382: 72(ptr) AccessChain 27(data) 38 38
+ 1383: 20(ivec4) Load 1382
+ 1384: 71(ivec2) VectorShuffle 1383 1383 0 1
+ 1385: 531(bvec2) SLessThan 1384 530
+ 1386: 531(bvec2) GroupNonUniformLogicalXor 34 InclusiveScan 1385
+ 1387: 71(ivec2) Select 1386 534 530
+ 1388: 72(ptr) AccessChain 27(data) 1381 38
+ 1389: 20(ivec4) Load 1388
+ 1390: 20(ivec4) VectorShuffle 1389 1387 4 5 2 3
+ Store 1388 1390
+ 1391: 6(int) Load 8(invocation)
+ 1392: 72(ptr) AccessChain 27(data) 38 38
+ 1393: 20(ivec4) Load 1392
+ 1394: 81(ivec3) VectorShuffle 1393 1393 0 1 2
+ 1395: 544(bvec3) SLessThan 1394 543
+ 1396: 544(bvec3) GroupNonUniformLogicalXor 34 InclusiveScan 1395
+ 1397: 81(ivec3) Select 1396 547 543
+ 1398: 72(ptr) AccessChain 27(data) 1391 38
+ 1399: 20(ivec4) Load 1398
+ 1400: 20(ivec4) VectorShuffle 1399 1397 4 5 6 3
+ Store 1398 1400
+ 1401: 6(int) Load 8(invocation)
+ 1402: 72(ptr) AccessChain 27(data) 38 38
+ 1403: 20(ivec4) Load 1402
+ 1404: 556(bvec4) SLessThan 1403 555
+ 1405: 556(bvec4) GroupNonUniformLogicalXor 34 InclusiveScan 1404
+ 1406: 20(ivec4) Select 1405 559 555
+ 1407: 72(ptr) AccessChain 27(data) 1401 38
+ Store 1407 1406
+ 1408: 6(int) Load 8(invocation)
+ 1409: 31(ptr) AccessChain 27(data) 29 29 30
+ 1410: 17(float) Load 1409
+ 1411: 17(float) GroupNonUniformFAdd 34 ExclusiveScan 1410
+ 1412: 31(ptr) AccessChain 27(data) 1408 29 30
+ Store 1412 1411
+ 1413: 6(int) Load 8(invocation)
+ 1414: 40(ptr) AccessChain 27(data) 38 29
+ 1415: 18(fvec4) Load 1414
+ 1416: 39(fvec2) VectorShuffle 1415 1415 0 1
+ 1417: 39(fvec2) GroupNonUniformFAdd 34 ExclusiveScan 1416
+ 1418: 40(ptr) AccessChain 27(data) 1413 29
+ 1419: 18(fvec4) Load 1418
+ 1420: 18(fvec4) VectorShuffle 1419 1417 4 5 2 3
+ Store 1418 1420
+ 1421: 6(int) Load 8(invocation)
+ 1422: 40(ptr) AccessChain 27(data) 49 29
+ 1423: 18(fvec4) Load 1422
+ 1424: 50(fvec3) VectorShuffle 1423 1423 0 1 2
+ 1425: 50(fvec3) GroupNonUniformFAdd 34 ExclusiveScan 1424
+ 1426: 40(ptr) AccessChain 27(data) 1421 29
+ 1427: 18(fvec4) Load 1426
+ 1428: 18(fvec4) VectorShuffle 1427 1425 4 5 6 3
+ Store 1426 1428
+ 1429: 6(int) Load 8(invocation)
+ 1430: 40(ptr) AccessChain 27(data) 59 29
+ 1431: 18(fvec4) Load 1430
+ 1432: 18(fvec4) GroupNonUniformFAdd 34 ExclusiveScan 1431
+ 1433: 40(ptr) AccessChain 27(data) 1429 29
+ Store 1433 1432
+ 1434: 6(int) Load 8(invocation)
+ 1435: 65(ptr) AccessChain 27(data) 29 38 30
+ 1436: 19(int) Load 1435
+ 1437: 19(int) GroupNonUniformIAdd 34 ExclusiveScan 1436
+ 1438: 65(ptr) AccessChain 27(data) 1434 38 30
+ Store 1438 1437
+ 1439: 6(int) Load 8(invocation)
+ 1440: 72(ptr) AccessChain 27(data) 38 38
+ 1441: 20(ivec4) Load 1440
+ 1442: 71(ivec2) VectorShuffle 1441 1441 0 1
+ 1443: 71(ivec2) GroupNonUniformIAdd 34 ExclusiveScan 1442
+ 1444: 72(ptr) AccessChain 27(data) 1439 38
+ 1445: 20(ivec4) Load 1444
+ 1446: 20(ivec4) VectorShuffle 1445 1443 4 5 2 3
+ Store 1444 1446
+ 1447: 6(int) Load 8(invocation)
+ 1448: 72(ptr) AccessChain 27(data) 49 38
+ 1449: 20(ivec4) Load 1448
+ 1450: 81(ivec3) VectorShuffle 1449 1449 0 1 2
+ 1451: 81(ivec3) GroupNonUniformIAdd 34 ExclusiveScan 1450
+ 1452: 72(ptr) AccessChain 27(data) 1447 38
+ 1453: 20(ivec4) Load 1452
+ 1454: 20(ivec4) VectorShuffle 1453 1451 4 5 6 3
+ Store 1452 1454
+ 1455: 6(int) Load 8(invocation)
+ 1456: 72(ptr) AccessChain 27(data) 59 38
+ 1457: 20(ivec4) Load 1456
+ 1458: 20(ivec4) GroupNonUniformIAdd 34 ExclusiveScan 1457
+ 1459: 72(ptr) AccessChain 27(data) 1455 38
+ Store 1459 1458
+ 1460: 6(int) Load 8(invocation)
+ 1461: 95(ptr) AccessChain 27(data) 29 49 30
+ 1462: 6(int) Load 1461
+ 1463: 6(int) GroupNonUniformIAdd 34 ExclusiveScan 1462
+ 1464: 95(ptr) AccessChain 27(data) 1460 49 30
+ Store 1464 1463
+ 1465: 6(int) Load 8(invocation)
+ 1466: 102(ptr) AccessChain 27(data) 38 49
+ 1467: 21(ivec4) Load 1466
+ 1468: 101(ivec2) VectorShuffle 1467 1467 0 1
+ 1469: 101(ivec2) GroupNonUniformIAdd 34 ExclusiveScan 1468
+ 1470: 102(ptr) AccessChain 27(data) 1465 49
+ 1471: 21(ivec4) Load 1470
+ 1472: 21(ivec4) VectorShuffle 1471 1469 4 5 2 3
+ Store 1470 1472
+ 1473: 6(int) Load 8(invocation)
+ 1474: 102(ptr) AccessChain 27(data) 49 49
+ 1475: 21(ivec4) Load 1474
+ 1476: 111(ivec3) VectorShuffle 1475 1475 0 1 2
+ 1477: 111(ivec3) GroupNonUniformIAdd 34 ExclusiveScan 1476
+ 1478: 102(ptr) AccessChain 27(data) 1473 49
+ 1479: 21(ivec4) Load 1478
+ 1480: 21(ivec4) VectorShuffle 1479 1477 4 5 6 3
+ Store 1478 1480
+ 1481: 6(int) Load 8(invocation)
+ 1482: 102(ptr) AccessChain 27(data) 59 49
+ 1483: 21(ivec4) Load 1482
+ 1484: 21(ivec4) GroupNonUniformIAdd 34 ExclusiveScan 1483
+ 1485: 102(ptr) AccessChain 27(data) 1481 49
+ Store 1485 1484
+ 1486: 6(int) Load 8(invocation)
+ 1487: 125(ptr) AccessChain 27(data) 29 59 30
+ 1488: 22(float) Load 1487
+ 1489: 22(float) GroupNonUniformFAdd 34 ExclusiveScan 1488
+ 1490: 125(ptr) AccessChain 27(data) 1486 59 30
+ Store 1490 1489
+ 1491: 6(int) Load 8(invocation)
+ 1492: 132(ptr) AccessChain 27(data) 38 59
+ 1493: 23(fvec4) Load 1492
+ 1494: 131(fvec2) VectorShuffle 1493 1493 0 1
+ 1495: 131(fvec2) GroupNonUniformFAdd 34 ExclusiveScan 1494
+ 1496: 132(ptr) AccessChain 27(data) 1491 59
+ 1497: 23(fvec4) Load 1496
+ 1498: 23(fvec4) VectorShuffle 1497 1495 4 5 2 3
+ Store 1496 1498
+ 1499: 6(int) Load 8(invocation)
+ 1500: 132(ptr) AccessChain 27(data) 49 59
+ 1501: 23(fvec4) Load 1500
+ 1502: 141(fvec3) VectorShuffle 1501 1501 0 1 2
+ 1503: 141(fvec3) GroupNonUniformFAdd 34 ExclusiveScan 1502
+ 1504: 132(ptr) AccessChain 27(data) 1499 59
+ 1505: 23(fvec4) Load 1504
+ 1506: 23(fvec4) VectorShuffle 1505 1503 4 5 6 3
+ Store 1504 1506
+ 1507: 6(int) Load 8(invocation)
+ 1508: 132(ptr) AccessChain 27(data) 59 59
+ 1509: 23(fvec4) Load 1508
+ 1510: 23(fvec4) GroupNonUniformFAdd 34 ExclusiveScan 1509
+ 1511: 132(ptr) AccessChain 27(data) 1507 59
+ Store 1511 1510
+ 1512: 6(int) Load 8(invocation)
+ 1513: 31(ptr) AccessChain 27(data) 29 29 30
+ 1514: 17(float) Load 1513
+ 1515: 17(float) GroupNonUniformFMul 34 ExclusiveScan 1514
+ 1516: 31(ptr) AccessChain 27(data) 1512 29 30
+ Store 1516 1515
+ 1517: 6(int) Load 8(invocation)
+ 1518: 40(ptr) AccessChain 27(data) 38 29
+ 1519: 18(fvec4) Load 1518
+ 1520: 39(fvec2) VectorShuffle 1519 1519 0 1
+ 1521: 39(fvec2) GroupNonUniformFMul 34 ExclusiveScan 1520
+ 1522: 40(ptr) AccessChain 27(data) 1517 29
+ 1523: 18(fvec4) Load 1522
+ 1524: 18(fvec4) VectorShuffle 1523 1521 4 5 2 3
+ Store 1522 1524
+ 1525: 6(int) Load 8(invocation)
+ 1526: 40(ptr) AccessChain 27(data) 49 29
+ 1527: 18(fvec4) Load 1526
+ 1528: 50(fvec3) VectorShuffle 1527 1527 0 1 2
+ 1529: 50(fvec3) GroupNonUniformFMul 34 ExclusiveScan 1528
+ 1530: 40(ptr) AccessChain 27(data) 1525 29
+ 1531: 18(fvec4) Load 1530
+ 1532: 18(fvec4) VectorShuffle 1531 1529 4 5 6 3
+ Store 1530 1532
+ 1533: 6(int) Load 8(invocation)
+ 1534: 40(ptr) AccessChain 27(data) 59 29
+ 1535: 18(fvec4) Load 1534
+ 1536: 18(fvec4) GroupNonUniformFMul 34 ExclusiveScan 1535
+ 1537: 40(ptr) AccessChain 27(data) 1533 29
+ Store 1537 1536
+ 1538: 6(int) Load 8(invocation)
+ 1539: 65(ptr) AccessChain 27(data) 29 38 30
+ 1540: 19(int) Load 1539
+ 1541: 19(int) GroupNonUniformIMul 34 ExclusiveScan 1540
+ 1542: 65(ptr) AccessChain 27(data) 1538 38 30
+ Store 1542 1541
+ 1543: 6(int) Load 8(invocation)
+ 1544: 72(ptr) AccessChain 27(data) 38 38
+ 1545: 20(ivec4) Load 1544
+ 1546: 71(ivec2) VectorShuffle 1545 1545 0 1
+ 1547: 71(ivec2) GroupNonUniformIMul 34 ExclusiveScan 1546
+ 1548: 72(ptr) AccessChain 27(data) 1543 38
+ 1549: 20(ivec4) Load 1548
+ 1550: 20(ivec4) VectorShuffle 1549 1547 4 5 2 3
+ Store 1548 1550
+ 1551: 6(int) Load 8(invocation)
+ 1552: 72(ptr) AccessChain 27(data) 49 38
+ 1553: 20(ivec4) Load 1552
+ 1554: 81(ivec3) VectorShuffle 1553 1553 0 1 2
+ 1555: 81(ivec3) GroupNonUniformIMul 34 ExclusiveScan 1554
+ 1556: 72(ptr) AccessChain 27(data) 1551 38
+ 1557: 20(ivec4) Load 1556
+ 1558: 20(ivec4) VectorShuffle 1557 1555 4 5 6 3
+ Store 1556 1558
+ 1559: 6(int) Load 8(invocation)
+ 1560: 72(ptr) AccessChain 27(data) 59 38
+ 1561: 20(ivec4) Load 1560
+ 1562: 20(ivec4) GroupNonUniformIMul 34 ExclusiveScan 1561
+ 1563: 72(ptr) AccessChain 27(data) 1559 38
+ Store 1563 1562
+ 1564: 6(int) Load 8(invocation)
+ 1565: 95(ptr) AccessChain 27(data) 29 49 30
+ 1566: 6(int) Load 1565
+ 1567: 6(int) GroupNonUniformIMul 34 ExclusiveScan 1566
+ 1568: 95(ptr) AccessChain 27(data) 1564 49 30
+ Store 1568 1567
+ 1569: 6(int) Load 8(invocation)
+ 1570: 102(ptr) AccessChain 27(data) 38 49
+ 1571: 21(ivec4) Load 1570
+ 1572: 101(ivec2) VectorShuffle 1571 1571 0 1
+ 1573: 101(ivec2) GroupNonUniformIMul 34 ExclusiveScan 1572
+ 1574: 102(ptr) AccessChain 27(data) 1569 49
+ 1575: 21(ivec4) Load 1574
+ 1576: 21(ivec4) VectorShuffle 1575 1573 4 5 2 3
+ Store 1574 1576
+ 1577: 6(int) Load 8(invocation)
+ 1578: 102(ptr) AccessChain 27(data) 49 49
+ 1579: 21(ivec4) Load 1578
+ 1580: 111(ivec3) VectorShuffle 1579 1579 0 1 2
+ 1581: 111(ivec3) GroupNonUniformIMul 34 ExclusiveScan 1580
+ 1582: 102(ptr) AccessChain 27(data) 1577 49
+ 1583: 21(ivec4) Load 1582
+ 1584: 21(ivec4) VectorShuffle 1583 1581 4 5 6 3
+ Store 1582 1584
+ 1585: 6(int) Load 8(invocation)
+ 1586: 102(ptr) AccessChain 27(data) 59 49
+ 1587: 21(ivec4) Load 1586
+ 1588: 21(ivec4) GroupNonUniformIMul 34 ExclusiveScan 1587
+ 1589: 102(ptr) AccessChain 27(data) 1585 49
+ Store 1589 1588
+ 1590: 6(int) Load 8(invocation)
+ 1591: 125(ptr) AccessChain 27(data) 29 59 30
+ 1592: 22(float) Load 1591
+ 1593: 22(float) GroupNonUniformFMul 34 ExclusiveScan 1592
+ 1594: 125(ptr) AccessChain 27(data) 1590 59 30
+ Store 1594 1593
+ 1595: 6(int) Load 8(invocation)
+ 1596: 132(ptr) AccessChain 27(data) 38 59
+ 1597: 23(fvec4) Load 1596
+ 1598: 131(fvec2) VectorShuffle 1597 1597 0 1
+ 1599: 131(fvec2) GroupNonUniformFMul 34 ExclusiveScan 1598
+ 1600: 132(ptr) AccessChain 27(data) 1595 59
+ 1601: 23(fvec4) Load 1600
+ 1602: 23(fvec4) VectorShuffle 1601 1599 4 5 2 3
+ Store 1600 1602
+ 1603: 6(int) Load 8(invocation)
+ 1604: 132(ptr) AccessChain 27(data) 49 59
+ 1605: 23(fvec4) Load 1604
+ 1606: 141(fvec3) VectorShuffle 1605 1605 0 1 2
+ 1607: 141(fvec3) GroupNonUniformFMul 34 ExclusiveScan 1606
+ 1608: 132(ptr) AccessChain 27(data) 1603 59
+ 1609: 23(fvec4) Load 1608
+ 1610: 23(fvec4) VectorShuffle 1609 1607 4 5 6 3
+ Store 1608 1610
+ 1611: 6(int) Load 8(invocation)
+ 1612: 132(ptr) AccessChain 27(data) 59 59
+ 1613: 23(fvec4) Load 1612
+ 1614: 23(fvec4) GroupNonUniformFMul 34 ExclusiveScan 1613
+ 1615: 132(ptr) AccessChain 27(data) 1611 59
+ Store 1615 1614
+ 1616: 6(int) Load 8(invocation)
+ 1617: 31(ptr) AccessChain 27(data) 29 29 30
+ 1618: 17(float) Load 1617
+ 1619: 17(float) GroupNonUniformFMin 34 ExclusiveScan 1618
+ 1620: 31(ptr) AccessChain 27(data) 1616 29 30
+ Store 1620 1619
+ 1621: 6(int) Load 8(invocation)
+ 1622: 40(ptr) AccessChain 27(data) 38 29
+ 1623: 18(fvec4) Load 1622
+ 1624: 39(fvec2) VectorShuffle 1623 1623 0 1
+ 1625: 39(fvec2) GroupNonUniformFMin 34 ExclusiveScan 1624
+ 1626: 40(ptr) AccessChain 27(data) 1621 29
+ 1627: 18(fvec4) Load 1626
+ 1628: 18(fvec4) VectorShuffle 1627 1625 4 5 2 3
+ Store 1626 1628
+ 1629: 6(int) Load 8(invocation)
+ 1630: 40(ptr) AccessChain 27(data) 49 29
+ 1631: 18(fvec4) Load 1630
+ 1632: 50(fvec3) VectorShuffle 1631 1631 0 1 2
+ 1633: 50(fvec3) GroupNonUniformFMin 34 ExclusiveScan 1632
+ 1634: 40(ptr) AccessChain 27(data) 1629 29
+ 1635: 18(fvec4) Load 1634
+ 1636: 18(fvec4) VectorShuffle 1635 1633 4 5 6 3
+ Store 1634 1636
+ 1637: 6(int) Load 8(invocation)
+ 1638: 40(ptr) AccessChain 27(data) 59 29
+ 1639: 18(fvec4) Load 1638
+ 1640: 18(fvec4) GroupNonUniformFMin 34 ExclusiveScan 1639
+ 1641: 40(ptr) AccessChain 27(data) 1637 29
+ Store 1641 1640
+ 1642: 6(int) Load 8(invocation)
+ 1643: 65(ptr) AccessChain 27(data) 29 38 30
+ 1644: 19(int) Load 1643
+ 1645: 19(int) GroupNonUniformSMin 34 ExclusiveScan 1644
+ 1646: 65(ptr) AccessChain 27(data) 1642 38 30
+ Store 1646 1645
+ 1647: 6(int) Load 8(invocation)
+ 1648: 72(ptr) AccessChain 27(data) 38 38
+ 1649: 20(ivec4) Load 1648
+ 1650: 71(ivec2) VectorShuffle 1649 1649 0 1
+ 1651: 71(ivec2) GroupNonUniformSMin 34 ExclusiveScan 1650
+ 1652: 72(ptr) AccessChain 27(data) 1647 38
+ 1653: 20(ivec4) Load 1652
+ 1654: 20(ivec4) VectorShuffle 1653 1651 4 5 2 3
+ Store 1652 1654
+ 1655: 6(int) Load 8(invocation)
+ 1656: 72(ptr) AccessChain 27(data) 49 38
+ 1657: 20(ivec4) Load 1656
+ 1658: 81(ivec3) VectorShuffle 1657 1657 0 1 2
+ 1659: 81(ivec3) GroupNonUniformSMin 34 ExclusiveScan 1658
+ 1660: 72(ptr) AccessChain 27(data) 1655 38
+ 1661: 20(ivec4) Load 1660
+ 1662: 20(ivec4) VectorShuffle 1661 1659 4 5 6 3
+ Store 1660 1662
+ 1663: 6(int) Load 8(invocation)
+ 1664: 72(ptr) AccessChain 27(data) 59 38
+ 1665: 20(ivec4) Load 1664
+ 1666: 20(ivec4) GroupNonUniformSMin 34 ExclusiveScan 1665
+ 1667: 72(ptr) AccessChain 27(data) 1663 38
+ Store 1667 1666
+ 1668: 6(int) Load 8(invocation)
+ 1669: 95(ptr) AccessChain 27(data) 29 49 30
+ 1670: 6(int) Load 1669
+ 1671: 6(int) GroupNonUniformUMin 34 ExclusiveScan 1670
+ 1672: 95(ptr) AccessChain 27(data) 1668 49 30
+ Store 1672 1671
+ 1673: 6(int) Load 8(invocation)
+ 1674: 102(ptr) AccessChain 27(data) 38 49
+ 1675: 21(ivec4) Load 1674
+ 1676: 101(ivec2) VectorShuffle 1675 1675 0 1
+ 1677: 101(ivec2) GroupNonUniformUMin 34 ExclusiveScan 1676
+ 1678: 102(ptr) AccessChain 27(data) 1673 49
+ 1679: 21(ivec4) Load 1678
+ 1680: 21(ivec4) VectorShuffle 1679 1677 4 5 2 3
+ Store 1678 1680
+ 1681: 6(int) Load 8(invocation)
+ 1682: 102(ptr) AccessChain 27(data) 49 49
+ 1683: 21(ivec4) Load 1682
+ 1684: 111(ivec3) VectorShuffle 1683 1683 0 1 2
+ 1685: 111(ivec3) GroupNonUniformUMin 34 ExclusiveScan 1684
+ 1686: 102(ptr) AccessChain 27(data) 1681 49
+ 1687: 21(ivec4) Load 1686
+ 1688: 21(ivec4) VectorShuffle 1687 1685 4 5 6 3
+ Store 1686 1688
+ 1689: 6(int) Load 8(invocation)
+ 1690: 102(ptr) AccessChain 27(data) 59 49
+ 1691: 21(ivec4) Load 1690
+ 1692: 21(ivec4) GroupNonUniformUMin 34 ExclusiveScan 1691
+ 1693: 102(ptr) AccessChain 27(data) 1689 49
+ Store 1693 1692
+ 1694: 6(int) Load 8(invocation)
+ 1695: 125(ptr) AccessChain 27(data) 29 59 30
+ 1696: 22(float) Load 1695
+ 1697: 22(float) GroupNonUniformFMin 34 ExclusiveScan 1696
+ 1698: 125(ptr) AccessChain 27(data) 1694 59 30
+ Store 1698 1697
+ 1699: 6(int) Load 8(invocation)
+ 1700: 132(ptr) AccessChain 27(data) 38 59
+ 1701: 23(fvec4) Load 1700
+ 1702: 131(fvec2) VectorShuffle 1701 1701 0 1
+ 1703: 131(fvec2) GroupNonUniformFMin 34 ExclusiveScan 1702
+ 1704: 132(ptr) AccessChain 27(data) 1699 59
+ 1705: 23(fvec4) Load 1704
+ 1706: 23(fvec4) VectorShuffle 1705 1703 4 5 2 3
+ Store 1704 1706
+ 1707: 6(int) Load 8(invocation)
+ 1708: 132(ptr) AccessChain 27(data) 49 59
+ 1709: 23(fvec4) Load 1708
+ 1710: 141(fvec3) VectorShuffle 1709 1709 0 1 2
+ 1711: 141(fvec3) GroupNonUniformFMin 34 ExclusiveScan 1710
+ 1712: 132(ptr) AccessChain 27(data) 1707 59
+ 1713: 23(fvec4) Load 1712
+ 1714: 23(fvec4) VectorShuffle 1713 1711 4 5 6 3
+ Store 1712 1714
+ 1715: 6(int) Load 8(invocation)
+ 1716: 132(ptr) AccessChain 27(data) 59 59
+ 1717: 23(fvec4) Load 1716
+ 1718: 23(fvec4) GroupNonUniformFMin 34 ExclusiveScan 1717
+ 1719: 132(ptr) AccessChain 27(data) 1715 59
+ Store 1719 1718
+ 1720: 6(int) Load 8(invocation)
+ 1721: 31(ptr) AccessChain 27(data) 29 29 30
+ 1722: 17(float) Load 1721
+ 1723: 17(float) GroupNonUniformFMax 34 ExclusiveScan 1722
+ 1724: 31(ptr) AccessChain 27(data) 1720 29 30
+ Store 1724 1723
+ 1725: 6(int) Load 8(invocation)
+ 1726: 40(ptr) AccessChain 27(data) 38 29
+ 1727: 18(fvec4) Load 1726
+ 1728: 39(fvec2) VectorShuffle 1727 1727 0 1
+ 1729: 39(fvec2) GroupNonUniformFMax 34 ExclusiveScan 1728
+ 1730: 40(ptr) AccessChain 27(data) 1725 29
+ 1731: 18(fvec4) Load 1730
+ 1732: 18(fvec4) VectorShuffle 1731 1729 4 5 2 3
+ Store 1730 1732
+ 1733: 6(int) Load 8(invocation)
+ 1734: 40(ptr) AccessChain 27(data) 49 29
+ 1735: 18(fvec4) Load 1734
+ 1736: 50(fvec3) VectorShuffle 1735 1735 0 1 2
+ 1737: 50(fvec3) GroupNonUniformFMax 34 ExclusiveScan 1736
+ 1738: 40(ptr) AccessChain 27(data) 1733 29
+ 1739: 18(fvec4) Load 1738
+ 1740: 18(fvec4) VectorShuffle 1739 1737 4 5 6 3
+ Store 1738 1740
+ 1741: 6(int) Load 8(invocation)
+ 1742: 40(ptr) AccessChain 27(data) 59 29
+ 1743: 18(fvec4) Load 1742
+ 1744: 18(fvec4) GroupNonUniformFMax 34 ExclusiveScan 1743
+ 1745: 40(ptr) AccessChain 27(data) 1741 29
+ Store 1745 1744
+ 1746: 6(int) Load 8(invocation)
+ 1747: 65(ptr) AccessChain 27(data) 29 38 30
+ 1748: 19(int) Load 1747
+ 1749: 19(int) GroupNonUniformSMax 34 ExclusiveScan 1748
+ 1750: 65(ptr) AccessChain 27(data) 1746 38 30
+ Store 1750 1749
+ 1751: 6(int) Load 8(invocation)
+ 1752: 72(ptr) AccessChain 27(data) 38 38
+ 1753: 20(ivec4) Load 1752
+ 1754: 71(ivec2) VectorShuffle 1753 1753 0 1
+ 1755: 71(ivec2) GroupNonUniformSMax 34 ExclusiveScan 1754
+ 1756: 72(ptr) AccessChain 27(data) 1751 38
+ 1757: 20(ivec4) Load 1756
+ 1758: 20(ivec4) VectorShuffle 1757 1755 4 5 2 3
+ Store 1756 1758
+ 1759: 6(int) Load 8(invocation)
+ 1760: 72(ptr) AccessChain 27(data) 49 38
+ 1761: 20(ivec4) Load 1760
+ 1762: 81(ivec3) VectorShuffle 1761 1761 0 1 2
+ 1763: 81(ivec3) GroupNonUniformSMax 34 ExclusiveScan 1762
+ 1764: 72(ptr) AccessChain 27(data) 1759 38
+ 1765: 20(ivec4) Load 1764
+ 1766: 20(ivec4) VectorShuffle 1765 1763 4 5 6 3
+ Store 1764 1766
+ 1767: 6(int) Load 8(invocation)
+ 1768: 72(ptr) AccessChain 27(data) 59 38
+ 1769: 20(ivec4) Load 1768
+ 1770: 20(ivec4) GroupNonUniformSMax 34 ExclusiveScan 1769
+ 1771: 72(ptr) AccessChain 27(data) 1767 38
+ Store 1771 1770
+ 1772: 6(int) Load 8(invocation)
+ 1773: 95(ptr) AccessChain 27(data) 29 49 30
+ 1774: 6(int) Load 1773
+ 1775: 6(int) GroupNonUniformUMax 34 ExclusiveScan 1774
+ 1776: 95(ptr) AccessChain 27(data) 1772 49 30
+ Store 1776 1775
+ 1777: 6(int) Load 8(invocation)
+ 1778: 102(ptr) AccessChain 27(data) 38 49
+ 1779: 21(ivec4) Load 1778
+ 1780: 101(ivec2) VectorShuffle 1779 1779 0 1
+ 1781: 101(ivec2) GroupNonUniformUMax 34 ExclusiveScan 1780
+ 1782: 102(ptr) AccessChain 27(data) 1777 49
+ 1783: 21(ivec4) Load 1782
+ 1784: 21(ivec4) VectorShuffle 1783 1781 4 5 2 3
+ Store 1782 1784
+ 1785: 6(int) Load 8(invocation)
+ 1786: 102(ptr) AccessChain 27(data) 49 49
+ 1787: 21(ivec4) Load 1786
+ 1788: 111(ivec3) VectorShuffle 1787 1787 0 1 2
+ 1789: 111(ivec3) GroupNonUniformUMax 34 ExclusiveScan 1788
+ 1790: 102(ptr) AccessChain 27(data) 1785 49
+ 1791: 21(ivec4) Load 1790
+ 1792: 21(ivec4) VectorShuffle 1791 1789 4 5 6 3
+ Store 1790 1792
+ 1793: 6(int) Load 8(invocation)
+ 1794: 102(ptr) AccessChain 27(data) 59 49
+ 1795: 21(ivec4) Load 1794
+ 1796: 21(ivec4) GroupNonUniformUMax 34 ExclusiveScan 1795
+ 1797: 102(ptr) AccessChain 27(data) 1793 49
+ Store 1797 1796
+ 1798: 6(int) Load 8(invocation)
+ 1799: 125(ptr) AccessChain 27(data) 29 59 30
+ 1800: 22(float) Load 1799
+ 1801: 22(float) GroupNonUniformFMax 34 ExclusiveScan 1800
+ 1802: 125(ptr) AccessChain 27(data) 1798 59 30
+ Store 1802 1801
+ 1803: 6(int) Load 8(invocation)
+ 1804: 132(ptr) AccessChain 27(data) 38 59
+ 1805: 23(fvec4) Load 1804
+ 1806: 131(fvec2) VectorShuffle 1805 1805 0 1
+ 1807: 131(fvec2) GroupNonUniformFMax 34 ExclusiveScan 1806
+ 1808: 132(ptr) AccessChain 27(data) 1803 59
+ 1809: 23(fvec4) Load 1808
+ 1810: 23(fvec4) VectorShuffle 1809 1807 4 5 2 3
+ Store 1808 1810
+ 1811: 6(int) Load 8(invocation)
+ 1812: 132(ptr) AccessChain 27(data) 49 59
+ 1813: 23(fvec4) Load 1812
+ 1814: 141(fvec3) VectorShuffle 1813 1813 0 1 2
+ 1815: 141(fvec3) GroupNonUniformFMax 34 ExclusiveScan 1814
+ 1816: 132(ptr) AccessChain 27(data) 1811 59
+ 1817: 23(fvec4) Load 1816
+ 1818: 23(fvec4) VectorShuffle 1817 1815 4 5 6 3
+ Store 1816 1818
+ 1819: 6(int) Load 8(invocation)
+ 1820: 132(ptr) AccessChain 27(data) 59 59
+ 1821: 23(fvec4) Load 1820
+ 1822: 23(fvec4) GroupNonUniformFMax 34 ExclusiveScan 1821
+ 1823: 132(ptr) AccessChain 27(data) 1819 59
+ Store 1823 1822
+ 1824: 6(int) Load 8(invocation)
+ 1825: 65(ptr) AccessChain 27(data) 29 38 30
+ 1826: 19(int) Load 1825
+ 1827: 19(int) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1826
+ 1828: 65(ptr) AccessChain 27(data) 1824 38 30
+ Store 1828 1827
+ 1829: 6(int) Load 8(invocation)
+ 1830: 72(ptr) AccessChain 27(data) 38 38
+ 1831: 20(ivec4) Load 1830
+ 1832: 71(ivec2) VectorShuffle 1831 1831 0 1
+ 1833: 71(ivec2) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1832
+ 1834: 72(ptr) AccessChain 27(data) 1829 38
+ 1835: 20(ivec4) Load 1834
+ 1836: 20(ivec4) VectorShuffle 1835 1833 4 5 2 3
+ Store 1834 1836
+ 1837: 6(int) Load 8(invocation)
+ 1838: 72(ptr) AccessChain 27(data) 49 38
+ 1839: 20(ivec4) Load 1838
+ 1840: 81(ivec3) VectorShuffle 1839 1839 0 1 2
+ 1841: 81(ivec3) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1840
+ 1842: 72(ptr) AccessChain 27(data) 1837 38
+ 1843: 20(ivec4) Load 1842
+ 1844: 20(ivec4) VectorShuffle 1843 1841 4 5 6 3
+ Store 1842 1844
+ 1845: 6(int) Load 8(invocation)
+ 1846: 72(ptr) AccessChain 27(data) 59 38
+ 1847: 20(ivec4) Load 1846
+ 1848: 20(ivec4) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1847
+ 1849: 72(ptr) AccessChain 27(data) 1845 38
+ Store 1849 1848
+ 1850: 6(int) Load 8(invocation)
+ 1851: 95(ptr) AccessChain 27(data) 29 49 30
+ 1852: 6(int) Load 1851
+ 1853: 6(int) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1852
+ 1854: 95(ptr) AccessChain 27(data) 1850 49 30
+ Store 1854 1853
+ 1855: 6(int) Load 8(invocation)
+ 1856: 102(ptr) AccessChain 27(data) 38 49
+ 1857: 21(ivec4) Load 1856
+ 1858: 101(ivec2) VectorShuffle 1857 1857 0 1
+ 1859: 101(ivec2) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1858
+ 1860: 102(ptr) AccessChain 27(data) 1855 49
+ 1861: 21(ivec4) Load 1860
+ 1862: 21(ivec4) VectorShuffle 1861 1859 4 5 2 3
+ Store 1860 1862
+ 1863: 6(int) Load 8(invocation)
+ 1864: 102(ptr) AccessChain 27(data) 49 49
+ 1865: 21(ivec4) Load 1864
+ 1866: 111(ivec3) VectorShuffle 1865 1865 0 1 2
+ 1867: 111(ivec3) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1866
+ 1868: 102(ptr) AccessChain 27(data) 1863 49
+ 1869: 21(ivec4) Load 1868
+ 1870: 21(ivec4) VectorShuffle 1869 1867 4 5 6 3
+ Store 1868 1870
+ 1871: 6(int) Load 8(invocation)
+ 1872: 102(ptr) AccessChain 27(data) 59 49
+ 1873: 21(ivec4) Load 1872
+ 1874: 21(ivec4) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1873
+ 1875: 102(ptr) AccessChain 27(data) 1871 49
+ Store 1875 1874
+ 1876: 6(int) Load 8(invocation)
+ 1877: 65(ptr) AccessChain 27(data) 29 38 30
+ 1878: 19(int) Load 1877
+ 1879: 521(bool) SLessThan 1878 29
+ 1880: 521(bool) GroupNonUniformLogicalAnd 34 ExclusiveScan 1879
+ 1881: 19(int) Select 1880 38 29
+ 1882: 65(ptr) AccessChain 27(data) 1876 38 30
+ Store 1882 1881
+ 1883: 6(int) Load 8(invocation)
+ 1884: 72(ptr) AccessChain 27(data) 38 38
+ 1885: 20(ivec4) Load 1884
+ 1886: 71(ivec2) VectorShuffle 1885 1885 0 1
+ 1887: 531(bvec2) SLessThan 1886 530
+ 1888: 531(bvec2) GroupNonUniformLogicalAnd 34 ExclusiveScan 1887
+ 1889: 71(ivec2) Select 1888 534 530
+ 1890: 72(ptr) AccessChain 27(data) 1883 38
+ 1891: 20(ivec4) Load 1890
+ 1892: 20(ivec4) VectorShuffle 1891 1889 4 5 2 3
+ Store 1890 1892
+ 1893: 6(int) Load 8(invocation)
+ 1894: 72(ptr) AccessChain 27(data) 38 38
+ 1895: 20(ivec4) Load 1894
+ 1896: 81(ivec3) VectorShuffle 1895 1895 0 1 2
+ 1897: 544(bvec3) SLessThan 1896 543
+ 1898: 544(bvec3) GroupNonUniformLogicalAnd 34 ExclusiveScan 1897
+ 1899: 81(ivec3) Select 1898 547 543
+ 1900: 72(ptr) AccessChain 27(data) 1893 38
+ 1901: 20(ivec4) Load 1900
+ 1902: 20(ivec4) VectorShuffle 1901 1899 4 5 6 3
+ Store 1900 1902
+ 1903: 6(int) Load 8(invocation)
+ 1904: 72(ptr) AccessChain 27(data) 38 38
+ 1905: 20(ivec4) Load 1904
+ 1906: 556(bvec4) SLessThan 1905 555
+ 1907: 556(bvec4) GroupNonUniformLogicalAnd 34 ExclusiveScan 1906
+ 1908: 20(ivec4) Select 1907 559 555
+ 1909: 72(ptr) AccessChain 27(data) 1903 38
+ Store 1909 1908
+ 1910: 6(int) Load 8(invocation)
+ 1911: 65(ptr) AccessChain 27(data) 29 38 30
+ 1912: 19(int) Load 1911
+ 1913: 19(int) GroupNonUniformBitwiseOr 34 ExclusiveScan 1912
+ 1914: 65(ptr) AccessChain 27(data) 1910 38 30
+ Store 1914 1913
+ 1915: 6(int) Load 8(invocation)
+ 1916: 72(ptr) AccessChain 27(data) 38 38
+ 1917: 20(ivec4) Load 1916
+ 1918: 71(ivec2) VectorShuffle 1917 1917 0 1
+ 1919: 71(ivec2) GroupNonUniformBitwiseOr 34 ExclusiveScan 1918
+ 1920: 72(ptr) AccessChain 27(data) 1915 38
+ 1921: 20(ivec4) Load 1920
+ 1922: 20(ivec4) VectorShuffle 1921 1919 4 5 2 3
+ Store 1920 1922
+ 1923: 6(int) Load 8(invocation)
+ 1924: 72(ptr) AccessChain 27(data) 49 38
+ 1925: 20(ivec4) Load 1924
+ 1926: 81(ivec3) VectorShuffle 1925 1925 0 1 2
+ 1927: 81(ivec3) GroupNonUniformBitwiseOr 34 ExclusiveScan 1926
+ 1928: 72(ptr) AccessChain 27(data) 1923 38
+ 1929: 20(ivec4) Load 1928
+ 1930: 20(ivec4) VectorShuffle 1929 1927 4 5 6 3
+ Store 1928 1930
+ 1931: 6(int) Load 8(invocation)
+ 1932: 72(ptr) AccessChain 27(data) 59 38
+ 1933: 20(ivec4) Load 1932
+ 1934: 20(ivec4) GroupNonUniformBitwiseOr 34 ExclusiveScan 1933
+ 1935: 72(ptr) AccessChain 27(data) 1931 38
+ Store 1935 1934
+ 1936: 6(int) Load 8(invocation)
+ 1937: 95(ptr) AccessChain 27(data) 29 49 30
+ 1938: 6(int) Load 1937
+ 1939: 6(int) GroupNonUniformBitwiseOr 34 ExclusiveScan 1938
+ 1940: 95(ptr) AccessChain 27(data) 1936 49 30
+ Store 1940 1939
+ 1941: 6(int) Load 8(invocation)
+ 1942: 102(ptr) AccessChain 27(data) 38 49
+ 1943: 21(ivec4) Load 1942
+ 1944: 101(ivec2) VectorShuffle 1943 1943 0 1
+ 1945: 101(ivec2) GroupNonUniformBitwiseOr 34 ExclusiveScan 1944
+ 1946: 102(ptr) AccessChain 27(data) 1941 49
+ 1947: 21(ivec4) Load 1946
+ 1948: 21(ivec4) VectorShuffle 1947 1945 4 5 2 3
+ Store 1946 1948
+ 1949: 6(int) Load 8(invocation)
+ 1950: 102(ptr) AccessChain 27(data) 49 49
+ 1951: 21(ivec4) Load 1950
+ 1952: 111(ivec3) VectorShuffle 1951 1951 0 1 2
+ 1953: 111(ivec3) GroupNonUniformBitwiseOr 34 ExclusiveScan 1952
+ 1954: 102(ptr) AccessChain 27(data) 1949 49
+ 1955: 21(ivec4) Load 1954
+ 1956: 21(ivec4) VectorShuffle 1955 1953 4 5 6 3
+ Store 1954 1956
+ 1957: 6(int) Load 8(invocation)
+ 1958: 102(ptr) AccessChain 27(data) 59 49
+ 1959: 21(ivec4) Load 1958
+ 1960: 21(ivec4) GroupNonUniformBitwiseOr 34 ExclusiveScan 1959
+ 1961: 102(ptr) AccessChain 27(data) 1957 49
+ Store 1961 1960
+ 1962: 6(int) Load 8(invocation)
+ 1963: 65(ptr) AccessChain 27(data) 29 38 30
+ 1964: 19(int) Load 1963
+ 1965: 521(bool) SLessThan 1964 29
+ 1966: 521(bool) GroupNonUniformLogicalOr 34 ExclusiveScan 1965
+ 1967: 19(int) Select 1966 38 29
+ 1968: 65(ptr) AccessChain 27(data) 1962 38 30
+ Store 1968 1967
+ 1969: 6(int) Load 8(invocation)
+ 1970: 72(ptr) AccessChain 27(data) 38 38
+ 1971: 20(ivec4) Load 1970
+ 1972: 71(ivec2) VectorShuffle 1971 1971 0 1
+ 1973: 531(bvec2) SLessThan 1972 530
+ 1974: 531(bvec2) GroupNonUniformLogicalOr 34 ExclusiveScan 1973
+ 1975: 71(ivec2) Select 1974 534 530
+ 1976: 72(ptr) AccessChain 27(data) 1969 38
+ 1977: 20(ivec4) Load 1976
+ 1978: 20(ivec4) VectorShuffle 1977 1975 4 5 2 3
+ Store 1976 1978
+ 1979: 6(int) Load 8(invocation)
+ 1980: 72(ptr) AccessChain 27(data) 38 38
+ 1981: 20(ivec4) Load 1980
+ 1982: 81(ivec3) VectorShuffle 1981 1981 0 1 2
+ 1983: 544(bvec3) SLessThan 1982 543
+ 1984: 544(bvec3) GroupNonUniformLogicalOr 34 ExclusiveScan 1983
+ 1985: 81(ivec3) Select 1984 547 543
+ 1986: 72(ptr) AccessChain 27(data) 1979 38
+ 1987: 20(ivec4) Load 1986
+ 1988: 20(ivec4) VectorShuffle 1987 1985 4 5 6 3
+ Store 1986 1988
+ 1989: 6(int) Load 8(invocation)
+ 1990: 72(ptr) AccessChain 27(data) 38 38
+ 1991: 20(ivec4) Load 1990
+ 1992: 556(bvec4) SLessThan 1991 555
+ 1993: 556(bvec4) GroupNonUniformLogicalOr 34 ExclusiveScan 1992
+ 1994: 20(ivec4) Select 1993 559 555
+ 1995: 72(ptr) AccessChain 27(data) 1989 38
+ Store 1995 1994
+ 1996: 6(int) Load 8(invocation)
+ 1997: 65(ptr) AccessChain 27(data) 29 38 30
+ 1998: 19(int) Load 1997
+ 1999: 19(int) GroupNonUniformBitwiseXor 34 ExclusiveScan 1998
+ 2000: 65(ptr) AccessChain 27(data) 1996 38 30
+ Store 2000 1999
+ 2001: 6(int) Load 8(invocation)
+ 2002: 72(ptr) AccessChain 27(data) 38 38
+ 2003: 20(ivec4) Load 2002
+ 2004: 71(ivec2) VectorShuffle 2003 2003 0 1
+ 2005: 71(ivec2) GroupNonUniformBitwiseXor 34 ExclusiveScan 2004
+ 2006: 72(ptr) AccessChain 27(data) 2001 38
+ 2007: 20(ivec4) Load 2006
+ 2008: 20(ivec4) VectorShuffle 2007 2005 4 5 2 3
+ Store 2006 2008
+ 2009: 6(int) Load 8(invocation)
+ 2010: 72(ptr) AccessChain 27(data) 49 38
+ 2011: 20(ivec4) Load 2010
+ 2012: 81(ivec3) VectorShuffle 2011 2011 0 1 2
+ 2013: 81(ivec3) GroupNonUniformBitwiseXor 34 ExclusiveScan 2012
+ 2014: 72(ptr) AccessChain 27(data) 2009 38
+ 2015: 20(ivec4) Load 2014
+ 2016: 20(ivec4) VectorShuffle 2015 2013 4 5 6 3
+ Store 2014 2016
+ 2017: 6(int) Load 8(invocation)
+ 2018: 72(ptr) AccessChain 27(data) 59 38
+ 2019: 20(ivec4) Load 2018
+ 2020: 20(ivec4) GroupNonUniformBitwiseXor 34 ExclusiveScan 2019
+ 2021: 72(ptr) AccessChain 27(data) 2017 38
+ Store 2021 2020
+ 2022: 6(int) Load 8(invocation)
+ 2023: 95(ptr) AccessChain 27(data) 29 49 30
+ 2024: 6(int) Load 2023
+ 2025: 6(int) GroupNonUniformBitwiseXor 34 ExclusiveScan 2024
+ 2026: 95(ptr) AccessChain 27(data) 2022 49 30
+ Store 2026 2025
+ 2027: 6(int) Load 8(invocation)
+ 2028: 102(ptr) AccessChain 27(data) 38 49
+ 2029: 21(ivec4) Load 2028
+ 2030: 101(ivec2) VectorShuffle 2029 2029 0 1
+ 2031: 101(ivec2) GroupNonUniformBitwiseXor 34 ExclusiveScan 2030
+ 2032: 102(ptr) AccessChain 27(data) 2027 49
+ 2033: 21(ivec4) Load 2032
+ 2034: 21(ivec4) VectorShuffle 2033 2031 4 5 2 3
+ Store 2032 2034
+ 2035: 6(int) Load 8(invocation)
+ 2036: 102(ptr) AccessChain 27(data) 49 49
+ 2037: 21(ivec4) Load 2036
+ 2038: 111(ivec3) VectorShuffle 2037 2037 0 1 2
+ 2039: 111(ivec3) GroupNonUniformBitwiseXor 34 ExclusiveScan 2038
+ 2040: 102(ptr) AccessChain 27(data) 2035 49
+ 2041: 21(ivec4) Load 2040
+ 2042: 21(ivec4) VectorShuffle 2041 2039 4 5 6 3
+ Store 2040 2042
+ 2043: 6(int) Load 8(invocation)
+ 2044: 102(ptr) AccessChain 27(data) 59 49
+ 2045: 21(ivec4) Load 2044
+ 2046: 21(ivec4) GroupNonUniformBitwiseXor 34 ExclusiveScan 2045
+ 2047: 102(ptr) AccessChain 27(data) 2043 49
+ Store 2047 2046
+ 2048: 6(int) Load 8(invocation)
+ 2049: 65(ptr) AccessChain 27(data) 29 38 30
+ 2050: 19(int) Load 2049
+ 2051: 521(bool) SLessThan 2050 29
+ 2052: 521(bool) GroupNonUniformLogicalXor 34 ExclusiveScan 2051
+ 2053: 19(int) Select 2052 38 29
+ 2054: 65(ptr) AccessChain 27(data) 2048 38 30
+ Store 2054 2053
+ 2055: 6(int) Load 8(invocation)
+ 2056: 72(ptr) AccessChain 27(data) 38 38
+ 2057: 20(ivec4) Load 2056
+ 2058: 71(ivec2) VectorShuffle 2057 2057 0 1
+ 2059: 531(bvec2) SLessThan 2058 530
+ 2060: 531(bvec2) GroupNonUniformLogicalXor 34 ExclusiveScan 2059
+ 2061: 71(ivec2) Select 2060 534 530
+ 2062: 72(ptr) AccessChain 27(data) 2055 38
+ 2063: 20(ivec4) Load 2062
+ 2064: 20(ivec4) VectorShuffle 2063 2061 4 5 2 3
+ Store 2062 2064
+ 2065: 6(int) Load 8(invocation)
+ 2066: 72(ptr) AccessChain 27(data) 38 38
+ 2067: 20(ivec4) Load 2066
+ 2068: 81(ivec3) VectorShuffle 2067 2067 0 1 2
+ 2069: 544(bvec3) SLessThan 2068 543
+ 2070: 544(bvec3) GroupNonUniformLogicalXor 34 ExclusiveScan 2069
+ 2071: 81(ivec3) Select 2070 547 543
+ 2072: 72(ptr) AccessChain 27(data) 2065 38
+ 2073: 20(ivec4) Load 2072
+ 2074: 20(ivec4) VectorShuffle 2073 2071 4 5 6 3
+ Store 2072 2074
+ 2075: 6(int) Load 8(invocation)
+ 2076: 72(ptr) AccessChain 27(data) 38 38
+ 2077: 20(ivec4) Load 2076
+ 2078: 556(bvec4) SLessThan 2077 555
+ 2079: 556(bvec4) GroupNonUniformLogicalXor 34 ExclusiveScan 2078
+ 2080: 20(ivec4) Select 2079 559 555
+ 2081: 72(ptr) AccessChain 27(data) 2075 38
+ Store 2081 2080
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupBallot.comp.out b/Test/baseResults/spv.subgroupBallot.comp.out
new file mode 100644
index 0000000..01d5b62
--- /dev/null
+++ b/Test/baseResults/spv.subgroupBallot.comp.out
@@ -0,0 +1,525 @@
+spv.subgroupBallot.comp
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 417
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformBallot
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12 21 23 26 29 32
+ ExecutionMode 4 LocalSize 8 8 1
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_ballot"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 19 "relMask"
+ Name 21 "gl_SubgroupEqMask"
+ Name 23 "gl_SubgroupGeMask"
+ Name 26 "gl_SubgroupGtMask"
+ Name 29 "gl_SubgroupLeMask"
+ Name 32 "gl_SubgroupLtMask"
+ Name 35 "result"
+ Name 46 "Buffers"
+ MemberName 46(Buffers) 0 "f4"
+ MemberName 46(Buffers) 1 "i4"
+ MemberName 46(Buffers) 2 "u4"
+ MemberName 46(Buffers) 3 "d4"
+ Name 49 "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
+ Decorate 21(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
+ Decorate 23(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
+ Decorate 26(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
+ Decorate 29(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
+ Decorate 32(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
+ MemberDecorate 46(Buffers) 0 Offset 0
+ MemberDecorate 46(Buffers) 1 Offset 16
+ MemberDecorate 46(Buffers) 2 Offset 32
+ MemberDecorate 46(Buffers) 3 Offset 64
+ Decorate 46(Buffers) BufferBlock
+ Decorate 49(data) DescriptorSet 0
+ Decorate 49(data) Binding 0
+ Decorate 416 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)
+ 20: TypePointer Input 17(ivec4)
+21(gl_SubgroupEqMask): 20(ptr) Variable Input
+23(gl_SubgroupGeMask): 20(ptr) Variable Input
+26(gl_SubgroupGtMask): 20(ptr) Variable Input
+29(gl_SubgroupLeMask): 20(ptr) Variable Input
+32(gl_SubgroupLtMask): 20(ptr) Variable Input
+ 36: TypeBool
+ 37: 36(bool) ConstantTrue
+ 38: 6(int) Constant 3
+ 40: TypeFloat 32
+ 41: TypeVector 40(float) 4
+ 42: TypeInt 32 1
+ 43: TypeVector 42(int) 4
+ 44: TypeFloat 64
+ 45: TypeVector 44(float) 4
+ 46(Buffers): TypeStruct 41(fvec4) 43(ivec4) 17(ivec4) 45(fvec4)
+ 47: TypeArray 46(Buffers) 15
+ 48: TypePointer Uniform 47
+ 49(data): 48(ptr) Variable Uniform
+ 51: 42(int) Constant 2
+ 54: 6(int) Constant 0
+ 55: TypePointer Uniform 6(int)
+ 60: 42(int) Constant 1
+ 61: 42(int) Constant 0
+ 64: 6(int) Constant 1
+ 72: 6(int) Constant 2
+ 83: TypeVector 36(bool) 4
+ 88: TypePointer Uniform 17(ivec4)
+ 96: TypePointer Uniform 40(float)
+ 103: TypeVector 40(float) 2
+ 104: TypePointer Uniform 41(fvec4)
+ 114: TypeVector 40(float) 3
+ 124: 42(int) Constant 3
+ 131: TypePointer Uniform 42(int)
+ 138: TypeVector 42(int) 2
+ 139: TypePointer Uniform 43(ivec4)
+ 149: TypeVector 42(int) 3
+ 171: TypeVector 6(int) 2
+ 181: TypeVector 6(int) 3
+ 197: TypePointer Uniform 44(float)
+ 204: TypeVector 44(float) 2
+ 205: TypePointer Uniform 45(fvec4)
+ 215: TypeVector 44(float) 3
+ 242: 138(ivec2) ConstantComposite 61 61
+ 243: TypeVector 36(bool) 2
+ 247: 138(ivec2) ConstantComposite 60 60
+ 256: 149(ivec3) ConstantComposite 61 61 61
+ 257: TypeVector 36(bool) 3
+ 261: 149(ivec3) ConstantComposite 60 60 60
+ 269: 43(ivec4) ConstantComposite 61 61 61 61
+ 273: 43(ivec4) ConstantComposite 60 60 60 60
+ 415: 6(int) Constant 8
+ 416: 181(ivec3) ConstantComposite 415 415 64
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(ptr) Variable Function
+ 19(relMask): 18(ptr) Variable Function
+ 35(result): 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
+ 22: 17(ivec4) Load 21(gl_SubgroupEqMask)
+ 24: 17(ivec4) Load 23(gl_SubgroupGeMask)
+ 25: 17(ivec4) IAdd 22 24
+ 27: 17(ivec4) Load 26(gl_SubgroupGtMask)
+ 28: 17(ivec4) IAdd 25 27
+ 30: 17(ivec4) Load 29(gl_SubgroupLeMask)
+ 31: 17(ivec4) IAdd 28 30
+ 33: 17(ivec4) Load 32(gl_SubgroupLtMask)
+ 34: 17(ivec4) IAdd 31 33
+ Store 19(relMask) 34
+ 39: 17(ivec4) GroupNonUniformBallot 38 37
+ Store 35(result) 39
+ 50: 6(int) Load 8(invocation)
+ 52: 17(ivec4) Load 35(result)
+ 53: 6(int) GroupNonUniformBallotBitCount 38 Reduce 52
+ 56: 55(ptr) AccessChain 49(data) 50 51 54
+ Store 56 53
+ 57: 6(int) Load 8(invocation)
+ 58: 17(ivec4) Load 35(result)
+ 59: 36(bool) GroupNonUniformBallotBitExtract 38 58 54
+ 62: 42(int) Select 59 60 61
+ 63: 6(int) Bitcast 62
+ 65: 55(ptr) AccessChain 49(data) 57 51 64
+ Store 65 63
+ 66: 6(int) Load 8(invocation)
+ 67: 17(ivec4) Load 35(result)
+ 68: 6(int) GroupNonUniformBallotBitCount 38 InclusiveScan 67
+ 69: 17(ivec4) Load 35(result)
+ 70: 6(int) GroupNonUniformBallotBitCount 38 ExclusiveScan 69
+ 71: 6(int) IAdd 68 70
+ 73: 55(ptr) AccessChain 49(data) 66 51 72
+ Store 73 71
+ 74: 6(int) Load 8(invocation)
+ 75: 17(ivec4) Load 35(result)
+ 76: 6(int) GroupNonUniformBallotFindLSB 38 75
+ 77: 17(ivec4) Load 35(result)
+ 78: 6(int) GroupNonUniformBallotFindMSB 38 77
+ 79: 6(int) IAdd 76 78
+ 80: 55(ptr) AccessChain 49(data) 74 51 38
+ Store 80 79
+ 81: 17(ivec4) Load 19(relMask)
+ 82: 17(ivec4) Load 35(result)
+ 84: 83(bvec4) IEqual 81 82
+ 85: 36(bool) All 84
+ SelectionMerge 87 None
+ BranchConditional 85 86 87
+ 86: Label
+ 89: 88(ptr) AccessChain 49(data) 61 51
+ 90: 17(ivec4) Load 89
+ 91: 36(bool) GroupNonUniformInverseBallot 38 90
+ Branch 87
+ 87: Label
+ 92: 36(bool) Phi 85 5 91 86
+ SelectionMerge 94 None
+ BranchConditional 92 93 276
+ 93: Label
+ 95: 6(int) Load 8(invocation)
+ 97: 96(ptr) AccessChain 49(data) 61 61 54
+ 98: 40(float) Load 97
+ 99: 6(int) Load 8(invocation)
+ 100: 40(float) GroupNonUniformBroadcast 38 98 99
+ 101: 96(ptr) AccessChain 49(data) 95 61 54
+ Store 101 100
+ 102: 6(int) Load 8(invocation)
+ 105: 104(ptr) AccessChain 49(data) 60 61
+ 106: 41(fvec4) Load 105
+ 107: 103(fvec2) VectorShuffle 106 106 0 1
+ 108: 6(int) Load 8(invocation)
+ 109: 103(fvec2) GroupNonUniformBroadcast 38 107 108
+ 110: 104(ptr) AccessChain 49(data) 102 61
+ 111: 41(fvec4) Load 110
+ 112: 41(fvec4) VectorShuffle 111 109 4 5 2 3
+ Store 110 112
+ 113: 6(int) Load 8(invocation)
+ 115: 104(ptr) AccessChain 49(data) 51 61
+ 116: 41(fvec4) Load 115
+ 117: 114(fvec3) VectorShuffle 116 116 0 1 2
+ 118: 6(int) Load 8(invocation)
+ 119: 114(fvec3) GroupNonUniformBroadcast 38 117 118
+ 120: 104(ptr) AccessChain 49(data) 113 61
+ 121: 41(fvec4) Load 120
+ 122: 41(fvec4) VectorShuffle 121 119 4 5 6 3
+ Store 120 122
+ 123: 6(int) Load 8(invocation)
+ 125: 104(ptr) AccessChain 49(data) 124 61
+ 126: 41(fvec4) Load 125
+ 127: 6(int) Load 8(invocation)
+ 128: 41(fvec4) GroupNonUniformBroadcast 38 126 127
+ 129: 104(ptr) AccessChain 49(data) 123 61
+ Store 129 128
+ 130: 6(int) Load 8(invocation)
+ 132: 131(ptr) AccessChain 49(data) 61 60 54
+ 133: 42(int) Load 132
+ 134: 6(int) Load 8(invocation)
+ 135: 42(int) GroupNonUniformBroadcast 38 133 134
+ 136: 131(ptr) AccessChain 49(data) 130 60 54
+ Store 136 135
+ 137: 6(int) Load 8(invocation)
+ 140: 139(ptr) AccessChain 49(data) 60 60
+ 141: 43(ivec4) Load 140
+ 142: 138(ivec2) VectorShuffle 141 141 0 1
+ 143: 6(int) Load 8(invocation)
+ 144: 138(ivec2) GroupNonUniformBroadcast 38 142 143
+ 145: 139(ptr) AccessChain 49(data) 137 60
+ 146: 43(ivec4) Load 145
+ 147: 43(ivec4) VectorShuffle 146 144 4 5 2 3
+ Store 145 147
+ 148: 6(int) Load 8(invocation)
+ 150: 139(ptr) AccessChain 49(data) 51 60
+ 151: 43(ivec4) Load 150
+ 152: 149(ivec3) VectorShuffle 151 151 0 1 2
+ 153: 6(int) Load 8(invocation)
+ 154: 149(ivec3) GroupNonUniformBroadcast 38 152 153
+ 155: 139(ptr) AccessChain 49(data) 148 60
+ 156: 43(ivec4) Load 155
+ 157: 43(ivec4) VectorShuffle 156 154 4 5 6 3
+ Store 155 157
+ 158: 6(int) Load 8(invocation)
+ 159: 139(ptr) AccessChain 49(data) 124 60
+ 160: 43(ivec4) Load 159
+ 161: 6(int) Load 8(invocation)
+ 162: 43(ivec4) GroupNonUniformBroadcast 38 160 161
+ 163: 139(ptr) AccessChain 49(data) 158 60
+ Store 163 162
+ 164: 6(int) Load 8(invocation)
+ 165: 55(ptr) AccessChain 49(data) 61 51 54
+ 166: 6(int) Load 165
+ 167: 6(int) Load 8(invocation)
+ 168: 6(int) GroupNonUniformBroadcast 38 166 167
+ 169: 55(ptr) AccessChain 49(data) 164 51 54
+ Store 169 168
+ 170: 6(int) Load 8(invocation)
+ 172: 88(ptr) AccessChain 49(data) 60 51
+ 173: 17(ivec4) Load 172
+ 174: 171(ivec2) VectorShuffle 173 173 0 1
+ 175: 6(int) Load 8(invocation)
+ 176: 171(ivec2) GroupNonUniformBroadcast 38 174 175
+ 177: 88(ptr) AccessChain 49(data) 170 51
+ 178: 17(ivec4) Load 177
+ 179: 17(ivec4) VectorShuffle 178 176 4 5 2 3
+ Store 177 179
+ 180: 6(int) Load 8(invocation)
+ 182: 88(ptr) AccessChain 49(data) 51 51
+ 183: 17(ivec4) Load 182
+ 184: 181(ivec3) VectorShuffle 183 183 0 1 2
+ 185: 6(int) Load 8(invocation)
+ 186: 181(ivec3) GroupNonUniformBroadcast 38 184 185
+ 187: 88(ptr) AccessChain 49(data) 180 51
+ 188: 17(ivec4) Load 187
+ 189: 17(ivec4) VectorShuffle 188 186 4 5 6 3
+ Store 187 189
+ 190: 6(int) Load 8(invocation)
+ 191: 88(ptr) AccessChain 49(data) 124 51
+ 192: 17(ivec4) Load 191
+ 193: 6(int) Load 8(invocation)
+ 194: 17(ivec4) GroupNonUniformBroadcast 38 192 193
+ 195: 88(ptr) AccessChain 49(data) 190 51
+ Store 195 194
+ 196: 6(int) Load 8(invocation)
+ 198: 197(ptr) AccessChain 49(data) 61 124 54
+ 199: 44(float) Load 198
+ 200: 6(int) Load 8(invocation)
+ 201: 44(float) GroupNonUniformBroadcast 38 199 200
+ 202: 197(ptr) AccessChain 49(data) 196 124 54
+ Store 202 201
+ 203: 6(int) Load 8(invocation)
+ 206: 205(ptr) AccessChain 49(data) 60 124
+ 207: 45(fvec4) Load 206
+ 208: 204(fvec2) VectorShuffle 207 207 0 1
+ 209: 6(int) Load 8(invocation)
+ 210: 204(fvec2) GroupNonUniformBroadcast 38 208 209
+ 211: 205(ptr) AccessChain 49(data) 203 124
+ 212: 45(fvec4) Load 211
+ 213: 45(fvec4) VectorShuffle 212 210 4 5 2 3
+ Store 211 213
+ 214: 6(int) Load 8(invocation)
+ 216: 205(ptr) AccessChain 49(data) 51 124
+ 217: 45(fvec4) Load 216
+ 218: 215(fvec3) VectorShuffle 217 217 0 1 2
+ 219: 6(int) Load 8(invocation)
+ 220: 215(fvec3) GroupNonUniformBroadcast 38 218 219
+ 221: 205(ptr) AccessChain 49(data) 214 124
+ 222: 45(fvec4) Load 221
+ 223: 45(fvec4) VectorShuffle 222 220 4 5 6 3
+ Store 221 223
+ 224: 6(int) Load 8(invocation)
+ 225: 205(ptr) AccessChain 49(data) 124 124
+ 226: 45(fvec4) Load 225
+ 227: 6(int) Load 8(invocation)
+ 228: 45(fvec4) GroupNonUniformBroadcast 38 226 227
+ 229: 205(ptr) AccessChain 49(data) 224 124
+ Store 229 228
+ 230: 6(int) Load 8(invocation)
+ 231: 131(ptr) AccessChain 49(data) 61 60 54
+ 232: 42(int) Load 231
+ 233: 36(bool) SLessThan 232 61
+ 234: 6(int) Load 8(invocation)
+ 235: 36(bool) GroupNonUniformBroadcast 38 233 234
+ 236: 42(int) Select 235 60 61
+ 237: 131(ptr) AccessChain 49(data) 230 60 54
+ Store 237 236
+ 238: 6(int) Load 8(invocation)
+ 239: 139(ptr) AccessChain 49(data) 60 60
+ 240: 43(ivec4) Load 239
+ 241: 138(ivec2) VectorShuffle 240 240 0 1
+ 244: 243(bvec2) SLessThan 241 242
+ 245: 6(int) Load 8(invocation)
+ 246: 243(bvec2) GroupNonUniformBroadcast 38 244 245
+ 248: 138(ivec2) Select 246 247 242
+ 249: 139(ptr) AccessChain 49(data) 238 60
+ 250: 43(ivec4) Load 249
+ 251: 43(ivec4) VectorShuffle 250 248 4 5 2 3
+ Store 249 251
+ 252: 6(int) Load 8(invocation)
+ 253: 139(ptr) AccessChain 49(data) 60 60
+ 254: 43(ivec4) Load 253
+ 255: 149(ivec3) VectorShuffle 254 254 0 1 2
+ 258: 257(bvec3) SLessThan 255 256
+ 259: 6(int) Load 8(invocation)
+ 260: 257(bvec3) GroupNonUniformBroadcast 38 258 259
+ 262: 149(ivec3) Select 260 261 256
+ 263: 139(ptr) AccessChain 49(data) 252 60
+ 264: 43(ivec4) Load 263
+ 265: 43(ivec4) VectorShuffle 264 262 4 5 6 3
+ Store 263 265
+ 266: 6(int) Load 8(invocation)
+ 267: 139(ptr) AccessChain 49(data) 60 60
+ 268: 43(ivec4) Load 267
+ 270: 83(bvec4) SLessThan 268 269
+ 271: 6(int) Load 8(invocation)
+ 272: 83(bvec4) GroupNonUniformBroadcast 38 270 271
+ 274: 43(ivec4) Select 272 273 269
+ 275: 139(ptr) AccessChain 49(data) 266 60
+ Store 275 274
+ Branch 94
+ 276: Label
+ 277: 6(int) Load 8(invocation)
+ 278: 96(ptr) AccessChain 49(data) 61 61 54
+ 279: 40(float) Load 278
+ 280: 40(float) GroupNonUniformBroadcastFirst 38 279
+ 281: 96(ptr) AccessChain 49(data) 277 61 54
+ Store 281 280
+ 282: 6(int) Load 8(invocation)
+ 283: 104(ptr) AccessChain 49(data) 60 61
+ 284: 41(fvec4) Load 283
+ 285: 103(fvec2) VectorShuffle 284 284 0 1
+ 286: 103(fvec2) GroupNonUniformBroadcastFirst 38 285
+ 287: 104(ptr) AccessChain 49(data) 282 61
+ 288: 41(fvec4) Load 287
+ 289: 41(fvec4) VectorShuffle 288 286 4 5 2 3
+ Store 287 289
+ 290: 6(int) Load 8(invocation)
+ 291: 104(ptr) AccessChain 49(data) 51 61
+ 292: 41(fvec4) Load 291
+ 293: 114(fvec3) VectorShuffle 292 292 0 1 2
+ 294: 114(fvec3) GroupNonUniformBroadcastFirst 38 293
+ 295: 104(ptr) AccessChain 49(data) 290 61
+ 296: 41(fvec4) Load 295
+ 297: 41(fvec4) VectorShuffle 296 294 4 5 6 3
+ Store 295 297
+ 298: 6(int) Load 8(invocation)
+ 299: 104(ptr) AccessChain 49(data) 124 61
+ 300: 41(fvec4) Load 299
+ 301: 41(fvec4) GroupNonUniformBroadcastFirst 38 300
+ 302: 104(ptr) AccessChain 49(data) 298 61
+ Store 302 301
+ 303: 6(int) Load 8(invocation)
+ 304: 131(ptr) AccessChain 49(data) 61 60 54
+ 305: 42(int) Load 304
+ 306: 42(int) GroupNonUniformBroadcastFirst 38 305
+ 307: 131(ptr) AccessChain 49(data) 303 60 54
+ Store 307 306
+ 308: 6(int) Load 8(invocation)
+ 309: 139(ptr) AccessChain 49(data) 60 60
+ 310: 43(ivec4) Load 309
+ 311: 138(ivec2) VectorShuffle 310 310 0 1
+ 312: 138(ivec2) GroupNonUniformBroadcastFirst 38 311
+ 313: 139(ptr) AccessChain 49(data) 308 60
+ 314: 43(ivec4) Load 313
+ 315: 43(ivec4) VectorShuffle 314 312 4 5 2 3
+ Store 313 315
+ 316: 6(int) Load 8(invocation)
+ 317: 139(ptr) AccessChain 49(data) 51 60
+ 318: 43(ivec4) Load 317
+ 319: 149(ivec3) VectorShuffle 318 318 0 1 2
+ 320: 149(ivec3) GroupNonUniformBroadcastFirst 38 319
+ 321: 139(ptr) AccessChain 49(data) 316 60
+ 322: 43(ivec4) Load 321
+ 323: 43(ivec4) VectorShuffle 322 320 4 5 6 3
+ Store 321 323
+ 324: 6(int) Load 8(invocation)
+ 325: 139(ptr) AccessChain 49(data) 124 60
+ 326: 43(ivec4) Load 325
+ 327: 43(ivec4) GroupNonUniformBroadcastFirst 38 326
+ 328: 139(ptr) AccessChain 49(data) 324 60
+ Store 328 327
+ 329: 6(int) Load 8(invocation)
+ 330: 55(ptr) AccessChain 49(data) 61 51 54
+ 331: 6(int) Load 330
+ 332: 6(int) GroupNonUniformBroadcastFirst 38 331
+ 333: 55(ptr) AccessChain 49(data) 329 51 54
+ Store 333 332
+ 334: 6(int) Load 8(invocation)
+ 335: 88(ptr) AccessChain 49(data) 60 51
+ 336: 17(ivec4) Load 335
+ 337: 171(ivec2) VectorShuffle 336 336 0 1
+ 338: 171(ivec2) GroupNonUniformBroadcastFirst 38 337
+ 339: 88(ptr) AccessChain 49(data) 334 51
+ 340: 17(ivec4) Load 339
+ 341: 17(ivec4) VectorShuffle 340 338 4 5 2 3
+ Store 339 341
+ 342: 6(int) Load 8(invocation)
+ 343: 88(ptr) AccessChain 49(data) 51 51
+ 344: 17(ivec4) Load 343
+ 345: 181(ivec3) VectorShuffle 344 344 0 1 2
+ 346: 181(ivec3) GroupNonUniformBroadcastFirst 38 345
+ 347: 88(ptr) AccessChain 49(data) 342 51
+ 348: 17(ivec4) Load 347
+ 349: 17(ivec4) VectorShuffle 348 346 4 5 6 3
+ Store 347 349
+ 350: 6(int) Load 8(invocation)
+ 351: 88(ptr) AccessChain 49(data) 124 51
+ 352: 17(ivec4) Load 351
+ 353: 17(ivec4) GroupNonUniformBroadcastFirst 38 352
+ 354: 88(ptr) AccessChain 49(data) 350 51
+ Store 354 353
+ 355: 6(int) Load 8(invocation)
+ 356: 197(ptr) AccessChain 49(data) 61 124 54
+ 357: 44(float) Load 356
+ 358: 44(float) GroupNonUniformBroadcastFirst 38 357
+ 359: 197(ptr) AccessChain 49(data) 355 124 54
+ Store 359 358
+ 360: 6(int) Load 8(invocation)
+ 361: 205(ptr) AccessChain 49(data) 60 124
+ 362: 45(fvec4) Load 361
+ 363: 204(fvec2) VectorShuffle 362 362 0 1
+ 364: 204(fvec2) GroupNonUniformBroadcastFirst 38 363
+ 365: 205(ptr) AccessChain 49(data) 360 124
+ 366: 45(fvec4) Load 365
+ 367: 45(fvec4) VectorShuffle 366 364 4 5 2 3
+ Store 365 367
+ 368: 6(int) Load 8(invocation)
+ 369: 205(ptr) AccessChain 49(data) 51 124
+ 370: 45(fvec4) Load 369
+ 371: 215(fvec3) VectorShuffle 370 370 0 1 2
+ 372: 215(fvec3) GroupNonUniformBroadcastFirst 38 371
+ 373: 205(ptr) AccessChain 49(data) 368 124
+ 374: 45(fvec4) Load 373
+ 375: 45(fvec4) VectorShuffle 374 372 4 5 6 3
+ Store 373 375
+ 376: 6(int) Load 8(invocation)
+ 377: 205(ptr) AccessChain 49(data) 124 124
+ 378: 45(fvec4) Load 377
+ 379: 45(fvec4) GroupNonUniformBroadcastFirst 38 378
+ 380: 205(ptr) AccessChain 49(data) 376 124
+ Store 380 379
+ 381: 6(int) Load 8(invocation)
+ 382: 131(ptr) AccessChain 49(data) 61 60 54
+ 383: 42(int) Load 382
+ 384: 36(bool) SLessThan 383 61
+ 385: 36(bool) GroupNonUniformBroadcastFirst 38 384
+ 386: 42(int) Select 385 60 61
+ 387: 131(ptr) AccessChain 49(data) 381 60 54
+ Store 387 386
+ 388: 6(int) Load 8(invocation)
+ 389: 139(ptr) AccessChain 49(data) 60 60
+ 390: 43(ivec4) Load 389
+ 391: 138(ivec2) VectorShuffle 390 390 0 1
+ 392: 243(bvec2) SLessThan 391 242
+ 393: 243(bvec2) GroupNonUniformBroadcastFirst 38 392
+ 394: 138(ivec2) Select 393 247 242
+ 395: 139(ptr) AccessChain 49(data) 388 60
+ 396: 43(ivec4) Load 395
+ 397: 43(ivec4) VectorShuffle 396 394 4 5 2 3
+ Store 395 397
+ 398: 6(int) Load 8(invocation)
+ 399: 139(ptr) AccessChain 49(data) 60 60
+ 400: 43(ivec4) Load 399
+ 401: 149(ivec3) VectorShuffle 400 400 0 1 2
+ 402: 257(bvec3) SLessThan 401 256
+ 403: 257(bvec3) GroupNonUniformBroadcastFirst 38 402
+ 404: 149(ivec3) Select 403 261 256
+ 405: 139(ptr) AccessChain 49(data) 398 60
+ 406: 43(ivec4) Load 405
+ 407: 43(ivec4) VectorShuffle 406 404 4 5 6 3
+ Store 405 407
+ 408: 6(int) Load 8(invocation)
+ 409: 139(ptr) AccessChain 49(data) 60 60
+ 410: 43(ivec4) Load 409
+ 411: 83(bvec4) SLessThan 410 269
+ 412: 83(bvec4) GroupNonUniformBroadcastFirst 38 411
+ 413: 43(ivec4) Select 412 273 269
+ 414: 139(ptr) AccessChain 49(data) 408 60
+ Store 414 413
+ Branch 94
+ 94: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupBasic.comp.out b/Test/baseResults/spv.subgroupBasic.comp.out
new file mode 100644
index 0000000..94adcfc
--- /dev/null
+++ b/Test/baseResults/spv.subgroupBasic.comp.out
@@ -0,0 +1,84 @@
+spv.subgroupBasic.comp
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 40
+
+ Capability Shader
+ Capability GroupNonUniform
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 14 19 22 25
+ ExecutionMode 4 LocalSize 8 8 1
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ Name 4 "main"
+ Name 8 "Buffer"
+ MemberName 8(Buffer) 0 "a"
+ Name 10 "data"
+ Name 14 "gl_SubgroupSize"
+ Name 19 "gl_SubgroupInvocationID"
+ Name 22 "gl_NumSubgroups"
+ Name 25 "gl_SubgroupID"
+ Decorate 7 ArrayStride 4
+ MemberDecorate 8(Buffer) 0 Offset 0
+ Decorate 8(Buffer) BufferBlock
+ Decorate 10(data) DescriptorSet 0
+ Decorate 10(data) Binding 0
+ Decorate 14(gl_SubgroupSize) RelaxedPrecision
+ Decorate 14(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 15 RelaxedPrecision
+ Decorate 19(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 19(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 20 RelaxedPrecision
+ Decorate 22(gl_NumSubgroups) BuiltIn NumSubgroups
+ Decorate 25(gl_SubgroupID) BuiltIn SubgroupId
+ Decorate 39 BuiltIn WorkgroupSize
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypeRuntimeArray 6(int)
+ 8(Buffer): TypeStruct 7
+ 9: TypePointer Uniform 8(Buffer)
+ 10(data): 9(ptr) Variable Uniform
+ 11: 6(int) Constant 0
+ 12: TypeInt 32 0
+ 13: TypePointer Input 12(int)
+14(gl_SubgroupSize): 13(ptr) Variable Input
+ 16: 6(int) Constant 1
+ 17: TypePointer Uniform 6(int)
+19(gl_SubgroupInvocationID): 13(ptr) Variable Input
+22(gl_NumSubgroups): 13(ptr) Variable Input
+25(gl_SubgroupID): 13(ptr) Variable Input
+ 27: TypeBool
+ 28: 12(int) Constant 3
+ 32: 12(int) Constant 3400
+ 33: 12(int) Constant 72
+ 34: 12(int) Constant 264
+ 35: 12(int) Constant 2056
+ 36: TypeVector 12(int) 3
+ 37: 12(int) Constant 8
+ 38: 12(int) Constant 1
+ 39: 36(ivec3) ConstantComposite 37 37 38
+ 4(main): 2 Function None 3
+ 5: Label
+ 15: 12(int) Load 14(gl_SubgroupSize)
+ 18: 17(ptr) AccessChain 10(data) 11 15
+ Store 18 16
+ 20: 12(int) Load 19(gl_SubgroupInvocationID)
+ 21: 17(ptr) AccessChain 10(data) 11 20
+ Store 21 16
+ 23: 12(int) Load 22(gl_NumSubgroups)
+ 24: 17(ptr) AccessChain 10(data) 11 23
+ Store 24 16
+ 26: 12(int) Load 25(gl_SubgroupID)
+ 29: 27(bool) GroupNonUniformElect 28
+ 30: 6(int) Select 29 16 11
+ 31: 17(ptr) AccessChain 10(data) 11 26
+ Store 31 30
+ ControlBarrier 28 28 32
+ MemoryBarrier 28 32
+ MemoryBarrier 28 33
+ MemoryBarrier 28 34
+ MemoryBarrier 28 35
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupClustered.comp.out b/Test/baseResults/spv.subgroupClustered.comp.out
new file mode 100644
index 0000000..37d0cbd
--- /dev/null
+++ b/Test/baseResults/spv.subgroupClustered.comp.out
@@ -0,0 +1,880 @@
+spv.subgroupClustered.comp
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 737
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformClustered
+ 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_KHR_shader_subgroup_clustered"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 24 "Buffers"
+ MemberName 24(Buffers) 0 "f4"
+ MemberName 24(Buffers) 1 "i4"
+ MemberName 24(Buffers) 2 "u4"
+ MemberName 24(Buffers) 3 "d4"
+ Name 27 "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 24(Buffers) 0 Offset 0
+ MemberDecorate 24(Buffers) 1 Offset 16
+ MemberDecorate 24(Buffers) 2 Offset 32
+ MemberDecorate 24(Buffers) 3 Offset 64
+ Decorate 24(Buffers) BufferBlock
+ Decorate 27(data) DescriptorSet 0
+ Decorate 27(data) Binding 0
+ Decorate 736 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: TypeFloat 32
+ 18: TypeVector 17(float) 4
+ 19: TypeInt 32 1
+ 20: TypeVector 19(int) 4
+ 21: TypeVector 6(int) 4
+ 22: TypeFloat 64
+ 23: TypeVector 22(float) 4
+ 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(fvec4)
+ 25: TypeArray 24(Buffers) 15
+ 26: TypePointer Uniform 25
+ 27(data): 26(ptr) Variable Uniform
+ 29: 19(int) Constant 0
+ 30: 6(int) Constant 0
+ 31: TypePointer Uniform 17(float)
+ 34: 6(int) Constant 1
+ 35: 6(int) Constant 3
+ 39: 19(int) Constant 1
+ 40: TypeVector 17(float) 2
+ 41: TypePointer Uniform 18(fvec4)
+ 50: 19(int) Constant 2
+ 51: TypeVector 17(float) 3
+ 60: 19(int) Constant 3
+ 66: TypePointer Uniform 19(int)
+ 72: TypeVector 19(int) 2
+ 73: TypePointer Uniform 20(ivec4)
+ 82: TypeVector 19(int) 3
+ 96: TypePointer Uniform 6(int)
+ 102: TypeVector 6(int) 2
+ 103: TypePointer Uniform 21(ivec4)
+ 112: TypeVector 6(int) 3
+ 126: TypePointer Uniform 22(float)
+ 132: TypeVector 22(float) 2
+ 133: TypePointer Uniform 23(fvec4)
+ 142: TypeVector 22(float) 3
+ 522: TypeBool
+ 531: 72(ivec2) ConstantComposite 29 29
+ 532: TypeVector 522(bool) 2
+ 535: 72(ivec2) ConstantComposite 39 39
+ 544: 82(ivec3) ConstantComposite 29 29 29
+ 545: TypeVector 522(bool) 3
+ 548: 82(ivec3) ConstantComposite 39 39 39
+ 556: 20(ivec4) ConstantComposite 29 29 29 29
+ 557: TypeVector 522(bool) 4
+ 560: 20(ivec4) ConstantComposite 39 39 39 39
+ 735: 6(int) Constant 8
+ 736: 112(ivec3) ConstantComposite 735 34 34
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(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
+ 28: 6(int) Load 8(invocation)
+ 32: 31(ptr) AccessChain 27(data) 29 29 30
+ 33: 17(float) Load 32
+ 36: 17(float) GroupNonUniformFAdd 35 ClusteredReduce 33 34
+ 37: 31(ptr) AccessChain 27(data) 28 29 30
+ Store 37 36
+ 38: 6(int) Load 8(invocation)
+ 42: 41(ptr) AccessChain 27(data) 39 29
+ 43: 18(fvec4) Load 42
+ 44: 40(fvec2) VectorShuffle 43 43 0 1
+ 45: 40(fvec2) GroupNonUniformFAdd 35 ClusteredReduce 44 34
+ 46: 41(ptr) AccessChain 27(data) 38 29
+ 47: 18(fvec4) Load 46
+ 48: 18(fvec4) VectorShuffle 47 45 4 5 2 3
+ Store 46 48
+ 49: 6(int) Load 8(invocation)
+ 52: 41(ptr) AccessChain 27(data) 50 29
+ 53: 18(fvec4) Load 52
+ 54: 51(fvec3) VectorShuffle 53 53 0 1 2
+ 55: 51(fvec3) GroupNonUniformFAdd 35 ClusteredReduce 54 34
+ 56: 41(ptr) AccessChain 27(data) 49 29
+ 57: 18(fvec4) Load 56
+ 58: 18(fvec4) VectorShuffle 57 55 4 5 6 3
+ Store 56 58
+ 59: 6(int) Load 8(invocation)
+ 61: 41(ptr) AccessChain 27(data) 60 29
+ 62: 18(fvec4) Load 61
+ 63: 18(fvec4) GroupNonUniformFAdd 35 ClusteredReduce 62 34
+ 64: 41(ptr) AccessChain 27(data) 59 29
+ Store 64 63
+ 65: 6(int) Load 8(invocation)
+ 67: 66(ptr) AccessChain 27(data) 29 39 30
+ 68: 19(int) Load 67
+ 69: 19(int) GroupNonUniformIAdd 35 ClusteredReduce 68 34
+ 70: 66(ptr) AccessChain 27(data) 65 39 30
+ Store 70 69
+ 71: 6(int) Load 8(invocation)
+ 74: 73(ptr) AccessChain 27(data) 39 39
+ 75: 20(ivec4) Load 74
+ 76: 72(ivec2) VectorShuffle 75 75 0 1
+ 77: 72(ivec2) GroupNonUniformIAdd 35 ClusteredReduce 76 34
+ 78: 73(ptr) AccessChain 27(data) 71 39
+ 79: 20(ivec4) Load 78
+ 80: 20(ivec4) VectorShuffle 79 77 4 5 2 3
+ Store 78 80
+ 81: 6(int) Load 8(invocation)
+ 83: 73(ptr) AccessChain 27(data) 50 39
+ 84: 20(ivec4) Load 83
+ 85: 82(ivec3) VectorShuffle 84 84 0 1 2
+ 86: 82(ivec3) GroupNonUniformIAdd 35 ClusteredReduce 85 34
+ 87: 73(ptr) AccessChain 27(data) 81 39
+ 88: 20(ivec4) Load 87
+ 89: 20(ivec4) VectorShuffle 88 86 4 5 6 3
+ Store 87 89
+ 90: 6(int) Load 8(invocation)
+ 91: 73(ptr) AccessChain 27(data) 60 39
+ 92: 20(ivec4) Load 91
+ 93: 20(ivec4) GroupNonUniformIAdd 35 ClusteredReduce 92 34
+ 94: 73(ptr) AccessChain 27(data) 90 39
+ Store 94 93
+ 95: 6(int) Load 8(invocation)
+ 97: 96(ptr) AccessChain 27(data) 29 50 30
+ 98: 6(int) Load 97
+ 99: 6(int) GroupNonUniformIAdd 35 ClusteredReduce 98 34
+ 100: 96(ptr) AccessChain 27(data) 95 50 30
+ Store 100 99
+ 101: 6(int) Load 8(invocation)
+ 104: 103(ptr) AccessChain 27(data) 39 50
+ 105: 21(ivec4) Load 104
+ 106: 102(ivec2) VectorShuffle 105 105 0 1
+ 107: 102(ivec2) GroupNonUniformIAdd 35 ClusteredReduce 106 34
+ 108: 103(ptr) AccessChain 27(data) 101 50
+ 109: 21(ivec4) Load 108
+ 110: 21(ivec4) VectorShuffle 109 107 4 5 2 3
+ Store 108 110
+ 111: 6(int) Load 8(invocation)
+ 113: 103(ptr) AccessChain 27(data) 50 50
+ 114: 21(ivec4) Load 113
+ 115: 112(ivec3) VectorShuffle 114 114 0 1 2
+ 116: 112(ivec3) GroupNonUniformIAdd 35 ClusteredReduce 115 34
+ 117: 103(ptr) AccessChain 27(data) 111 50
+ 118: 21(ivec4) Load 117
+ 119: 21(ivec4) VectorShuffle 118 116 4 5 6 3
+ Store 117 119
+ 120: 6(int) Load 8(invocation)
+ 121: 103(ptr) AccessChain 27(data) 60 50
+ 122: 21(ivec4) Load 121
+ 123: 21(ivec4) GroupNonUniformIAdd 35 ClusteredReduce 122 34
+ 124: 103(ptr) AccessChain 27(data) 120 50
+ Store 124 123
+ 125: 6(int) Load 8(invocation)
+ 127: 126(ptr) AccessChain 27(data) 29 60 30
+ 128: 22(float) Load 127
+ 129: 22(float) GroupNonUniformFAdd 35 ClusteredReduce 128 34
+ 130: 126(ptr) AccessChain 27(data) 125 60 30
+ Store 130 129
+ 131: 6(int) Load 8(invocation)
+ 134: 133(ptr) AccessChain 27(data) 39 60
+ 135: 23(fvec4) Load 134
+ 136: 132(fvec2) VectorShuffle 135 135 0 1
+ 137: 132(fvec2) GroupNonUniformFAdd 35 ClusteredReduce 136 34
+ 138: 133(ptr) AccessChain 27(data) 131 60
+ 139: 23(fvec4) Load 138
+ 140: 23(fvec4) VectorShuffle 139 137 4 5 2 3
+ Store 138 140
+ 141: 6(int) Load 8(invocation)
+ 143: 133(ptr) AccessChain 27(data) 50 60
+ 144: 23(fvec4) Load 143
+ 145: 142(fvec3) VectorShuffle 144 144 0 1 2
+ 146: 142(fvec3) GroupNonUniformFAdd 35 ClusteredReduce 145 34
+ 147: 133(ptr) AccessChain 27(data) 141 60
+ 148: 23(fvec4) Load 147
+ 149: 23(fvec4) VectorShuffle 148 146 4 5 6 3
+ Store 147 149
+ 150: 6(int) Load 8(invocation)
+ 151: 133(ptr) AccessChain 27(data) 60 60
+ 152: 23(fvec4) Load 151
+ 153: 23(fvec4) GroupNonUniformFAdd 35 ClusteredReduce 152 34
+ 154: 133(ptr) AccessChain 27(data) 150 60
+ Store 154 153
+ 155: 6(int) Load 8(invocation)
+ 156: 31(ptr) AccessChain 27(data) 29 29 30
+ 157: 17(float) Load 156
+ 158: 17(float) GroupNonUniformFMul 35 ClusteredReduce 157 34
+ 159: 31(ptr) AccessChain 27(data) 155 29 30
+ Store 159 158
+ 160: 6(int) Load 8(invocation)
+ 161: 41(ptr) AccessChain 27(data) 39 29
+ 162: 18(fvec4) Load 161
+ 163: 40(fvec2) VectorShuffle 162 162 0 1
+ 164: 40(fvec2) GroupNonUniformFMul 35 ClusteredReduce 163 34
+ 165: 41(ptr) AccessChain 27(data) 160 29
+ 166: 18(fvec4) Load 165
+ 167: 18(fvec4) VectorShuffle 166 164 4 5 2 3
+ Store 165 167
+ 168: 6(int) Load 8(invocation)
+ 169: 41(ptr) AccessChain 27(data) 50 29
+ 170: 18(fvec4) Load 169
+ 171: 51(fvec3) VectorShuffle 170 170 0 1 2
+ 172: 51(fvec3) GroupNonUniformFMul 35 ClusteredReduce 171 34
+ 173: 41(ptr) AccessChain 27(data) 168 29
+ 174: 18(fvec4) Load 173
+ 175: 18(fvec4) VectorShuffle 174 172 4 5 6 3
+ Store 173 175
+ 176: 6(int) Load 8(invocation)
+ 177: 41(ptr) AccessChain 27(data) 60 29
+ 178: 18(fvec4) Load 177
+ 179: 18(fvec4) GroupNonUniformFMul 35 ClusteredReduce 178 34
+ 180: 41(ptr) AccessChain 27(data) 176 29
+ Store 180 179
+ 181: 6(int) Load 8(invocation)
+ 182: 66(ptr) AccessChain 27(data) 29 39 30
+ 183: 19(int) Load 182
+ 184: 19(int) GroupNonUniformIMul 35 ClusteredReduce 183 34
+ 185: 66(ptr) AccessChain 27(data) 181 39 30
+ Store 185 184
+ 186: 6(int) Load 8(invocation)
+ 187: 73(ptr) AccessChain 27(data) 39 39
+ 188: 20(ivec4) Load 187
+ 189: 72(ivec2) VectorShuffle 188 188 0 1
+ 190: 72(ivec2) GroupNonUniformIMul 35 ClusteredReduce 189 34
+ 191: 73(ptr) AccessChain 27(data) 186 39
+ 192: 20(ivec4) Load 191
+ 193: 20(ivec4) VectorShuffle 192 190 4 5 2 3
+ Store 191 193
+ 194: 6(int) Load 8(invocation)
+ 195: 73(ptr) AccessChain 27(data) 50 39
+ 196: 20(ivec4) Load 195
+ 197: 82(ivec3) VectorShuffle 196 196 0 1 2
+ 198: 82(ivec3) GroupNonUniformIMul 35 ClusteredReduce 197 34
+ 199: 73(ptr) AccessChain 27(data) 194 39
+ 200: 20(ivec4) Load 199
+ 201: 20(ivec4) VectorShuffle 200 198 4 5 6 3
+ Store 199 201
+ 202: 6(int) Load 8(invocation)
+ 203: 73(ptr) AccessChain 27(data) 60 39
+ 204: 20(ivec4) Load 203
+ 205: 20(ivec4) GroupNonUniformIMul 35 ClusteredReduce 204 34
+ 206: 73(ptr) AccessChain 27(data) 202 39
+ Store 206 205
+ 207: 6(int) Load 8(invocation)
+ 208: 96(ptr) AccessChain 27(data) 29 50 30
+ 209: 6(int) Load 208
+ 210: 6(int) GroupNonUniformIMul 35 ClusteredReduce 209 34
+ 211: 96(ptr) AccessChain 27(data) 207 50 30
+ Store 211 210
+ 212: 6(int) Load 8(invocation)
+ 213: 103(ptr) AccessChain 27(data) 39 50
+ 214: 21(ivec4) Load 213
+ 215: 102(ivec2) VectorShuffle 214 214 0 1
+ 216: 102(ivec2) GroupNonUniformIMul 35 ClusteredReduce 215 34
+ 217: 103(ptr) AccessChain 27(data) 212 50
+ 218: 21(ivec4) Load 217
+ 219: 21(ivec4) VectorShuffle 218 216 4 5 2 3
+ Store 217 219
+ 220: 6(int) Load 8(invocation)
+ 221: 103(ptr) AccessChain 27(data) 50 50
+ 222: 21(ivec4) Load 221
+ 223: 112(ivec3) VectorShuffle 222 222 0 1 2
+ 224: 112(ivec3) GroupNonUniformIMul 35 ClusteredReduce 223 34
+ 225: 103(ptr) AccessChain 27(data) 220 50
+ 226: 21(ivec4) Load 225
+ 227: 21(ivec4) VectorShuffle 226 224 4 5 6 3
+ Store 225 227
+ 228: 6(int) Load 8(invocation)
+ 229: 103(ptr) AccessChain 27(data) 60 50
+ 230: 21(ivec4) Load 229
+ 231: 21(ivec4) GroupNonUniformIMul 35 ClusteredReduce 230 34
+ 232: 103(ptr) AccessChain 27(data) 228 50
+ Store 232 231
+ 233: 6(int) Load 8(invocation)
+ 234: 126(ptr) AccessChain 27(data) 29 60 30
+ 235: 22(float) Load 234
+ 236: 22(float) GroupNonUniformFMul 35 ClusteredReduce 235 34
+ 237: 126(ptr) AccessChain 27(data) 233 60 30
+ Store 237 236
+ 238: 6(int) Load 8(invocation)
+ 239: 133(ptr) AccessChain 27(data) 39 60
+ 240: 23(fvec4) Load 239
+ 241: 132(fvec2) VectorShuffle 240 240 0 1
+ 242: 132(fvec2) GroupNonUniformFMul 35 ClusteredReduce 241 34
+ 243: 133(ptr) AccessChain 27(data) 238 60
+ 244: 23(fvec4) Load 243
+ 245: 23(fvec4) VectorShuffle 244 242 4 5 2 3
+ Store 243 245
+ 246: 6(int) Load 8(invocation)
+ 247: 133(ptr) AccessChain 27(data) 50 60
+ 248: 23(fvec4) Load 247
+ 249: 142(fvec3) VectorShuffle 248 248 0 1 2
+ 250: 142(fvec3) GroupNonUniformFMul 35 ClusteredReduce 249 34
+ 251: 133(ptr) AccessChain 27(data) 246 60
+ 252: 23(fvec4) Load 251
+ 253: 23(fvec4) VectorShuffle 252 250 4 5 6 3
+ Store 251 253
+ 254: 6(int) Load 8(invocation)
+ 255: 133(ptr) AccessChain 27(data) 60 60
+ 256: 23(fvec4) Load 255
+ 257: 23(fvec4) GroupNonUniformFMul 35 ClusteredReduce 256 34
+ 258: 133(ptr) AccessChain 27(data) 254 60
+ Store 258 257
+ 259: 6(int) Load 8(invocation)
+ 260: 31(ptr) AccessChain 27(data) 29 29 30
+ 261: 17(float) Load 260
+ 262: 17(float) GroupNonUniformFMin 35 ClusteredReduce 261 34
+ 263: 31(ptr) AccessChain 27(data) 259 29 30
+ Store 263 262
+ 264: 6(int) Load 8(invocation)
+ 265: 41(ptr) AccessChain 27(data) 39 29
+ 266: 18(fvec4) Load 265
+ 267: 40(fvec2) VectorShuffle 266 266 0 1
+ 268: 40(fvec2) GroupNonUniformFMin 35 ClusteredReduce 267 34
+ 269: 41(ptr) AccessChain 27(data) 264 29
+ 270: 18(fvec4) Load 269
+ 271: 18(fvec4) VectorShuffle 270 268 4 5 2 3
+ Store 269 271
+ 272: 6(int) Load 8(invocation)
+ 273: 41(ptr) AccessChain 27(data) 50 29
+ 274: 18(fvec4) Load 273
+ 275: 51(fvec3) VectorShuffle 274 274 0 1 2
+ 276: 51(fvec3) GroupNonUniformFMin 35 ClusteredReduce 275 34
+ 277: 41(ptr) AccessChain 27(data) 272 29
+ 278: 18(fvec4) Load 277
+ 279: 18(fvec4) VectorShuffle 278 276 4 5 6 3
+ Store 277 279
+ 280: 6(int) Load 8(invocation)
+ 281: 41(ptr) AccessChain 27(data) 60 29
+ 282: 18(fvec4) Load 281
+ 283: 18(fvec4) GroupNonUniformFMin 35 ClusteredReduce 282 34
+ 284: 41(ptr) AccessChain 27(data) 280 29
+ Store 284 283
+ 285: 6(int) Load 8(invocation)
+ 286: 66(ptr) AccessChain 27(data) 29 39 30
+ 287: 19(int) Load 286
+ 288: 19(int) GroupNonUniformSMin 35 ClusteredReduce 287 34
+ 289: 66(ptr) AccessChain 27(data) 285 39 30
+ Store 289 288
+ 290: 6(int) Load 8(invocation)
+ 291: 73(ptr) AccessChain 27(data) 39 39
+ 292: 20(ivec4) Load 291
+ 293: 72(ivec2) VectorShuffle 292 292 0 1
+ 294: 72(ivec2) GroupNonUniformSMin 35 ClusteredReduce 293 34
+ 295: 73(ptr) AccessChain 27(data) 290 39
+ 296: 20(ivec4) Load 295
+ 297: 20(ivec4) VectorShuffle 296 294 4 5 2 3
+ Store 295 297
+ 298: 6(int) Load 8(invocation)
+ 299: 73(ptr) AccessChain 27(data) 50 39
+ 300: 20(ivec4) Load 299
+ 301: 82(ivec3) VectorShuffle 300 300 0 1 2
+ 302: 82(ivec3) GroupNonUniformSMin 35 ClusteredReduce 301 34
+ 303: 73(ptr) AccessChain 27(data) 298 39
+ 304: 20(ivec4) Load 303
+ 305: 20(ivec4) VectorShuffle 304 302 4 5 6 3
+ Store 303 305
+ 306: 6(int) Load 8(invocation)
+ 307: 73(ptr) AccessChain 27(data) 60 39
+ 308: 20(ivec4) Load 307
+ 309: 20(ivec4) GroupNonUniformSMin 35 ClusteredReduce 308 34
+ 310: 73(ptr) AccessChain 27(data) 306 39
+ Store 310 309
+ 311: 6(int) Load 8(invocation)
+ 312: 96(ptr) AccessChain 27(data) 29 50 30
+ 313: 6(int) Load 312
+ 314: 6(int) GroupNonUniformUMin 35 ClusteredReduce 313 34
+ 315: 96(ptr) AccessChain 27(data) 311 50 30
+ Store 315 314
+ 316: 6(int) Load 8(invocation)
+ 317: 103(ptr) AccessChain 27(data) 39 50
+ 318: 21(ivec4) Load 317
+ 319: 102(ivec2) VectorShuffle 318 318 0 1
+ 320: 102(ivec2) GroupNonUniformUMin 35 ClusteredReduce 319 34
+ 321: 103(ptr) AccessChain 27(data) 316 50
+ 322: 21(ivec4) Load 321
+ 323: 21(ivec4) VectorShuffle 322 320 4 5 2 3
+ Store 321 323
+ 324: 6(int) Load 8(invocation)
+ 325: 103(ptr) AccessChain 27(data) 50 50
+ 326: 21(ivec4) Load 325
+ 327: 112(ivec3) VectorShuffle 326 326 0 1 2
+ 328: 112(ivec3) GroupNonUniformUMin 35 ClusteredReduce 327 34
+ 329: 103(ptr) AccessChain 27(data) 324 50
+ 330: 21(ivec4) Load 329
+ 331: 21(ivec4) VectorShuffle 330 328 4 5 6 3
+ Store 329 331
+ 332: 6(int) Load 8(invocation)
+ 333: 103(ptr) AccessChain 27(data) 60 50
+ 334: 21(ivec4) Load 333
+ 335: 21(ivec4) GroupNonUniformUMin 35 ClusteredReduce 334 34
+ 336: 103(ptr) AccessChain 27(data) 332 50
+ Store 336 335
+ 337: 6(int) Load 8(invocation)
+ 338: 126(ptr) AccessChain 27(data) 29 60 30
+ 339: 22(float) Load 338
+ 340: 22(float) GroupNonUniformFMin 35 ClusteredReduce 339 34
+ 341: 126(ptr) AccessChain 27(data) 337 60 30
+ Store 341 340
+ 342: 6(int) Load 8(invocation)
+ 343: 133(ptr) AccessChain 27(data) 39 60
+ 344: 23(fvec4) Load 343
+ 345: 132(fvec2) VectorShuffle 344 344 0 1
+ 346: 132(fvec2) GroupNonUniformFMin 35 ClusteredReduce 345 34
+ 347: 133(ptr) AccessChain 27(data) 342 60
+ 348: 23(fvec4) Load 347
+ 349: 23(fvec4) VectorShuffle 348 346 4 5 2 3
+ Store 347 349
+ 350: 6(int) Load 8(invocation)
+ 351: 133(ptr) AccessChain 27(data) 50 60
+ 352: 23(fvec4) Load 351
+ 353: 142(fvec3) VectorShuffle 352 352 0 1 2
+ 354: 142(fvec3) GroupNonUniformFMin 35 ClusteredReduce 353 34
+ 355: 133(ptr) AccessChain 27(data) 350 60
+ 356: 23(fvec4) Load 355
+ 357: 23(fvec4) VectorShuffle 356 354 4 5 6 3
+ Store 355 357
+ 358: 6(int) Load 8(invocation)
+ 359: 133(ptr) AccessChain 27(data) 60 60
+ 360: 23(fvec4) Load 359
+ 361: 23(fvec4) GroupNonUniformFMin 35 ClusteredReduce 360 34
+ 362: 133(ptr) AccessChain 27(data) 358 60
+ Store 362 361
+ 363: 6(int) Load 8(invocation)
+ 364: 31(ptr) AccessChain 27(data) 29 29 30
+ 365: 17(float) Load 364
+ 366: 17(float) GroupNonUniformFMax 35 ClusteredReduce 365 34
+ 367: 31(ptr) AccessChain 27(data) 363 29 30
+ Store 367 366
+ 368: 6(int) Load 8(invocation)
+ 369: 41(ptr) AccessChain 27(data) 39 29
+ 370: 18(fvec4) Load 369
+ 371: 40(fvec2) VectorShuffle 370 370 0 1
+ 372: 40(fvec2) GroupNonUniformFMax 35 ClusteredReduce 371 34
+ 373: 41(ptr) AccessChain 27(data) 368 29
+ 374: 18(fvec4) Load 373
+ 375: 18(fvec4) VectorShuffle 374 372 4 5 2 3
+ Store 373 375
+ 376: 6(int) Load 8(invocation)
+ 377: 41(ptr) AccessChain 27(data) 50 29
+ 378: 18(fvec4) Load 377
+ 379: 51(fvec3) VectorShuffle 378 378 0 1 2
+ 380: 51(fvec3) GroupNonUniformFMax 35 ClusteredReduce 379 34
+ 381: 41(ptr) AccessChain 27(data) 376 29
+ 382: 18(fvec4) Load 381
+ 383: 18(fvec4) VectorShuffle 382 380 4 5 6 3
+ Store 381 383
+ 384: 6(int) Load 8(invocation)
+ 385: 41(ptr) AccessChain 27(data) 60 29
+ 386: 18(fvec4) Load 385
+ 387: 18(fvec4) GroupNonUniformFMax 35 ClusteredReduce 386 34
+ 388: 41(ptr) AccessChain 27(data) 384 29
+ Store 388 387
+ 389: 6(int) Load 8(invocation)
+ 390: 66(ptr) AccessChain 27(data) 29 39 30
+ 391: 19(int) Load 390
+ 392: 19(int) GroupNonUniformSMax 35 ClusteredReduce 391 34
+ 393: 66(ptr) AccessChain 27(data) 389 39 30
+ Store 393 392
+ 394: 6(int) Load 8(invocation)
+ 395: 73(ptr) AccessChain 27(data) 39 39
+ 396: 20(ivec4) Load 395
+ 397: 72(ivec2) VectorShuffle 396 396 0 1
+ 398: 72(ivec2) GroupNonUniformSMax 35 ClusteredReduce 397 34
+ 399: 73(ptr) AccessChain 27(data) 394 39
+ 400: 20(ivec4) Load 399
+ 401: 20(ivec4) VectorShuffle 400 398 4 5 2 3
+ Store 399 401
+ 402: 6(int) Load 8(invocation)
+ 403: 73(ptr) AccessChain 27(data) 50 39
+ 404: 20(ivec4) Load 403
+ 405: 82(ivec3) VectorShuffle 404 404 0 1 2
+ 406: 82(ivec3) GroupNonUniformSMax 35 ClusteredReduce 405 34
+ 407: 73(ptr) AccessChain 27(data) 402 39
+ 408: 20(ivec4) Load 407
+ 409: 20(ivec4) VectorShuffle 408 406 4 5 6 3
+ Store 407 409
+ 410: 6(int) Load 8(invocation)
+ 411: 73(ptr) AccessChain 27(data) 60 39
+ 412: 20(ivec4) Load 411
+ 413: 20(ivec4) GroupNonUniformSMax 35 ClusteredReduce 412 34
+ 414: 73(ptr) AccessChain 27(data) 410 39
+ Store 414 413
+ 415: 6(int) Load 8(invocation)
+ 416: 96(ptr) AccessChain 27(data) 29 50 30
+ 417: 6(int) Load 416
+ 418: 6(int) GroupNonUniformUMax 35 ClusteredReduce 417 34
+ 419: 96(ptr) AccessChain 27(data) 415 50 30
+ Store 419 418
+ 420: 6(int) Load 8(invocation)
+ 421: 103(ptr) AccessChain 27(data) 39 50
+ 422: 21(ivec4) Load 421
+ 423: 102(ivec2) VectorShuffle 422 422 0 1
+ 424: 102(ivec2) GroupNonUniformUMax 35 ClusteredReduce 423 34
+ 425: 103(ptr) AccessChain 27(data) 420 50
+ 426: 21(ivec4) Load 425
+ 427: 21(ivec4) VectorShuffle 426 424 4 5 2 3
+ Store 425 427
+ 428: 6(int) Load 8(invocation)
+ 429: 103(ptr) AccessChain 27(data) 50 50
+ 430: 21(ivec4) Load 429
+ 431: 112(ivec3) VectorShuffle 430 430 0 1 2
+ 432: 112(ivec3) GroupNonUniformUMax 35 ClusteredReduce 431 34
+ 433: 103(ptr) AccessChain 27(data) 428 50
+ 434: 21(ivec4) Load 433
+ 435: 21(ivec4) VectorShuffle 434 432 4 5 6 3
+ Store 433 435
+ 436: 6(int) Load 8(invocation)
+ 437: 103(ptr) AccessChain 27(data) 60 50
+ 438: 21(ivec4) Load 437
+ 439: 21(ivec4) GroupNonUniformUMax 35 ClusteredReduce 438 34
+ 440: 103(ptr) AccessChain 27(data) 436 50
+ Store 440 439
+ 441: 6(int) Load 8(invocation)
+ 442: 126(ptr) AccessChain 27(data) 29 60 30
+ 443: 22(float) Load 442
+ 444: 22(float) GroupNonUniformFMax 35 ClusteredReduce 443 34
+ 445: 126(ptr) AccessChain 27(data) 441 60 30
+ Store 445 444
+ 446: 6(int) Load 8(invocation)
+ 447: 133(ptr) AccessChain 27(data) 39 60
+ 448: 23(fvec4) Load 447
+ 449: 132(fvec2) VectorShuffle 448 448 0 1
+ 450: 132(fvec2) GroupNonUniformFMax 35 ClusteredReduce 449 34
+ 451: 133(ptr) AccessChain 27(data) 446 60
+ 452: 23(fvec4) Load 451
+ 453: 23(fvec4) VectorShuffle 452 450 4 5 2 3
+ Store 451 453
+ 454: 6(int) Load 8(invocation)
+ 455: 133(ptr) AccessChain 27(data) 50 60
+ 456: 23(fvec4) Load 455
+ 457: 142(fvec3) VectorShuffle 456 456 0 1 2
+ 458: 142(fvec3) GroupNonUniformFMax 35 ClusteredReduce 457 34
+ 459: 133(ptr) AccessChain 27(data) 454 60
+ 460: 23(fvec4) Load 459
+ 461: 23(fvec4) VectorShuffle 460 458 4 5 6 3
+ Store 459 461
+ 462: 6(int) Load 8(invocation)
+ 463: 133(ptr) AccessChain 27(data) 60 60
+ 464: 23(fvec4) Load 463
+ 465: 23(fvec4) GroupNonUniformFMax 35 ClusteredReduce 464 34
+ 466: 133(ptr) AccessChain 27(data) 462 60
+ Store 466 465
+ 467: 6(int) Load 8(invocation)
+ 468: 66(ptr) AccessChain 27(data) 29 39 30
+ 469: 19(int) Load 468
+ 470: 19(int) GroupNonUniformBitwiseAnd 35 ClusteredReduce 469 34
+ 471: 66(ptr) AccessChain 27(data) 467 39 30
+ Store 471 470
+ 472: 6(int) Load 8(invocation)
+ 473: 73(ptr) AccessChain 27(data) 39 39
+ 474: 20(ivec4) Load 473
+ 475: 72(ivec2) VectorShuffle 474 474 0 1
+ 476: 72(ivec2) GroupNonUniformBitwiseAnd 35 ClusteredReduce 475 34
+ 477: 73(ptr) AccessChain 27(data) 472 39
+ 478: 20(ivec4) Load 477
+ 479: 20(ivec4) VectorShuffle 478 476 4 5 2 3
+ Store 477 479
+ 480: 6(int) Load 8(invocation)
+ 481: 73(ptr) AccessChain 27(data) 50 39
+ 482: 20(ivec4) Load 481
+ 483: 82(ivec3) VectorShuffle 482 482 0 1 2
+ 484: 82(ivec3) GroupNonUniformBitwiseAnd 35 ClusteredReduce 483 34
+ 485: 73(ptr) AccessChain 27(data) 480 39
+ 486: 20(ivec4) Load 485
+ 487: 20(ivec4) VectorShuffle 486 484 4 5 6 3
+ Store 485 487
+ 488: 6(int) Load 8(invocation)
+ 489: 73(ptr) AccessChain 27(data) 60 39
+ 490: 20(ivec4) Load 489
+ 491: 20(ivec4) GroupNonUniformBitwiseAnd 35 ClusteredReduce 490 34
+ 492: 73(ptr) AccessChain 27(data) 488 39
+ Store 492 491
+ 493: 6(int) Load 8(invocation)
+ 494: 96(ptr) AccessChain 27(data) 29 50 30
+ 495: 6(int) Load 494
+ 496: 6(int) GroupNonUniformBitwiseAnd 35 ClusteredReduce 495 34
+ 497: 96(ptr) AccessChain 27(data) 493 50 30
+ Store 497 496
+ 498: 6(int) Load 8(invocation)
+ 499: 103(ptr) AccessChain 27(data) 39 50
+ 500: 21(ivec4) Load 499
+ 501: 102(ivec2) VectorShuffle 500 500 0 1
+ 502: 102(ivec2) GroupNonUniformBitwiseAnd 35 ClusteredReduce 501 34
+ 503: 103(ptr) AccessChain 27(data) 498 50
+ 504: 21(ivec4) Load 503
+ 505: 21(ivec4) VectorShuffle 504 502 4 5 2 3
+ Store 503 505
+ 506: 6(int) Load 8(invocation)
+ 507: 103(ptr) AccessChain 27(data) 50 50
+ 508: 21(ivec4) Load 507
+ 509: 112(ivec3) VectorShuffle 508 508 0 1 2
+ 510: 112(ivec3) GroupNonUniformBitwiseAnd 35 ClusteredReduce 509 34
+ 511: 103(ptr) AccessChain 27(data) 506 50
+ 512: 21(ivec4) Load 511
+ 513: 21(ivec4) VectorShuffle 512 510 4 5 6 3
+ Store 511 513
+ 514: 6(int) Load 8(invocation)
+ 515: 103(ptr) AccessChain 27(data) 60 50
+ 516: 21(ivec4) Load 515
+ 517: 21(ivec4) GroupNonUniformBitwiseAnd 35 ClusteredReduce 516 34
+ 518: 103(ptr) AccessChain 27(data) 514 50
+ Store 518 517
+ 519: 6(int) Load 8(invocation)
+ 520: 66(ptr) AccessChain 27(data) 29 39 30
+ 521: 19(int) Load 520
+ 523: 522(bool) SLessThan 521 29
+ 524: 522(bool) GroupNonUniformLogicalAnd 35 ClusteredReduce 523 34
+ 525: 19(int) Select 524 39 29
+ 526: 66(ptr) AccessChain 27(data) 519 39 30
+ Store 526 525
+ 527: 6(int) Load 8(invocation)
+ 528: 73(ptr) AccessChain 27(data) 39 39
+ 529: 20(ivec4) Load 528
+ 530: 72(ivec2) VectorShuffle 529 529 0 1
+ 533: 532(bvec2) SLessThan 530 531
+ 534: 532(bvec2) GroupNonUniformLogicalAnd 35 ClusteredReduce 533 34
+ 536: 72(ivec2) Select 534 535 531
+ 537: 73(ptr) AccessChain 27(data) 527 39
+ 538: 20(ivec4) Load 537
+ 539: 20(ivec4) VectorShuffle 538 536 4 5 2 3
+ Store 537 539
+ 540: 6(int) Load 8(invocation)
+ 541: 73(ptr) AccessChain 27(data) 39 39
+ 542: 20(ivec4) Load 541
+ 543: 82(ivec3) VectorShuffle 542 542 0 1 2
+ 546: 545(bvec3) SLessThan 543 544
+ 547: 545(bvec3) GroupNonUniformLogicalAnd 35 ClusteredReduce 546 34
+ 549: 82(ivec3) Select 547 548 544
+ 550: 73(ptr) AccessChain 27(data) 540 39
+ 551: 20(ivec4) Load 550
+ 552: 20(ivec4) VectorShuffle 551 549 4 5 6 3
+ Store 550 552
+ 553: 6(int) Load 8(invocation)
+ 554: 73(ptr) AccessChain 27(data) 39 39
+ 555: 20(ivec4) Load 554
+ 558: 557(bvec4) SLessThan 555 556
+ 559: 557(bvec4) GroupNonUniformLogicalAnd 35 ClusteredReduce 558 34
+ 561: 20(ivec4) Select 559 560 556
+ 562: 73(ptr) AccessChain 27(data) 553 39
+ Store 562 561
+ 563: 6(int) Load 8(invocation)
+ 564: 66(ptr) AccessChain 27(data) 29 39 30
+ 565: 19(int) Load 564
+ 566: 19(int) GroupNonUniformBitwiseOr 35 ClusteredReduce 565 34
+ 567: 66(ptr) AccessChain 27(data) 563 39 30
+ Store 567 566
+ 568: 6(int) Load 8(invocation)
+ 569: 73(ptr) AccessChain 27(data) 39 39
+ 570: 20(ivec4) Load 569
+ 571: 72(ivec2) VectorShuffle 570 570 0 1
+ 572: 72(ivec2) GroupNonUniformBitwiseOr 35 ClusteredReduce 571 34
+ 573: 73(ptr) AccessChain 27(data) 568 39
+ 574: 20(ivec4) Load 573
+ 575: 20(ivec4) VectorShuffle 574 572 4 5 2 3
+ Store 573 575
+ 576: 6(int) Load 8(invocation)
+ 577: 73(ptr) AccessChain 27(data) 50 39
+ 578: 20(ivec4) Load 577
+ 579: 82(ivec3) VectorShuffle 578 578 0 1 2
+ 580: 82(ivec3) GroupNonUniformBitwiseOr 35 ClusteredReduce 579 34
+ 581: 73(ptr) AccessChain 27(data) 576 39
+ 582: 20(ivec4) Load 581
+ 583: 20(ivec4) VectorShuffle 582 580 4 5 6 3
+ Store 581 583
+ 584: 6(int) Load 8(invocation)
+ 585: 73(ptr) AccessChain 27(data) 60 39
+ 586: 20(ivec4) Load 585
+ 587: 20(ivec4) GroupNonUniformBitwiseOr 35 ClusteredReduce 586 34
+ 588: 73(ptr) AccessChain 27(data) 584 39
+ Store 588 587
+ 589: 6(int) Load 8(invocation)
+ 590: 96(ptr) AccessChain 27(data) 29 50 30
+ 591: 6(int) Load 590
+ 592: 6(int) GroupNonUniformBitwiseOr 35 ClusteredReduce 591 34
+ 593: 96(ptr) AccessChain 27(data) 589 50 30
+ Store 593 592
+ 594: 6(int) Load 8(invocation)
+ 595: 103(ptr) AccessChain 27(data) 39 50
+ 596: 21(ivec4) Load 595
+ 597: 102(ivec2) VectorShuffle 596 596 0 1
+ 598: 102(ivec2) GroupNonUniformBitwiseOr 35 ClusteredReduce 597 34
+ 599: 103(ptr) AccessChain 27(data) 594 50
+ 600: 21(ivec4) Load 599
+ 601: 21(ivec4) VectorShuffle 600 598 4 5 2 3
+ Store 599 601
+ 602: 6(int) Load 8(invocation)
+ 603: 103(ptr) AccessChain 27(data) 50 50
+ 604: 21(ivec4) Load 603
+ 605: 112(ivec3) VectorShuffle 604 604 0 1 2
+ 606: 112(ivec3) GroupNonUniformBitwiseOr 35 ClusteredReduce 605 34
+ 607: 103(ptr) AccessChain 27(data) 602 50
+ 608: 21(ivec4) Load 607
+ 609: 21(ivec4) VectorShuffle 608 606 4 5 6 3
+ Store 607 609
+ 610: 6(int) Load 8(invocation)
+ 611: 103(ptr) AccessChain 27(data) 60 50
+ 612: 21(ivec4) Load 611
+ 613: 21(ivec4) GroupNonUniformBitwiseOr 35 ClusteredReduce 612 34
+ 614: 103(ptr) AccessChain 27(data) 610 50
+ Store 614 613
+ 615: 6(int) Load 8(invocation)
+ 616: 66(ptr) AccessChain 27(data) 29 39 30
+ 617: 19(int) Load 616
+ 618: 522(bool) SLessThan 617 29
+ 619: 522(bool) GroupNonUniformLogicalOr 35 ClusteredReduce 618 34
+ 620: 19(int) Select 619 39 29
+ 621: 66(ptr) AccessChain 27(data) 615 39 30
+ Store 621 620
+ 622: 6(int) Load 8(invocation)
+ 623: 73(ptr) AccessChain 27(data) 39 39
+ 624: 20(ivec4) Load 623
+ 625: 72(ivec2) VectorShuffle 624 624 0 1
+ 626: 532(bvec2) SLessThan 625 531
+ 627: 532(bvec2) GroupNonUniformLogicalOr 35 ClusteredReduce 626 34
+ 628: 72(ivec2) Select 627 535 531
+ 629: 73(ptr) AccessChain 27(data) 622 39
+ 630: 20(ivec4) Load 629
+ 631: 20(ivec4) VectorShuffle 630 628 4 5 2 3
+ Store 629 631
+ 632: 6(int) Load 8(invocation)
+ 633: 73(ptr) AccessChain 27(data) 39 39
+ 634: 20(ivec4) Load 633
+ 635: 82(ivec3) VectorShuffle 634 634 0 1 2
+ 636: 545(bvec3) SLessThan 635 544
+ 637: 545(bvec3) GroupNonUniformLogicalOr 35 ClusteredReduce 636 34
+ 638: 82(ivec3) Select 637 548 544
+ 639: 73(ptr) AccessChain 27(data) 632 39
+ 640: 20(ivec4) Load 639
+ 641: 20(ivec4) VectorShuffle 640 638 4 5 6 3
+ Store 639 641
+ 642: 6(int) Load 8(invocation)
+ 643: 73(ptr) AccessChain 27(data) 39 39
+ 644: 20(ivec4) Load 643
+ 645: 557(bvec4) SLessThan 644 556
+ 646: 557(bvec4) GroupNonUniformLogicalOr 35 ClusteredReduce 645 34
+ 647: 20(ivec4) Select 646 560 556
+ 648: 73(ptr) AccessChain 27(data) 642 39
+ Store 648 647
+ 649: 6(int) Load 8(invocation)
+ 650: 66(ptr) AccessChain 27(data) 29 39 30
+ 651: 19(int) Load 650
+ 652: 19(int) GroupNonUniformBitwiseXor 35 ClusteredReduce 651 34
+ 653: 66(ptr) AccessChain 27(data) 649 39 30
+ Store 653 652
+ 654: 6(int) Load 8(invocation)
+ 655: 73(ptr) AccessChain 27(data) 39 39
+ 656: 20(ivec4) Load 655
+ 657: 72(ivec2) VectorShuffle 656 656 0 1
+ 658: 72(ivec2) GroupNonUniformBitwiseXor 35 ClusteredReduce 657 34
+ 659: 73(ptr) AccessChain 27(data) 654 39
+ 660: 20(ivec4) Load 659
+ 661: 20(ivec4) VectorShuffle 660 658 4 5 2 3
+ Store 659 661
+ 662: 6(int) Load 8(invocation)
+ 663: 73(ptr) AccessChain 27(data) 50 39
+ 664: 20(ivec4) Load 663
+ 665: 82(ivec3) VectorShuffle 664 664 0 1 2
+ 666: 82(ivec3) GroupNonUniformBitwiseXor 35 ClusteredReduce 665 34
+ 667: 73(ptr) AccessChain 27(data) 662 39
+ 668: 20(ivec4) Load 667
+ 669: 20(ivec4) VectorShuffle 668 666 4 5 6 3
+ Store 667 669
+ 670: 6(int) Load 8(invocation)
+ 671: 73(ptr) AccessChain 27(data) 60 39
+ 672: 20(ivec4) Load 671
+ 673: 20(ivec4) GroupNonUniformBitwiseXor 35 ClusteredReduce 672 34
+ 674: 73(ptr) AccessChain 27(data) 670 39
+ Store 674 673
+ 675: 6(int) Load 8(invocation)
+ 676: 96(ptr) AccessChain 27(data) 29 50 30
+ 677: 6(int) Load 676
+ 678: 6(int) GroupNonUniformBitwiseXor 35 ClusteredReduce 677 34
+ 679: 96(ptr) AccessChain 27(data) 675 50 30
+ Store 679 678
+ 680: 6(int) Load 8(invocation)
+ 681: 103(ptr) AccessChain 27(data) 39 50
+ 682: 21(ivec4) Load 681
+ 683: 102(ivec2) VectorShuffle 682 682 0 1
+ 684: 102(ivec2) GroupNonUniformBitwiseXor 35 ClusteredReduce 683 34
+ 685: 103(ptr) AccessChain 27(data) 680 50
+ 686: 21(ivec4) Load 685
+ 687: 21(ivec4) VectorShuffle 686 684 4 5 2 3
+ Store 685 687
+ 688: 6(int) Load 8(invocation)
+ 689: 103(ptr) AccessChain 27(data) 50 50
+ 690: 21(ivec4) Load 689
+ 691: 112(ivec3) VectorShuffle 690 690 0 1 2
+ 692: 112(ivec3) GroupNonUniformBitwiseXor 35 ClusteredReduce 691 34
+ 693: 103(ptr) AccessChain 27(data) 688 50
+ 694: 21(ivec4) Load 693
+ 695: 21(ivec4) VectorShuffle 694 692 4 5 6 3
+ Store 693 695
+ 696: 6(int) Load 8(invocation)
+ 697: 103(ptr) AccessChain 27(data) 60 50
+ 698: 21(ivec4) Load 697
+ 699: 21(ivec4) GroupNonUniformBitwiseXor 35 ClusteredReduce 698 34
+ 700: 103(ptr) AccessChain 27(data) 696 50
+ Store 700 699
+ 701: 6(int) Load 8(invocation)
+ 702: 66(ptr) AccessChain 27(data) 29 39 30
+ 703: 19(int) Load 702
+ 704: 522(bool) SLessThan 703 29
+ 705: 522(bool) GroupNonUniformLogicalXor 35 ClusteredReduce 704 34
+ 706: 19(int) Select 705 39 29
+ 707: 66(ptr) AccessChain 27(data) 701 39 30
+ Store 707 706
+ 708: 6(int) Load 8(invocation)
+ 709: 73(ptr) AccessChain 27(data) 39 39
+ 710: 20(ivec4) Load 709
+ 711: 72(ivec2) VectorShuffle 710 710 0 1
+ 712: 532(bvec2) SLessThan 711 531
+ 713: 532(bvec2) GroupNonUniformLogicalXor 35 ClusteredReduce 712 34
+ 714: 72(ivec2) Select 713 535 531
+ 715: 73(ptr) AccessChain 27(data) 708 39
+ 716: 20(ivec4) Load 715
+ 717: 20(ivec4) VectorShuffle 716 714 4 5 2 3
+ Store 715 717
+ 718: 6(int) Load 8(invocation)
+ 719: 73(ptr) AccessChain 27(data) 39 39
+ 720: 20(ivec4) Load 719
+ 721: 82(ivec3) VectorShuffle 720 720 0 1 2
+ 722: 545(bvec3) SLessThan 721 544
+ 723: 545(bvec3) GroupNonUniformLogicalXor 35 ClusteredReduce 722 34
+ 724: 82(ivec3) Select 723 548 544
+ 725: 73(ptr) AccessChain 27(data) 718 39
+ 726: 20(ivec4) Load 725
+ 727: 20(ivec4) VectorShuffle 726 724 4 5 6 3
+ Store 725 727
+ 728: 6(int) Load 8(invocation)
+ 729: 73(ptr) AccessChain 27(data) 39 39
+ 730: 20(ivec4) Load 729
+ 731: 557(bvec4) SLessThan 730 556
+ 732: 557(bvec4) GroupNonUniformLogicalXor 35 ClusteredReduce 731 34
+ 733: 20(ivec4) Select 732 560 556
+ 734: 73(ptr) AccessChain 27(data) 728 39
+ Store 734 733
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupClusteredNeg.comp.out b/Test/baseResults/spv.subgroupClusteredNeg.comp.out
new file mode 100755
index 0000000..911ff72
--- /dev/null
+++ b/Test/baseResults/spv.subgroupClusteredNeg.comp.out
@@ -0,0 +1,13 @@
+spv.subgroupClusteredNeg.comp
+ERROR: 0:22: 'cluster size' : argument must be at least 1
+ERROR: 0:24: 'cluster size' : argument must be a power of 2
+ERROR: 0:27: 'cluster size' : argument must be a power of 2
+ERROR: 0:29: 'cluster size' : argument must be at least 1
+ERROR: 0:31: 'cluster size' : argument must be at least 1
+ERROR: 0:33: 'cluster size' : argument must be compile-time constant
+ERROR: 0:36: 'cluster size' : argument must be compile-time constant
+ERROR: 0:37: 'cluster size' : argument must be compile-time constant
+ERROR: 8 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.subgroupQuad.comp.out b/Test/baseResults/spv.subgroupQuad.comp.out
new file mode 100644
index 0000000..275f1e3
--- /dev/null
+++ b/Test/baseResults/spv.subgroupQuad.comp.out
@@ -0,0 +1,739 @@
+spv.subgroupQuad.comp
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 616
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformQuad
+ 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_KHR_shader_subgroup_quad"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 24 "Buffers"
+ MemberName 24(Buffers) 0 "f4"
+ MemberName 24(Buffers) 1 "i4"
+ MemberName 24(Buffers) 2 "u4"
+ MemberName 24(Buffers) 3 "d4"
+ Name 27 "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 24(Buffers) 0 Offset 0
+ MemberDecorate 24(Buffers) 1 Offset 16
+ MemberDecorate 24(Buffers) 2 Offset 32
+ MemberDecorate 24(Buffers) 3 Offset 64
+ Decorate 24(Buffers) BufferBlock
+ Decorate 27(data) DescriptorSet 0
+ Decorate 27(data) Binding 0
+ Decorate 615 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: TypeFloat 32
+ 18: TypeVector 17(float) 4
+ 19: TypeInt 32 1
+ 20: TypeVector 19(int) 4
+ 21: TypeVector 6(int) 4
+ 22: TypeFloat 64
+ 23: TypeVector 22(float) 4
+ 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(fvec4)
+ 25: TypeArray 24(Buffers) 15
+ 26: TypePointer Uniform 25
+ 27(data): 26(ptr) Variable Uniform
+ 29: 19(int) Constant 0
+ 30: 6(int) Constant 0
+ 31: TypePointer Uniform 17(float)
+ 34: 6(int) Constant 1
+ 35: 6(int) Constant 3
+ 39: 19(int) Constant 1
+ 40: TypeVector 17(float) 2
+ 41: TypePointer Uniform 18(fvec4)
+ 50: 19(int) Constant 2
+ 51: TypeVector 17(float) 3
+ 60: 19(int) Constant 3
+ 66: TypePointer Uniform 19(int)
+ 72: TypeVector 19(int) 2
+ 73: TypePointer Uniform 20(ivec4)
+ 82: TypeVector 19(int) 3
+ 96: TypePointer Uniform 6(int)
+ 102: TypeVector 6(int) 2
+ 103: TypePointer Uniform 21(ivec4)
+ 112: TypeVector 6(int) 3
+ 126: TypePointer Uniform 22(float)
+ 132: TypeVector 22(float) 2
+ 133: TypePointer Uniform 23(fvec4)
+ 142: TypeVector 22(float) 3
+ 158: TypeBool
+ 167: 72(ivec2) ConstantComposite 29 29
+ 168: TypeVector 158(bool) 2
+ 171: 72(ivec2) ConstantComposite 39 39
+ 180: 82(ivec3) ConstantComposite 29 29 29
+ 181: TypeVector 158(bool) 3
+ 184: 82(ivec3) ConstantComposite 39 39 39
+ 192: 20(ivec4) ConstantComposite 29 29 29 29
+ 193: TypeVector 158(bool) 4
+ 196: 20(ivec4) ConstantComposite 39 39 39 39
+ 478: 6(int) Constant 2
+ 614: 6(int) Constant 8
+ 615: 112(ivec3) ConstantComposite 614 34 34
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(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
+ 28: 6(int) Load 8(invocation)
+ 32: 31(ptr) AccessChain 27(data) 29 29 30
+ 33: 17(float) Load 32
+ 36: 17(float) GroupNonUniformQuadBroadcast 35 33 34
+ 37: 31(ptr) AccessChain 27(data) 28 29 30
+ Store 37 36
+ 38: 6(int) Load 8(invocation)
+ 42: 41(ptr) AccessChain 27(data) 39 29
+ 43: 18(fvec4) Load 42
+ 44: 40(fvec2) VectorShuffle 43 43 0 1
+ 45: 40(fvec2) GroupNonUniformQuadBroadcast 35 44 34
+ 46: 41(ptr) AccessChain 27(data) 38 29
+ 47: 18(fvec4) Load 46
+ 48: 18(fvec4) VectorShuffle 47 45 4 5 2 3
+ Store 46 48
+ 49: 6(int) Load 8(invocation)
+ 52: 41(ptr) AccessChain 27(data) 50 29
+ 53: 18(fvec4) Load 52
+ 54: 51(fvec3) VectorShuffle 53 53 0 1 2
+ 55: 51(fvec3) GroupNonUniformQuadBroadcast 35 54 34
+ 56: 41(ptr) AccessChain 27(data) 49 29
+ 57: 18(fvec4) Load 56
+ 58: 18(fvec4) VectorShuffle 57 55 4 5 6 3
+ Store 56 58
+ 59: 6(int) Load 8(invocation)
+ 61: 41(ptr) AccessChain 27(data) 60 29
+ 62: 18(fvec4) Load 61
+ 63: 18(fvec4) GroupNonUniformQuadBroadcast 35 62 34
+ 64: 41(ptr) AccessChain 27(data) 59 29
+ Store 64 63
+ 65: 6(int) Load 8(invocation)
+ 67: 66(ptr) AccessChain 27(data) 29 39 30
+ 68: 19(int) Load 67
+ 69: 19(int) GroupNonUniformQuadBroadcast 35 68 34
+ 70: 66(ptr) AccessChain 27(data) 65 39 30
+ Store 70 69
+ 71: 6(int) Load 8(invocation)
+ 74: 73(ptr) AccessChain 27(data) 39 39
+ 75: 20(ivec4) Load 74
+ 76: 72(ivec2) VectorShuffle 75 75 0 1
+ 77: 72(ivec2) GroupNonUniformQuadBroadcast 35 76 34
+ 78: 73(ptr) AccessChain 27(data) 71 39
+ 79: 20(ivec4) Load 78
+ 80: 20(ivec4) VectorShuffle 79 77 4 5 2 3
+ Store 78 80
+ 81: 6(int) Load 8(invocation)
+ 83: 73(ptr) AccessChain 27(data) 50 39
+ 84: 20(ivec4) Load 83
+ 85: 82(ivec3) VectorShuffle 84 84 0 1 2
+ 86: 82(ivec3) GroupNonUniformQuadBroadcast 35 85 34
+ 87: 73(ptr) AccessChain 27(data) 81 39
+ 88: 20(ivec4) Load 87
+ 89: 20(ivec4) VectorShuffle 88 86 4 5 6 3
+ Store 87 89
+ 90: 6(int) Load 8(invocation)
+ 91: 73(ptr) AccessChain 27(data) 60 39
+ 92: 20(ivec4) Load 91
+ 93: 20(ivec4) GroupNonUniformQuadBroadcast 35 92 34
+ 94: 73(ptr) AccessChain 27(data) 90 39
+ Store 94 93
+ 95: 6(int) Load 8(invocation)
+ 97: 96(ptr) AccessChain 27(data) 29 50 30
+ 98: 6(int) Load 97
+ 99: 6(int) GroupNonUniformQuadBroadcast 35 98 34
+ 100: 96(ptr) AccessChain 27(data) 95 50 30
+ Store 100 99
+ 101: 6(int) Load 8(invocation)
+ 104: 103(ptr) AccessChain 27(data) 39 50
+ 105: 21(ivec4) Load 104
+ 106: 102(ivec2) VectorShuffle 105 105 0 1
+ 107: 102(ivec2) GroupNonUniformQuadBroadcast 35 106 34
+ 108: 103(ptr) AccessChain 27(data) 101 50
+ 109: 21(ivec4) Load 108
+ 110: 21(ivec4) VectorShuffle 109 107 4 5 2 3
+ Store 108 110
+ 111: 6(int) Load 8(invocation)
+ 113: 103(ptr) AccessChain 27(data) 50 50
+ 114: 21(ivec4) Load 113
+ 115: 112(ivec3) VectorShuffle 114 114 0 1 2
+ 116: 112(ivec3) GroupNonUniformQuadBroadcast 35 115 34
+ 117: 103(ptr) AccessChain 27(data) 111 50
+ 118: 21(ivec4) Load 117
+ 119: 21(ivec4) VectorShuffle 118 116 4 5 6 3
+ Store 117 119
+ 120: 6(int) Load 8(invocation)
+ 121: 103(ptr) AccessChain 27(data) 60 50
+ 122: 21(ivec4) Load 121
+ 123: 21(ivec4) GroupNonUniformQuadBroadcast 35 122 34
+ 124: 103(ptr) AccessChain 27(data) 120 50
+ Store 124 123
+ 125: 6(int) Load 8(invocation)
+ 127: 126(ptr) AccessChain 27(data) 29 60 30
+ 128: 22(float) Load 127
+ 129: 22(float) GroupNonUniformQuadBroadcast 35 128 34
+ 130: 126(ptr) AccessChain 27(data) 125 60 30
+ Store 130 129
+ 131: 6(int) Load 8(invocation)
+ 134: 133(ptr) AccessChain 27(data) 39 60
+ 135: 23(fvec4) Load 134
+ 136: 132(fvec2) VectorShuffle 135 135 0 1
+ 137: 132(fvec2) GroupNonUniformQuadBroadcast 35 136 34
+ 138: 133(ptr) AccessChain 27(data) 131 60
+ 139: 23(fvec4) Load 138
+ 140: 23(fvec4) VectorShuffle 139 137 4 5 2 3
+ Store 138 140
+ 141: 6(int) Load 8(invocation)
+ 143: 133(ptr) AccessChain 27(data) 50 60
+ 144: 23(fvec4) Load 143
+ 145: 142(fvec3) VectorShuffle 144 144 0 1 2
+ 146: 142(fvec3) GroupNonUniformQuadBroadcast 35 145 34
+ 147: 133(ptr) AccessChain 27(data) 141 60
+ 148: 23(fvec4) Load 147
+ 149: 23(fvec4) VectorShuffle 148 146 4 5 6 3
+ Store 147 149
+ 150: 6(int) Load 8(invocation)
+ 151: 133(ptr) AccessChain 27(data) 60 60
+ 152: 23(fvec4) Load 151
+ 153: 23(fvec4) GroupNonUniformQuadBroadcast 35 152 34
+ 154: 133(ptr) AccessChain 27(data) 150 60
+ Store 154 153
+ 155: 6(int) Load 8(invocation)
+ 156: 66(ptr) AccessChain 27(data) 29 39 30
+ 157: 19(int) Load 156
+ 159: 158(bool) SLessThan 157 29
+ 160: 158(bool) GroupNonUniformQuadBroadcast 35 159 34
+ 161: 19(int) Select 160 39 29
+ 162: 66(ptr) AccessChain 27(data) 155 39 30
+ Store 162 161
+ 163: 6(int) Load 8(invocation)
+ 164: 73(ptr) AccessChain 27(data) 39 39
+ 165: 20(ivec4) Load 164
+ 166: 72(ivec2) VectorShuffle 165 165 0 1
+ 169: 168(bvec2) SLessThan 166 167
+ 170: 168(bvec2) GroupNonUniformQuadBroadcast 35 169 34
+ 172: 72(ivec2) Select 170 171 167
+ 173: 73(ptr) AccessChain 27(data) 163 39
+ 174: 20(ivec4) Load 173
+ 175: 20(ivec4) VectorShuffle 174 172 4 5 2 3
+ Store 173 175
+ 176: 6(int) Load 8(invocation)
+ 177: 73(ptr) AccessChain 27(data) 39 39
+ 178: 20(ivec4) Load 177
+ 179: 82(ivec3) VectorShuffle 178 178 0 1 2
+ 182: 181(bvec3) SLessThan 179 180
+ 183: 181(bvec3) GroupNonUniformQuadBroadcast 35 182 34
+ 185: 82(ivec3) Select 183 184 180
+ 186: 73(ptr) AccessChain 27(data) 176 39
+ 187: 20(ivec4) Load 186
+ 188: 20(ivec4) VectorShuffle 187 185 4 5 6 3
+ Store 186 188
+ 189: 6(int) Load 8(invocation)
+ 190: 73(ptr) AccessChain 27(data) 39 39
+ 191: 20(ivec4) Load 190
+ 194: 193(bvec4) SLessThan 191 192
+ 195: 193(bvec4) GroupNonUniformQuadBroadcast 35 194 34
+ 197: 20(ivec4) Select 195 196 192
+ 198: 73(ptr) AccessChain 27(data) 189 39
+ Store 198 197
+ 199: 6(int) Load 8(invocation)
+ 200: 31(ptr) AccessChain 27(data) 29 29 30
+ 201: 17(float) Load 200
+ 202: 17(float) GroupNonUniformQuadSwap 35 201 30
+ 203: 31(ptr) AccessChain 27(data) 199 29 30
+ Store 203 202
+ 204: 6(int) Load 8(invocation)
+ 205: 41(ptr) AccessChain 27(data) 39 29
+ 206: 18(fvec4) Load 205
+ 207: 40(fvec2) VectorShuffle 206 206 0 1
+ 208: 40(fvec2) GroupNonUniformQuadSwap 35 207 30
+ 209: 41(ptr) AccessChain 27(data) 204 29
+ 210: 18(fvec4) Load 209
+ 211: 18(fvec4) VectorShuffle 210 208 4 5 2 3
+ Store 209 211
+ 212: 6(int) Load 8(invocation)
+ 213: 41(ptr) AccessChain 27(data) 50 29
+ 214: 18(fvec4) Load 213
+ 215: 51(fvec3) VectorShuffle 214 214 0 1 2
+ 216: 51(fvec3) GroupNonUniformQuadSwap 35 215 30
+ 217: 41(ptr) AccessChain 27(data) 212 29
+ 218: 18(fvec4) Load 217
+ 219: 18(fvec4) VectorShuffle 218 216 4 5 6 3
+ Store 217 219
+ 220: 6(int) Load 8(invocation)
+ 221: 41(ptr) AccessChain 27(data) 60 29
+ 222: 18(fvec4) Load 221
+ 223: 18(fvec4) GroupNonUniformQuadSwap 35 222 30
+ 224: 41(ptr) AccessChain 27(data) 220 29
+ Store 224 223
+ 225: 6(int) Load 8(invocation)
+ 226: 66(ptr) AccessChain 27(data) 29 39 30
+ 227: 19(int) Load 226
+ 228: 19(int) GroupNonUniformQuadSwap 35 227 30
+ 229: 66(ptr) AccessChain 27(data) 225 39 30
+ Store 229 228
+ 230: 6(int) Load 8(invocation)
+ 231: 73(ptr) AccessChain 27(data) 39 39
+ 232: 20(ivec4) Load 231
+ 233: 72(ivec2) VectorShuffle 232 232 0 1
+ 234: 72(ivec2) GroupNonUniformQuadSwap 35 233 30
+ 235: 73(ptr) AccessChain 27(data) 230 39
+ 236: 20(ivec4) Load 235
+ 237: 20(ivec4) VectorShuffle 236 234 4 5 2 3
+ Store 235 237
+ 238: 6(int) Load 8(invocation)
+ 239: 73(ptr) AccessChain 27(data) 50 39
+ 240: 20(ivec4) Load 239
+ 241: 82(ivec3) VectorShuffle 240 240 0 1 2
+ 242: 82(ivec3) GroupNonUniformQuadSwap 35 241 30
+ 243: 73(ptr) AccessChain 27(data) 238 39
+ 244: 20(ivec4) Load 243
+ 245: 20(ivec4) VectorShuffle 244 242 4 5 6 3
+ Store 243 245
+ 246: 6(int) Load 8(invocation)
+ 247: 73(ptr) AccessChain 27(data) 60 39
+ 248: 20(ivec4) Load 247
+ 249: 20(ivec4) GroupNonUniformQuadSwap 35 248 30
+ 250: 73(ptr) AccessChain 27(data) 246 39
+ Store 250 249
+ 251: 6(int) Load 8(invocation)
+ 252: 96(ptr) AccessChain 27(data) 29 50 30
+ 253: 6(int) Load 252
+ 254: 6(int) GroupNonUniformQuadSwap 35 253 30
+ 255: 96(ptr) AccessChain 27(data) 251 50 30
+ Store 255 254
+ 256: 6(int) Load 8(invocation)
+ 257: 103(ptr) AccessChain 27(data) 39 50
+ 258: 21(ivec4) Load 257
+ 259: 102(ivec2) VectorShuffle 258 258 0 1
+ 260: 102(ivec2) GroupNonUniformQuadSwap 35 259 30
+ 261: 103(ptr) AccessChain 27(data) 256 50
+ 262: 21(ivec4) Load 261
+ 263: 21(ivec4) VectorShuffle 262 260 4 5 2 3
+ Store 261 263
+ 264: 6(int) Load 8(invocation)
+ 265: 103(ptr) AccessChain 27(data) 50 50
+ 266: 21(ivec4) Load 265
+ 267: 112(ivec3) VectorShuffle 266 266 0 1 2
+ 268: 112(ivec3) GroupNonUniformQuadSwap 35 267 30
+ 269: 103(ptr) AccessChain 27(data) 264 50
+ 270: 21(ivec4) Load 269
+ 271: 21(ivec4) VectorShuffle 270 268 4 5 6 3
+ Store 269 271
+ 272: 6(int) Load 8(invocation)
+ 273: 103(ptr) AccessChain 27(data) 60 50
+ 274: 21(ivec4) Load 273
+ 275: 21(ivec4) GroupNonUniformQuadSwap 35 274 30
+ 276: 103(ptr) AccessChain 27(data) 272 50
+ Store 276 275
+ 277: 6(int) Load 8(invocation)
+ 278: 126(ptr) AccessChain 27(data) 29 60 30
+ 279: 22(float) Load 278
+ 280: 22(float) GroupNonUniformQuadSwap 35 279 30
+ 281: 126(ptr) AccessChain 27(data) 277 60 30
+ Store 281 280
+ 282: 6(int) Load 8(invocation)
+ 283: 133(ptr) AccessChain 27(data) 39 60
+ 284: 23(fvec4) Load 283
+ 285: 132(fvec2) VectorShuffle 284 284 0 1
+ 286: 132(fvec2) GroupNonUniformQuadSwap 35 285 30
+ 287: 133(ptr) AccessChain 27(data) 282 60
+ 288: 23(fvec4) Load 287
+ 289: 23(fvec4) VectorShuffle 288 286 4 5 2 3
+ Store 287 289
+ 290: 6(int) Load 8(invocation)
+ 291: 133(ptr) AccessChain 27(data) 50 60
+ 292: 23(fvec4) Load 291
+ 293: 142(fvec3) VectorShuffle 292 292 0 1 2
+ 294: 142(fvec3) GroupNonUniformQuadSwap 35 293 30
+ 295: 133(ptr) AccessChain 27(data) 290 60
+ 296: 23(fvec4) Load 295
+ 297: 23(fvec4) VectorShuffle 296 294 4 5 6 3
+ Store 295 297
+ 298: 6(int) Load 8(invocation)
+ 299: 133(ptr) AccessChain 27(data) 60 60
+ 300: 23(fvec4) Load 299
+ 301: 23(fvec4) GroupNonUniformQuadSwap 35 300 30
+ 302: 133(ptr) AccessChain 27(data) 298 60
+ Store 302 301
+ 303: 6(int) Load 8(invocation)
+ 304: 66(ptr) AccessChain 27(data) 29 39 30
+ 305: 19(int) Load 304
+ 306: 158(bool) SLessThan 305 29
+ 307: 158(bool) GroupNonUniformQuadSwap 35 306 30
+ 308: 19(int) Select 307 39 29
+ 309: 66(ptr) AccessChain 27(data) 303 39 30
+ Store 309 308
+ 310: 6(int) Load 8(invocation)
+ 311: 73(ptr) AccessChain 27(data) 39 39
+ 312: 20(ivec4) Load 311
+ 313: 72(ivec2) VectorShuffle 312 312 0 1
+ 314: 168(bvec2) SLessThan 313 167
+ 315: 168(bvec2) GroupNonUniformQuadSwap 35 314 30
+ 316: 72(ivec2) Select 315 171 167
+ 317: 73(ptr) AccessChain 27(data) 310 39
+ 318: 20(ivec4) Load 317
+ 319: 20(ivec4) VectorShuffle 318 316 4 5 2 3
+ Store 317 319
+ 320: 6(int) Load 8(invocation)
+ 321: 73(ptr) AccessChain 27(data) 39 39
+ 322: 20(ivec4) Load 321
+ 323: 82(ivec3) VectorShuffle 322 322 0 1 2
+ 324: 181(bvec3) SLessThan 323 180
+ 325: 181(bvec3) GroupNonUniformQuadSwap 35 324 30
+ 326: 82(ivec3) Select 325 184 180
+ 327: 73(ptr) AccessChain 27(data) 320 39
+ 328: 20(ivec4) Load 327
+ 329: 20(ivec4) VectorShuffle 328 326 4 5 6 3
+ Store 327 329
+ 330: 6(int) Load 8(invocation)
+ 331: 73(ptr) AccessChain 27(data) 39 39
+ 332: 20(ivec4) Load 331
+ 333: 193(bvec4) SLessThan 332 192
+ 334: 193(bvec4) GroupNonUniformQuadSwap 35 333 30
+ 335: 20(ivec4) Select 334 196 192
+ 336: 73(ptr) AccessChain 27(data) 330 39
+ Store 336 335
+ 337: 6(int) Load 8(invocation)
+ 338: 31(ptr) AccessChain 27(data) 29 29 30
+ 339: 17(float) Load 338
+ 340: 17(float) GroupNonUniformQuadSwap 35 339 34
+ 341: 31(ptr) AccessChain 27(data) 337 29 30
+ Store 341 340
+ 342: 6(int) Load 8(invocation)
+ 343: 41(ptr) AccessChain 27(data) 39 29
+ 344: 18(fvec4) Load 343
+ 345: 40(fvec2) VectorShuffle 344 344 0 1
+ 346: 40(fvec2) GroupNonUniformQuadSwap 35 345 34
+ 347: 41(ptr) AccessChain 27(data) 342 29
+ 348: 18(fvec4) Load 347
+ 349: 18(fvec4) VectorShuffle 348 346 4 5 2 3
+ Store 347 349
+ 350: 6(int) Load 8(invocation)
+ 351: 41(ptr) AccessChain 27(data) 50 29
+ 352: 18(fvec4) Load 351
+ 353: 51(fvec3) VectorShuffle 352 352 0 1 2
+ 354: 51(fvec3) GroupNonUniformQuadSwap 35 353 34
+ 355: 41(ptr) AccessChain 27(data) 350 29
+ 356: 18(fvec4) Load 355
+ 357: 18(fvec4) VectorShuffle 356 354 4 5 6 3
+ Store 355 357
+ 358: 6(int) Load 8(invocation)
+ 359: 41(ptr) AccessChain 27(data) 60 29
+ 360: 18(fvec4) Load 359
+ 361: 18(fvec4) GroupNonUniformQuadSwap 35 360 34
+ 362: 41(ptr) AccessChain 27(data) 358 29
+ Store 362 361
+ 363: 6(int) Load 8(invocation)
+ 364: 66(ptr) AccessChain 27(data) 29 39 30
+ 365: 19(int) Load 364
+ 366: 19(int) GroupNonUniformQuadSwap 35 365 34
+ 367: 66(ptr) AccessChain 27(data) 363 39 30
+ Store 367 366
+ 368: 6(int) Load 8(invocation)
+ 369: 73(ptr) AccessChain 27(data) 39 39
+ 370: 20(ivec4) Load 369
+ 371: 72(ivec2) VectorShuffle 370 370 0 1
+ 372: 72(ivec2) GroupNonUniformQuadSwap 35 371 34
+ 373: 73(ptr) AccessChain 27(data) 368 39
+ 374: 20(ivec4) Load 373
+ 375: 20(ivec4) VectorShuffle 374 372 4 5 2 3
+ Store 373 375
+ 376: 6(int) Load 8(invocation)
+ 377: 73(ptr) AccessChain 27(data) 50 39
+ 378: 20(ivec4) Load 377
+ 379: 82(ivec3) VectorShuffle 378 378 0 1 2
+ 380: 82(ivec3) GroupNonUniformQuadSwap 35 379 34
+ 381: 73(ptr) AccessChain 27(data) 376 39
+ 382: 20(ivec4) Load 381
+ 383: 20(ivec4) VectorShuffle 382 380 4 5 6 3
+ Store 381 383
+ 384: 6(int) Load 8(invocation)
+ 385: 73(ptr) AccessChain 27(data) 60 39
+ 386: 20(ivec4) Load 385
+ 387: 20(ivec4) GroupNonUniformQuadSwap 35 386 34
+ 388: 73(ptr) AccessChain 27(data) 384 39
+ Store 388 387
+ 389: 6(int) Load 8(invocation)
+ 390: 96(ptr) AccessChain 27(data) 29 50 30
+ 391: 6(int) Load 390
+ 392: 6(int) GroupNonUniformQuadSwap 35 391 34
+ 393: 96(ptr) AccessChain 27(data) 389 50 30
+ Store 393 392
+ 394: 6(int) Load 8(invocation)
+ 395: 103(ptr) AccessChain 27(data) 39 50
+ 396: 21(ivec4) Load 395
+ 397: 102(ivec2) VectorShuffle 396 396 0 1
+ 398: 102(ivec2) GroupNonUniformQuadSwap 35 397 34
+ 399: 103(ptr) AccessChain 27(data) 394 50
+ 400: 21(ivec4) Load 399
+ 401: 21(ivec4) VectorShuffle 400 398 4 5 2 3
+ Store 399 401
+ 402: 6(int) Load 8(invocation)
+ 403: 103(ptr) AccessChain 27(data) 50 50
+ 404: 21(ivec4) Load 403
+ 405: 112(ivec3) VectorShuffle 404 404 0 1 2
+ 406: 112(ivec3) GroupNonUniformQuadSwap 35 405 34
+ 407: 103(ptr) AccessChain 27(data) 402 50
+ 408: 21(ivec4) Load 407
+ 409: 21(ivec4) VectorShuffle 408 406 4 5 6 3
+ Store 407 409
+ 410: 6(int) Load 8(invocation)
+ 411: 103(ptr) AccessChain 27(data) 60 50
+ 412: 21(ivec4) Load 411
+ 413: 21(ivec4) GroupNonUniformQuadSwap 35 412 34
+ 414: 103(ptr) AccessChain 27(data) 410 50
+ Store 414 413
+ 415: 6(int) Load 8(invocation)
+ 416: 126(ptr) AccessChain 27(data) 29 60 30
+ 417: 22(float) Load 416
+ 418: 22(float) GroupNonUniformQuadSwap 35 417 34
+ 419: 126(ptr) AccessChain 27(data) 415 60 30
+ Store 419 418
+ 420: 6(int) Load 8(invocation)
+ 421: 133(ptr) AccessChain 27(data) 39 60
+ 422: 23(fvec4) Load 421
+ 423: 132(fvec2) VectorShuffle 422 422 0 1
+ 424: 132(fvec2) GroupNonUniformQuadSwap 35 423 34
+ 425: 133(ptr) AccessChain 27(data) 420 60
+ 426: 23(fvec4) Load 425
+ 427: 23(fvec4) VectorShuffle 426 424 4 5 2 3
+ Store 425 427
+ 428: 6(int) Load 8(invocation)
+ 429: 133(ptr) AccessChain 27(data) 50 60
+ 430: 23(fvec4) Load 429
+ 431: 142(fvec3) VectorShuffle 430 430 0 1 2
+ 432: 142(fvec3) GroupNonUniformQuadSwap 35 431 34
+ 433: 133(ptr) AccessChain 27(data) 428 60
+ 434: 23(fvec4) Load 433
+ 435: 23(fvec4) VectorShuffle 434 432 4 5 6 3
+ Store 433 435
+ 436: 6(int) Load 8(invocation)
+ 437: 133(ptr) AccessChain 27(data) 60 60
+ 438: 23(fvec4) Load 437
+ 439: 23(fvec4) GroupNonUniformQuadSwap 35 438 34
+ 440: 133(ptr) AccessChain 27(data) 436 60
+ Store 440 439
+ 441: 6(int) Load 8(invocation)
+ 442: 66(ptr) AccessChain 27(data) 29 39 30
+ 443: 19(int) Load 442
+ 444: 158(bool) SLessThan 443 29
+ 445: 158(bool) GroupNonUniformQuadSwap 35 444 34
+ 446: 19(int) Select 445 39 29
+ 447: 66(ptr) AccessChain 27(data) 441 39 30
+ Store 447 446
+ 448: 6(int) Load 8(invocation)
+ 449: 73(ptr) AccessChain 27(data) 39 39
+ 450: 20(ivec4) Load 449
+ 451: 72(ivec2) VectorShuffle 450 450 0 1
+ 452: 168(bvec2) SLessThan 451 167
+ 453: 168(bvec2) GroupNonUniformQuadSwap 35 452 34
+ 454: 72(ivec2) Select 453 171 167
+ 455: 73(ptr) AccessChain 27(data) 448 39
+ 456: 20(ivec4) Load 455
+ 457: 20(ivec4) VectorShuffle 456 454 4 5 2 3
+ Store 455 457
+ 458: 6(int) Load 8(invocation)
+ 459: 73(ptr) AccessChain 27(data) 39 39
+ 460: 20(ivec4) Load 459
+ 461: 82(ivec3) VectorShuffle 460 460 0 1 2
+ 462: 181(bvec3) SLessThan 461 180
+ 463: 181(bvec3) GroupNonUniformQuadSwap 35 462 34
+ 464: 82(ivec3) Select 463 184 180
+ 465: 73(ptr) AccessChain 27(data) 458 39
+ 466: 20(ivec4) Load 465
+ 467: 20(ivec4) VectorShuffle 466 464 4 5 6 3
+ Store 465 467
+ 468: 6(int) Load 8(invocation)
+ 469: 73(ptr) AccessChain 27(data) 39 39
+ 470: 20(ivec4) Load 469
+ 471: 193(bvec4) SLessThan 470 192
+ 472: 193(bvec4) GroupNonUniformQuadSwap 35 471 34
+ 473: 20(ivec4) Select 472 196 192
+ 474: 73(ptr) AccessChain 27(data) 468 39
+ Store 474 473
+ 475: 6(int) Load 8(invocation)
+ 476: 31(ptr) AccessChain 27(data) 29 29 30
+ 477: 17(float) Load 476
+ 479: 17(float) GroupNonUniformQuadSwap 35 477 478
+ 480: 31(ptr) AccessChain 27(data) 475 29 30
+ Store 480 479
+ 481: 6(int) Load 8(invocation)
+ 482: 41(ptr) AccessChain 27(data) 39 29
+ 483: 18(fvec4) Load 482
+ 484: 40(fvec2) VectorShuffle 483 483 0 1
+ 485: 40(fvec2) GroupNonUniformQuadSwap 35 484 478
+ 486: 41(ptr) AccessChain 27(data) 481 29
+ 487: 18(fvec4) Load 486
+ 488: 18(fvec4) VectorShuffle 487 485 4 5 2 3
+ Store 486 488
+ 489: 6(int) Load 8(invocation)
+ 490: 41(ptr) AccessChain 27(data) 50 29
+ 491: 18(fvec4) Load 490
+ 492: 51(fvec3) VectorShuffle 491 491 0 1 2
+ 493: 51(fvec3) GroupNonUniformQuadSwap 35 492 478
+ 494: 41(ptr) AccessChain 27(data) 489 29
+ 495: 18(fvec4) Load 494
+ 496: 18(fvec4) VectorShuffle 495 493 4 5 6 3
+ Store 494 496
+ 497: 6(int) Load 8(invocation)
+ 498: 41(ptr) AccessChain 27(data) 60 29
+ 499: 18(fvec4) Load 498
+ 500: 18(fvec4) GroupNonUniformQuadSwap 35 499 478
+ 501: 41(ptr) AccessChain 27(data) 497 29
+ Store 501 500
+ 502: 6(int) Load 8(invocation)
+ 503: 66(ptr) AccessChain 27(data) 29 39 30
+ 504: 19(int) Load 503
+ 505: 19(int) GroupNonUniformQuadSwap 35 504 478
+ 506: 66(ptr) AccessChain 27(data) 502 39 30
+ Store 506 505
+ 507: 6(int) Load 8(invocation)
+ 508: 73(ptr) AccessChain 27(data) 39 39
+ 509: 20(ivec4) Load 508
+ 510: 72(ivec2) VectorShuffle 509 509 0 1
+ 511: 72(ivec2) GroupNonUniformQuadSwap 35 510 478
+ 512: 73(ptr) AccessChain 27(data) 507 39
+ 513: 20(ivec4) Load 512
+ 514: 20(ivec4) VectorShuffle 513 511 4 5 2 3
+ Store 512 514
+ 515: 6(int) Load 8(invocation)
+ 516: 73(ptr) AccessChain 27(data) 50 39
+ 517: 20(ivec4) Load 516
+ 518: 82(ivec3) VectorShuffle 517 517 0 1 2
+ 519: 82(ivec3) GroupNonUniformQuadSwap 35 518 478
+ 520: 73(ptr) AccessChain 27(data) 515 39
+ 521: 20(ivec4) Load 520
+ 522: 20(ivec4) VectorShuffle 521 519 4 5 6 3
+ Store 520 522
+ 523: 6(int) Load 8(invocation)
+ 524: 73(ptr) AccessChain 27(data) 60 39
+ 525: 20(ivec4) Load 524
+ 526: 20(ivec4) GroupNonUniformQuadSwap 35 525 478
+ 527: 73(ptr) AccessChain 27(data) 523 39
+ Store 527 526
+ 528: 6(int) Load 8(invocation)
+ 529: 96(ptr) AccessChain 27(data) 29 50 30
+ 530: 6(int) Load 529
+ 531: 6(int) GroupNonUniformQuadSwap 35 530 478
+ 532: 96(ptr) AccessChain 27(data) 528 50 30
+ Store 532 531
+ 533: 6(int) Load 8(invocation)
+ 534: 103(ptr) AccessChain 27(data) 39 50
+ 535: 21(ivec4) Load 534
+ 536: 102(ivec2) VectorShuffle 535 535 0 1
+ 537: 102(ivec2) GroupNonUniformQuadSwap 35 536 478
+ 538: 103(ptr) AccessChain 27(data) 533 50
+ 539: 21(ivec4) Load 538
+ 540: 21(ivec4) VectorShuffle 539 537 4 5 2 3
+ Store 538 540
+ 541: 6(int) Load 8(invocation)
+ 542: 103(ptr) AccessChain 27(data) 50 50
+ 543: 21(ivec4) Load 542
+ 544: 112(ivec3) VectorShuffle 543 543 0 1 2
+ 545: 112(ivec3) GroupNonUniformQuadSwap 35 544 478
+ 546: 103(ptr) AccessChain 27(data) 541 50
+ 547: 21(ivec4) Load 546
+ 548: 21(ivec4) VectorShuffle 547 545 4 5 6 3
+ Store 546 548
+ 549: 6(int) Load 8(invocation)
+ 550: 103(ptr) AccessChain 27(data) 60 50
+ 551: 21(ivec4) Load 550
+ 552: 21(ivec4) GroupNonUniformQuadSwap 35 551 478
+ 553: 103(ptr) AccessChain 27(data) 549 50
+ Store 553 552
+ 554: 6(int) Load 8(invocation)
+ 555: 126(ptr) AccessChain 27(data) 29 60 30
+ 556: 22(float) Load 555
+ 557: 22(float) GroupNonUniformQuadSwap 35 556 478
+ 558: 126(ptr) AccessChain 27(data) 554 60 30
+ Store 558 557
+ 559: 6(int) Load 8(invocation)
+ 560: 133(ptr) AccessChain 27(data) 39 60
+ 561: 23(fvec4) Load 560
+ 562: 132(fvec2) VectorShuffle 561 561 0 1
+ 563: 132(fvec2) GroupNonUniformQuadSwap 35 562 478
+ 564: 133(ptr) AccessChain 27(data) 559 60
+ 565: 23(fvec4) Load 564
+ 566: 23(fvec4) VectorShuffle 565 563 4 5 2 3
+ Store 564 566
+ 567: 6(int) Load 8(invocation)
+ 568: 133(ptr) AccessChain 27(data) 50 60
+ 569: 23(fvec4) Load 568
+ 570: 142(fvec3) VectorShuffle 569 569 0 1 2
+ 571: 142(fvec3) GroupNonUniformQuadSwap 35 570 478
+ 572: 133(ptr) AccessChain 27(data) 567 60
+ 573: 23(fvec4) Load 572
+ 574: 23(fvec4) VectorShuffle 573 571 4 5 6 3
+ Store 572 574
+ 575: 6(int) Load 8(invocation)
+ 576: 133(ptr) AccessChain 27(data) 60 60
+ 577: 23(fvec4) Load 576
+ 578: 23(fvec4) GroupNonUniformQuadSwap 35 577 478
+ 579: 133(ptr) AccessChain 27(data) 575 60
+ Store 579 578
+ 580: 6(int) Load 8(invocation)
+ 581: 66(ptr) AccessChain 27(data) 29 39 30
+ 582: 19(int) Load 581
+ 583: 158(bool) SLessThan 582 29
+ 584: 158(bool) GroupNonUniformQuadSwap 35 583 478
+ 585: 19(int) Select 584 39 29
+ 586: 66(ptr) AccessChain 27(data) 580 39 30
+ Store 586 585
+ 587: 6(int) Load 8(invocation)
+ 588: 73(ptr) AccessChain 27(data) 39 39
+ 589: 20(ivec4) Load 588
+ 590: 72(ivec2) VectorShuffle 589 589 0 1
+ 591: 168(bvec2) SLessThan 590 167
+ 592: 168(bvec2) GroupNonUniformQuadSwap 35 591 478
+ 593: 72(ivec2) Select 592 171 167
+ 594: 73(ptr) AccessChain 27(data) 587 39
+ 595: 20(ivec4) Load 594
+ 596: 20(ivec4) VectorShuffle 595 593 4 5 2 3
+ Store 594 596
+ 597: 6(int) Load 8(invocation)
+ 598: 73(ptr) AccessChain 27(data) 39 39
+ 599: 20(ivec4) Load 598
+ 600: 82(ivec3) VectorShuffle 599 599 0 1 2
+ 601: 181(bvec3) SLessThan 600 180
+ 602: 181(bvec3) GroupNonUniformQuadSwap 35 601 478
+ 603: 82(ivec3) Select 602 184 180
+ 604: 73(ptr) AccessChain 27(data) 597 39
+ 605: 20(ivec4) Load 604
+ 606: 20(ivec4) VectorShuffle 605 603 4 5 6 3
+ Store 604 606
+ 607: 6(int) Load 8(invocation)
+ 608: 73(ptr) AccessChain 27(data) 39 39
+ 609: 20(ivec4) Load 608
+ 610: 193(bvec4) SLessThan 609 192
+ 611: 193(bvec4) GroupNonUniformQuadSwap 35 610 478
+ 612: 20(ivec4) Select 611 196 192
+ 613: 73(ptr) AccessChain 27(data) 607 39
+ Store 613 612
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupShuffle.comp.out b/Test/baseResults/spv.subgroupShuffle.comp.out
new file mode 100644
index 0000000..065acb8
--- /dev/null
+++ b/Test/baseResults/spv.subgroupShuffle.comp.out
@@ -0,0 +1,462 @@
+spv.subgroupShuffle.comp
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 379
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformShuffle
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 8 1
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_shuffle"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 24 "Buffers"
+ MemberName 24(Buffers) 0 "f4"
+ MemberName 24(Buffers) 1 "i4"
+ MemberName 24(Buffers) 2 "u4"
+ MemberName 24(Buffers) 3 "d4"
+ Name 27 "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 24(Buffers) 0 Offset 0
+ MemberDecorate 24(Buffers) 1 Offset 16
+ MemberDecorate 24(Buffers) 2 Offset 32
+ MemberDecorate 24(Buffers) 3 Offset 64
+ Decorate 24(Buffers) BufferBlock
+ Decorate 27(data) DescriptorSet 0
+ Decorate 27(data) Binding 0
+ Decorate 378 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: TypeFloat 32
+ 18: TypeVector 17(float) 4
+ 19: TypeInt 32 1
+ 20: TypeVector 19(int) 4
+ 21: TypeVector 6(int) 4
+ 22: TypeFloat 64
+ 23: TypeVector 22(float) 4
+ 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(fvec4)
+ 25: TypeArray 24(Buffers) 15
+ 26: TypePointer Uniform 25
+ 27(data): 26(ptr) Variable Uniform
+ 29: 19(int) Constant 0
+ 30: 6(int) Constant 0
+ 31: TypePointer Uniform 17(float)
+ 35: 6(int) Constant 3
+ 39: 19(int) Constant 1
+ 40: TypeVector 17(float) 2
+ 41: TypePointer Uniform 18(fvec4)
+ 51: 19(int) Constant 2
+ 52: TypeVector 17(float) 3
+ 62: 19(int) Constant 3
+ 69: TypePointer Uniform 19(int)
+ 76: TypeVector 19(int) 2
+ 77: TypePointer Uniform 20(ivec4)
+ 87: TypeVector 19(int) 3
+ 103: TypePointer Uniform 6(int)
+ 110: TypeVector 6(int) 2
+ 111: TypePointer Uniform 21(ivec4)
+ 121: TypeVector 6(int) 3
+ 137: TypePointer Uniform 22(float)
+ 144: TypeVector 22(float) 2
+ 145: TypePointer Uniform 23(fvec4)
+ 155: TypeVector 22(float) 3
+ 173: TypeBool
+ 183: 76(ivec2) ConstantComposite 29 29
+ 184: TypeVector 173(bool) 2
+ 188: 76(ivec2) ConstantComposite 39 39
+ 197: 87(ivec3) ConstantComposite 29 29 29
+ 198: TypeVector 173(bool) 3
+ 202: 87(ivec3) ConstantComposite 39 39 39
+ 210: 20(ivec4) ConstantComposite 29 29 29 29
+ 211: TypeVector 173(bool) 4
+ 215: 20(ivec4) ConstantComposite 39 39 39 39
+ 376: 6(int) Constant 8
+ 377: 6(int) Constant 1
+ 378: 121(ivec3) ConstantComposite 376 376 377
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(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
+ 28: 6(int) Load 8(invocation)
+ 32: 31(ptr) AccessChain 27(data) 29 29 30
+ 33: 17(float) Load 32
+ 34: 6(int) Load 8(invocation)
+ 36: 17(float) GroupNonUniformShuffle 35 33 34
+ 37: 31(ptr) AccessChain 27(data) 28 29 30
+ Store 37 36
+ 38: 6(int) Load 8(invocation)
+ 42: 41(ptr) AccessChain 27(data) 39 29
+ 43: 18(fvec4) Load 42
+ 44: 40(fvec2) VectorShuffle 43 43 0 1
+ 45: 6(int) Load 8(invocation)
+ 46: 40(fvec2) GroupNonUniformShuffle 35 44 45
+ 47: 41(ptr) AccessChain 27(data) 38 29
+ 48: 18(fvec4) Load 47
+ 49: 18(fvec4) VectorShuffle 48 46 4 5 2 3
+ Store 47 49
+ 50: 6(int) Load 8(invocation)
+ 53: 41(ptr) AccessChain 27(data) 51 29
+ 54: 18(fvec4) Load 53
+ 55: 52(fvec3) VectorShuffle 54 54 0 1 2
+ 56: 6(int) Load 8(invocation)
+ 57: 52(fvec3) GroupNonUniformShuffle 35 55 56
+ 58: 41(ptr) AccessChain 27(data) 50 29
+ 59: 18(fvec4) Load 58
+ 60: 18(fvec4) VectorShuffle 59 57 4 5 6 3
+ Store 58 60
+ 61: 6(int) Load 8(invocation)
+ 63: 41(ptr) AccessChain 27(data) 62 29
+ 64: 18(fvec4) Load 63
+ 65: 6(int) Load 8(invocation)
+ 66: 18(fvec4) GroupNonUniformShuffle 35 64 65
+ 67: 41(ptr) AccessChain 27(data) 61 29
+ Store 67 66
+ 68: 6(int) Load 8(invocation)
+ 70: 69(ptr) AccessChain 27(data) 29 39 30
+ 71: 19(int) Load 70
+ 72: 6(int) Load 8(invocation)
+ 73: 19(int) GroupNonUniformShuffle 35 71 72
+ 74: 69(ptr) AccessChain 27(data) 68 39 30
+ Store 74 73
+ 75: 6(int) Load 8(invocation)
+ 78: 77(ptr) AccessChain 27(data) 39 39
+ 79: 20(ivec4) Load 78
+ 80: 76(ivec2) VectorShuffle 79 79 0 1
+ 81: 6(int) Load 8(invocation)
+ 82: 76(ivec2) GroupNonUniformShuffle 35 80 81
+ 83: 77(ptr) AccessChain 27(data) 75 39
+ 84: 20(ivec4) Load 83
+ 85: 20(ivec4) VectorShuffle 84 82 4 5 2 3
+ Store 83 85
+ 86: 6(int) Load 8(invocation)
+ 88: 77(ptr) AccessChain 27(data) 51 39
+ 89: 20(ivec4) Load 88
+ 90: 87(ivec3) VectorShuffle 89 89 0 1 2
+ 91: 6(int) Load 8(invocation)
+ 92: 87(ivec3) GroupNonUniformShuffle 35 90 91
+ 93: 77(ptr) AccessChain 27(data) 86 39
+ 94: 20(ivec4) Load 93
+ 95: 20(ivec4) VectorShuffle 94 92 4 5 6 3
+ Store 93 95
+ 96: 6(int) Load 8(invocation)
+ 97: 77(ptr) AccessChain 27(data) 62 39
+ 98: 20(ivec4) Load 97
+ 99: 6(int) Load 8(invocation)
+ 100: 20(ivec4) GroupNonUniformShuffle 35 98 99
+ 101: 77(ptr) AccessChain 27(data) 96 39
+ Store 101 100
+ 102: 6(int) Load 8(invocation)
+ 104: 103(ptr) AccessChain 27(data) 29 51 30
+ 105: 6(int) Load 104
+ 106: 6(int) Load 8(invocation)
+ 107: 6(int) GroupNonUniformShuffle 35 105 106
+ 108: 103(ptr) AccessChain 27(data) 102 51 30
+ Store 108 107
+ 109: 6(int) Load 8(invocation)
+ 112: 111(ptr) AccessChain 27(data) 39 51
+ 113: 21(ivec4) Load 112
+ 114: 110(ivec2) VectorShuffle 113 113 0 1
+ 115: 6(int) Load 8(invocation)
+ 116: 110(ivec2) GroupNonUniformShuffle 35 114 115
+ 117: 111(ptr) AccessChain 27(data) 109 51
+ 118: 21(ivec4) Load 117
+ 119: 21(ivec4) VectorShuffle 118 116 4 5 2 3
+ Store 117 119
+ 120: 6(int) Load 8(invocation)
+ 122: 111(ptr) AccessChain 27(data) 51 51
+ 123: 21(ivec4) Load 122
+ 124: 121(ivec3) VectorShuffle 123 123 0 1 2
+ 125: 6(int) Load 8(invocation)
+ 126: 121(ivec3) GroupNonUniformShuffle 35 124 125
+ 127: 111(ptr) AccessChain 27(data) 120 51
+ 128: 21(ivec4) Load 127
+ 129: 21(ivec4) VectorShuffle 128 126 4 5 6 3
+ Store 127 129
+ 130: 6(int) Load 8(invocation)
+ 131: 111(ptr) AccessChain 27(data) 62 51
+ 132: 21(ivec4) Load 131
+ 133: 6(int) Load 8(invocation)
+ 134: 21(ivec4) GroupNonUniformShuffle 35 132 133
+ 135: 111(ptr) AccessChain 27(data) 130 51
+ Store 135 134
+ 136: 6(int) Load 8(invocation)
+ 138: 137(ptr) AccessChain 27(data) 29 62 30
+ 139: 22(float) Load 138
+ 140: 6(int) Load 8(invocation)
+ 141: 22(float) GroupNonUniformShuffle 35 139 140
+ 142: 137(ptr) AccessChain 27(data) 136 62 30
+ Store 142 141
+ 143: 6(int) Load 8(invocation)
+ 146: 145(ptr) AccessChain 27(data) 39 62
+ 147: 23(fvec4) Load 146
+ 148: 144(fvec2) VectorShuffle 147 147 0 1
+ 149: 6(int) Load 8(invocation)
+ 150: 144(fvec2) GroupNonUniformShuffle 35 148 149
+ 151: 145(ptr) AccessChain 27(data) 143 62
+ 152: 23(fvec4) Load 151
+ 153: 23(fvec4) VectorShuffle 152 150 4 5 2 3
+ Store 151 153
+ 154: 6(int) Load 8(invocation)
+ 156: 145(ptr) AccessChain 27(data) 51 62
+ 157: 23(fvec4) Load 156
+ 158: 155(fvec3) VectorShuffle 157 157 0 1 2
+ 159: 6(int) Load 8(invocation)
+ 160: 155(fvec3) GroupNonUniformShuffle 35 158 159
+ 161: 145(ptr) AccessChain 27(data) 154 62
+ 162: 23(fvec4) Load 161
+ 163: 23(fvec4) VectorShuffle 162 160 4 5 6 3
+ Store 161 163
+ 164: 6(int) Load 8(invocation)
+ 165: 145(ptr) AccessChain 27(data) 62 62
+ 166: 23(fvec4) Load 165
+ 167: 6(int) Load 8(invocation)
+ 168: 23(fvec4) GroupNonUniformShuffle 35 166 167
+ 169: 145(ptr) AccessChain 27(data) 164 62
+ Store 169 168
+ 170: 6(int) Load 8(invocation)
+ 171: 69(ptr) AccessChain 27(data) 29 39 30
+ 172: 19(int) Load 171
+ 174: 173(bool) SLessThan 172 29
+ 175: 6(int) Load 8(invocation)
+ 176: 173(bool) GroupNonUniformShuffle 35 174 175
+ 177: 19(int) Select 176 39 29
+ 178: 69(ptr) AccessChain 27(data) 170 39 30
+ Store 178 177
+ 179: 6(int) Load 8(invocation)
+ 180: 77(ptr) AccessChain 27(data) 39 39
+ 181: 20(ivec4) Load 180
+ 182: 76(ivec2) VectorShuffle 181 181 0 1
+ 185: 184(bvec2) SLessThan 182 183
+ 186: 6(int) Load 8(invocation)
+ 187: 184(bvec2) GroupNonUniformShuffle 35 185 186
+ 189: 76(ivec2) Select 187 188 183
+ 190: 77(ptr) AccessChain 27(data) 179 39
+ 191: 20(ivec4) Load 190
+ 192: 20(ivec4) VectorShuffle 191 189 4 5 2 3
+ Store 190 192
+ 193: 6(int) Load 8(invocation)
+ 194: 77(ptr) AccessChain 27(data) 39 39
+ 195: 20(ivec4) Load 194
+ 196: 87(ivec3) VectorShuffle 195 195 0 1 2
+ 199: 198(bvec3) SLessThan 196 197
+ 200: 6(int) Load 8(invocation)
+ 201: 198(bvec3) GroupNonUniformShuffle 35 199 200
+ 203: 87(ivec3) Select 201 202 197
+ 204: 77(ptr) AccessChain 27(data) 193 39
+ 205: 20(ivec4) Load 204
+ 206: 20(ivec4) VectorShuffle 205 203 4 5 6 3
+ Store 204 206
+ 207: 6(int) Load 8(invocation)
+ 208: 77(ptr) AccessChain 27(data) 39 39
+ 209: 20(ivec4) Load 208
+ 212: 211(bvec4) SLessThan 209 210
+ 213: 6(int) Load 8(invocation)
+ 214: 211(bvec4) GroupNonUniformShuffle 35 212 213
+ 216: 20(ivec4) Select 214 215 210
+ 217: 77(ptr) AccessChain 27(data) 207 39
+ Store 217 216
+ 218: 6(int) Load 8(invocation)
+ 219: 31(ptr) AccessChain 27(data) 29 29 30
+ 220: 17(float) Load 219
+ 221: 6(int) Load 8(invocation)
+ 222: 17(float) GroupNonUniformShuffleXor 35 220 221
+ 223: 31(ptr) AccessChain 27(data) 218 29 30
+ Store 223 222
+ 224: 6(int) Load 8(invocation)
+ 225: 41(ptr) AccessChain 27(data) 39 29
+ 226: 18(fvec4) Load 225
+ 227: 40(fvec2) VectorShuffle 226 226 0 1
+ 228: 6(int) Load 8(invocation)
+ 229: 40(fvec2) GroupNonUniformShuffleXor 35 227 228
+ 230: 41(ptr) AccessChain 27(data) 224 29
+ 231: 18(fvec4) Load 230
+ 232: 18(fvec4) VectorShuffle 231 229 4 5 2 3
+ Store 230 232
+ 233: 6(int) Load 8(invocation)
+ 234: 41(ptr) AccessChain 27(data) 51 29
+ 235: 18(fvec4) Load 234
+ 236: 52(fvec3) VectorShuffle 235 235 0 1 2
+ 237: 6(int) Load 8(invocation)
+ 238: 52(fvec3) GroupNonUniformShuffleXor 35 236 237
+ 239: 41(ptr) AccessChain 27(data) 233 29
+ 240: 18(fvec4) Load 239
+ 241: 18(fvec4) VectorShuffle 240 238 4 5 6 3
+ Store 239 241
+ 242: 6(int) Load 8(invocation)
+ 243: 41(ptr) AccessChain 27(data) 62 29
+ 244: 18(fvec4) Load 243
+ 245: 6(int) Load 8(invocation)
+ 246: 18(fvec4) GroupNonUniformShuffleXor 35 244 245
+ 247: 41(ptr) AccessChain 27(data) 242 29
+ Store 247 246
+ 248: 6(int) Load 8(invocation)
+ 249: 69(ptr) AccessChain 27(data) 29 39 30
+ 250: 19(int) Load 249
+ 251: 6(int) Load 8(invocation)
+ 252: 19(int) GroupNonUniformShuffleXor 35 250 251
+ 253: 69(ptr) AccessChain 27(data) 248 39 30
+ Store 253 252
+ 254: 6(int) Load 8(invocation)
+ 255: 77(ptr) AccessChain 27(data) 39 39
+ 256: 20(ivec4) Load 255
+ 257: 76(ivec2) VectorShuffle 256 256 0 1
+ 258: 6(int) Load 8(invocation)
+ 259: 76(ivec2) GroupNonUniformShuffleXor 35 257 258
+ 260: 77(ptr) AccessChain 27(data) 254 39
+ 261: 20(ivec4) Load 260
+ 262: 20(ivec4) VectorShuffle 261 259 4 5 2 3
+ Store 260 262
+ 263: 6(int) Load 8(invocation)
+ 264: 77(ptr) AccessChain 27(data) 51 39
+ 265: 20(ivec4) Load 264
+ 266: 87(ivec3) VectorShuffle 265 265 0 1 2
+ 267: 6(int) Load 8(invocation)
+ 268: 87(ivec3) GroupNonUniformShuffleXor 35 266 267
+ 269: 77(ptr) AccessChain 27(data) 263 39
+ 270: 20(ivec4) Load 269
+ 271: 20(ivec4) VectorShuffle 270 268 4 5 6 3
+ Store 269 271
+ 272: 6(int) Load 8(invocation)
+ 273: 77(ptr) AccessChain 27(data) 62 39
+ 274: 20(ivec4) Load 273
+ 275: 6(int) Load 8(invocation)
+ 276: 20(ivec4) GroupNonUniformShuffleXor 35 274 275
+ 277: 77(ptr) AccessChain 27(data) 272 39
+ Store 277 276
+ 278: 6(int) Load 8(invocation)
+ 279: 103(ptr) AccessChain 27(data) 29 51 30
+ 280: 6(int) Load 279
+ 281: 6(int) Load 8(invocation)
+ 282: 6(int) GroupNonUniformShuffleXor 35 280 281
+ 283: 103(ptr) AccessChain 27(data) 278 51 30
+ Store 283 282
+ 284: 6(int) Load 8(invocation)
+ 285: 111(ptr) AccessChain 27(data) 39 51
+ 286: 21(ivec4) Load 285
+ 287: 110(ivec2) VectorShuffle 286 286 0 1
+ 288: 6(int) Load 8(invocation)
+ 289: 110(ivec2) GroupNonUniformShuffleXor 35 287 288
+ 290: 111(ptr) AccessChain 27(data) 284 51
+ 291: 21(ivec4) Load 290
+ 292: 21(ivec4) VectorShuffle 291 289 4 5 2 3
+ Store 290 292
+ 293: 6(int) Load 8(invocation)
+ 294: 111(ptr) AccessChain 27(data) 51 51
+ 295: 21(ivec4) Load 294
+ 296: 121(ivec3) VectorShuffle 295 295 0 1 2
+ 297: 6(int) Load 8(invocation)
+ 298: 121(ivec3) GroupNonUniformShuffleXor 35 296 297
+ 299: 111(ptr) AccessChain 27(data) 293 51
+ 300: 21(ivec4) Load 299
+ 301: 21(ivec4) VectorShuffle 300 298 4 5 6 3
+ Store 299 301
+ 302: 6(int) Load 8(invocation)
+ 303: 111(ptr) AccessChain 27(data) 62 51
+ 304: 21(ivec4) Load 303
+ 305: 6(int) Load 8(invocation)
+ 306: 21(ivec4) GroupNonUniformShuffleXor 35 304 305
+ 307: 111(ptr) AccessChain 27(data) 302 51
+ Store 307 306
+ 308: 6(int) Load 8(invocation)
+ 309: 137(ptr) AccessChain 27(data) 29 62 30
+ 310: 22(float) Load 309
+ 311: 6(int) Load 8(invocation)
+ 312: 22(float) GroupNonUniformShuffleXor 35 310 311
+ 313: 137(ptr) AccessChain 27(data) 308 62 30
+ Store 313 312
+ 314: 6(int) Load 8(invocation)
+ 315: 145(ptr) AccessChain 27(data) 39 62
+ 316: 23(fvec4) Load 315
+ 317: 144(fvec2) VectorShuffle 316 316 0 1
+ 318: 6(int) Load 8(invocation)
+ 319: 144(fvec2) GroupNonUniformShuffleXor 35 317 318
+ 320: 145(ptr) AccessChain 27(data) 314 62
+ 321: 23(fvec4) Load 320
+ 322: 23(fvec4) VectorShuffle 321 319 4 5 2 3
+ Store 320 322
+ 323: 6(int) Load 8(invocation)
+ 324: 145(ptr) AccessChain 27(data) 51 62
+ 325: 23(fvec4) Load 324
+ 326: 155(fvec3) VectorShuffle 325 325 0 1 2
+ 327: 6(int) Load 8(invocation)
+ 328: 155(fvec3) GroupNonUniformShuffleXor 35 326 327
+ 329: 145(ptr) AccessChain 27(data) 323 62
+ 330: 23(fvec4) Load 329
+ 331: 23(fvec4) VectorShuffle 330 328 4 5 6 3
+ Store 329 331
+ 332: 6(int) Load 8(invocation)
+ 333: 145(ptr) AccessChain 27(data) 62 62
+ 334: 23(fvec4) Load 333
+ 335: 6(int) Load 8(invocation)
+ 336: 23(fvec4) GroupNonUniformShuffleXor 35 334 335
+ 337: 145(ptr) AccessChain 27(data) 332 62
+ Store 337 336
+ 338: 6(int) Load 8(invocation)
+ 339: 69(ptr) AccessChain 27(data) 29 39 30
+ 340: 19(int) Load 339
+ 341: 173(bool) SLessThan 340 29
+ 342: 6(int) Load 8(invocation)
+ 343: 173(bool) GroupNonUniformShuffleXor 35 341 342
+ 344: 19(int) Select 343 39 29
+ 345: 69(ptr) AccessChain 27(data) 338 39 30
+ Store 345 344
+ 346: 6(int) Load 8(invocation)
+ 347: 77(ptr) AccessChain 27(data) 39 39
+ 348: 20(ivec4) Load 347
+ 349: 76(ivec2) VectorShuffle 348 348 0 1
+ 350: 184(bvec2) SLessThan 349 183
+ 351: 6(int) Load 8(invocation)
+ 352: 184(bvec2) GroupNonUniformShuffleXor 35 350 351
+ 353: 76(ivec2) Select 352 188 183
+ 354: 77(ptr) AccessChain 27(data) 346 39
+ 355: 20(ivec4) Load 354
+ 356: 20(ivec4) VectorShuffle 355 353 4 5 2 3
+ Store 354 356
+ 357: 6(int) Load 8(invocation)
+ 358: 77(ptr) AccessChain 27(data) 39 39
+ 359: 20(ivec4) Load 358
+ 360: 87(ivec3) VectorShuffle 359 359 0 1 2
+ 361: 198(bvec3) SLessThan 360 197
+ 362: 6(int) Load 8(invocation)
+ 363: 198(bvec3) GroupNonUniformShuffleXor 35 361 362
+ 364: 87(ivec3) Select 363 202 197
+ 365: 77(ptr) AccessChain 27(data) 357 39
+ 366: 20(ivec4) Load 365
+ 367: 20(ivec4) VectorShuffle 366 364 4 5 6 3
+ Store 365 367
+ 368: 6(int) Load 8(invocation)
+ 369: 77(ptr) AccessChain 27(data) 39 39
+ 370: 20(ivec4) Load 369
+ 371: 211(bvec4) SLessThan 370 210
+ 372: 6(int) Load 8(invocation)
+ 373: 211(bvec4) GroupNonUniformShuffleXor 35 371 372
+ 374: 20(ivec4) Select 373 215 210
+ 375: 77(ptr) AccessChain 27(data) 368 39
+ Store 375 374
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupShuffleRelative.comp.out b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
new file mode 100644
index 0000000..90c9fb1
--- /dev/null
+++ b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
@@ -0,0 +1,462 @@
+spv.subgroupShuffleRelative.comp
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 379
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformShuffleRelative
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 8 1
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_shuffle_relative"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 24 "Buffers"
+ MemberName 24(Buffers) 0 "f4"
+ MemberName 24(Buffers) 1 "i4"
+ MemberName 24(Buffers) 2 "u4"
+ MemberName 24(Buffers) 3 "d4"
+ Name 27 "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 24(Buffers) 0 Offset 0
+ MemberDecorate 24(Buffers) 1 Offset 16
+ MemberDecorate 24(Buffers) 2 Offset 32
+ MemberDecorate 24(Buffers) 3 Offset 64
+ Decorate 24(Buffers) BufferBlock
+ Decorate 27(data) DescriptorSet 0
+ Decorate 27(data) Binding 0
+ Decorate 378 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: TypeFloat 32
+ 18: TypeVector 17(float) 4
+ 19: TypeInt 32 1
+ 20: TypeVector 19(int) 4
+ 21: TypeVector 6(int) 4
+ 22: TypeFloat 64
+ 23: TypeVector 22(float) 4
+ 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(fvec4)
+ 25: TypeArray 24(Buffers) 15
+ 26: TypePointer Uniform 25
+ 27(data): 26(ptr) Variable Uniform
+ 29: 19(int) Constant 0
+ 30: 6(int) Constant 0
+ 31: TypePointer Uniform 17(float)
+ 35: 6(int) Constant 3
+ 39: 19(int) Constant 1
+ 40: TypeVector 17(float) 2
+ 41: TypePointer Uniform 18(fvec4)
+ 51: 19(int) Constant 2
+ 52: TypeVector 17(float) 3
+ 62: 19(int) Constant 3
+ 69: TypePointer Uniform 19(int)
+ 76: TypeVector 19(int) 2
+ 77: TypePointer Uniform 20(ivec4)
+ 87: TypeVector 19(int) 3
+ 103: TypePointer Uniform 6(int)
+ 110: TypeVector 6(int) 2
+ 111: TypePointer Uniform 21(ivec4)
+ 121: TypeVector 6(int) 3
+ 137: TypePointer Uniform 22(float)
+ 144: TypeVector 22(float) 2
+ 145: TypePointer Uniform 23(fvec4)
+ 155: TypeVector 22(float) 3
+ 173: TypeBool
+ 183: 76(ivec2) ConstantComposite 29 29
+ 184: TypeVector 173(bool) 2
+ 188: 76(ivec2) ConstantComposite 39 39
+ 197: 87(ivec3) ConstantComposite 29 29 29
+ 198: TypeVector 173(bool) 3
+ 202: 87(ivec3) ConstantComposite 39 39 39
+ 210: 20(ivec4) ConstantComposite 29 29 29 29
+ 211: TypeVector 173(bool) 4
+ 215: 20(ivec4) ConstantComposite 39 39 39 39
+ 376: 6(int) Constant 8
+ 377: 6(int) Constant 1
+ 378: 121(ivec3) ConstantComposite 376 376 377
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(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
+ 28: 6(int) Load 8(invocation)
+ 32: 31(ptr) AccessChain 27(data) 29 29 30
+ 33: 17(float) Load 32
+ 34: 6(int) Load 8(invocation)
+ 36: 17(float) GroupNonUniformShuffleUp 35 33 34
+ 37: 31(ptr) AccessChain 27(data) 28 29 30
+ Store 37 36
+ 38: 6(int) Load 8(invocation)
+ 42: 41(ptr) AccessChain 27(data) 39 29
+ 43: 18(fvec4) Load 42
+ 44: 40(fvec2) VectorShuffle 43 43 0 1
+ 45: 6(int) Load 8(invocation)
+ 46: 40(fvec2) GroupNonUniformShuffleUp 35 44 45
+ 47: 41(ptr) AccessChain 27(data) 38 29
+ 48: 18(fvec4) Load 47
+ 49: 18(fvec4) VectorShuffle 48 46 4 5 2 3
+ Store 47 49
+ 50: 6(int) Load 8(invocation)
+ 53: 41(ptr) AccessChain 27(data) 51 29
+ 54: 18(fvec4) Load 53
+ 55: 52(fvec3) VectorShuffle 54 54 0 1 2
+ 56: 6(int) Load 8(invocation)
+ 57: 52(fvec3) GroupNonUniformShuffleUp 35 55 56
+ 58: 41(ptr) AccessChain 27(data) 50 29
+ 59: 18(fvec4) Load 58
+ 60: 18(fvec4) VectorShuffle 59 57 4 5 6 3
+ Store 58 60
+ 61: 6(int) Load 8(invocation)
+ 63: 41(ptr) AccessChain 27(data) 62 29
+ 64: 18(fvec4) Load 63
+ 65: 6(int) Load 8(invocation)
+ 66: 18(fvec4) GroupNonUniformShuffleUp 35 64 65
+ 67: 41(ptr) AccessChain 27(data) 61 29
+ Store 67 66
+ 68: 6(int) Load 8(invocation)
+ 70: 69(ptr) AccessChain 27(data) 29 39 30
+ 71: 19(int) Load 70
+ 72: 6(int) Load 8(invocation)
+ 73: 19(int) GroupNonUniformShuffleUp 35 71 72
+ 74: 69(ptr) AccessChain 27(data) 68 39 30
+ Store 74 73
+ 75: 6(int) Load 8(invocation)
+ 78: 77(ptr) AccessChain 27(data) 39 39
+ 79: 20(ivec4) Load 78
+ 80: 76(ivec2) VectorShuffle 79 79 0 1
+ 81: 6(int) Load 8(invocation)
+ 82: 76(ivec2) GroupNonUniformShuffleUp 35 80 81
+ 83: 77(ptr) AccessChain 27(data) 75 39
+ 84: 20(ivec4) Load 83
+ 85: 20(ivec4) VectorShuffle 84 82 4 5 2 3
+ Store 83 85
+ 86: 6(int) Load 8(invocation)
+ 88: 77(ptr) AccessChain 27(data) 51 39
+ 89: 20(ivec4) Load 88
+ 90: 87(ivec3) VectorShuffle 89 89 0 1 2
+ 91: 6(int) Load 8(invocation)
+ 92: 87(ivec3) GroupNonUniformShuffleUp 35 90 91
+ 93: 77(ptr) AccessChain 27(data) 86 39
+ 94: 20(ivec4) Load 93
+ 95: 20(ivec4) VectorShuffle 94 92 4 5 6 3
+ Store 93 95
+ 96: 6(int) Load 8(invocation)
+ 97: 77(ptr) AccessChain 27(data) 62 39
+ 98: 20(ivec4) Load 97
+ 99: 6(int) Load 8(invocation)
+ 100: 20(ivec4) GroupNonUniformShuffleUp 35 98 99
+ 101: 77(ptr) AccessChain 27(data) 96 39
+ Store 101 100
+ 102: 6(int) Load 8(invocation)
+ 104: 103(ptr) AccessChain 27(data) 29 51 30
+ 105: 6(int) Load 104
+ 106: 6(int) Load 8(invocation)
+ 107: 6(int) GroupNonUniformShuffleUp 35 105 106
+ 108: 103(ptr) AccessChain 27(data) 102 51 30
+ Store 108 107
+ 109: 6(int) Load 8(invocation)
+ 112: 111(ptr) AccessChain 27(data) 39 51
+ 113: 21(ivec4) Load 112
+ 114: 110(ivec2) VectorShuffle 113 113 0 1
+ 115: 6(int) Load 8(invocation)
+ 116: 110(ivec2) GroupNonUniformShuffleUp 35 114 115
+ 117: 111(ptr) AccessChain 27(data) 109 51
+ 118: 21(ivec4) Load 117
+ 119: 21(ivec4) VectorShuffle 118 116 4 5 2 3
+ Store 117 119
+ 120: 6(int) Load 8(invocation)
+ 122: 111(ptr) AccessChain 27(data) 51 51
+ 123: 21(ivec4) Load 122
+ 124: 121(ivec3) VectorShuffle 123 123 0 1 2
+ 125: 6(int) Load 8(invocation)
+ 126: 121(ivec3) GroupNonUniformShuffleUp 35 124 125
+ 127: 111(ptr) AccessChain 27(data) 120 51
+ 128: 21(ivec4) Load 127
+ 129: 21(ivec4) VectorShuffle 128 126 4 5 6 3
+ Store 127 129
+ 130: 6(int) Load 8(invocation)
+ 131: 111(ptr) AccessChain 27(data) 62 51
+ 132: 21(ivec4) Load 131
+ 133: 6(int) Load 8(invocation)
+ 134: 21(ivec4) GroupNonUniformShuffleUp 35 132 133
+ 135: 111(ptr) AccessChain 27(data) 130 51
+ Store 135 134
+ 136: 6(int) Load 8(invocation)
+ 138: 137(ptr) AccessChain 27(data) 29 62 30
+ 139: 22(float) Load 138
+ 140: 6(int) Load 8(invocation)
+ 141: 22(float) GroupNonUniformShuffleUp 35 139 140
+ 142: 137(ptr) AccessChain 27(data) 136 62 30
+ Store 142 141
+ 143: 6(int) Load 8(invocation)
+ 146: 145(ptr) AccessChain 27(data) 39 62
+ 147: 23(fvec4) Load 146
+ 148: 144(fvec2) VectorShuffle 147 147 0 1
+ 149: 6(int) Load 8(invocation)
+ 150: 144(fvec2) GroupNonUniformShuffleUp 35 148 149
+ 151: 145(ptr) AccessChain 27(data) 143 62
+ 152: 23(fvec4) Load 151
+ 153: 23(fvec4) VectorShuffle 152 150 4 5 2 3
+ Store 151 153
+ 154: 6(int) Load 8(invocation)
+ 156: 145(ptr) AccessChain 27(data) 51 62
+ 157: 23(fvec4) Load 156
+ 158: 155(fvec3) VectorShuffle 157 157 0 1 2
+ 159: 6(int) Load 8(invocation)
+ 160: 155(fvec3) GroupNonUniformShuffleUp 35 158 159
+ 161: 145(ptr) AccessChain 27(data) 154 62
+ 162: 23(fvec4) Load 161
+ 163: 23(fvec4) VectorShuffle 162 160 4 5 6 3
+ Store 161 163
+ 164: 6(int) Load 8(invocation)
+ 165: 145(ptr) AccessChain 27(data) 62 62
+ 166: 23(fvec4) Load 165
+ 167: 6(int) Load 8(invocation)
+ 168: 23(fvec4) GroupNonUniformShuffleUp 35 166 167
+ 169: 145(ptr) AccessChain 27(data) 164 62
+ Store 169 168
+ 170: 6(int) Load 8(invocation)
+ 171: 69(ptr) AccessChain 27(data) 29 39 30
+ 172: 19(int) Load 171
+ 174: 173(bool) SLessThan 172 29
+ 175: 6(int) Load 8(invocation)
+ 176: 173(bool) GroupNonUniformShuffleUp 35 174 175
+ 177: 19(int) Select 176 39 29
+ 178: 69(ptr) AccessChain 27(data) 170 39 30
+ Store 178 177
+ 179: 6(int) Load 8(invocation)
+ 180: 77(ptr) AccessChain 27(data) 39 39
+ 181: 20(ivec4) Load 180
+ 182: 76(ivec2) VectorShuffle 181 181 0 1
+ 185: 184(bvec2) SLessThan 182 183
+ 186: 6(int) Load 8(invocation)
+ 187: 184(bvec2) GroupNonUniformShuffleUp 35 185 186
+ 189: 76(ivec2) Select 187 188 183
+ 190: 77(ptr) AccessChain 27(data) 179 39
+ 191: 20(ivec4) Load 190
+ 192: 20(ivec4) VectorShuffle 191 189 4 5 2 3
+ Store 190 192
+ 193: 6(int) Load 8(invocation)
+ 194: 77(ptr) AccessChain 27(data) 39 39
+ 195: 20(ivec4) Load 194
+ 196: 87(ivec3) VectorShuffle 195 195 0 1 2
+ 199: 198(bvec3) SLessThan 196 197
+ 200: 6(int) Load 8(invocation)
+ 201: 198(bvec3) GroupNonUniformShuffleUp 35 199 200
+ 203: 87(ivec3) Select 201 202 197
+ 204: 77(ptr) AccessChain 27(data) 193 39
+ 205: 20(ivec4) Load 204
+ 206: 20(ivec4) VectorShuffle 205 203 4 5 6 3
+ Store 204 206
+ 207: 6(int) Load 8(invocation)
+ 208: 77(ptr) AccessChain 27(data) 39 39
+ 209: 20(ivec4) Load 208
+ 212: 211(bvec4) SLessThan 209 210
+ 213: 6(int) Load 8(invocation)
+ 214: 211(bvec4) GroupNonUniformShuffleUp 35 212 213
+ 216: 20(ivec4) Select 214 215 210
+ 217: 77(ptr) AccessChain 27(data) 207 39
+ Store 217 216
+ 218: 6(int) Load 8(invocation)
+ 219: 31(ptr) AccessChain 27(data) 29 29 30
+ 220: 17(float) Load 219
+ 221: 6(int) Load 8(invocation)
+ 222: 17(float) GroupNonUniformShuffleDown 35 220 221
+ 223: 31(ptr) AccessChain 27(data) 218 29 30
+ Store 223 222
+ 224: 6(int) Load 8(invocation)
+ 225: 41(ptr) AccessChain 27(data) 39 29
+ 226: 18(fvec4) Load 225
+ 227: 40(fvec2) VectorShuffle 226 226 0 1
+ 228: 6(int) Load 8(invocation)
+ 229: 40(fvec2) GroupNonUniformShuffleDown 35 227 228
+ 230: 41(ptr) AccessChain 27(data) 224 29
+ 231: 18(fvec4) Load 230
+ 232: 18(fvec4) VectorShuffle 231 229 4 5 2 3
+ Store 230 232
+ 233: 6(int) Load 8(invocation)
+ 234: 41(ptr) AccessChain 27(data) 51 29
+ 235: 18(fvec4) Load 234
+ 236: 52(fvec3) VectorShuffle 235 235 0 1 2
+ 237: 6(int) Load 8(invocation)
+ 238: 52(fvec3) GroupNonUniformShuffleDown 35 236 237
+ 239: 41(ptr) AccessChain 27(data) 233 29
+ 240: 18(fvec4) Load 239
+ 241: 18(fvec4) VectorShuffle 240 238 4 5 6 3
+ Store 239 241
+ 242: 6(int) Load 8(invocation)
+ 243: 41(ptr) AccessChain 27(data) 62 29
+ 244: 18(fvec4) Load 243
+ 245: 6(int) Load 8(invocation)
+ 246: 18(fvec4) GroupNonUniformShuffleDown 35 244 245
+ 247: 41(ptr) AccessChain 27(data) 242 29
+ Store 247 246
+ 248: 6(int) Load 8(invocation)
+ 249: 69(ptr) AccessChain 27(data) 29 39 30
+ 250: 19(int) Load 249
+ 251: 6(int) Load 8(invocation)
+ 252: 19(int) GroupNonUniformShuffleDown 35 250 251
+ 253: 69(ptr) AccessChain 27(data) 248 39 30
+ Store 253 252
+ 254: 6(int) Load 8(invocation)
+ 255: 77(ptr) AccessChain 27(data) 39 39
+ 256: 20(ivec4) Load 255
+ 257: 76(ivec2) VectorShuffle 256 256 0 1
+ 258: 6(int) Load 8(invocation)
+ 259: 76(ivec2) GroupNonUniformShuffleDown 35 257 258
+ 260: 77(ptr) AccessChain 27(data) 254 39
+ 261: 20(ivec4) Load 260
+ 262: 20(ivec4) VectorShuffle 261 259 4 5 2 3
+ Store 260 262
+ 263: 6(int) Load 8(invocation)
+ 264: 77(ptr) AccessChain 27(data) 51 39
+ 265: 20(ivec4) Load 264
+ 266: 87(ivec3) VectorShuffle 265 265 0 1 2
+ 267: 6(int) Load 8(invocation)
+ 268: 87(ivec3) GroupNonUniformShuffleDown 35 266 267
+ 269: 77(ptr) AccessChain 27(data) 263 39
+ 270: 20(ivec4) Load 269
+ 271: 20(ivec4) VectorShuffle 270 268 4 5 6 3
+ Store 269 271
+ 272: 6(int) Load 8(invocation)
+ 273: 77(ptr) AccessChain 27(data) 62 39
+ 274: 20(ivec4) Load 273
+ 275: 6(int) Load 8(invocation)
+ 276: 20(ivec4) GroupNonUniformShuffleDown 35 274 275
+ 277: 77(ptr) AccessChain 27(data) 272 39
+ Store 277 276
+ 278: 6(int) Load 8(invocation)
+ 279: 103(ptr) AccessChain 27(data) 29 51 30
+ 280: 6(int) Load 279
+ 281: 6(int) Load 8(invocation)
+ 282: 6(int) GroupNonUniformShuffleDown 35 280 281
+ 283: 103(ptr) AccessChain 27(data) 278 51 30
+ Store 283 282
+ 284: 6(int) Load 8(invocation)
+ 285: 111(ptr) AccessChain 27(data) 39 51
+ 286: 21(ivec4) Load 285
+ 287: 110(ivec2) VectorShuffle 286 286 0 1
+ 288: 6(int) Load 8(invocation)
+ 289: 110(ivec2) GroupNonUniformShuffleDown 35 287 288
+ 290: 111(ptr) AccessChain 27(data) 284 51
+ 291: 21(ivec4) Load 290
+ 292: 21(ivec4) VectorShuffle 291 289 4 5 2 3
+ Store 290 292
+ 293: 6(int) Load 8(invocation)
+ 294: 111(ptr) AccessChain 27(data) 51 51
+ 295: 21(ivec4) Load 294
+ 296: 121(ivec3) VectorShuffle 295 295 0 1 2
+ 297: 6(int) Load 8(invocation)
+ 298: 121(ivec3) GroupNonUniformShuffleDown 35 296 297
+ 299: 111(ptr) AccessChain 27(data) 293 51
+ 300: 21(ivec4) Load 299
+ 301: 21(ivec4) VectorShuffle 300 298 4 5 6 3
+ Store 299 301
+ 302: 6(int) Load 8(invocation)
+ 303: 111(ptr) AccessChain 27(data) 62 51
+ 304: 21(ivec4) Load 303
+ 305: 6(int) Load 8(invocation)
+ 306: 21(ivec4) GroupNonUniformShuffleDown 35 304 305
+ 307: 111(ptr) AccessChain 27(data) 302 51
+ Store 307 306
+ 308: 6(int) Load 8(invocation)
+ 309: 137(ptr) AccessChain 27(data) 29 62 30
+ 310: 22(float) Load 309
+ 311: 6(int) Load 8(invocation)
+ 312: 22(float) GroupNonUniformShuffleDown 35 310 311
+ 313: 137(ptr) AccessChain 27(data) 308 62 30
+ Store 313 312
+ 314: 6(int) Load 8(invocation)
+ 315: 145(ptr) AccessChain 27(data) 39 62
+ 316: 23(fvec4) Load 315
+ 317: 144(fvec2) VectorShuffle 316 316 0 1
+ 318: 6(int) Load 8(invocation)
+ 319: 144(fvec2) GroupNonUniformShuffleDown 35 317 318
+ 320: 145(ptr) AccessChain 27(data) 314 62
+ 321: 23(fvec4) Load 320
+ 322: 23(fvec4) VectorShuffle 321 319 4 5 2 3
+ Store 320 322
+ 323: 6(int) Load 8(invocation)
+ 324: 145(ptr) AccessChain 27(data) 51 62
+ 325: 23(fvec4) Load 324
+ 326: 155(fvec3) VectorShuffle 325 325 0 1 2
+ 327: 6(int) Load 8(invocation)
+ 328: 155(fvec3) GroupNonUniformShuffleDown 35 326 327
+ 329: 145(ptr) AccessChain 27(data) 323 62
+ 330: 23(fvec4) Load 329
+ 331: 23(fvec4) VectorShuffle 330 328 4 5 6 3
+ Store 329 331
+ 332: 6(int) Load 8(invocation)
+ 333: 145(ptr) AccessChain 27(data) 62 62
+ 334: 23(fvec4) Load 333
+ 335: 6(int) Load 8(invocation)
+ 336: 23(fvec4) GroupNonUniformShuffleDown 35 334 335
+ 337: 145(ptr) AccessChain 27(data) 332 62
+ Store 337 336
+ 338: 6(int) Load 8(invocation)
+ 339: 69(ptr) AccessChain 27(data) 29 39 30
+ 340: 19(int) Load 339
+ 341: 173(bool) SLessThan 340 29
+ 342: 6(int) Load 8(invocation)
+ 343: 173(bool) GroupNonUniformShuffleDown 35 341 342
+ 344: 19(int) Select 343 39 29
+ 345: 69(ptr) AccessChain 27(data) 338 39 30
+ Store 345 344
+ 346: 6(int) Load 8(invocation)
+ 347: 77(ptr) AccessChain 27(data) 39 39
+ 348: 20(ivec4) Load 347
+ 349: 76(ivec2) VectorShuffle 348 348 0 1
+ 350: 184(bvec2) SLessThan 349 183
+ 351: 6(int) Load 8(invocation)
+ 352: 184(bvec2) GroupNonUniformShuffleDown 35 350 351
+ 353: 76(ivec2) Select 352 188 183
+ 354: 77(ptr) AccessChain 27(data) 346 39
+ 355: 20(ivec4) Load 354
+ 356: 20(ivec4) VectorShuffle 355 353 4 5 2 3
+ Store 354 356
+ 357: 6(int) Load 8(invocation)
+ 358: 77(ptr) AccessChain 27(data) 39 39
+ 359: 20(ivec4) Load 358
+ 360: 87(ivec3) VectorShuffle 359 359 0 1 2
+ 361: 198(bvec3) SLessThan 360 197
+ 362: 6(int) Load 8(invocation)
+ 363: 198(bvec3) GroupNonUniformShuffleDown 35 361 362
+ 364: 87(ivec3) Select 363 202 197
+ 365: 77(ptr) AccessChain 27(data) 357 39
+ 366: 20(ivec4) Load 365
+ 367: 20(ivec4) VectorShuffle 366 364 4 5 6 3
+ Store 365 367
+ 368: 6(int) Load 8(invocation)
+ 369: 77(ptr) AccessChain 27(data) 39 39
+ 370: 20(ivec4) Load 369
+ 371: 211(bvec4) SLessThan 370 210
+ 372: 6(int) Load 8(invocation)
+ 373: 211(bvec4) GroupNonUniformShuffleDown 35 371 372
+ 374: 20(ivec4) Select 373 215 210
+ 375: 77(ptr) AccessChain 27(data) 368 39
+ Store 375 374
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.subgroupVote.comp.out b/Test/baseResults/spv.subgroupVote.comp.out
new file mode 100644
index 0000000..563cc21
--- /dev/null
+++ b/Test/baseResults/spv.subgroupVote.comp.out
@@ -0,0 +1,288 @@
+spv.subgroupVote.comp
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 216
+
+ Capability Shader
+ Capability Float64
+ Capability GroupNonUniform
+ Capability GroupNonUniformVote
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main" 10 12
+ ExecutionMode 4 LocalSize 8 8 1
+ Source GLSL 450
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_KHR_shader_subgroup_vote"
+ Name 4 "main"
+ Name 8 "invocation"
+ Name 10 "gl_SubgroupInvocationID"
+ Name 12 "gl_SubgroupSize"
+ Name 24 "Buffers"
+ MemberName 24(Buffers) 0 "f4"
+ MemberName 24(Buffers) 1 "i4"
+ MemberName 24(Buffers) 2 "u4"
+ MemberName 24(Buffers) 3 "d4"
+ MemberName 24(Buffers) 4 "r"
+ Name 27 "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 24(Buffers) 0 Offset 0
+ MemberDecorate 24(Buffers) 1 Offset 16
+ MemberDecorate 24(Buffers) 2 Offset 32
+ MemberDecorate 24(Buffers) 3 Offset 64
+ MemberDecorate 24(Buffers) 4 Offset 96
+ Decorate 24(Buffers) BufferBlock
+ Decorate 27(data) DescriptorSet 0
+ Decorate 27(data) Binding 0
+ Decorate 215 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: TypeFloat 32
+ 18: TypeVector 17(float) 4
+ 19: TypeInt 32 1
+ 20: TypeVector 19(int) 4
+ 21: TypeVector 6(int) 4
+ 22: TypeFloat 64
+ 23: TypeVector 22(float) 4
+ 24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(fvec4) 19(int)
+ 25: TypeArray 24(Buffers) 15
+ 26: TypePointer Uniform 25
+ 27(data): 26(ptr) Variable Uniform
+ 29: 19(int) Constant 4
+ 30: TypePointer Uniform 19(int)
+ 33: 19(int) Constant 0
+ 34: TypeBool
+ 36: 6(int) Constant 3
+ 41: 6(int) Constant 0
+ 42: TypePointer Uniform 17(float)
+ 46: 19(int) Constant 1
+ 50: TypeVector 17(float) 2
+ 51: TypePointer Uniform 18(fvec4)
+ 59: 19(int) Constant 2
+ 60: TypeVector 17(float) 3
+ 68: 19(int) Constant 3
+ 81: TypeVector 19(int) 2
+ 82: TypePointer Uniform 20(ivec4)
+ 90: TypeVector 19(int) 3
+ 104: TypePointer Uniform 6(int)
+ 111: TypeVector 6(int) 2
+ 112: TypePointer Uniform 21(ivec4)
+ 120: TypeVector 6(int) 3
+ 142: TypePointer Uniform 22(float)
+ 149: TypeVector 22(float) 2
+ 150: TypePointer Uniform 23(fvec4)
+ 158: TypeVector 22(float) 3
+ 182: 81(ivec2) ConstantComposite 33 33
+ 183: TypeVector 34(bool) 2
+ 194: 90(ivec3) ConstantComposite 33 33 33
+ 195: TypeVector 34(bool) 3
+ 205: 20(ivec4) ConstantComposite 33 33 33 33
+ 206: TypeVector 34(bool) 4
+ 213: 6(int) Constant 8
+ 214: 6(int) Constant 1
+ 215: 120(ivec3) ConstantComposite 213 213 214
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(invocation): 7(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
+ 28: 6(int) Load 8(invocation)
+ 31: 30(ptr) AccessChain 27(data) 28 29
+ 32: 19(int) Load 31
+ 35: 34(bool) SLessThan 32 33
+ 37: 34(bool) GroupNonUniformAll 36 35
+ SelectionMerge 39 None
+ BranchConditional 37 38 133
+ 38: Label
+ 40: 6(int) Load 8(invocation)
+ 43: 42(ptr) AccessChain 27(data) 33 33 41
+ 44: 17(float) Load 43
+ 45: 34(bool) GroupNonUniformAllEqual 36 44
+ 47: 19(int) Select 45 46 33
+ 48: 30(ptr) AccessChain 27(data) 40 29
+ Store 48 47
+ 49: 6(int) Load 8(invocation)
+ 52: 51(ptr) AccessChain 27(data) 46 33
+ 53: 18(fvec4) Load 52
+ 54: 50(fvec2) VectorShuffle 53 53 0 1
+ 55: 34(bool) GroupNonUniformAllEqual 36 54
+ 56: 19(int) Select 55 46 33
+ 57: 30(ptr) AccessChain 27(data) 49 29
+ Store 57 56
+ 58: 6(int) Load 8(invocation)
+ 61: 51(ptr) AccessChain 27(data) 59 33
+ 62: 18(fvec4) Load 61
+ 63: 60(fvec3) VectorShuffle 62 62 0 1 2
+ 64: 34(bool) GroupNonUniformAllEqual 36 63
+ 65: 19(int) Select 64 46 33
+ 66: 30(ptr) AccessChain 27(data) 58 29
+ Store 66 65
+ 67: 6(int) Load 8(invocation)
+ 69: 51(ptr) AccessChain 27(data) 68 33
+ 70: 18(fvec4) Load 69
+ 71: 34(bool) GroupNonUniformAllEqual 36 70
+ 72: 19(int) Select 71 46 33
+ 73: 30(ptr) AccessChain 27(data) 67 29
+ Store 73 72
+ 74: 6(int) Load 8(invocation)
+ 75: 30(ptr) AccessChain 27(data) 33 46 41
+ 76: 19(int) Load 75
+ 77: 34(bool) GroupNonUniformAllEqual 36 76
+ 78: 19(int) Select 77 46 33
+ 79: 30(ptr) AccessChain 27(data) 74 29
+ Store 79 78
+ 80: 6(int) Load 8(invocation)
+ 83: 82(ptr) AccessChain 27(data) 46 46
+ 84: 20(ivec4) Load 83
+ 85: 81(ivec2) VectorShuffle 84 84 0 1
+ 86: 34(bool) GroupNonUniformAllEqual 36 85
+ 87: 19(int) Select 86 46 33
+ 88: 30(ptr) AccessChain 27(data) 80 29
+ Store 88 87
+ 89: 6(int) Load 8(invocation)
+ 91: 82(ptr) AccessChain 27(data) 59 46
+ 92: 20(ivec4) Load 91
+ 93: 90(ivec3) VectorShuffle 92 92 0 1 2
+ 94: 34(bool) GroupNonUniformAllEqual 36 93
+ 95: 19(int) Select 94 46 33
+ 96: 30(ptr) AccessChain 27(data) 89 29
+ Store 96 95
+ 97: 6(int) Load 8(invocation)
+ 98: 82(ptr) AccessChain 27(data) 68 46
+ 99: 20(ivec4) Load 98
+ 100: 34(bool) GroupNonUniformAllEqual 36 99
+ 101: 19(int) Select 100 46 33
+ 102: 30(ptr) AccessChain 27(data) 97 29
+ Store 102 101
+ 103: 6(int) Load 8(invocation)
+ 105: 104(ptr) AccessChain 27(data) 33 59 41
+ 106: 6(int) Load 105
+ 107: 34(bool) GroupNonUniformAllEqual 36 106
+ 108: 19(int) Select 107 46 33
+ 109: 30(ptr) AccessChain 27(data) 103 29
+ Store 109 108
+ 110: 6(int) Load 8(invocation)
+ 113: 112(ptr) AccessChain 27(data) 46 59
+ 114: 21(ivec4) Load 113
+ 115: 111(ivec2) VectorShuffle 114 114 0 1
+ 116: 34(bool) GroupNonUniformAllEqual 36 115
+ 117: 19(int) Select 116 46 33
+ 118: 30(ptr) AccessChain 27(data) 110 29
+ Store 118 117
+ 119: 6(int) Load 8(invocation)
+ 121: 112(ptr) AccessChain 27(data) 59 59
+ 122: 21(ivec4) Load 121
+ 123: 120(ivec3) VectorShuffle 122 122 0 1 2
+ 124: 34(bool) GroupNonUniformAllEqual 36 123
+ 125: 19(int) Select 124 46 33
+ 126: 30(ptr) AccessChain 27(data) 119 29
+ Store 126 125
+ 127: 6(int) Load 8(invocation)
+ 128: 112(ptr) AccessChain 27(data) 68 59
+ 129: 21(ivec4) Load 128
+ 130: 34(bool) GroupNonUniformAllEqual 36 129
+ 131: 19(int) Select 130 46 33
+ 132: 30(ptr) AccessChain 27(data) 127 29
+ Store 132 131
+ Branch 39
+ 133: Label
+ 134: 6(int) Load 8(invocation)
+ 135: 30(ptr) AccessChain 27(data) 134 29
+ 136: 19(int) Load 135
+ 137: 34(bool) SLessThan 136 33
+ 138: 34(bool) GroupNonUniformAny 36 137
+ SelectionMerge 140 None
+ BranchConditional 138 139 140
+ 139: Label
+ 141: 6(int) Load 8(invocation)
+ 143: 142(ptr) AccessChain 27(data) 33 68 41
+ 144: 22(float) Load 143
+ 145: 34(bool) GroupNonUniformAllEqual 36 144
+ 146: 19(int) Select 145 46 33
+ 147: 30(ptr) AccessChain 27(data) 141 29
+ Store 147 146
+ 148: 6(int) Load 8(invocation)
+ 151: 150(ptr) AccessChain 27(data) 46 68
+ 152: 23(fvec4) Load 151
+ 153: 149(fvec2) VectorShuffle 152 152 0 1
+ 154: 34(bool) GroupNonUniformAllEqual 36 153
+ 155: 19(int) Select 154 46 33
+ 156: 30(ptr) AccessChain 27(data) 148 29
+ Store 156 155
+ 157: 6(int) Load 8(invocation)
+ 159: 150(ptr) AccessChain 27(data) 59 68
+ 160: 23(fvec4) Load 159
+ 161: 158(fvec3) VectorShuffle 160 160 0 1 2
+ 162: 34(bool) GroupNonUniformAllEqual 36 161
+ 163: 19(int) Select 162 46 33
+ 164: 30(ptr) AccessChain 27(data) 157 29
+ Store 164 163
+ 165: 6(int) Load 8(invocation)
+ 166: 150(ptr) AccessChain 27(data) 68 68
+ 167: 23(fvec4) Load 166
+ 168: 34(bool) GroupNonUniformAllEqual 36 167
+ 169: 19(int) Select 168 46 33
+ 170: 30(ptr) AccessChain 27(data) 165 29
+ Store 170 169
+ 171: 6(int) Load 8(invocation)
+ 172: 30(ptr) AccessChain 27(data) 33 46 41
+ 173: 19(int) Load 172
+ 174: 34(bool) SLessThan 173 33
+ 175: 34(bool) GroupNonUniformAllEqual 36 174
+ 176: 19(int) Select 175 46 33
+ 177: 30(ptr) AccessChain 27(data) 171 29
+ Store 177 176
+ 178: 6(int) Load 8(invocation)
+ 179: 82(ptr) AccessChain 27(data) 46 46
+ 180: 20(ivec4) Load 179
+ 181: 81(ivec2) VectorShuffle 180 180 0 1
+ 184: 183(bvec2) SLessThan 181 182
+ 185: 34(bool) GroupNonUniformAllEqual 36 184
+ 186: 19(int) Select 185 46 33
+ 187: 81(ivec2) CompositeConstruct 186 186
+ 188: 19(int) CompositeExtract 187 0
+ 189: 30(ptr) AccessChain 27(data) 178 29
+ Store 189 188
+ 190: 6(int) Load 8(invocation)
+ 191: 82(ptr) AccessChain 27(data) 46 46
+ 192: 20(ivec4) Load 191
+ 193: 90(ivec3) VectorShuffle 192 192 0 1 2
+ 196: 195(bvec3) SLessThan 193 194
+ 197: 34(bool) GroupNonUniformAllEqual 36 196
+ 198: 19(int) Select 197 46 33
+ 199: 90(ivec3) CompositeConstruct 198 198 198
+ 200: 19(int) CompositeExtract 199 0
+ 201: 30(ptr) AccessChain 27(data) 190 29
+ Store 201 200
+ 202: 6(int) Load 8(invocation)
+ 203: 82(ptr) AccessChain 27(data) 46 46
+ 204: 20(ivec4) Load 203
+ 207: 206(bvec4) SLessThan 204 205
+ 208: 34(bool) GroupNonUniformAllEqual 36 207
+ 209: 19(int) Select 208 46 33
+ 210: 20(ivec4) CompositeConstruct 209 209 209 209
+ 211: 19(int) CompositeExtract 210 0
+ 212: 30(ptr) AccessChain 27(data) 202 29
+ Store 212 211
+ Branch 140
+ 140: Label
+ Branch 39
+ 39: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.vulkan100.subgroupArithmetic.comp.out b/Test/baseResults/spv.vulkan100.subgroupArithmetic.comp.out
new file mode 100755
index 0000000..9955053
--- /dev/null
+++ b/Test/baseResults/spv.vulkan100.subgroupArithmetic.comp.out
@@ -0,0 +1,305 @@
+spv.vulkan100.subgroupArithmetic.comp
+ERROR: 0:19: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:20: '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:24: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:25: '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:29: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:30: '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:34: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:35: '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:39: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:40: '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:44: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:45: '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:49: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:50: '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:54: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:55: '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:59: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:60: '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:64: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:65: '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:69: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:70: '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:74: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:75: '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:79: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:80: '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:84: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:85: '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:89: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:90: '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:94: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:95: '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:99: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:100: '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:104: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:105: '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:109: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:110: '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:114: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:115: '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:119: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:120: '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:124: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:125: '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:129: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:130: '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:134: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:135: '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:139: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:140: '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:144: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:145: '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:149: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:150: '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:154: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:155: '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:159: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:160: '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:164: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:165: '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:169: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:170: '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:174: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:175: '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:179: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:180: '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:184: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:185: '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:189: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:190: '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:194: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:195: '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:199: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:200: '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:204: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:205: '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:209: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:210: '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:214: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:215: '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:219: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:220: '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:224: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:225: '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:229: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:230: '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:234: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:235: '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:239: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:240: '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:244: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:245: '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:249: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:250: '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:254: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:255: '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:259: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:260: '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:264: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:265: '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:269: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:270: '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:274: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:275: '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:279: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:280: '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:284: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:285: '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:289: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:290: '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:294: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:295: '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:299: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:300: '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:304: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:305: '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:309: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:310: '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:314: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:315: '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:319: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:320: '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:324: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:325: '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:329: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:330: '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:334: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:335: '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:339: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:340: '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:344: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:345: '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:349: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:350: '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:354: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:355: '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:359: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:360: '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:364: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:365: '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:369: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:370: '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:374: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:375: '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:379: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:380: '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:384: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:385: '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:389: 'subgroup op' : requires SPIR-V 1.3
+ERROR: 0:390: '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: 300 compilation errors. No code generated.
+
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out
new file mode 100755
index 0000000..74527e3
--- /dev/null
+++ b/Test/baseResults/spv.vulkan110.int16.frag.out
@@ -0,0 +1,743 @@
+spv.vulkan110.int16.frag
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 525
+
+ Capability Shader
+ Capability Float16
+ Capability Float64
+ Capability Int64
+ Capability Int16
+ Capability Int8
+ Capability StorageUniform16
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_float64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int16"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int32"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int64"
+ SourceExtension "GL_KHX_shader_explicit_arithmetic_types_int8"
+ Name 4 "main"
+ Name 6 "literal("
+ Name 8 "typeCast16("
+ Name 10 "operators("
+ Name 12 "builtinFuncs("
+ Name 16 "i16"
+ Name 24 "Uniforms"
+ MemberName 24(Uniforms) 0 "index"
+ Name 26 ""
+ Name 33 "indexable"
+ Name 38 "u16"
+ Name 46 "indexable"
+ Name 51 "i32v"
+ Name 54 "i16v"
+ Name 59 "u16v"
+ Name 67 "u32v"
+ Name 74 "i64v"
+ Name 80 "u64v"
+ Name 94 "f16v"
+ Name 100 "f32v"
+ Name 106 "f64v"
+ Name 154 "i8v"
+ Name 163 "u8v"
+ Name 176 "bv"
+ Name 195 "u16v"
+ Name 200 "i16"
+ Name 220 "i"
+ Name 227 "uv"
+ Name 243 "i64"
+ Name 283 "b"
+ Name 345 "i16v"
+ Name 348 "i16"
+ Name 358 "u16v"
+ Name 360 "u16"
+ Name 430 "i32"
+ Name 433 "i64"
+ Name 436 "i16v4"
+ Name 439 "u32"
+ Name 440 "u16v2"
+ Name 444 "u64"
+ Name 447 "u16v4"
+ Name 459 "bv"
+ Name 520 "Block"
+ MemberName 520(Block) 0 "i16"
+ MemberName 520(Block) 1 "i16v2"
+ MemberName 520(Block) 2 "i16v3"
+ MemberName 520(Block) 3 "i16v4"
+ MemberName 520(Block) 4 "u16"
+ MemberName 520(Block) 5 "u16v2"
+ MemberName 520(Block) 6 "u16v3"
+ MemberName 520(Block) 7 "u16v4"
+ Name 522 "block"
+ Name 523 "si16"
+ Name 524 "su16"
+ MemberDecorate 24(Uniforms) 0 Offset 0
+ Decorate 24(Uniforms) Block
+ Decorate 26 DescriptorSet 0
+ Decorate 26 Binding 0
+ MemberDecorate 520(Block) 0 Offset 0
+ MemberDecorate 520(Block) 1 Offset 4
+ MemberDecorate 520(Block) 2 Offset 8
+ MemberDecorate 520(Block) 3 Offset 16
+ MemberDecorate 520(Block) 4 Offset 24
+ MemberDecorate 520(Block) 5 Offset 28
+ MemberDecorate 520(Block) 6 Offset 32
+ MemberDecorate 520(Block) 7 Offset 40
+ Decorate 520(Block) Block
+ Decorate 522(block) DescriptorSet 0
+ Decorate 522(block) Binding 1
+ Decorate 523(si16) SpecId 100
+ Decorate 524(su16) SpecId 101
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 14: TypeInt 16 1
+ 15: TypePointer Function 14(int)
+ 17: TypeInt 32 0
+ 18: 17(int) Constant 3
+ 19: TypeArray 14(int) 18
+ 20: 14(int) Constant 4294962927
+ 21: 14(int) Constant 4294967295
+ 22: 14(int) Constant 16384
+ 23: 19 ConstantComposite 20 21 22
+ 24(Uniforms): TypeStruct 17(int)
+ 25: TypePointer Uniform 24(Uniforms)
+ 26: 25(ptr) Variable Uniform
+ 27: TypeInt 32 1
+ 28: 27(int) Constant 0
+ 29: TypePointer Uniform 17(int)
+ 32: TypePointer Function 19
+ 36: TypeInt 16 0
+ 37: TypePointer Function 36(int)
+ 39: TypeArray 36(int) 18
+ 40: 36(int) Constant 65535
+ 41: 36(int) Constant 32767
+ 42: 39 ConstantComposite 40 40 41
+ 45: TypePointer Function 39
+ 49: TypeVector 27(int) 2
+ 50: TypePointer Function 49(ivec2)
+ 52: TypeVector 14(int) 2
+ 53: TypePointer Function 52(ivec2)
+ 57: TypeVector 36(int) 2
+ 58: TypePointer Function 57(ivec2)
+ 65: TypeVector 17(int) 2
+ 66: TypePointer Function 65(ivec2)
+ 71: TypeInt 64 1
+ 72: TypeVector 71(int) 2
+ 73: TypePointer Function 72(ivec2)
+ 77: TypeInt 64 0
+ 78: TypeVector 77(int) 2
+ 79: TypePointer Function 78(ivec2)
+ 91: TypeFloat 16
+ 92: TypeVector 91(float) 2
+ 93: TypePointer Function 92(fvec2)
+ 97: TypeFloat 32
+ 98: TypeVector 97(float) 2
+ 99: TypePointer Function 98(fvec2)
+ 103: TypeFloat 64
+ 104: TypeVector 103(float) 2
+ 105: TypePointer Function 104(fvec2)
+ 151: TypeInt 8 1
+ 152: TypeVector 151(int) 2
+ 153: TypePointer Function 152(ivec2)
+ 160: TypeInt 8 0
+ 161: TypeVector 160(int) 2
+ 162: TypePointer Function 161(ivec2)
+ 173: TypeBool
+ 174: TypeVector 173(bool) 2
+ 175: TypePointer Function 174(bvec2)
+ 178: 14(int) Constant 0
+ 179: 14(int) Constant 1
+ 180: 52(ivec2) ConstantComposite 178 178
+ 181: 52(ivec2) ConstantComposite 179 179
+ 184: 36(int) Constant 0
+ 185: 36(int) Constant 1
+ 186: 57(ivec2) ConstantComposite 184 184
+ 187: 57(ivec2) ConstantComposite 185 185
+ 193: TypeVector 36(int) 3
+ 194: TypePointer Function 193(ivec3)
+ 197: TypeVector 14(int) 3
+ 219: TypePointer Function 27(int)
+ 225: TypeVector 17(int) 3
+ 226: TypePointer Function 225(ivec3)
+ 242: TypePointer Function 71(int)
+ 264: 17(int) Constant 1
+ 270: 17(int) Constant 2
+ 275: TypeVector 27(int) 3
+ 282: TypePointer Function 173(bool)
+ 284: 17(int) Constant 0
+ 298: TypePointer Function 17(int)
+ 356: 52(ivec2) ConstantComposite 21 21
+ 365: 193(ivec3) ConstantComposite 184 184 184
+ 407: 173(bool) ConstantTrue
+ 414: 173(bool) ConstantFalse
+ 415: 174(bvec2) ConstantComposite 414 414
+ 427: TypeVector 173(bool) 3
+ 428: 427(bvec3) ConstantComposite 414 414 414
+ 434: TypeVector 14(int) 4
+ 435: TypePointer Function 434(ivec4)
+ 443: TypePointer Function 77(int)
+ 445: TypeVector 36(int) 4
+ 446: TypePointer Function 445(ivec4)
+ 458: TypePointer Function 427(bvec3)
+ 520(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445(ivec4)
+ 521: TypePointer Uniform 520(Block)
+ 522(block): 521(ptr) Variable Uniform
+ 523(si16): 14(int) SpecConstant 4294967286
+ 524(su16): 36(int) SpecConstant 20
+ 4(main): 2 Function None 3
+ 5: Label
+ Return
+ FunctionEnd
+ 6(literal(): 2 Function None 3
+ 7: Label
+ 16(i16): 15(ptr) Variable Function
+ 33(indexable): 32(ptr) Variable Function
+ 38(u16): 37(ptr) Variable Function
+ 46(indexable): 45(ptr) Variable Function
+ 30: 29(ptr) AccessChain 26 28
+ 31: 17(int) Load 30
+ Store 33(indexable) 23
+ 34: 15(ptr) AccessChain 33(indexable) 31
+ 35: 14(int) Load 34
+ Store 16(i16) 35
+ 43: 29(ptr) AccessChain 26 28
+ 44: 17(int) Load 43
+ Store 46(indexable) 42
+ 47: 37(ptr) AccessChain 46(indexable) 44
+ 48: 36(int) Load 47
+ Store 38(u16) 48
+ Return
+ FunctionEnd
+ 8(typeCast16(): 2 Function None 3
+ 9: Label
+ 51(i32v): 50(ptr) Variable Function
+ 54(i16v): 53(ptr) Variable Function
+ 59(u16v): 58(ptr) Variable Function
+ 67(u32v): 66(ptr) Variable Function
+ 74(i64v): 73(ptr) Variable Function
+ 80(u64v): 79(ptr) Variable Function
+ 94(f16v): 93(ptr) Variable Function
+ 100(f32v): 99(ptr) Variable Function
+ 106(f64v): 105(ptr) Variable Function
+ 154(i8v): 153(ptr) Variable Function
+ 163(u8v): 162(ptr) Variable Function
+ 176(bv): 175(ptr) Variable Function
+ 55: 52(ivec2) Load 54(i16v)
+ 56: 49(ivec2) SConvert 55
+ Store 51(i32v) 56
+ 60: 57(ivec2) Load 59(u16v)
+ 61: 49(ivec2) UConvert 60
+ 62: 49(ivec2) Bitcast 61
+ Store 51(i32v) 62
+ 63: 52(ivec2) Load 54(i16v)
+ 64: 57(ivec2) Bitcast 63
+ Store 59(u16v) 64
+ 68: 52(ivec2) Load 54(i16v)
+ 69: 49(ivec2) SConvert 68
+ 70: 65(ivec2) Bitcast 69
+ Store 67(u32v) 70
+ 75: 52(ivec2) Load 54(i16v)
+ 76: 72(ivec2) SConvert 75
+ Store 74(i64v) 76
+ 81: 52(ivec2) Load 54(i16v)
+ 82: 72(ivec2) SConvert 81
+ 83: 78(ivec2) Bitcast 82
+ Store 80(u64v) 83
+ 84: 57(ivec2) Load 59(u16v)
+ 85: 65(ivec2) UConvert 84
+ Store 67(u32v) 85
+ 86: 57(ivec2) Load 59(u16v)
+ 87: 72(ivec2) UConvert 86
+ 88: 72(ivec2) Bitcast 87
+ Store 74(i64v) 88
+ 89: 57(ivec2) Load 59(u16v)
+ 90: 78(ivec2) UConvert 89
+ Store 80(u64v) 90
+ 95: 52(ivec2) Load 54(i16v)
+ 96: 92(fvec2) ConvertSToF 95
+ Store 94(f16v) 96
+ 101: 52(ivec2) Load 54(i16v)
+ 102: 98(fvec2) ConvertSToF 101
+ Store 100(f32v) 102
+ 107: 52(ivec2) Load 54(i16v)
+ 108: 104(fvec2) ConvertSToF 107
+ Store 106(f64v) 108
+ 109: 57(ivec2) Load 59(u16v)
+ 110: 92(fvec2) ConvertUToF 109
+ Store 94(f16v) 110
+ 111: 57(ivec2) Load 59(u16v)
+ 112: 98(fvec2) ConvertUToF 111
+ Store 100(f32v) 112
+ 113: 57(ivec2) Load 59(u16v)
+ 114: 104(fvec2) ConvertUToF 113
+ Store 106(f64v) 114
+ 115: 52(ivec2) Load 54(i16v)
+ 116: 49(ivec2) SConvert 115
+ Store 51(i32v) 116
+ 117: 57(ivec2) Load 59(u16v)
+ 118: 49(ivec2) UConvert 117
+ 119: 49(ivec2) Bitcast 118
+ Store 51(i32v) 119
+ 120: 52(ivec2) Load 54(i16v)
+ 121: 57(ivec2) Bitcast 120
+ Store 59(u16v) 121
+ 122: 52(ivec2) Load 54(i16v)
+ 123: 49(ivec2) SConvert 122
+ 124: 65(ivec2) Bitcast 123
+ Store 67(u32v) 124
+ 125: 52(ivec2) Load 54(i16v)
+ 126: 72(ivec2) SConvert 125
+ Store 74(i64v) 126
+ 127: 52(ivec2) Load 54(i16v)
+ 128: 72(ivec2) SConvert 127
+ 129: 78(ivec2) Bitcast 128
+ Store 80(u64v) 129
+ 130: 57(ivec2) Load 59(u16v)
+ 131: 65(ivec2) UConvert 130
+ Store 67(u32v) 131
+ 132: 57(ivec2) Load 59(u16v)
+ 133: 72(ivec2) UConvert 132
+ 134: 72(ivec2) Bitcast 133
+ Store 74(i64v) 134
+ 135: 57(ivec2) Load 59(u16v)
+ 136: 72(ivec2) UConvert 135
+ 137: 72(ivec2) Bitcast 136
+ 138: 78(ivec2) Bitcast 137
+ Store 80(u64v) 138
+ 139: 52(ivec2) Load 54(i16v)
+ 140: 92(fvec2) ConvertSToF 139
+ Store 94(f16v) 140
+ 141: 52(ivec2) Load 54(i16v)
+ 142: 98(fvec2) ConvertSToF 141
+ Store 100(f32v) 142
+ 143: 52(ivec2) Load 54(i16v)
+ 144: 104(fvec2) ConvertSToF 143
+ Store 106(f64v) 144
+ 145: 57(ivec2) Load 59(u16v)
+ 146: 92(fvec2) ConvertUToF 145
+ Store 94(f16v) 146
+ 147: 57(ivec2) Load 59(u16v)
+ 148: 98(fvec2) ConvertUToF 147
+ Store 100(f32v) 148
+ 149: 57(ivec2) Load 59(u16v)
+ 150: 104(fvec2) ConvertUToF 149
+ Store 106(f64v) 150
+ 155: 52(ivec2) Load 54(i16v)
+ 156: 152(ivec2) SConvert 155
+ Store 154(i8v) 156
+ 157: 57(ivec2) Load 59(u16v)
+ 158: 152(ivec2) UConvert 157
+ 159: 152(ivec2) Bitcast 158
+ Store 154(i8v) 159
+ 164: 52(ivec2) Load 54(i16v)
+ 165: 152(ivec2) SConvert 164
+ 166: 161(ivec2) Bitcast 165
+ Store 163(u8v) 166
+ 167: 57(ivec2) Load 59(u16v)
+ 168: 161(ivec2) UConvert 167
+ Store 163(u8v) 168
+ 169: 57(ivec2) Load 59(u16v)
+ 170: 161(ivec2) UConvert 169
+ 171: 52(ivec2) UConvert 170
+ 172: 52(ivec2) Bitcast 171
+ Store 54(i16v) 172
+ 177: 174(bvec2) Load 176(bv)
+ 182: 52(ivec2) Select 177 181 180
+ Store 54(i16v) 182
+ 183: 174(bvec2) Load 176(bv)
+ 188: 57(ivec2) Select 183 187 186
+ Store 59(u16v) 188
+ 189: 52(ivec2) Load 54(i16v)
+ 190: 174(bvec2) INotEqual 189 186
+ Store 176(bv) 190
+ 191: 57(ivec2) Load 59(u16v)
+ 192: 174(bvec2) INotEqual 191 186
+ Store 176(bv) 192
+ Return
+ FunctionEnd
+ 10(operators(): 2 Function None 3
+ 11: Label
+ 195(u16v): 194(ptr) Variable Function
+ 200(i16): 15(ptr) Variable Function
+ 220(i): 219(ptr) Variable Function
+ 227(uv): 226(ptr) Variable Function
+ 243(i64): 242(ptr) Variable Function
+ 283(b): 282(ptr) Variable Function
+ 196: 193(ivec3) Load 195(u16v)
+ 198: 197(ivec3) CompositeConstruct 179 179 179
+ 199: 193(ivec3) IAdd 196 198
+ Store 195(u16v) 199
+ 201: 14(int) Load 200(i16)
+ 202: 14(int) ISub 201 179
+ Store 200(i16) 202
+ 203: 14(int) Load 200(i16)
+ 204: 14(int) IAdd 203 179
+ Store 200(i16) 204
+ 205: 193(ivec3) Load 195(u16v)
+ 206: 197(ivec3) CompositeConstruct 179 179 179
+ 207: 193(ivec3) ISub 205 206
+ Store 195(u16v) 207
+ 208: 193(ivec3) Load 195(u16v)
+ 209: 193(ivec3) Not 208
+ Store 195(u16v) 209
+ 210: 14(int) Load 200(i16)
+ Store 200(i16) 210
+ 211: 193(ivec3) Load 195(u16v)
+ 212: 193(ivec3) SNegate 211
+ Store 195(u16v) 212
+ 213: 14(int) Load 200(i16)
+ 214: 14(int) Load 200(i16)
+ 215: 14(int) IAdd 214 213
+ Store 200(i16) 215
+ 216: 193(ivec3) Load 195(u16v)
+ 217: 193(ivec3) Load 195(u16v)
+ 218: 193(ivec3) ISub 217 216
+ Store 195(u16v) 218
+ 221: 14(int) Load 200(i16)
+ 222: 27(int) SConvert 221
+ 223: 27(int) Load 220(i)
+ 224: 27(int) IMul 223 222
+ Store 220(i) 224
+ 228: 193(ivec3) Load 195(u16v)
+ 229: 225(ivec3) UConvert 228
+ 230: 225(ivec3) Load 227(uv)
+ 231: 225(ivec3) UDiv 230 229
+ Store 227(uv) 231
+ 232: 14(int) Load 200(i16)
+ 233: 27(int) SConvert 232
+ 234: 17(int) Bitcast 233
+ 235: 225(ivec3) Load 227(uv)
+ 236: 225(ivec3) CompositeConstruct 234 234 234
+ 237: 225(ivec3) UMod 235 236
+ Store 227(uv) 237
+ 238: 193(ivec3) Load 195(u16v)
+ 239: 225(ivec3) UConvert 238
+ 240: 225(ivec3) Load 227(uv)
+ 241: 225(ivec3) IAdd 239 240
+ Store 227(uv) 241
+ 244: 14(int) Load 200(i16)
+ 245: 71(int) SConvert 244
+ 246: 71(int) Load 243(i64)
+ 247: 71(int) ISub 245 246
+ Store 243(i64) 247
+ 248: 193(ivec3) Load 195(u16v)
+ 249: 225(ivec3) UConvert 248
+ 250: 225(ivec3) Load 227(uv)
+ 251: 225(ivec3) IMul 249 250
+ Store 227(uv) 251
+ 252: 14(int) Load 200(i16)
+ 253: 71(int) SConvert 252
+ 254: 71(int) Load 243(i64)
+ 255: 71(int) IMul 253 254
+ Store 243(i64) 255
+ 256: 14(int) Load 200(i16)
+ 257: 27(int) SConvert 256
+ 258: 27(int) Load 220(i)
+ 259: 27(int) SMod 257 258
+ Store 220(i) 259
+ 260: 14(int) Load 200(i16)
+ 261: 193(ivec3) Load 195(u16v)
+ 262: 197(ivec3) CompositeConstruct 260 260 260
+ 263: 193(ivec3) ShiftLeftLogical 261 262
+ Store 195(u16v) 263
+ 265: 37(ptr) AccessChain 195(u16v) 264
+ 266: 36(int) Load 265
+ 267: 14(int) Load 200(i16)
+ 268: 14(int) ShiftRightArithmetic 267 266
+ Store 200(i16) 268
+ 269: 14(int) Load 200(i16)
+ 271: 37(ptr) AccessChain 195(u16v) 270
+ 272: 36(int) Load 271
+ 273: 14(int) ShiftLeftLogical 269 272
+ Store 200(i16) 273
+ 274: 193(ivec3) Load 195(u16v)
+ 276: 275(ivec3) UConvert 274
+ 277: 275(ivec3) Bitcast 276
+ 278: 27(int) Load 220(i)
+ 279: 275(ivec3) CompositeConstruct 278 278 278
+ 280: 275(ivec3) ShiftLeftLogical 277 279
+ 281: 225(ivec3) Bitcast 280
+ Store 227(uv) 281
+ 285: 37(ptr) AccessChain 195(u16v) 284
+ 286: 36(int) Load 285
+ 287: 14(int) Load 200(i16)
+ 288: 36(int) Bitcast 287
+ 289: 173(bool) INotEqual 286 288
+ Store 283(b) 289
+ 290: 14(int) Load 200(i16)
+ 291: 36(int) Bitcast 290
+ 292: 37(ptr) AccessChain 195(u16v) 284
+ 293: 36(int) Load 292
+ 294: 173(bool) IEqual 291 293
+ Store 283(b) 294
+ 295: 37(ptr) AccessChain 195(u16v) 284
+ 296: 36(int) Load 295
+ 297: 17(int) UConvert 296
+ 299: 298(ptr) AccessChain 227(uv) 264
+ 300: 17(int) Load 299
+ 301: 173(bool) UGreaterThan 297 300
+ Store 283(b) 301
+ 302: 14(int) Load 200(i16)
+ 303: 27(int) SConvert 302
+ 304: 27(int) Load 220(i)
+ 305: 173(bool) SLessThan 303 304
+ Store 283(b) 305
+ 306: 37(ptr) AccessChain 195(u16v) 264
+ 307: 36(int) Load 306
+ 308: 17(int) UConvert 307
+ 309: 298(ptr) AccessChain 227(uv) 284
+ 310: 17(int) Load 309
+ 311: 173(bool) UGreaterThanEqual 308 310
+ Store 283(b) 311
+ 312: 14(int) Load 200(i16)
+ 313: 27(int) SConvert 312
+ 314: 27(int) Load 220(i)
+ 315: 173(bool) SLessThanEqual 313 314
+ Store 283(b) 315
+ 316: 14(int) Load 200(i16)
+ 317: 27(int) SConvert 316
+ 318: 17(int) Bitcast 317
+ 319: 225(ivec3) Load 227(uv)
+ 320: 225(ivec3) CompositeConstruct 318 318 318
+ 321: 225(ivec3) BitwiseOr 319 320
+ Store 227(uv) 321
+ 322: 14(int) Load 200(i16)
+ 323: 27(int) SConvert 322
+ 324: 27(int) Load 220(i)
+ 325: 27(int) BitwiseOr 323 324
+ Store 220(i) 325
+ 326: 14(int) Load 200(i16)
+ 327: 71(int) SConvert 326
+ 328: 71(int) Load 243(i64)
+ 329: 71(int) BitwiseAnd 328 327
+ Store 243(i64) 329
+ 330: 193(ivec3) Load 195(u16v)
+ 331: 225(ivec3) UConvert 330
+ 332: 225(ivec3) Load 227(uv)
+ 333: 225(ivec3) BitwiseAnd 331 332
+ Store 227(uv) 333
+ 334: 14(int) Load 200(i16)
+ 335: 27(int) SConvert 334
+ 336: 17(int) Bitcast 335
+ 337: 225(ivec3) Load 227(uv)
+ 338: 225(ivec3) CompositeConstruct 336 336 336
+ 339: 225(ivec3) BitwiseXor 337 338
+ Store 227(uv) 339
+ 340: 193(ivec3) Load 195(u16v)
+ 341: 14(int) Load 200(i16)
+ 342: 36(int) Bitcast 341
+ 343: 193(ivec3) CompositeConstruct 342 342 342
+ 344: 193(ivec3) BitwiseXor 340 343
+ Store 195(u16v) 344
+ Return
+ FunctionEnd
+12(builtinFuncs(): 2 Function None 3
+ 13: Label
+ 345(i16v): 53(ptr) Variable Function
+ 348(i16): 15(ptr) Variable Function
+ 358(u16v): 194(ptr) Variable Function
+ 360(u16): 37(ptr) Variable Function
+ 430(i32): 219(ptr) Variable Function
+ 433(i64): 242(ptr) Variable Function
+ 436(i16v4): 435(ptr) Variable Function
+ 439(u32): 298(ptr) Variable Function
+ 440(u16v2): 58(ptr) Variable Function
+ 444(u64): 443(ptr) Variable Function
+ 447(u16v4): 446(ptr) Variable Function
+ 459(bv): 458(ptr) Variable Function
+ 346: 52(ivec2) Load 345(i16v)
+ 347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346
+ Store 345(i16v) 347
+ 349: 14(int) Load 348(i16)
+ 350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349
+ Store 348(i16) 350
+ 351: 52(ivec2) Load 345(i16v)
+ 352: 14(int) Load 348(i16)
+ 353: 52(ivec2) CompositeConstruct 352 352
+ 354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353
+ Store 345(i16v) 354
+ 355: 52(ivec2) Load 345(i16v)
+ 357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356
+ Store 345(i16v) 357
+ 359: 193(ivec3) Load 358(u16v)
+ 361: 36(int) Load 360(u16)
+ 362: 193(ivec3) CompositeConstruct 361 361 361
+ 363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362
+ Store 358(u16v) 363
+ 364: 193(ivec3) Load 358(u16v)
+ 366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365
+ Store 358(u16v) 366
+ 367: 52(ivec2) Load 345(i16v)
+ 368: 14(int) Load 348(i16)
+ 369: 52(ivec2) CompositeConstruct 368 368
+ 370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369
+ Store 345(i16v) 370
+ 371: 52(ivec2) Load 345(i16v)
+ 372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356
+ Store 345(i16v) 372
+ 373: 193(ivec3) Load 358(u16v)
+ 374: 36(int) Load 360(u16)
+ 375: 193(ivec3) CompositeConstruct 374 374 374
+ 376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375
+ Store 358(u16v) 376
+ 377: 193(ivec3) Load 358(u16v)
+ 378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365
+ Store 358(u16v) 378
+ 379: 52(ivec2) Load 345(i16v)
+ 380: 14(int) Load 348(i16)
+ 381: 14(int) SNegate 380
+ 382: 14(int) Load 348(i16)
+ 383: 52(ivec2) CompositeConstruct 381 381
+ 384: 52(ivec2) CompositeConstruct 382 382
+ 385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384
+ Store 345(i16v) 385
+ 386: 52(ivec2) Load 345(i16v)
+ 387: 52(ivec2) Load 345(i16v)
+ 388: 52(ivec2) SNegate 387
+ 389: 52(ivec2) Load 345(i16v)
+ 390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389
+ Store 345(i16v) 390
+ 391: 193(ivec3) Load 358(u16v)
+ 392: 36(int) Load 360(u16)
+ 393: 36(int) SNegate 392
+ 394: 36(int) Load 360(u16)
+ 395: 193(ivec3) CompositeConstruct 393 393 393
+ 396: 193(ivec3) CompositeConstruct 394 394 394
+ 397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396
+ Store 358(u16v) 397
+ 398: 193(ivec3) Load 358(u16v)
+ 399: 193(ivec3) Load 358(u16v)
+ 400: 193(ivec3) SNegate 399
+ 401: 193(ivec3) Load 358(u16v)
+ 402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401
+ Store 358(u16v) 402
+ 403: 15(ptr) AccessChain 345(i16v) 284
+ 404: 14(int) Load 403
+ 405: 15(ptr) AccessChain 345(i16v) 264
+ 406: 14(int) Load 405
+ 408: 14(int) Select 407 406 404
+ Store 348(i16) 408
+ 409: 14(int) Load 348(i16)
+ 410: 52(ivec2) CompositeConstruct 409 409
+ 411: 14(int) Load 348(i16)
+ 412: 14(int) SNegate 411
+ 413: 52(ivec2) CompositeConstruct 412 412
+ 416: 52(ivec2) Select 415 413 410
+ Store 345(i16v) 416
+ 417: 37(ptr) AccessChain 358(u16v) 284
+ 418: 36(int) Load 417
+ 419: 37(ptr) AccessChain 358(u16v) 264
+ 420: 36(int) Load 419
+ 421: 36(int) Select 407 420 418
+ Store 360(u16) 421
+ 422: 36(int) Load 360(u16)
+ 423: 193(ivec3) CompositeConstruct 422 422 422
+ 424: 36(int) Load 360(u16)
+ 425: 36(int) SNegate 424
+ 426: 193(ivec3) CompositeConstruct 425 425 425
+ 429: 193(ivec3) Select 428 426 423
+ Store 358(u16v) 429
+ 431: 52(ivec2) Load 345(i16v)
+ 432: 27(int) Bitcast 431
+ Store 430(i32) 432
+ 437: 434(ivec4) Load 436(i16v4)
+ 438: 71(int) Bitcast 437
+ Store 433(i64) 438
+ 441: 57(ivec2) Load 440(u16v2)
+ 442: 17(int) Bitcast 441
+ Store 439(u32) 442
+ 448: 445(ivec4) Load 447(u16v4)
+ 449: 77(int) Bitcast 448
+ Store 444(u64) 449
+ 450: 27(int) Load 430(i32)
+ 451: 52(ivec2) Bitcast 450
+ Store 345(i16v) 451
+ 452: 71(int) Load 433(i64)
+ 453: 434(ivec4) Bitcast 452
+ Store 436(i16v4) 453
+ 454: 17(int) Load 439(u32)
+ 455: 57(ivec2) Bitcast 454
+ Store 440(u16v2) 455
+ 456: 77(int) Load 444(u64)
+ 457: 445(ivec4) Bitcast 456
+ Store 447(u16v4) 457
+ 460: 193(ivec3) Load 358(u16v)
+ 461: 36(int) Load 360(u16)
+ 462: 193(ivec3) CompositeConstruct 461 461 461
+ 463: 427(bvec3) ULessThan 460 462
+ Store 459(bv) 463
+ 464: 52(ivec2) Load 345(i16v)
+ 465: 14(int) Load 348(i16)
+ 466: 52(ivec2) CompositeConstruct 465 465
+ 467: 174(bvec2) SLessThan 464 466
+ 468: 427(bvec3) Load 459(bv)
+ 469: 427(bvec3) VectorShuffle 468 467 3 4 2
+ Store 459(bv) 469
+ 470: 193(ivec3) Load 358(u16v)
+ 471: 36(int) Load 360(u16)
+ 472: 193(ivec3) CompositeConstruct 471 471 471
+ 473: 427(bvec3) ULessThanEqual 470 472
+ Store 459(bv) 473
+ 474: 52(ivec2) Load 345(i16v)
+ 475: 14(int) Load 348(i16)
+ 476: 52(ivec2) CompositeConstruct 475 475
+ 477: 174(bvec2) SLessThanEqual 474 476
+ 478: 427(bvec3) Load 459(bv)
+ 479: 427(bvec3) VectorShuffle 478 477 3 4 2
+ Store 459(bv) 479
+ 480: 193(ivec3) Load 358(u16v)
+ 481: 36(int) Load 360(u16)
+ 482: 193(ivec3) CompositeConstruct 481 481 481
+ 483: 427(bvec3) UGreaterThan 480 482
+ Store 459(bv) 483
+ 484: 52(ivec2) Load 345(i16v)
+ 485: 14(int) Load 348(i16)
+ 486: 52(ivec2) CompositeConstruct 485 485
+ 487: 174(bvec2) SGreaterThan 484 486
+ 488: 427(bvec3) Load 459(bv)
+ 489: 427(bvec3) VectorShuffle 488 487 3 4 2
+ Store 459(bv) 489
+ 490: 193(ivec3) Load 358(u16v)
+ 491: 36(int) Load 360(u16)
+ 492: 193(ivec3) CompositeConstruct 491 491 491
+ 493: 427(bvec3) UGreaterThanEqual 490 492
+ Store 459(bv) 493
+ 494: 52(ivec2) Load 345(i16v)
+ 495: 14(int) Load 348(i16)
+ 496: 52(ivec2) CompositeConstruct 495 495
+ 497: 174(bvec2) SGreaterThanEqual 494 496
+ 498: 427(bvec3) Load 459(bv)
+ 499: 427(bvec3) VectorShuffle 498 497 3 4 2
+ Store 459(bv) 499
+ 500: 193(ivec3) Load 358(u16v)
+ 501: 36(int) Load 360(u16)
+ 502: 193(ivec3) CompositeConstruct 501 501 501
+ 503: 427(bvec3) IEqual 500 502
+ Store 459(bv) 503
+ 504: 52(ivec2) Load 345(i16v)
+ 505: 14(int) Load 348(i16)
+ 506: 52(ivec2) CompositeConstruct 505 505
+ 507: 174(bvec2) IEqual 504 506
+ 508: 427(bvec3) Load 459(bv)
+ 509: 427(bvec3) VectorShuffle 508 507 3 4 2
+ Store 459(bv) 509
+ 510: 193(ivec3) Load 358(u16v)
+ 511: 36(int) Load 360(u16)
+ 512: 193(ivec3) CompositeConstruct 511 511 511
+ 513: 427(bvec3) INotEqual 510 512
+ Store 459(bv) 513
+ 514: 52(ivec2) Load 345(i16v)
+ 515: 14(int) Load 348(i16)
+ 516: 52(ivec2) CompositeConstruct 515 515
+ 517: 174(bvec2) INotEqual 514 516
+ 518: 427(bvec3) Load 459(bv)
+ 519: 427(bvec3) VectorShuffle 518 517 3 4 2
+ Store 459(bv) 519
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
new file mode 100755
index 0000000..2a8938c
--- /dev/null
+++ b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
@@ -0,0 +1,66 @@
+spv.vulkan110.storageBuffer.vert
+// Module Version 10300
+// Generated by (magic number): 80005
+// Id's are bound by 31
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 13
+ Source GLSL 450
+ Name 4 "main"
+ Name 11 "gl_PerVertex"
+ MemberName 11(gl_PerVertex) 0 "gl_Position"
+ MemberName 11(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 11(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 11(gl_PerVertex) 3 "gl_CullDistance"
+ Name 13 ""
+ Name 16 "ub"
+ MemberName 16(ub) 0 "a"
+ Name 18 "ubi"
+ Name 22 "bb"
+ MemberName 22(bb) 0 "b"
+ Name 24 "bbi"
+ MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 11(gl_PerVertex) Block
+ MemberDecorate 16(ub) 0 Offset 0
+ Decorate 16(ub) Block
+ Decorate 18(ubi) DescriptorSet 0
+ MemberDecorate 22(bb) 0 Offset 0
+ Decorate 22(bb) Block
+ Decorate 24(bbi) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 1
+ 10: TypeArray 6(float) 9
+11(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 10 10
+ 12: TypePointer Output 11(gl_PerVertex)
+ 13: 12(ptr) Variable Output
+ 14: TypeInt 32 1
+ 15: 14(int) Constant 0
+ 16(ub): TypeStruct 7(fvec4)
+ 17: TypePointer Uniform 16(ub)
+ 18(ubi): 17(ptr) Variable Uniform
+ 19: TypePointer Uniform 7(fvec4)
+ 22(bb): TypeStruct 7(fvec4)
+ 23: TypePointer StorageBuffer 22(bb)
+ 24(bbi): 23(ptr) Variable StorageBuffer
+ 25: TypePointer StorageBuffer 7(fvec4)
+ 29: TypePointer Output 7(fvec4)
+ 4(main): 2 Function None 3
+ 5: Label
+ 20: 19(ptr) AccessChain 18(ubi) 15
+ 21: 7(fvec4) Load 20
+ 26: 25(ptr) AccessChain 24(bbi) 15
+ 27: 7(fvec4) Load 26
+ 28: 7(fvec4) FAdd 21 27
+ 30: 29(ptr) AccessChain 13 15
+ Store 30 28
+ Return
+ FunctionEnd
diff --git a/Test/findFunction.frag b/Test/findFunction.frag
new file mode 100644
index 0000000..7e18065
--- /dev/null
+++ b/Test/findFunction.frag
@@ -0,0 +1,46 @@
+#version 450
+
+#extension GL_KHX_shader_explicit_arithmetic_types: enable
+
+int64_t func(int8_t a, int16_t b, int16_t c)
+{
+ return int64_t(a | b + c);
+}
+
+int64_t func(int8_t a, int16_t b, int32_t c)
+{
+ return int64_t(a | b - c);
+}
+
+int64_t func(int32_t a, int32_t b, int32_t c)
+{
+ return int64_t(a / b + c);
+}
+
+int64_t func(float16_t a, float16_t b, float32_t c)
+{
+ return int64_t(a - b * c);
+}
+
+int64_t func(float16_t a, int16_t b, float32_t c)
+{
+ return int64_t(a - b * c);
+}
+
+void main()
+{
+ int8_t x;
+ int16_t y;
+ int32_t z;
+ int64_t w;
+ float16_t f16;
+ float64_t f64;
+ int64_t b1 = func(x, y, z);
+ int64_t b2 = func(y, y, z); // tie
+ int64_t b3 = func(y, y, w); // No match
+ int64_t b4 = func(y, z, f16); // No match
+ int64_t b5 = func(y, y, f16);
+ int64_t b7 = func(f16, f16, y);
+ int64_t b8 = func(f16, f16, f64); // No match
+ int64_t b9 = func(f16, x, f16); // tie
+}
diff --git a/Test/hlsl.boolConv.vert b/Test/hlsl.boolConv.vert
index 7efe20b..6182b29 100755
--- a/Test/hlsl.boolConv.vert
+++ b/Test/hlsl.boolConv.vert
@@ -1,20 +1,20 @@
-static bool a, b = true;
-float4 main() : SV_Position
-{
- int r = 0;
-
- r += a + b;
- r += a - b;
- r += a * b;
- r += a / b;
- r += a % b;
-
- r += a & b;
- r += a | b;
- r += a ^ b;
-
- r += a << b;
- r += a >> b;
-
- return r;
-}
\ No newline at end of file
+static bool a, b = true;
+float4 main() : SV_Position
+{
+ int r = 0;
+
+ r += a + b;
+ r += a - b;
+ r += a * b;
+ r += a / b;
+ r += a % b;
+
+ r += a & b;
+ r += a | b;
+ r += a ^ b;
+
+ r += a << b;
+ r += a >> b;
+
+ return r;
+}
diff --git a/Test/hlsl.wavebroadcast.comp b/Test/hlsl.wavebroadcast.comp
new file mode 100644
index 0000000..f6bae36
--- /dev/null
+++ b/Test/hlsl.wavebroadcast.comp
@@ -0,0 +1,53 @@
+struct Types
+{
+ uint4 u;
+ int4 i;
+ float4 f;
+ double4 d;
+};
+
+RWStructuredBuffer<Types> data;
+
+[numthreads(32, 16, 1)]
+void CSMain(uint3 dti : SV_DispatchThreadID)
+{
+ data[dti.x].u = WaveReadLaneAt(data[dti.x].u, 13);
+ data[dti.x].u.x = WaveReadLaneAt(data[dti.x].u.x, 13);
+ data[dti.x].u.xy = WaveReadLaneAt(data[dti.x].u.xy, 13);
+ data[dti.x].u.xyz = WaveReadLaneAt(data[dti.x].u.xyz, 13);
+
+ data[dti.x].i = WaveReadLaneAt(data[dti.x].i, 13);
+ data[dti.x].i.x = WaveReadLaneAt(data[dti.x].i.x, 13);
+ data[dti.x].i.xy = WaveReadLaneAt(data[dti.x].i.xy, 13);
+ data[dti.x].i.xyz = WaveReadLaneAt(data[dti.x].i.xyz, 13);
+
+ data[dti.x].f = WaveReadLaneAt(data[dti.x].f, 13);
+ data[dti.x].f.x = WaveReadLaneAt(data[dti.x].f.x, 13);
+ data[dti.x].f.xy = WaveReadLaneAt(data[dti.x].f.xy, 13);
+ data[dti.x].f.xyz = WaveReadLaneAt(data[dti.x].f.xyz, 13);
+
+ data[dti.x].d = WaveReadFirstLane(data[dti.x].d);
+ data[dti.x].d.x = WaveReadFirstLane(data[dti.x].d.x);
+ data[dti.x].d.xy = WaveReadFirstLane(data[dti.x].d.xy);
+ data[dti.x].d.xyz = WaveReadFirstLane(data[dti.x].d.xyz);
+
+ data[dti.x].u = WaveReadFirstLane(data[dti.x].u);
+ data[dti.x].u.x = WaveReadFirstLane(data[dti.x].u.x);
+ data[dti.x].u.xy = WaveReadFirstLane(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WaveReadFirstLane(data[dti.x].u.xyz);
+
+ data[dti.x].i = WaveReadFirstLane(data[dti.x].i);
+ data[dti.x].i.x = WaveReadFirstLane(data[dti.x].i.x);
+ data[dti.x].i.xy = WaveReadFirstLane(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WaveReadFirstLane(data[dti.x].i.xyz);
+
+ data[dti.x].f = WaveReadFirstLane(data[dti.x].f);
+ data[dti.x].f.x = WaveReadFirstLane(data[dti.x].f.x);
+ data[dti.x].f.xy = WaveReadFirstLane(data[dti.x].f.xy);
+ data[dti.x].f.xyz = WaveReadFirstLane(data[dti.x].f.xyz);
+
+ data[dti.x].d = WaveReadFirstLane(data[dti.x].d);
+ data[dti.x].d.x = WaveReadFirstLane(data[dti.x].d.x);
+ data[dti.x].d.xy = WaveReadFirstLane(data[dti.x].d.xy);
+ data[dti.x].d.xyz = WaveReadFirstLane(data[dti.x].d.xyz);
+}
diff --git a/Test/hlsl.waveprefix.comp b/Test/hlsl.waveprefix.comp
new file mode 100644
index 0000000..e4b4367
--- /dev/null
+++ b/Test/hlsl.waveprefix.comp
@@ -0,0 +1,55 @@
+struct Types
+{
+ uint4 u;
+ int4 i;
+ float4 f;
+ double4 d;
+};
+
+RWStructuredBuffer<Types> data;
+
+[numthreads(32, 16, 1)]
+void CSMain(uint3 dti : SV_DispatchThreadID)
+{
+ data[dti.x].u = WavePrefixSum(data[dti.x].u);
+ data[dti.x].u.x = WavePrefixSum(data[dti.x].u.x);
+ data[dti.x].u.xy = WavePrefixSum(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WavePrefixSum(data[dti.x].u.xyz);
+
+ data[dti.x].i = WavePrefixSum(data[dti.x].i);
+ data[dti.x].i.x = WavePrefixSum(data[dti.x].i.x);
+ data[dti.x].i.xy = WavePrefixSum(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WavePrefixSum(data[dti.x].i.xyz);
+
+ data[dti.x].f = WavePrefixSum(data[dti.x].f);
+ data[dti.x].f.x = WavePrefixSum(data[dti.x].f.x);
+ data[dti.x].f.xy = WavePrefixSum(data[dti.x].f.xy);
+ data[dti.x].f.xyz = WavePrefixSum(data[dti.x].f.xyz);
+
+ data[dti.x].d = WavePrefixSum(data[dti.x].d);
+ data[dti.x].d.x = WavePrefixSum(data[dti.x].d.x);
+ data[dti.x].d.xy = WavePrefixSum(data[dti.x].d.xy);
+ data[dti.x].d.xyz = WavePrefixSum(data[dti.x].d.xyz);
+
+ data[dti.x].u = WavePrefixProduct(data[dti.x].u);
+ data[dti.x].u.x = WavePrefixProduct(data[dti.x].u.x);
+ data[dti.x].u.xy = WavePrefixProduct(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WavePrefixProduct(data[dti.x].u.xyz);
+
+ data[dti.x].i = WavePrefixProduct(data[dti.x].i);
+ data[dti.x].i.x = WavePrefixProduct(data[dti.x].i.x);
+ data[dti.x].i.xy = WavePrefixProduct(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WavePrefixProduct(data[dti.x].i.xyz);
+
+ data[dti.x].f = WavePrefixProduct(data[dti.x].f);
+ data[dti.x].f.x = WavePrefixProduct(data[dti.x].f.x);
+ data[dti.x].f.xy = WavePrefixProduct(data[dti.x].f.xy);
+ data[dti.x].f.xyz = WavePrefixProduct(data[dti.x].f.xyz);
+
+ data[dti.x].d = WavePrefixProduct(data[dti.x].d);
+ data[dti.x].d.x = WavePrefixProduct(data[dti.x].d.x);
+ data[dti.x].d.xy = WavePrefixProduct(data[dti.x].d.xy);
+ data[dti.x].d.xyz = WavePrefixProduct(data[dti.x].d.xyz);
+
+ data[dti.x].u.x = WavePrefixCountBits(data[dti.x].u.x == 0);
+}
diff --git a/Test/hlsl.wavequad.comp b/Test/hlsl.wavequad.comp
new file mode 100644
index 0000000..34e8b78
--- /dev/null
+++ b/Test/hlsl.wavequad.comp
@@ -0,0 +1,153 @@
+struct Types
+{
+ uint4 u;
+ int4 i;
+ float4 f;
+ double4 d;
+};
+
+RWStructuredBuffer<Types> data;
+
+[numthreads(32, 16, 1)]
+void CSMain(uint3 dti : SV_DispatchThreadID)
+{
+ data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 0);
+ data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 0);
+ data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 0);
+ data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 0);
+
+ data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 0);
+ data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 0);
+ data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 0);
+ data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 0);
+
+ data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 0);
+ data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 0);
+ data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 0);
+ data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 0);
+
+ data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 0);
+ data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 0);
+ data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 0);
+ data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 0);
+
+ data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 1);
+ data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 1);
+ data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 1);
+ data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 1);
+
+ data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 1);
+ data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 1);
+ data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 1);
+ data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 1);
+
+ data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 1);
+ data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 1);
+ data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 1);
+ data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 1);
+
+ data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 1);
+ data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 1);
+ data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 1);
+ data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 1);
+
+ data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 2);
+ data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 2);
+ data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 2);
+ data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 2);
+
+ data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 2);
+ data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 2);
+ data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 2);
+ data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 2);
+
+ data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 2);
+ data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 2);
+ data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 2);
+ data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 2);
+
+ data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 2);
+ data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 2);
+ data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 2);
+ data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 2);
+
+ data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 3);
+ data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 3);
+ data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 3);
+ data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 3);
+
+ data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 3);
+ data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 3);
+ data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 3);
+ data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 3);
+
+ data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 3);
+ data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 3);
+ data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 3);
+ data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 3);
+
+ data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 3);
+ data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 3);
+ data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 3);
+ data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 3);
+
+ data[dti.x].u = QuadReadAcrossX(data[dti.x].u);
+ data[dti.x].u.x = QuadReadAcrossX(data[dti.x].u.x);
+ data[dti.x].u.xy = QuadReadAcrossX(data[dti.x].u.xy);
+ data[dti.x].u.xyz = QuadReadAcrossX(data[dti.x].u.xyz);
+
+ data[dti.x].i = QuadReadAcrossX(data[dti.x].i);
+ data[dti.x].i.x = QuadReadAcrossX(data[dti.x].i.x);
+ data[dti.x].i.xy = QuadReadAcrossX(data[dti.x].i.xy);
+ data[dti.x].i.xyz = QuadReadAcrossX(data[dti.x].i.xyz);
+
+ data[dti.x].f = QuadReadAcrossX(data[dti.x].f);
+ data[dti.x].f.x = QuadReadAcrossX(data[dti.x].f.x);
+ data[dti.x].f.xy = QuadReadAcrossX(data[dti.x].f.xy);
+ data[dti.x].f.xyz = QuadReadAcrossX(data[dti.x].f.xyz);
+
+ data[dti.x].d = QuadReadAcrossX(data[dti.x].d);
+ data[dti.x].d.x = QuadReadAcrossX(data[dti.x].d.x);
+ data[dti.x].d.xy = QuadReadAcrossX(data[dti.x].d.xy);
+ data[dti.x].d.xyz = QuadReadAcrossX(data[dti.x].d.xyz);
+
+ data[dti.x].u = QuadReadAcrossY(data[dti.x].u);
+ data[dti.x].u.x = QuadReadAcrossY(data[dti.x].u.x);
+ data[dti.x].u.xy = QuadReadAcrossY(data[dti.x].u.xy);
+ data[dti.x].u.xyz = QuadReadAcrossY(data[dti.x].u.xyz);
+
+ data[dti.x].i = QuadReadAcrossY(data[dti.x].i);
+ data[dti.x].i.x = QuadReadAcrossY(data[dti.x].i.x);
+ data[dti.x].i.xy = QuadReadAcrossY(data[dti.x].i.xy);
+ data[dti.x].i.xyz = QuadReadAcrossY(data[dti.x].i.xyz);
+
+ data[dti.x].f = QuadReadAcrossY(data[dti.x].f);
+ data[dti.x].f.x = QuadReadAcrossY(data[dti.x].f.x);
+ data[dti.x].f.xy = QuadReadAcrossY(data[dti.x].f.xy);
+ data[dti.x].f.xyz = QuadReadAcrossY(data[dti.x].f.xyz);
+
+ data[dti.x].d = QuadReadAcrossY(data[dti.x].d);
+ data[dti.x].d.x = QuadReadAcrossY(data[dti.x].d.x);
+ data[dti.x].d.xy = QuadReadAcrossY(data[dti.x].d.xy);
+ data[dti.x].d.xyz = QuadReadAcrossY(data[dti.x].d.xyz);
+
+ data[dti.x].u = QuadReadAcrossDiagonal(data[dti.x].u);
+ data[dti.x].u.x = QuadReadAcrossDiagonal(data[dti.x].u.x);
+ data[dti.x].u.xy = QuadReadAcrossDiagonal(data[dti.x].u.xy);
+ data[dti.x].u.xyz = QuadReadAcrossDiagonal(data[dti.x].u.xyz);
+
+ data[dti.x].i = QuadReadAcrossDiagonal(data[dti.x].i);
+ data[dti.x].i.x = QuadReadAcrossDiagonal(data[dti.x].i.x);
+ data[dti.x].i.xy = QuadReadAcrossDiagonal(data[dti.x].i.xy);
+ data[dti.x].i.xyz = QuadReadAcrossDiagonal(data[dti.x].i.xyz);
+
+ data[dti.x].f = QuadReadAcrossDiagonal(data[dti.x].f);
+ data[dti.x].f.x = QuadReadAcrossDiagonal(data[dti.x].f.x);
+ data[dti.x].f.xy = QuadReadAcrossDiagonal(data[dti.x].f.xy);
+ data[dti.x].f.xyz = QuadReadAcrossDiagonal(data[dti.x].f.xyz);
+
+ data[dti.x].d = QuadReadAcrossDiagonal(data[dti.x].d);
+ data[dti.x].d.x = QuadReadAcrossDiagonal(data[dti.x].d.x);
+ data[dti.x].d.xy = QuadReadAcrossDiagonal(data[dti.x].d.xy);
+ data[dti.x].d.xyz = QuadReadAcrossDiagonal(data[dti.x].d.xyz);
+}
diff --git a/Test/hlsl.wavequery.comp b/Test/hlsl.wavequery.comp
new file mode 100644
index 0000000..a689e11
--- /dev/null
+++ b/Test/hlsl.wavequery.comp
@@ -0,0 +1,7 @@
+RWStructuredBuffer<uint> data;
+
+[numthreads(32, 16, 1)]
+void CSMain()
+{
+ data[WaveGetLaneIndex()] = (WaveIsFirstLane()) ? WaveGetLaneCount() : 0;
+}
diff --git a/Test/hlsl.wavequery.frag b/Test/hlsl.wavequery.frag
new file mode 100644
index 0000000..d1437f0
--- /dev/null
+++ b/Test/hlsl.wavequery.frag
@@ -0,0 +1,11 @@
+float4 PixelShaderFunction() : COLOR0
+{
+ if (WaveIsFirstLane())
+ {
+ return float4(1, 2, 3, 4);
+ }
+ else
+ {
+ return float4(4, 3, 2, 1);
+ }
+}
diff --git a/Test/hlsl.wavereduction.comp b/Test/hlsl.wavereduction.comp
new file mode 100644
index 0000000..b7604ad
--- /dev/null
+++ b/Test/hlsl.wavereduction.comp
@@ -0,0 +1,125 @@
+struct Types
+{
+ uint4 u;
+ int4 i;
+ float4 f;
+ double4 d;
+};
+
+RWStructuredBuffer<Types> data;
+
+[numthreads(32, 16, 1)]
+void CSMain(uint3 dti : SV_DispatchThreadID)
+{
+ data[dti.x].u = WaveActiveSum(data[dti.x].u);
+ data[dti.x].u.x = WaveActiveSum(data[dti.x].u.x);
+ data[dti.x].u.xy = WaveActiveSum(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WaveActiveSum(data[dti.x].u.xyz);
+
+ data[dti.x].i = WaveActiveSum(data[dti.x].i);
+ data[dti.x].i.x = WaveActiveSum(data[dti.x].i.x);
+ data[dti.x].i.xy = WaveActiveSum(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WaveActiveSum(data[dti.x].i.xyz);
+
+ data[dti.x].f = WaveActiveSum(data[dti.x].f);
+ data[dti.x].f.x = WaveActiveSum(data[dti.x].f.x);
+ data[dti.x].f.xy = WaveActiveSum(data[dti.x].f.xy);
+ data[dti.x].f.xyz = WaveActiveSum(data[dti.x].f.xyz);
+
+ data[dti.x].d = WaveActiveSum(data[dti.x].d);
+ data[dti.x].d.x = WaveActiveSum(data[dti.x].d.x);
+ data[dti.x].d.xy = WaveActiveSum(data[dti.x].d.xy);
+ data[dti.x].d.xyz = WaveActiveSum(data[dti.x].d.xyz);
+
+ data[dti.x].u = WaveActiveProduct(data[dti.x].u);
+ data[dti.x].u.x = WaveActiveProduct(data[dti.x].u.x);
+ data[dti.x].u.xy = WaveActiveProduct(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WaveActiveProduct(data[dti.x].u.xyz);
+
+ data[dti.x].i = WaveActiveProduct(data[dti.x].i);
+ data[dti.x].i.x = WaveActiveProduct(data[dti.x].i.x);
+ data[dti.x].i.xy = WaveActiveProduct(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WaveActiveProduct(data[dti.x].i.xyz);
+
+ data[dti.x].f = WaveActiveProduct(data[dti.x].f);
+ data[dti.x].f.x = WaveActiveProduct(data[dti.x].f.x);
+ data[dti.x].f.xy = WaveActiveProduct(data[dti.x].f.xy);
+ data[dti.x].f.xyz = WaveActiveProduct(data[dti.x].f.xyz);
+
+ data[dti.x].d = WaveActiveProduct(data[dti.x].d);
+ data[dti.x].d.x = WaveActiveProduct(data[dti.x].d.x);
+ data[dti.x].d.xy = WaveActiveProduct(data[dti.x].d.xy);
+ data[dti.x].d.xyz = WaveActiveProduct(data[dti.x].d.xyz);
+
+ data[dti.x].u = WaveActiveMin(data[dti.x].u);
+ data[dti.x].u.x = WaveActiveMin(data[dti.x].u.x);
+ data[dti.x].u.xy = WaveActiveMin(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WaveActiveMin(data[dti.x].u.xyz);
+
+ data[dti.x].i = WaveActiveMin(data[dti.x].i);
+ data[dti.x].i.x = WaveActiveMin(data[dti.x].i.x);
+ data[dti.x].i.xy = WaveActiveMin(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WaveActiveMin(data[dti.x].i.xyz);
+
+ data[dti.x].f = WaveActiveMin(data[dti.x].f);
+ data[dti.x].f.x = WaveActiveMin(data[dti.x].f.x);
+ data[dti.x].f.xy = WaveActiveMin(data[dti.x].f.xy);
+ data[dti.x].f.xyz = WaveActiveMin(data[dti.x].f.xyz);
+
+ data[dti.x].d = WaveActiveMin(data[dti.x].d);
+ data[dti.x].d.x = WaveActiveMin(data[dti.x].d.x);
+ data[dti.x].d.xy = WaveActiveMin(data[dti.x].d.xy);
+ data[dti.x].d.xyz = WaveActiveMin(data[dti.x].d.xyz);
+
+ data[dti.x].u = WaveActiveMax(data[dti.x].u);
+ data[dti.x].u.x = WaveActiveMax(data[dti.x].u.x);
+ data[dti.x].u.xy = WaveActiveMax(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WaveActiveMax(data[dti.x].u.xyz);
+
+ data[dti.x].i = WaveActiveMax(data[dti.x].i);
+ data[dti.x].i.x = WaveActiveMax(data[dti.x].i.x);
+ data[dti.x].i.xy = WaveActiveMax(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WaveActiveMax(data[dti.x].i.xyz);
+
+ data[dti.x].f = WaveActiveMax(data[dti.x].f);
+ data[dti.x].f.x = WaveActiveMax(data[dti.x].f.x);
+ data[dti.x].f.xy = WaveActiveMax(data[dti.x].f.xy);
+ data[dti.x].f.xyz = WaveActiveMax(data[dti.x].f.xyz);
+
+ data[dti.x].d = WaveActiveMax(data[dti.x].d);
+ data[dti.x].d.x = WaveActiveMax(data[dti.x].d.x);
+ data[dti.x].d.xy = WaveActiveMax(data[dti.x].d.xy);
+ data[dti.x].d.xyz = WaveActiveMax(data[dti.x].d.xyz);
+
+ data[dti.x].u = WaveActiveBitAnd(data[dti.x].u);
+ data[dti.x].u.x = WaveActiveBitAnd(data[dti.x].u.x);
+ data[dti.x].u.xy = WaveActiveBitAnd(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WaveActiveBitAnd(data[dti.x].u.xyz);
+
+ data[dti.x].i = WaveActiveBitAnd(data[dti.x].i);
+ data[dti.x].i.x = WaveActiveBitAnd(data[dti.x].i.x);
+ data[dti.x].i.xy = WaveActiveBitAnd(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WaveActiveBitAnd(data[dti.x].i.xyz);
+
+ data[dti.x].u = WaveActiveBitOr(data[dti.x].u);
+ data[dti.x].u.x = WaveActiveBitOr(data[dti.x].u.x);
+ data[dti.x].u.xy = WaveActiveBitOr(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WaveActiveBitOr(data[dti.x].u.xyz);
+
+ data[dti.x].i = WaveActiveBitOr(data[dti.x].i);
+ data[dti.x].i.x = WaveActiveBitOr(data[dti.x].i.x);
+ data[dti.x].i.xy = WaveActiveBitOr(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WaveActiveBitOr(data[dti.x].i.xyz);
+
+ data[dti.x].u = WaveActiveBitXor(data[dti.x].u);
+ data[dti.x].u.x = WaveActiveBitXor(data[dti.x].u.x);
+ data[dti.x].u.xy = WaveActiveBitXor(data[dti.x].u.xy);
+ data[dti.x].u.xyz = WaveActiveBitXor(data[dti.x].u.xyz);
+
+ data[dti.x].i = WaveActiveBitXor(data[dti.x].i);
+ data[dti.x].i.x = WaveActiveBitXor(data[dti.x].i.x);
+ data[dti.x].i.xy = WaveActiveBitXor(data[dti.x].i.xy);
+ data[dti.x].i.xyz = WaveActiveBitXor(data[dti.x].i.xyz);
+
+ data[dti.x].u.x = WaveActiveCountBits(data[dti.x].u.x == 0);
+}
diff --git a/Test/hlsl.wavevote.comp b/Test/hlsl.wavevote.comp
new file mode 100644
index 0000000..0370e69
--- /dev/null
+++ b/Test/hlsl.wavevote.comp
@@ -0,0 +1,10 @@
+RWStructuredBuffer<uint64_t> data;
+
+[numthreads(32, 16, 1)]
+void CSMain(uint3 dti : SV_DispatchThreadID)
+{
+ data[dti.x] = WaveActiveBallot(WaveActiveAnyTrue(dti.x == 0));
+ data[dti.y] = WaveActiveBallot(WaveActiveAllTrue(dti.y == 0));
+ data[dti.z] = WaveActiveBallot(WaveActiveAllEqualBool(dti.z == 0));
+ data[dti.z] = WaveActiveBallot(WaveActiveAllEqual(dti.z));
+}
diff --git a/Test/runtests b/Test/runtests
index 9f3583e..98d7466 100755
--- a/Test/runtests
+++ b/Test/runtests
@@ -129,6 +129,9 @@
$EXE -g --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf \
-G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.frag.out
diff -b $BASEDIR/spv.debugInfo.frag.out $TARGETDIR/spv.debugInfo.frag.out || HASERROR=1
+$EXE -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --hlsl-offsets --nsf \
+ -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.1.1.frag.out
+diff -b $BASEDIR/spv.debugInfo.1.1.frag.out $TARGETDIR/spv.debugInfo.1.1.frag.out || HASERROR=1
$EXE -g -D -Od -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \
--sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > $TARGETDIR/spv.hlslDebugInfo.frag.out
diff -b $BASEDIR/spv.hlslDebugInfo.frag.out $TARGETDIR/spv.hlslDebugInfo.frag.out || HASERROR=1
@@ -162,6 +165,7 @@
$EXE --client vulkan100 spv.targetVulkan.vert || HASERROR=1
$EXE --client opengl100 spv.targetOpenGL.vert || HASERROR=1
$EXE --target-env vulkan1.0 spv.targetVulkan.vert || HASERROR=1
+$EXE --target-env vulkan1.1 spv.targetVulkan.vert || HASERROR=1
$EXE --target-env opengl spv.targetOpenGL.vert || HASERROR=1
$EXE -V100 spv.targetVulkan.vert || HASERROR=1
$EXE -G100 spv.targetOpenGL.vert || HASERROR=1
diff --git a/Test/spv.explicittypes.frag b/Test/spv.explicittypes.frag
new file mode 100644
index 0000000..18c070a
--- /dev/null
+++ b/Test/spv.explicittypes.frag
@@ -0,0 +1,334 @@
+#version 450
+
+#extension GL_KHX_shader_explicit_arithmetic_types: enable
+#extension GL_KHX_shader_explicit_arithmetic_types_int8: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float64: require
+
+layout(binding = 0) uniform Uniforms
+{
+ uint index;
+};
+
+layout(std140, binding = 1) uniform Block
+{
+ int16_t i16;
+ i16vec2 i16v2;
+ i16vec3 i16v3;
+ i16vec4 i16v4;
+ uint16_t u16;
+ u16vec2 u16v2;
+ u16vec3 u16v3;
+ u16vec4 u16v4;
+
+ int32_t i32;
+ i32vec2 i32v2;
+ i32vec3 i32v3;
+ i32vec4 i32v4;
+ uint32_t u32;
+ u32vec2 u32v2;
+ u32vec3 u32v3;
+ u32vec4 u32v4;
+} block;
+
+void main()
+{
+}
+
+void literal()
+{
+ const int64_t i64Const[3] =
+ {
+ -0x1111111111111111l, // Hex
+ -1l, // Dec
+ 040000000000l, // Oct
+ };
+
+ int64_t i64 = i64Const[index];
+
+ const uint64_t u64Const[] =
+ {
+ 0xFFFFFFFFFFFFFFFFul, // Hex
+ 4294967296UL, // Dec
+ 077777777777ul, // Oct
+ };
+
+ uint64_t u64 = u64Const[index];
+
+ const int32_t i32Const[3] =
+ {
+ -0x11111111, // Hex
+ -1, // Dec
+ 04000000000, // Oct
+ };
+
+ int32_t i32 = i32Const[index];
+
+ const uint32_t u32Const[] =
+ {
+ 0xFFFFFFFF, // Hex
+ 4294967295, // Dec
+ 017777777777, // Oct
+ };
+
+ uint32_t u32 = u32Const[index];
+
+ const int16_t i16Const[3] =
+ {
+ int16_t(-0x1111), // Hex
+ int16_t(-1), // Dec
+ int16_t(040000), // Oct
+ };
+
+ int16_t i16 = i16Const[index];
+
+ const uint16_t u16Const[] =
+ {
+ uint16_t(0xFFFF), // Hex
+ uint16_t(65535), // Dec
+ uint16_t(077777), // Oct
+ };
+
+ uint16_t u16 = u16Const[index];
+
+ const int8_t i8Const[3] =
+ {
+ int8_t(-0x11), // Hex
+ int8_t(-1), // Dec
+ int8_t(0400), // Oct
+ };
+
+ int8_t i8 = i8Const[index];
+
+ const uint8_t u8Const[] =
+ {
+ uint8_t(0xFF), // Hex
+ uint8_t(255), // Dec
+ uint8_t(0177), // Oct
+ };
+
+ uint8_t u8 = u8Const[index];
+}
+
+void typeCast8()
+{
+ i8vec2 i8v;
+ u8vec2 u8v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+ i32vec2 i32v;
+ u32vec2 u32v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ f16vec2 f16v;
+ f32vec2 f32v;
+ f64vec2 f64v;
+ bvec2 bv;
+
+ u8v = i8v; // int8_t -> uint8_t
+ i16v = i8v; // int8_t -> int16_t
+ i16v = u8v; // uint8_t -> int16_t
+ i32v = i8v; // int8_t -> int32_t
+ i32v = u8v; // uint8_t -> int32_t
+ u32v = i8v; // int8_t -> uint32_t
+ i64v = i8v; // int8_t -> int64_t
+ u64v = i8v; // int8_t -> uint64_t
+ u32v = u8v; // uint8_t -> uint32_t
+ i64v = u8v; // uint8_t -> int64_t
+ u64v = u8v; // uint8_t -> uint64_t
+ f16v = i8v; // int8_t -> float16_t
+ f32v = i8v; // int8_t -> float32_t
+ f64v = i8v; // int8_t -> float64_t
+ f16v = u8v; // uint8_t -> float16_t
+ f32v = u8v; // uint8_t -> float32_t
+ f64v = u8v; // uint8_t -> float64_t
+
+ i8v = i8vec2(u8v); // uint8_t -> int8_t
+ i16v = i16vec2(i8v); // int8_t -> int16_t
+ i16v = i16vec2(u8v); // uint8_t -> int16_t
+ i32v = i32vec2(i8v); // int8_t -> int32_t
+ i32v = i32vec2(u8v); // uint8_t -> int32_t
+ i64v = i64vec2(i8v); // int8_t -> int64_t
+ u64v = i64vec2(i8v); // int8_t -> uint64_t
+ u16v = u16vec2(i8v); // int8_t -> uint16_t
+ u16v = u16vec2(u8v); // uint8_t -> uint16_t
+ u32v = u32vec2(u8v); // uint8_t -> uint32_t
+ i64v = i64vec2(u8v); // uint8_t -> int64_t
+ u64v = i64vec2(u8v); // uint8_t -> uint64_t
+ f16v = f16vec2(i8v); // int8_t -> float16_t
+ f32v = f32vec2(i8v); // int8_t -> float32_t
+ f64v = f64vec2(i8v); // int8_t -> float64_t
+ f16v = f16vec2(u8v); // uint8_t -> float16_t
+ f32v = f32vec2(u8v); // uint8_t -> float32_t
+ f64v = f64vec2(u8v); // uint8_t -> float64_t
+
+ i8v = i8vec2(bv); // bool -> int8
+ u8v = u8vec2(bv); // bool -> uint8
+ bv = bvec2(i8v); // int8 -> bool
+ bv = bvec2(u8v); // uint8 -> bool
+}
+
+void typeCast16()
+{
+ i8vec2 i8v;
+ u8vec2 u8v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+ i32vec2 i32v;
+ u32vec2 u32v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ f16vec2 f16v;
+ f32vec2 f32v;
+ f64vec2 f64v;
+ bvec2 bv;
+
+ i32v = i16v; // int16_t -> int32_t
+ i32v = u16v; // uint16_t -> int32_t
+ u16v = i16v; // int16_t -> uint16_t
+ u32v = i16v; // int16_t -> uint32_t
+ i64v = i16v; // int16_t -> int64_t
+ u64v = i16v; // int16_t -> uint64_t
+ u32v = u16v; // uint16_t -> uint32_t
+ i64v = u16v; // uint16_t -> int64_t
+ u64v = u16v; // uint16_t -> uint64_t
+ f16v = i16v; // int16_t -> float16_t
+ f32v = i16v; // int16_t -> float32_t
+ f64v = i16v; // int16_t -> float64_t
+ f16v = u16v; // uint16_t -> float16_t
+ f32v = u16v; // uint16_t -> float32_t
+ f64v = u16v; // uint16_t -> float64_t
+
+ i32v = i32vec2(i16v); // int16_t -> int32_t
+ i32v = i32vec2(u16v); // uint16_t -> int32_t
+ u16v = u16vec2(i16v); // int16_t -> uint16_t
+ u32v = u32vec2(i16v); // int16_t -> uint32_t
+ i64v = i64vec2(i16v); // int16_t -> int64_t
+ u64v = i64vec2(i16v); // int16_t -> uint64_t
+ u32v = u32vec2(u16v); // uint16_t -> uint32_t
+ i64v = i64vec2(u16v); // uint16_t -> int64_t
+ u64v = i64vec2(u16v); // uint16_t -> uint64_t
+ f16v = f16vec2(i16v); // int16_t -> float16_t
+ f32v = f32vec2(i16v); // int16_t -> float32_t
+ f64v = f64vec2(i16v); // int16_t -> float64_t
+ f16v = f16vec2(u16v); // uint16_t -> float16_t
+ f32v = f32vec2(u16v); // uint16_t -> float32_t
+ f64v = f64vec2(u16v); // uint16_t -> float64_t
+
+ i8v = i8vec2(i16v); // int16_t -> int8_t
+ i8v = i8vec2(u16v); // uint16_t -> int8_t
+ u8v = u8vec2(i16v); // int16_t -> uint8_t
+ u8v = u8vec2(u16v); // uint16_t -> uint8_t
+ i16v = u8vec2(u16v); // uint16_t -> int16_t
+ i16v = i16vec2(bv); // bool -> int16
+ u16v = u16vec2(bv); // bool -> uint16
+ bv = bvec2(i16v); // int16 -> bool
+ bv = bvec2(u16v); // uint16 -> bool
+}
+
+void typeCast32()
+{
+ i8vec2 i8v;
+ u8vec2 u8v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+ i32vec2 i32v;
+ u32vec2 u32v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ f16vec2 f16v;
+ f32vec2 f32v;
+ f64vec2 f64v;
+ bvec2 bv;
+
+ u32v = i32v; // int32_t -> uint32_t
+ i64v = i32v; // int32_t -> int64_t
+ u64v = i32v; // int32_t -> uint64_t
+ i64v = u32v; // uint32_t -> int64_t
+ u64v = u32v; // uint32_t -> uint64_t
+ f32v = i32v; // int32_t -> float32_t
+ f64v = i32v; // int32_t -> float64_t
+ f32v = u32v; // uint32_t -> float32_t
+ f64v = u32v; // uint32_t -> float64_t
+
+ i8v = i8vec2(i32v); // int32_t -> int8_t
+ i8v = i8vec2(u32v); // uint32_t -> int8_t
+ i16v = i16vec2(i32v); // int32_t -> int16_t
+ i16v = i16vec2(u32v); // uint32_t -> int16_t
+ i32v = i32vec2(i32v); // int32_t -> int32_t
+ i32v = i32vec2(u32v); // uint32_t -> int32_t
+ i64v = i64vec2(i32v); // int32_t -> int64_t
+ i64v = i64vec2(u32v); // uint32_t -> int64_t
+ u8v = u8vec2(i32v); // int32_t -> uint8_t
+ u8v = u8vec2(u32v); // uint32_t -> uint8_t
+ u16v = u16vec2(i32v); // int32_t -> uint16_t
+ u16v = u16vec2(u32v); // uint32_t -> uint16_t
+ u32v = u32vec2(i32v); // int32_t -> uint32_t
+ u32v = u32vec2(u32v); // uint32_t -> uint32_t
+ u64v = u64vec2(i32v); // int32_t -> uint64_t
+ u64v = u64vec2(u32v); // uint32_t -> uint64_t
+
+ f16v = f16vec2(i32v); // int32_t -> float16_t
+ f32v = f32vec2(i32v); // int32_t -> float32_t
+ f64v = f64vec2(i32v); // int32_t -> float64_t
+ f16v = f16vec2(u32v); // uint32_t -> float16_t
+ f32v = f32vec2(u32v); // uint32_t -> float32_t
+ f64v = f64vec2(u32v); // uint32_t -> float64_t
+
+ i32v = i32vec2(bv); // bool -> int32
+ u32v = u32vec2(bv); // bool -> uint32
+ bv = bvec2(i32v); // int32 -> bool
+ bv = bvec2(u32v); // uint32 -> bool
+}
+
+void typeCast64()
+{
+ i8vec2 i8v;
+ u8vec2 u8v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+ i32vec2 i32v;
+ u32vec2 u32v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ f16vec2 f16v;
+ f32vec2 f32v;
+ f64vec2 f64v;
+ bvec2 bv;
+
+ u64v = i64v; // int64_t -> uint64_t
+ f64v = i64v; // int64_t -> float64_t
+ f64v = u64v; // uint64_t -> float64_t
+
+ i8v = i8vec2(i64v); // int64_t -> int8_t
+ i8v = i8vec2(u64v); // uint64_t -> int8_t
+ i16v = i16vec2(i64v); // int64_t -> int16_t
+ i16v = i16vec2(u64v); // uint64_t -> int16_t
+ i32v = i32vec2(i64v); // int64_t -> int32_t
+ i32v = i32vec2(u64v); // uint64_t -> int32_t
+ i64v = i64vec2(u64v); // uint64_t -> int64_t
+ u8v = u8vec2(i64v); // int64_t -> uint8_t
+ u8v = u8vec2(u64v); // uint64_t -> uint8_t
+ u16v = u16vec2(i64v); // int64_t -> uint16_t
+ u16v = u16vec2(u64v); // uint64_t -> uint16_t
+ u32v = u32vec2(i64v); // int64_t -> uint32_t
+ u32v = u32vec2(u64v); // uint64_t -> uint32_t
+ u64v = u64vec2(i64v); // int64_t -> uint64_t
+ u64v = u64vec2(u64v); // uint64_t -> uint64_t
+
+ f16v = f16vec2(i64v); // int64_t -> float16_t
+ f32v = f32vec2(i64v); // int64_t -> float32_t
+ f64v = f64vec2(i64v); // int64_t -> float64_t
+ f16v = f16vec2(u64v); // uint64_t -> float16_t
+ f32v = f32vec2(u64v); // uint64_t -> float32_t
+ f64v = f64vec2(u64v); // uint64_t -> float64_t
+
+ i64v = i64vec2(bv); // bool -> int64
+ u64v = u64vec2(bv); // bool -> uint64
+ bv = bvec2(i64v); // int64 -> bool
+ bv = bvec2(u64v); // uint64 -> bool
+}
diff --git a/Test/spv.float32.frag b/Test/spv.float32.frag
new file mode 100644
index 0000000..471f6b3
--- /dev/null
+++ b/Test/spv.float32.frag
@@ -0,0 +1,277 @@
+#version 450
+
+#extension GL_KHX_shader_explicit_arithmetic_types: enable
+#extension GL_KHX_shader_explicit_arithmetic_types_int8: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float64: require
+
+void main()
+{
+}
+
+// Single float literals
+void literal()
+{
+ const float32_t f32c = 0.000001f;
+ const f32vec2 f32cv = f32vec2(-0.25F, 0.03f);
+
+ f32vec2 f32v;
+ f32v.x = f32c;
+ f32v += f32cv;
+}
+
+// Block memory layout
+struct S
+{
+ float32_t x;
+ f32vec2 y;
+ f32vec3 z;
+};
+
+layout(column_major, std140) uniform B1
+{
+ float32_t a;
+ f32vec2 b;
+ f32vec3 c;
+ float32_t d[2];
+ f32mat2x3 e;
+ f32mat2x3 f[2];
+ S g;
+ S h[2];
+};
+
+// Specialization constant
+layout(constant_id = 100) const float16_t sf16 = 0.125hf;
+layout(constant_id = 101) const float32_t sf = 0.25;
+layout(constant_id = 102) const float64_t sd = 0.5lf;
+
+const float f16_to_f = float(sf16);
+const double f16_to_d = float(sf16);
+
+const float16_t f_to_f16 = float16_t(sf);
+const float16_t d_to_f16 = float16_t(sd);
+
+void operators()
+{
+ float32_t f32;
+ f32vec2 f32v;
+ f32mat2x2 f32m;
+ bool b;
+
+ // Arithmetic
+ f32v += f32v;
+ f32v -= f32v;
+ f32v *= f32v;
+ f32v /= f32v;
+ f32v++;
+ f32v--;
+ ++f32m;
+ --f32m;
+ f32v = -f32v;
+ f32m = -f32m;
+
+ f32 = f32v.x + f32v.y;
+ f32 = f32v.x - f32v.y;
+ f32 = f32v.x * f32v.y;
+ f32 = f32v.x / f32v.y;
+
+ // Relational
+ b = (f32v.x != f32);
+ b = (f32v.y == f32);
+ b = (f32v.x > f32);
+ b = (f32v.y < f32);
+ b = (f32v.x >= f32);
+ b = (f32v.y <= f32);
+
+ // Vector/matrix operations
+ f32v = f32v * f32;
+ f32m = f32m * f32;
+ f32v = f32m * f32v;
+ f32v = f32v * f32m;
+ f32m = f32m * f32m;
+}
+
+void typeCast()
+{
+ bvec3 bv;
+ f32vec3 f32v;
+ f64vec3 f64v;
+ i8vec3 i8v;
+ u8vec3 u8v;
+ i16vec3 i16v;
+ u16vec3 u16v;
+ i32vec3 i32v;
+ u32vec3 u32v;
+ i64vec3 i64v;
+ u64vec3 u64v;
+ f16vec3 f16v;
+
+ f64v = f32v; // float32_t -> float64_t
+
+ f32v = f32vec3(bv); // bool -> float32
+ bv = bvec3(f32v); // float32 -> bool
+
+ f32v = f32vec3(f64v); // double -> float32
+ f64v = f64vec3(f32v); // float32 -> double
+
+ f32v = f32vec3(f16v); // float16 -> float32
+ f16v = f16vec3(f32v); // float32 -> float16
+
+ i8v = i8vec3(f32v); // float32 -> int8
+ i16v = i16vec3(f32v); // float32 -> int16
+ i32v = i32vec3(f32v); // float32 -> int32
+ i64v = i64vec3(f32v); // float32 -> int64
+
+ u8v = u8vec3(f32v); // float32 -> uint8
+ u16v = u16vec3(f32v); // float32 -> uint16
+ u32v = u32vec3(f32v); // float32 -> uint32
+ u64v = u64vec3(f32v); // float32 -> uint64
+}
+
+void builtinAngleTrigFuncs()
+{
+ f32vec4 f32v1, f32v2;
+
+ f32v2 = radians(f32v1);
+ f32v2 = degrees(f32v1);
+ f32v2 = sin(f32v1);
+ f32v2 = cos(f32v1);
+ f32v2 = tan(f32v1);
+ f32v2 = asin(f32v1);
+ f32v2 = acos(f32v1);
+ f32v2 = atan(f32v1, f32v2);
+ f32v2 = atan(f32v1);
+ f32v2 = sinh(f32v1);
+ f32v2 = cosh(f32v1);
+ f32v2 = tanh(f32v1);
+ f32v2 = asinh(f32v1);
+ f32v2 = acosh(f32v1);
+ f32v2 = atanh(f32v1);
+}
+
+void builtinExpFuncs()
+{
+ f32vec2 f32v1, f32v2;
+
+ f32v2 = pow(f32v1, f32v2);
+ f32v2 = exp(f32v1);
+ f32v2 = log(f32v1);
+ f32v2 = exp2(f32v1);
+ f32v2 = log2(f32v1);
+ f32v2 = sqrt(f32v1);
+ f32v2 = inversesqrt(f32v1);
+}
+
+void builtinCommonFuncs()
+{
+ f32vec3 f32v1, f32v2, f32v3;
+ float32_t f32;
+ bool b;
+ bvec3 bv;
+ ivec3 iv;
+
+ f32v2 = abs(f32v1);
+ f32v2 = sign(f32v1);
+ f32v2 = floor(f32v1);
+ f32v2 = trunc(f32v1);
+ f32v2 = round(f32v1);
+ f32v2 = roundEven(f32v1);
+ f32v2 = ceil(f32v1);
+ f32v2 = fract(f32v1);
+ f32v2 = mod(f32v1, f32v2);
+ f32v2 = mod(f32v1, f32);
+ f32v3 = modf(f32v1, f32v2);
+ f32v3 = min(f32v1, f32v2);
+ f32v3 = min(f32v1, f32);
+ f32v3 = max(f32v1, f32v2);
+ f32v3 = max(f32v1, f32);
+ f32v3 = clamp(f32v1, f32, f32v2.x);
+ f32v3 = clamp(f32v1, f32v2, f32vec3(f32));
+ f32v3 = mix(f32v1, f32v2, f32);
+ f32v3 = mix(f32v1, f32v2, f32v3);
+ f32v3 = mix(f32v1, f32v2, bv);
+ f32v3 = step(f32v1, f32v2);
+ f32v3 = step(f32, f32v3);
+ f32v3 = smoothstep(f32v1, f32v2, f32v3);
+ f32v3 = smoothstep(f32, f32v1.x, f32v2);
+ b = isnan(f32);
+ bv = isinf(f32v1);
+ f32v3 = fma(f32v1, f32v2, f32v3);
+ f32v2 = frexp(f32v1, iv);
+ f32v2 = ldexp(f32v1, iv);
+}
+
+void builtinGeometryFuncs()
+{
+ float32_t f32;
+ f32vec3 f32v1, f32v2, f32v3;
+
+ f32 = length(f32v1);
+ f32 = distance(f32v1, f32v2);
+ f32 = dot(f32v1, f32v2);
+ f32v3 = cross(f32v1, f32v2);
+ f32v2 = normalize(f32v1);
+ f32v3 = faceforward(f32v1, f32v2, f32v3);
+ f32v3 = reflect(f32v1, f32v2);
+ f32v3 = refract(f32v1, f32v2, f32);
+}
+
+void builtinMatrixFuncs()
+{
+ f32mat2x3 f32m1, f32m2, f32m3;
+ f32mat3x2 f32m4;
+ f32mat3 f32m5;
+ f32mat4 f32m6, f32m7;
+
+ f32vec3 f32v1;
+ f32vec2 f32v2;
+
+ float32_t f32;
+
+ f32m3 = matrixCompMult(f32m1, f32m2);
+ f32m1 = outerProduct(f32v1, f32v2);
+ f32m4 = transpose(f32m1);
+ f32 = determinant(f32m5);
+ f32m6 = inverse(f32m7);
+}
+
+void builtinVecRelFuncs()
+{
+ f32vec3 f32v1, f32v2;
+ bvec3 bv;
+
+ bv = lessThan(f32v1, f32v2);
+ bv = lessThanEqual(f32v1, f32v2);
+ bv = greaterThan(f32v1, f32v2);
+ bv = greaterThanEqual(f32v1, f32v2);
+ bv = equal(f32v1, f32v2);
+ bv = notEqual(f32v1, f32v2);
+}
+
+in f32vec3 if32v;
+
+void builtinFragProcFuncs()
+{
+ f32vec3 f32v;
+
+ // Derivative
+ f32v.x = dFdx(if32v.x);
+ f32v.y = dFdy(if32v.y);
+ f32v.xy = dFdxFine(if32v.xy);
+ f32v.xy = dFdyFine(if32v.xy);
+ f32v = dFdxCoarse(if32v);
+ f32v = dFdxCoarse(if32v);
+
+ f32v.x = fwidth(if32v.x);
+ f32v.xy = fwidthFine(if32v.xy);
+ f32v = fwidthCoarse(if32v);
+
+ // Interpolation
+ f32v.x = interpolateAtCentroid(if32v.x);
+ f32v.xy = interpolateAtSample(if32v.xy, 1);
+ f32v = interpolateAtOffset(if32v, f32vec2(0.5f));
+}
diff --git a/Test/spv.float64.frag b/Test/spv.float64.frag
new file mode 100644
index 0000000..efbec77
--- /dev/null
+++ b/Test/spv.float64.frag
@@ -0,0 +1,272 @@
+#version 450
+
+#extension GL_KHX_shader_explicit_arithmetic_types: enable
+#extension GL_KHX_shader_explicit_arithmetic_types_int8: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float64: require
+
+void main()
+{
+}
+
+// Single float literals
+void literal()
+{
+ const float64_t f64c = 0.000001LF;
+ const f64vec2 f64cv = f64vec2(-0.25lF, 0.03Lf);
+
+ f64vec2 f64v;
+ f64v.x = f64c;
+ f64v += f64cv;
+}
+
+// Block memory layout
+struct S
+{
+ float64_t x;
+ f64vec2 y;
+ f64vec3 z;
+};
+
+layout(column_major, std140) uniform B1
+{
+ float64_t a;
+ f64vec2 b;
+ f64vec3 c;
+ float64_t d[2];
+ f64mat2x3 e;
+ f64mat2x3 f[2];
+ S g;
+ S h[2];
+};
+
+// Specialization constant
+layout(constant_id = 100) const float16_t sf16 = 0.125hf;
+layout(constant_id = 101) const float32_t sf = 0.25;
+layout(constant_id = 102) const float64_t sd = 0.5lf;
+
+const float f16_to_f = float(sf16);
+const double f16_to_d = float(sf16);
+
+const float16_t f_to_f16 = float16_t(sf);
+const float16_t d_to_f16 = float16_t(sd);
+
+void operators()
+{
+ float64_t f64;
+ f64vec2 f64v;
+ f64mat2x2 f64m;
+ bool b;
+
+ // Arithmetic
+ f64v += f64v;
+ f64v -= f64v;
+ f64v *= f64v;
+ f64v /= f64v;
+ f64v++;
+ f64v--;
+ ++f64m;
+ --f64m;
+ f64v = -f64v;
+ f64m = -f64m;
+
+ f64 = f64v.x + f64v.y;
+ f64 = f64v.x - f64v.y;
+ f64 = f64v.x * f64v.y;
+ f64 = f64v.x / f64v.y;
+
+ // Relational
+ b = (f64v.x != f64);
+ b = (f64v.y == f64);
+ b = (f64v.x > f64);
+ b = (f64v.y < f64);
+ b = (f64v.x >= f64);
+ b = (f64v.y <= f64);
+
+ // Vector/matrix operations
+ f64v = f64v * f64;
+ f64m = f64m * f64;
+ f64v = f64m * f64v;
+ f64v = f64v * f64m;
+ f64m = f64m * f64m;
+}
+
+void typeCast()
+{
+ bvec3 bv;
+ f32vec3 f32v;
+ f64vec3 f64v;
+ i8vec3 i8v;
+ u8vec3 u8v;
+ i16vec3 i16v;
+ u16vec3 u16v;
+ i32vec3 i32v;
+ u32vec3 u32v;
+ i64vec3 i64v;
+ u64vec3 u64v;
+ f16vec3 f16v;
+
+ f64v = f64vec3(bv); // bool -> float64
+ bv = bvec3(f64v); // float64 -> bool
+
+ f64v = f64vec3(f16v); // float16 -> float64
+ f16v = f16vec3(f64v); // float64 -> float16
+
+ i8v = i8vec3(f64v); // float64 -> int8
+ i16v = i16vec3(f64v); // float64 -> int16
+ i32v = i32vec3(f64v); // float64 -> int32
+ i64v = i64vec3(f64v); // float64 -> int64
+
+ u8v = u8vec3(f64v); // float64 -> uint8
+ u16v = u16vec3(f64v); // float64 -> uint16
+ u32v = u32vec3(f64v); // float64 -> uint32
+ u64v = u64vec3(f64v); // float64 -> uint64
+}
+
+void builtinAngleTrigFuncs()
+{
+ f64vec4 f64v1, f64v2;
+
+ f64v2 = radians(f64v1);
+ f64v2 = degrees(f64v1);
+ f64v2 = sin(f64v1);
+ f64v2 = cos(f64v1);
+ f64v2 = tan(f64v1);
+ f64v2 = asin(f64v1);
+ f64v2 = acos(f64v1);
+ f64v2 = atan(f64v1, f64v2);
+ f64v2 = atan(f64v1);
+ f64v2 = sinh(f64v1);
+ f64v2 = cosh(f64v1);
+ f64v2 = tanh(f64v1);
+ f64v2 = asinh(f64v1);
+ f64v2 = acosh(f64v1);
+ f64v2 = atanh(f64v1);
+}
+
+void builtinExpFuncs()
+{
+ f64vec2 f64v1, f64v2;
+
+ f64v2 = pow(f64v1, f64v2);
+ f64v2 = exp(f64v1);
+ f64v2 = log(f64v1);
+ f64v2 = exp2(f64v1);
+ f64v2 = log2(f64v1);
+ f64v2 = sqrt(f64v1);
+ f64v2 = inversesqrt(f64v1);
+}
+
+void builtinCommonFuncs()
+{
+ f64vec3 f64v1, f64v2, f64v3;
+ float64_t f64;
+ bool b;
+ bvec3 bv;
+ ivec3 iv;
+
+ f64v2 = abs(f64v1);
+ f64v2 = sign(f64v1);
+ f64v2 = floor(f64v1);
+ f64v2 = trunc(f64v1);
+ f64v2 = round(f64v1);
+ f64v2 = roundEven(f64v1);
+ f64v2 = ceil(f64v1);
+ f64v2 = fract(f64v1);
+ f64v2 = mod(f64v1, f64v2);
+ f64v2 = mod(f64v1, f64);
+ f64v3 = modf(f64v1, f64v2);
+ f64v3 = min(f64v1, f64v2);
+ f64v3 = min(f64v1, f64);
+ f64v3 = max(f64v1, f64v2);
+ f64v3 = max(f64v1, f64);
+ f64v3 = clamp(f64v1, f64, f64v2.x);
+ f64v3 = clamp(f64v1, f64v2, f64vec3(f64));
+ f64v3 = mix(f64v1, f64v2, f64);
+ f64v3 = mix(f64v1, f64v2, f64v3);
+ f64v3 = mix(f64v1, f64v2, bv);
+ f64v3 = step(f64v1, f64v2);
+ f64v3 = step(f64, f64v3);
+ f64v3 = smoothstep(f64v1, f64v2, f64v3);
+ f64v3 = smoothstep(f64, f64v1.x, f64v2);
+ b = isnan(f64);
+ bv = isinf(f64v1);
+ f64v3 = fma(f64v1, f64v2, f64v3);
+ f64v2 = frexp(f64v1, iv);
+ f64v2 = ldexp(f64v1, iv);
+}
+
+void builtinGeometryFuncs()
+{
+ float64_t f64;
+ f64vec3 f64v1, f64v2, f64v3;
+
+ f64 = length(f64v1);
+ f64 = distance(f64v1, f64v2);
+ f64 = dot(f64v1, f64v2);
+ f64v3 = cross(f64v1, f64v2);
+ f64v2 = normalize(f64v1);
+ f64v3 = faceforward(f64v1, f64v2, f64v3);
+ f64v3 = reflect(f64v1, f64v2);
+ f64v3 = refract(f64v1, f64v2, f64);
+}
+
+void builtinMatrixFuncs()
+{
+ f64mat2x3 f64m1, f64m2, f64m3;
+ f64mat3x2 f64m4;
+ f64mat3 f64m5;
+ f64mat4 f64m6, f64m7;
+
+ f64vec3 f64v1;
+ f64vec2 f64v2;
+
+ float64_t f64;
+
+ f64m3 = matrixCompMult(f64m1, f64m2);
+ f64m1 = outerProduct(f64v1, f64v2);
+ f64m4 = transpose(f64m1);
+ f64 = determinant(f64m5);
+ f64m6 = inverse(f64m7);
+}
+
+void builtinVecRelFuncs()
+{
+ f64vec3 f64v1, f64v2;
+ bvec3 bv;
+
+ bv = lessThan(f64v1, f64v2);
+ bv = lessThanEqual(f64v1, f64v2);
+ bv = greaterThan(f64v1, f64v2);
+ bv = greaterThanEqual(f64v1, f64v2);
+ bv = equal(f64v1, f64v2);
+ bv = notEqual(f64v1, f64v2);
+}
+
+in flat f64vec3 if64v;
+
+void builtinFragProcFuncs()
+{
+ f64vec3 f64v;
+
+ // Derivative
+ f64v.x = dFdx(if64v.x);
+ f64v.y = dFdy(if64v.y);
+ f64v.xy = dFdxFine(if64v.xy);
+ f64v.xy = dFdyFine(if64v.xy);
+ f64v = dFdxCoarse(if64v);
+ f64v = dFdxCoarse(if64v);
+
+ f64v.x = fwidth(if64v.x);
+ f64v.xy = fwidthFine(if64v.xy);
+ f64v = fwidthCoarse(if64v);
+
+ // Interpolation
+ f64v.x = interpolateAtCentroid(if64v.x);
+ f64v.xy = interpolateAtSample(if64v.xy, 1);
+ f64v = interpolateAtOffset(if64v, f64vec2(0.5f));
+}
diff --git a/Test/spv.int16.amd.frag b/Test/spv.int16.amd.frag
new file mode 100644
index 0000000..818e6d8
--- /dev/null
+++ b/Test/spv.int16.amd.frag
@@ -0,0 +1,314 @@
+#version 450 core
+
+#extension GL_ARB_gpu_shader_int64: enable
+#extension GL_AMD_gpu_shader_half_float: enable
+#extension GL_AMD_gpu_shader_int16: enable
+
+layout(binding = 0) uniform Uniforms
+{
+ uint i;
+};
+
+// int16/uint16 in block
+layout(std140, binding = 1) uniform Block
+{
+ i16vec3 i16v;
+ uint16_t u16;
+} block;
+
+// int16/uint16 for input
+layout(location = 0) in flat u16vec3 iu16v;
+layout(location = 1) in flat int16_t ii16;
+
+void literal()
+{
+ const int16_t i16c[3] =
+ {
+ 0x111S, // Hex
+ -2s, // Dec
+ 0400s, // Oct
+ };
+
+ const uint16_t u16c[] =
+ {
+ 0xFFFFus, // Hex
+ 65535US, // Dec
+ 0177777us, // Oct
+ };
+
+ uint16_t u16 = i16c[i] + u16c[i];
+}
+
+void operators()
+{
+ u16vec3 u16v;
+ int16_t i16;
+ uint16_t u16;
+ int i;
+ uint u;
+ bool b;
+
+ // Unary
+ u16v++;
+ i16--;
+ ++i16;
+ --u16v;
+
+ u16v = ~u16v;
+
+ i16 = +i16;
+ u16v = -u16v;
+
+ // Arithmetic
+ u16 += i16;
+ u16v -= u16v;
+ i16 *= i16;
+ u16v /= u16v;
+ u16v %= i16;
+
+ u16v = u16v + u16v;
+ u16 = i16 - u16;
+ u16v = u16v * i16;
+ i16 = i16 * i16;
+ i16 = i16 % i16;
+
+ // Shift
+ u16v <<= i16;
+ i16 >>= u16v.y;
+
+ i16 = i16 << u16v.z;
+ u16v = u16v << i16;
+
+ // Relational
+ b = (u16v.x != i16);
+ b = (i16 == u16v.x);
+ b = (u16v.x > u16v.y);
+ b = (i16 < u);
+ b = (u16v.y >= u16v.x);
+ b = (i16 <= i);
+
+ // Bitwise
+ u16v |= i16;
+ u16 = i16 | u16;
+ i16 &= i16;
+ u16v = u16v & u16v;
+ u16v ^= i16;
+ u16v = u16v ^ i16;
+}
+
+void typeCast()
+{
+ bvec2 bv;
+ ivec2 iv;
+ uvec2 uv;
+ vec2 fv;
+ dvec2 dv;
+
+ f16vec2 f16v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+
+ i16v = i16vec2(bv); // bool -> int16
+ u16v = u16vec2(bv); // bool -> uint16
+ bv = bvec2(i16v); // int16 -> bool
+ bv = bvec2(u16v); // uint16 -> bool
+
+ i16v = i16vec2(iv); // int -> int16
+ u16v = u16vec2(iv); // int -> uint16
+ iv = i16v; // int16 -> int
+ iv = ivec2(u16v); // uint16 -> int
+
+ i16v = i16vec2(uv); // uint -> int16
+ u16v = u16vec2(uv); // uint -> uint16
+ uv = i16v; // int16 -> uint
+ uv = u16v; // uint16 -> uint
+
+ i16v = i16vec2(fv); // float -> int16
+ u16v = u16vec2(fv); // float -> uint16
+ fv = i16v; // int16 -> float
+ fv = u16v; // uint16 -> float
+
+ i16v = i16vec2(dv); // double -> int16
+ u16v = u16vec2(dv); // double -> uint16
+ dv = i16v; // int16 -> double
+ dv = u16v; // uint16 -> double
+
+ i16v = i16vec2(f16v); // float16 -> int16
+ u16v = u16vec2(f16v); // float16 -> uint16
+ f16v = i16v; // int16 -> float16
+ f16v = u16v; // uint16 -> float16
+
+ i16v = i16vec2(i64v); // int64 -> int16
+ u16v = u16vec2(i64v); // int64 -> uint16
+ i64v = i16v; // int16 -> int64
+ i64v = i64vec2(u16v); // uint16 -> int64
+
+ i16v = i16vec2(u64v); // uint64 -> int16
+ u16v = u16vec2(u64v); // uint64 -> uint16
+ u64v = i16v; // int16 -> uint64
+ u64v = u16v; // uint16 -> uint64
+
+ i16v = i16vec2(u16v); // uint16 -> int16
+ u16v = i16v; // int16 -> uint16
+}
+
+void builtinFuncs()
+{
+ i16vec2 i16v;
+ u16vec3 u16v;
+ f16vec3 f16v;
+ bvec3 bv;
+
+ int16_t i16;
+ uint16_t u16;
+
+ // abs()
+ i16v = abs(i16v);
+
+ // sign()
+ i16v = sign(i16v);
+
+ // min()
+ i16v = min(i16v, i16);
+ i16v = min(i16v, i16vec2(-1s));
+ u16v = min(u16v, u16);
+ u16v = min(u16v, u16vec3(0us));
+
+ // max()
+ i16v = max(i16v, i16);
+ i16v = max(i16v, i16vec2(-1s));
+ u16v = max(u16v, u16);
+ u16v = max(u16v, u16vec3(0us));
+
+ // clamp()
+ i16v = clamp(i16v, -i16, i16);
+ i16v = clamp(i16v, -i16v, i16v);
+ u16v = clamp(u16v, -u16, u16);
+ u16v = clamp(u16v, -u16v, u16v);
+
+ // mix()
+ i16 = mix(i16v.x, i16v.y, true);
+ i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false));
+ u16 = mix(u16v.x, u16v.y, true);
+ u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false));
+
+ // frexp()
+ i16vec3 exp;
+ f16v = frexp(f16v, exp);
+
+ // ldexp()
+ f16v = ldexp(f16v, exp);
+
+ // float16BitsToInt16()
+ i16v = float16BitsToInt16(f16v.xy);
+
+ // float16BitsToUint16()
+ u16v.x = float16BitsToUint16(f16v.z);
+
+ // int16BitsToFloat16()
+ f16v.xy = int16BitsToFloat16(i16v);
+
+ // uint16BitsToFloat16()
+ f16v = uint16BitsToFloat16(u16v);
+
+ // packInt2x16()
+ int packi = packInt2x16(i16v);
+
+ // unpackInt2x16()
+ i16v = unpackInt2x16(packi);
+
+ // packUint2x16()
+ uint packu = packUint2x16(u16v.xy);
+
+ // unpackUint2x16()
+ u16v.xy = unpackUint2x16(packu);
+
+ // packInt4x16()
+ int64_t packi64 = packInt4x16(i16vec4(i16));
+
+ // unpackInt4x16()
+ i16v = unpackInt4x16(packi64).xy;
+
+ // packUint4x16()
+ uint64_t packu64 = packUint4x16(u16vec4(u16));
+
+ // unpackUint4x16()
+ u16v = unpackUint4x16(packu64).xyz;
+
+ // lessThan()
+ bv = lessThan(u16v, u16vec3(u16));
+ bv.xy = lessThan(i16v, i16vec2(i16));
+
+ // lessThanEqual()
+ bv = lessThanEqual(u16v, u16vec3(u16));
+ bv.xy = lessThanEqual(i16v, i16vec2(i16));
+
+ // greaterThan()
+ bv = greaterThan(u16v, u16vec3(u16));
+ bv.xy = greaterThan(i16v, i16vec2(i16));
+
+ // greaterThanEqual()
+ bv = greaterThanEqual(u16v, u16vec3(u16));
+ bv.xy = greaterThanEqual(i16v, i16vec2(i16));
+
+ // equal()
+ bv = equal(u16v, u16vec3(u16));
+ bv.xy = equal(i16v, i16vec2(i16));
+
+ // notEqual()
+ bv = notEqual(u16v, u16vec3(u16));
+ bv.xy = notEqual(i16v, i16vec2(i16));
+}
+
+// Type conversion for specialization constant
+layout(constant_id = 100) const int64_t si64 = -10L;
+layout(constant_id = 101) const uint64_t su64 = 20UL;
+layout(constant_id = 102) const int si = -5;
+layout(constant_id = 103) const uint su = 4;
+layout(constant_id = 104) const bool sb = true;
+layout(constant_id = 105) const int16_t si16 = -5S;
+layout(constant_id = 106) const uint16_t su16 = 4US;
+
+// bool <-> int16/uint16
+const bool i16_to_b = bool(si16);
+const bool u16_to_b = bool(su16);
+const int16_t b_to_i16 = int16_t(sb);
+const uint16_t b_to_u16 = uint16_t(sb);
+
+// int <-> int16/uint16
+const int i16_to_i = int(si16);
+const int u16_to_i = int(su16);
+const int16_t i_to_i16 = int16_t(si);
+const uint16_t i_to_u16 = uint16_t(si);
+
+// uint <-> int16/uint16
+const uint i16_to_u = uint(si16);
+const uint u16_to_u = uint(su16);
+const int16_t u_to_i16 = int16_t(su);
+const uint16_t u_to_u16 = uint16_t(su);
+
+// int64 <-> int16/uint16
+const int64_t i16_to_i64 = int64_t(si16);
+const int64_t u16_to_i64 = int64_t(su16);
+const int16_t i64_to_i16 = int16_t(si64);
+const uint16_t i64_to_u16 = uint16_t(si64);
+
+// uint64 <-> int16/uint16
+const uint64_t i16_to_u64 = uint64_t(si16);
+const uint64_t u16_to_u64 = uint64_t(su16);
+const int16_t u64_to_i16 = int16_t(su64);
+const uint16_t u64_to_u16 = uint16_t(su64);
+
+// int16 <-> uint16
+const uint16_t i16_to_u16 = uint16_t(si16);
+const int16_t u16_to_i16 = int16_t(su16);
+
+void main()
+{
+ literal();
+ operators();
+ typeCast();
+ builtinFuncs();
+}
diff --git a/Test/spv.int16.frag b/Test/spv.int16.frag
index 9dd9090..d29894b 100644
--- a/Test/spv.int16.frag
+++ b/Test/spv.int16.frag
@@ -1,314 +1,251 @@
-#version 450 core
-
-#extension GL_ARB_gpu_shader_int64: enable
-#extension GL_AMD_gpu_shader_half_float: enable
-#extension GL_AMD_gpu_shader_int16: enable
-
-layout(binding = 0) uniform Uniforms
-{
- uint i;
-};
-
-// int16/uint16 in block
-layout(std140, binding = 1) uniform Block
-{
- i16vec3 i16v;
- uint16_t u16;
-} block;
-
-// int16/uint16 for input
-layout(location = 0) in flat u16vec3 iu16v;
-layout(location = 1) in flat int16_t ii16;
-
-void literal()
-{
- const int16_t i16c[3] =
- {
- 0x111S, // Hex
- -2s, // Dec
- 0400s, // Oct
- };
-
- const uint16_t u16c[] =
- {
- 0xFFFFus, // Hex
- 65535US, // Dec
- 0177777us, // Oct
- };
-
- uint16_t u16 = i16c[i] + u16c[i];
-}
-
-void operators()
-{
- u16vec3 u16v;
- int16_t i16;
- uint16_t u16;
- int i;
- uint u;
- bool b;
-
- // Unary
- u16v++;
- i16--;
- ++i16;
- --u16v;
-
- u16v = ~u16v;
-
- i16 = +i16;
- u16v = -u16v;
-
- // Arithmetic
- u16 += i16;
- u16v -= u16v;
- i16 *= i16;
- u16v /= u16v;
- u16v %= i16;
-
- u16v = u16v + u16v;
- u16 = i16 - u16;
- u16v = u16v * i16;
- i16 = i16 * i16;
- i16 = i16 % i16;
-
- // Shift
- u16v <<= i;
- i16 >>= u16v.y;
-
- i16 = i16 << u16v.z;
- u16v = u16v << i16;
-
- // Relational
- b = (u16v.x != i16);
- b = (i16 == u16v.x);
- b = (u16v.x > u16v.y);
- b = (i16 < u);
- b = (u16v.y >= u16v.x);
- b = (i16 <= i);
-
- // Bitwise
- u16v |= i16;
- u16 = i16 | u16;
- i16 &= i16;
- u16v = u16v & u16v;
- u16v ^= i16;
- u16v = u16v ^ i16;
-}
-
-void typeCast()
-{
- bvec2 bv;
- ivec2 iv;
- uvec2 uv;
- vec2 fv;
- dvec2 dv;
-
- f16vec2 f16v;
- i64vec2 i64v;
- u64vec2 u64v;
- i16vec2 i16v;
- u16vec2 u16v;
-
- i16v = i16vec2(bv); // bool -> int16
- u16v = u16vec2(bv); // bool -> uint16
- bv = bvec2(i16v); // int16 -> bool
- bv = bvec2(u16v); // uint16 -> bool
-
- i16v = i16vec2(iv); // int -> int16
- u16v = u16vec2(iv); // int -> uint16
- iv = i16v; // int16 -> int
- iv = ivec2(u16v); // uint16 -> int
-
- i16v = i16vec2(uv); // uint -> int16
- u16v = u16vec2(uv); // uint -> uint16
- uv = i16v; // int16 -> uint
- uv = u16v; // uint16 -> uint
-
- i16v = i16vec2(fv); // float -> int16
- u16v = u16vec2(fv); // float -> uint16
- fv = i16v; // int16 -> float
- fv = u16v; // uint16 -> float
-
- i16v = i16vec2(dv); // double -> int16
- u16v = u16vec2(dv); // double -> uint16
- dv = i16v; // int16 -> double
- dv = u16v; // uint16 -> double
-
- i16v = i16vec2(f16v); // float16 -> int16
- u16v = u16vec2(f16v); // float16 -> uint16
- f16v = i16v; // int16 -> float16
- f16v = u16v; // uint16 -> float16
-
- i16v = i16vec2(i64v); // int64 -> int16
- u16v = u16vec2(i64v); // int64 -> uint16
- i64v = i16v; // int16 -> int64
- i64v = i64vec2(u16v); // uint16 -> int64
-
- i16v = i16vec2(u64v); // uint64 -> int16
- u16v = u16vec2(u64v); // uint64 -> uint16
- u64v = i16v; // int16 -> uint64
- u64v = u16v; // uint16 -> uint64
-
- i16v = i16vec2(u16v); // uint16 -> int16
- u16v = i16v; // int16 -> uint16
-}
-
-void builtinFuncs()
-{
- i16vec2 i16v;
- u16vec3 u16v;
- f16vec3 f16v;
- bvec3 bv;
-
- int16_t i16;
- uint16_t u16;
-
- // abs()
- i16v = abs(i16v);
-
- // sign()
- i16v = sign(i16v);
-
- // min()
- i16v = min(i16v, i16);
- i16v = min(i16v, i16vec2(-1s));
- u16v = min(u16v, u16);
- u16v = min(u16v, u16vec3(0us));
-
- // max()
- i16v = max(i16v, i16);
- i16v = max(i16v, i16vec2(-1s));
- u16v = max(u16v, u16);
- u16v = max(u16v, u16vec3(0us));
-
- // clamp()
- i16v = clamp(i16v, -i16, i16);
- i16v = clamp(i16v, -i16v, i16v);
- u16v = clamp(u16v, -u16, u16);
- u16v = clamp(u16v, -u16v, u16v);
-
- // mix()
- i16 = mix(i16v.x, i16v.y, true);
- i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false));
- u16 = mix(u16v.x, u16v.y, true);
- u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false));
-
- // frexp()
- i16vec3 exp;
- f16v = frexp(f16v, exp);
-
- // ldexp()
- f16v = ldexp(f16v, exp);
-
- // float16BitsToInt16()
- i16v = float16BitsToInt16(f16v.xy);
-
- // float16BitsToUint16()
- u16v.x = float16BitsToUint16(f16v.z);
-
- // int16BitsToFloat16()
- f16v.xy = int16BitsToFloat16(i16v);
-
- // uint16BitsToFloat16()
- f16v = uint16BitsToFloat16(u16v);
-
- // packInt2x16()
- int packi = packInt2x16(i16v);
-
- // unpackInt2x16()
- i16v = unpackInt2x16(packi);
-
- // packUint2x16()
- uint packu = packUint2x16(u16v.xy);
-
- // unpackUint2x16()
- u16v.xy = unpackUint2x16(packu);
-
- // packInt4x16()
- int64_t packi64 = packInt4x16(i16vec4(i16));
-
- // unpackInt4x16()
- i16v = unpackInt4x16(packi64).xy;
-
- // packUint4x16()
- uint64_t packu64 = packUint4x16(u16vec4(u16));
-
- // unpackUint4x16()
- u16v = unpackUint4x16(packu64).xyz;
-
- // lessThan()
- bv = lessThan(u16v, u16vec3(u16));
- bv.xy = lessThan(i16v, i16vec2(i16));
-
- // lessThanEqual()
- bv = lessThanEqual(u16v, u16vec3(u16));
- bv.xy = lessThanEqual(i16v, i16vec2(i16));
-
- // greaterThan()
- bv = greaterThan(u16v, u16vec3(u16));
- bv.xy = greaterThan(i16v, i16vec2(i16));
-
- // greaterThanEqual()
- bv = greaterThanEqual(u16v, u16vec3(u16));
- bv.xy = greaterThanEqual(i16v, i16vec2(i16));
-
- // equal()
- bv = equal(u16v, u16vec3(u16));
- bv.xy = equal(i16v, i16vec2(i16));
-
- // notEqual()
- bv = notEqual(u16v, u16vec3(u16));
- bv.xy = notEqual(i16v, i16vec2(i16));
-}
-
-// Type conversion for specialization constant
-layout(constant_id = 100) const int64_t si64 = -10L;
-layout(constant_id = 101) const uint64_t su64 = 20UL;
-layout(constant_id = 102) const int si = -5;
-layout(constant_id = 103) const uint su = 4;
-layout(constant_id = 104) const bool sb = true;
-layout(constant_id = 105) const int16_t si16 = -5S;
-layout(constant_id = 106) const uint16_t su16 = 4US;
-
-// bool <-> int16/uint16
-const bool i16_to_b = bool(si16);
-const bool u16_to_b = bool(su16);
-const int16_t b_to_i16 = int16_t(sb);
-const uint16_t b_to_u16 = uint16_t(sb);
-
-// int <-> int16/uint16
-const int i16_to_i = int(si16);
-const int u16_to_i = int(su16);
-const int16_t i_to_i16 = int16_t(si);
-const uint16_t i_to_u16 = uint16_t(si);
-
-// uint <-> int16/uint16
-const uint i16_to_u = uint(si16);
-const uint u16_to_u = uint(su16);
-const int16_t u_to_i16 = int16_t(su);
-const uint16_t u_to_u16 = uint16_t(su);
-
-// int64 <-> int16/uint16
-const int64_t i16_to_i64 = int64_t(si16);
-const int64_t u16_to_i64 = int64_t(su16);
-const int16_t i64_to_i16 = int16_t(si64);
-const uint16_t i64_to_u16 = uint16_t(si64);
-
-// uint64 <-> int16/uint16
-const uint64_t i16_to_u64 = uint64_t(si16);
-const uint64_t u16_to_u64 = uint64_t(su16);
-const int16_t u64_to_i16 = int16_t(su64);
-const uint16_t u64_to_u16 = uint16_t(su64);
-
-// int16 <-> uint16
-const uint16_t i16_to_u16 = uint16_t(si16);
-const int16_t u16_to_i16 = int16_t(su16);
-
-void main()
-{
- literal();
- operators();
- typeCast();
- builtinFuncs();
-}
+#version 450
+
+#extension GL_KHX_shader_explicit_arithmetic_types: enable
+#extension GL_KHX_shader_explicit_arithmetic_types_int8: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float64: require
+
+layout(binding = 0) uniform Uniforms
+{
+ uint index;
+};
+
+layout(std140, binding = 1) uniform Block
+{
+ int16_t i16;
+ i16vec2 i16v2;
+ i16vec3 i16v3;
+ i16vec4 i16v4;
+ uint16_t u16;
+ u16vec2 u16v2;
+ u16vec3 u16v3;
+ u16vec4 u16v4;
+} block;
+
+void main()
+{
+}
+
+void literal()
+{
+ const int16_t i16Const[3] =
+ {
+ int16_t(-0x1111), // Hex
+ int16_t(-1), // Dec
+ int16_t(040000), // Oct
+ };
+
+ int16_t i16 = i16Const[index];
+
+ const uint16_t u16Const[] =
+ {
+ uint16_t(0xFFFF), // Hex
+ uint16_t(65535), // Dec
+ uint16_t(077777), // Oct
+ };
+
+ uint16_t u16 = u16Const[index];
+}
+
+void typeCast16()
+{
+ i8vec2 i8v;
+ u8vec2 u8v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+ i32vec2 i32v;
+ u32vec2 u32v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ f16vec2 f16v;
+ f32vec2 f32v;
+ f64vec2 f64v;
+ bvec2 bv;
+
+ i32v = i16v; // int16_t -> int32_t
+ i32v = u16v; // uint16_t -> int32_t
+ u16v = i16v; // int16_t -> uint16_t
+ u32v = i16v; // int16_t -> uint32_t
+ i64v = i16v; // int16_t -> int64_t
+ u64v = i16v; // int16_t -> uint64_t
+ u32v = u16v; // uint16_t -> uint32_t
+ i64v = u16v; // uint16_t -> int64_t
+ u64v = u16v; // uint16_t -> uint64_t
+ f16v = i16v; // int16_t -> float16_t
+ f32v = i16v; // int16_t -> float32_t
+ f64v = i16v; // int16_t -> float64_t
+ f16v = u16v; // uint16_t -> float16_t
+ f32v = u16v; // uint16_t -> float32_t
+ f64v = u16v; // uint16_t -> float64_t
+
+ i32v = i32vec2(i16v); // int16_t -> int32_t
+ i32v = i32vec2(u16v); // uint16_t -> int32_t
+ u16v = u16vec2(i16v); // int16_t -> uint16_t
+ u32v = u32vec2(i16v); // int16_t -> uint32_t
+ i64v = i64vec2(i16v); // int16_t -> int64_t
+ u64v = i64vec2(i16v); // int16_t -> uint64_t
+ u32v = u32vec2(u16v); // uint16_t -> uint32_t
+ i64v = i64vec2(u16v); // uint16_t -> int64_t
+ u64v = i64vec2(u16v); // uint16_t -> uint64_t
+ f16v = f16vec2(i16v); // int16_t -> float16_t
+ f32v = f32vec2(i16v); // int16_t -> float32_t
+ f64v = f64vec2(i16v); // int16_t -> float64_t
+ f16v = f16vec2(u16v); // uint16_t -> float16_t
+ f32v = f32vec2(u16v); // uint16_t -> float32_t
+ f64v = f64vec2(u16v); // uint16_t -> float64_t
+
+ i8v = i8vec2(i16v); // int16_t -> int8_t
+ i8v = i8vec2(u16v); // uint16_t -> int8_t
+ u8v = u8vec2(i16v); // int16_t -> uint8_t
+ u8v = u8vec2(u16v); // uint16_t -> uint8_t
+ i16v = u8vec2(u16v); // uint16_t -> int16_t
+ i16v = i16vec2(bv); // bool -> int16
+ u16v = u16vec2(bv); // bool -> uint16
+ bv = bvec2(i16v); // int16 -> bool
+ bv = bvec2(u16v); // uint16 -> bool
+}
+void operators()
+{
+ u16vec3 u16v;
+ int16_t i16;
+ uvec3 uv;
+ int32_t i;
+ int64_t i64;
+ bool b;
+
+ // Unary
+ u16v++;
+ i16--;
+ ++i16;
+ --u16v;
+
+ u16v = ~u16v;
+
+ i16 = +i16;
+ u16v = -u16v;
+
+ // Arithmetic
+ i16 += i16;
+ u16v -= u16v;
+ i *= i16;
+ uv /= u16v;
+ uv %= i16;
+
+ uv = u16v + uv;
+ i64 = i16 - i64;
+ uv = u16v * uv;
+ i64 = i16 * i64;
+ i = i16 % i;
+
+ // Shift
+ u16v <<= i16;
+ i16 >>= u16v.y;
+
+ i16 = i16 << u16v.z;
+ uv = u16v << i;
+
+ // Relational
+ b = (u16v.x != i16);
+ b = (i16 == u16v.x);
+ b = (u16v.x > uv.y);
+ b = (i16 < i);
+ b = (u16v.y >= uv.x);
+ b = (i16 <= i);
+
+ // Bitwise
+ uv |= i16;
+ i = i16 | i;
+ i64 &= i16;
+ uv = u16v & uv;
+ uv ^= i16;
+ u16v = u16v ^ i16;
+}
+
+void builtinFuncs()
+{
+ i16vec2 i16v;
+ i16vec4 i16v4;
+ u16vec3 u16v;
+ u16vec2 u16v2;
+ u16vec4 u16v4;
+ bvec3 bv;
+ int16_t i16;
+ uint16_t u16;
+ int32_t i32;
+ uint32_t u32;
+ int64_t i64;
+ uint64_t u64;
+
+ // abs()
+ i16v = abs(i16v);
+
+ // sign()
+ i16 = sign(i16);
+
+ // min()
+ i16v = min(i16v, i16);
+ i16v = min(i16v, i16vec2(-1));
+ u16v = min(u16v, u16);
+ u16v = min(u16v, u16vec3(0));
+
+ // max()
+ i16v = max(i16v, i16);
+ i16v = max(i16v, i16vec2(-1));
+ u16v = max(u16v, u16);
+ u16v = max(u16v, u16vec3(0));
+
+ // clamp()
+ i16v = clamp(i16v, -i16, i16);
+ i16v = clamp(i16v, -i16v, i16v);
+ u16v = clamp(u16v, -u16, u16);
+ u16v = clamp(u16v, -u16v, u16v);
+
+ // mix()
+ i16 = mix(i16v.x, i16v.y, true);
+ i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false));
+ u16 = mix(u16v.x, u16v.y, true);
+ u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false));
+
+ //pack
+ i32 = pack32(i16v);
+ i64 = pack64(i16v4);
+ u32 = pack32(u16v2);
+ u64 = pack64(u16v4);
+
+ i16v = unpack16(i32);
+ i16v4 = unpack16(i64);
+ u16v2 = unpack16(u32);
+ u16v4 = unpack16(u64);
+
+ // lessThan()
+ bv = lessThan(u16v, u16vec3(u16));
+ bv.xy = lessThan(i16v, i16vec2(i16));
+
+ // lessThanEqual()
+ bv = lessThanEqual(u16v, u16vec3(u16));
+ bv.xy = lessThanEqual(i16v, i16vec2(i16));
+
+ // greaterThan()
+ bv = greaterThan(u16v, u16vec3(u16));
+ bv.xy = greaterThan(i16v, i16vec2(i16));
+
+ // greaterThanEqual()
+ bv = greaterThanEqual(u16v, u16vec3(u16));
+ bv.xy = greaterThanEqual(i16v, i16vec2(i16));
+
+ // equal()
+ bv = equal(u16v, u16vec3(u16));
+ bv.xy = equal(i16v, i16vec2(i16));
+
+ // notEqual()
+ bv = notEqual(u16v, u16vec3(u16));
+ bv.xy = notEqual(i16v, i16vec2(i16));
+}
+
+// Type conversion for specialization constant
+layout(constant_id = 100) const int16_t si16 = int16_t(-10);
+layout(constant_id = 101) const uint16_t su16 = uint16_t(20);
diff --git a/Test/spv.int32.frag b/Test/spv.int32.frag
new file mode 100644
index 0000000..3a33c67
--- /dev/null
+++ b/Test/spv.int32.frag
@@ -0,0 +1,256 @@
+#version 450
+
+#extension GL_KHX_shader_explicit_arithmetic_types: enable
+#extension GL_KHX_shader_explicit_arithmetic_types_int8: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float64: require
+
+layout(binding = 0) uniform Uniforms
+{
+ uint index;
+};
+
+layout(std140, binding = 1) uniform Block
+{
+ int32_t i32;
+ i32vec2 i32v2;
+ i32vec3 i32v3;
+ i32vec4 i32v4;
+ uint32_t u32;
+ u32vec2 u32v2;
+ u32vec3 u32v3;
+ u32vec4 u32v4;
+} block;
+
+void main()
+{
+}
+
+void literal()
+{
+
+ const int32_t i32Const[3] =
+ {
+ -0x11111111, // Hex
+ -1, // Dec
+ 04000000000, // Oct
+ };
+
+ int32_t i32 = i32Const[index];
+
+ const uint32_t u32Const[] =
+ {
+ 0xFFFFFFFF, // Hex
+ 4294967295, // Dec
+ 017777777777, // Oct
+ };
+
+ uint32_t u32 = u32Const[index];
+}
+
+void typeCast32()
+{
+ i8vec2 i8v;
+ u8vec2 u8v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+ i32vec2 i32v;
+ u32vec2 u32v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ f16vec2 f16v;
+ f32vec2 f32v;
+ f64vec2 f64v;
+ bvec2 bv;
+
+ u32v = i32v; // int32_t -> uint32_t
+ i64v = i32v; // int32_t -> int64_t
+ u64v = i32v; // int32_t -> uint64_t
+ i64v = u32v; // uint32_t -> int64_t
+ u64v = u32v; // uint32_t -> uint64_t
+ f32v = i32v; // int32_t -> float32_t
+ f64v = i32v; // int32_t -> float64_t
+ f32v = u32v; // uint32_t -> float32_t
+ f64v = u32v; // uint32_t -> float64_t
+
+ i8v = i8vec2(i32v); // int32_t -> int8_t
+ i8v = i8vec2(u32v); // uint32_t -> int8_t
+ i16v = i16vec2(i32v); // int32_t -> int16_t
+ i16v = i16vec2(u32v); // uint32_t -> int16_t
+ i32v = i32vec2(i32v); // int32_t -> int32_t
+ i32v = i32vec2(u32v); // uint32_t -> int32_t
+ i64v = i64vec2(i32v); // int32_t -> int64_t
+ i64v = i64vec2(u32v); // uint32_t -> int64_t
+ u8v = u8vec2(i32v); // int32_t -> uint8_t
+ u8v = u8vec2(u32v); // uint32_t -> uint8_t
+ u16v = u16vec2(i32v); // int32_t -> uint16_t
+ u16v = u16vec2(u32v); // uint32_t -> uint16_t
+ u32v = u32vec2(i32v); // int32_t -> uint32_t
+ u32v = u32vec2(u32v); // uint32_t -> uint32_t
+ u64v = u64vec2(i32v); // int32_t -> uint64_t
+ u64v = u64vec2(u32v); // uint32_t -> uint64_t
+
+ f16v = f16vec2(i32v); // int32_t -> float16_t
+ f32v = f32vec2(i32v); // int32_t -> float32_t
+ f64v = f64vec2(i32v); // int32_t -> float64_t
+ f16v = f16vec2(u32v); // uint32_t -> float16_t
+ f32v = f32vec2(u32v); // uint32_t -> float32_t
+ f64v = f64vec2(u32v); // uint32_t -> float64_t
+
+ i32v = i32vec2(bv); // bool -> int32
+ u32v = u32vec2(bv); // bool -> uint32
+ bv = bvec2(i32v); // int32 -> bool
+ bv = bvec2(u32v); // uint32 -> bool
+}
+
+void operators()
+{
+ u32vec3 u32v;
+ int32_t i32;
+ uvec3 uv;
+ int32_t i;
+ int64_t i64;
+ bool b;
+
+ // Unary
+ u32v++;
+ i32--;
+ ++i32;
+ --u32v;
+
+ u32v = ~u32v;
+
+ i32 = +i32;
+ u32v = -u32v;
+
+ // Arithmetic
+ i32 += i32;
+ u32v -= u32v;
+ i *= i32;
+ uv /= u32v;
+ uv %= i32;
+
+ uv = u32v + uv;
+ i64 = i32 - i64;
+ uv = u32v * uv;
+ i64 = i32 * i64;
+ i = i32 % i;
+
+ // Shift
+ u32v <<= i32;
+ i32 >>= u32v.y;
+
+ i64 = i64 << u32v.z;
+ uv = u32v << i;
+
+ // Relational
+ b = (u32v.x != i32);
+ b = (i32 == u32v.x);
+ b = (u32v.x > uv.y);
+ b = (i32 < i);
+ b = (u32v.y >= uv.x);
+ b = (i32 <= i);
+
+ // Bitwise
+ uv |= i32;
+ i = i32 | i;
+ i64 &= i32;
+ uv = u32v & uv;
+ uv ^= i32;
+ u32v = u32v ^ i32;
+}
+
+void builtinFuncs()
+{
+ i32vec2 i32v;
+ i32vec4 i32v4;
+ u32vec3 u32v;
+ u32vec2 u32v2;
+ u32vec4 u32v4;
+ bvec3 bv;
+ int32_t i32;
+ uint32_t u32;
+ int64_t i64;
+ uint64_t u64;
+ i8vec4 i8v4;
+ u8vec4 u8v4;
+ i16vec2 i16v2;
+ u16vec2 u16v2;
+
+ // abs()
+ i32v = abs(i32v);
+
+ // sign()
+ i32 = sign(i32);
+
+ // min()
+ i32v = min(i32v, i32);
+ i32v = min(i32v, i32vec2(-1));
+ u32v = min(u32v, u32);
+ u32v = min(u32v, u32vec3(0));
+
+ // max()
+ i32v = max(i32v, i32);
+ i32v = max(i32v, i32vec2(-1));
+ u32v = max(u32v, u32);
+ u32v = max(u32v, u32vec3(0));
+
+ // clamp()
+ i32v = clamp(i32v, -i32, i32);
+ i32v = clamp(i32v, -i32v, i32v);
+ u32v = clamp(u32v, -u32, u32);
+ u32v = clamp(u32v, -u32v, u32v);
+
+ // mix()
+ i32 = mix(i32v.x, i32v.y, true);
+ i32v = mix(i32vec2(i32), i32vec2(-i32), bvec2(false));
+ u32 = mix(u32v.x, u32v.y, true);
+ u32v = mix(u32vec3(u32), u32vec3(-u32), bvec3(false));
+
+ //pack
+ i32 = pack32(i8v4);
+ i32 = pack32(i16v2);
+ u32 = pack32(u8v4);
+ u32 = pack32(u16v2);
+
+ i32v = unpack32(i64);
+ u32v2 = unpack32(u64);
+
+ // lessThan()
+ bv = lessThan(u32v, u32vec3(u32));
+ bv.xy = lessThan(i32v, i32vec2(i32));
+
+ // lessThanEqual()
+ bv = lessThanEqual(u32v, u32vec3(u32));
+ bv.xy = lessThanEqual(i32v, i32vec2(i32));
+
+ // greaterThan()
+ bv = greaterThan(u32v, u32vec3(u32));
+ bv.xy = greaterThan(i32v, i32vec2(i32));
+
+ // greaterThanEqual()
+ bv = greaterThanEqual(u32v, u32vec3(u32));
+ bv.xy = greaterThanEqual(i32v, i32vec2(i32));
+
+ // equal()
+ bv = equal(u32v, u32vec3(u32));
+ bv.xy = equal(i32v, i32vec2(i32));
+
+ // notEqual()
+ bv = notEqual(u32v, u32vec3(u32));
+ bv.xy = notEqual(i32v, i32vec2(i32));
+}
+
+// Type conversion for specialization constant
+layout(constant_id = 100) const int32_t si32 = -10;
+layout(constant_id = 101) const uint32_t su32 = 20U;
+layout(constant_id = 102) const int si = -5;
+layout(constant_id = 103) const uint su = 4;
+layout(constant_id = 104) const bool sb = true;
+
+#define UINT32_MAX 4294967295u
+uint32_t u32Max = UINT32_MAX;
diff --git a/Test/spv.int64.frag b/Test/spv.int64.frag
index 8021b7e..bcbb24b 100644
--- a/Test/spv.int64.frag
+++ b/Test/spv.int64.frag
@@ -1,6 +1,7 @@
#version 450
#extension GL_ARB_gpu_shader_int64: enable
+#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
layout(binding = 0) uniform Uniforms
{
diff --git a/Test/spv.int8.frag b/Test/spv.int8.frag
new file mode 100644
index 0000000..f41c62f
--- /dev/null
+++ b/Test/spv.int8.frag
@@ -0,0 +1,253 @@
+#version 450
+
+#extension GL_KHX_shader_explicit_arithmetic_types: enable
+#extension GL_KHX_shader_explicit_arithmetic_types_int8: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float64: require
+
+layout(binding = 0) uniform Uniforms
+{
+ uint index;
+};
+
+layout(std140, binding = 1) uniform Block
+{
+ int8_t i8;
+ i8vec2 i8v2;
+ i8vec3 i8v3;
+ i8vec4 i8v4;
+ uint8_t u8;
+ u8vec2 u8v2;
+ u8vec3 u8v3;
+ u8vec4 u8v4;
+} block;
+
+void main()
+{
+}
+
+void literal()
+{
+ const int8_t i8Const[3] =
+ {
+ int8_t(-0x11), // Hex
+ int8_t(-1), // Dec
+ int8_t(0400), // Oct
+ };
+
+ int8_t i8 = i8Const[index];
+
+ const uint8_t u8Const[] =
+ {
+ uint8_t(0xFF), // Hex
+ uint8_t(255), // Dec
+ uint8_t(0177), // Oct
+ };
+
+ uint8_t u8 = u8Const[index];
+}
+
+void typeCast8()
+{
+ i8vec2 i8v;
+ u8vec2 u8v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+ i32vec2 i32v;
+ u32vec2 u32v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ f16vec2 f16v;
+ f32vec2 f32v;
+ f64vec2 f64v;
+ bvec2 bv;
+
+ u8v = i8v; // int8_t -> uint8_t
+ i16v = i8v; // int8_t -> int16_t
+ i16v = u8v; // uint8_t -> int16_t
+ i32v = i8v; // int8_t -> int32_t
+ i32v = u8v; // uint8_t -> int32_t
+ u32v = i8v; // int8_t -> uint32_t
+ i64v = i8v; // int8_t -> int64_t
+ u64v = i8v; // int8_t -> uint64_t
+ u32v = u8v; // uint8_t -> uint32_t
+ i64v = u8v; // uint8_t -> int64_t
+ u64v = u8v; // uint8_t -> uint64_t
+ f16v = i8v; // int8_t -> float16_t
+ f32v = i8v; // int8_t -> float32_t
+ f64v = i8v; // int8_t -> float64_t
+ f16v = u8v; // uint8_t -> float16_t
+ f32v = u8v; // uint8_t -> float32_t
+ f64v = u8v; // uint8_t -> float64_t
+
+ i8v = i8vec2(u8v); // uint8_t -> int8_t
+ i16v = i16vec2(i8v); // int8_t -> int16_t
+ i16v = i16vec2(u8v); // uint8_t -> int16_t
+ i32v = i32vec2(i8v); // int8_t -> int32_t
+ i32v = i32vec2(u8v); // uint8_t -> int32_t
+ i64v = i64vec2(i8v); // int8_t -> int64_t
+ u64v = i64vec2(i8v); // int8_t -> uint64_t
+ u16v = u16vec2(i8v); // int8_t -> uint16_t
+ u16v = u16vec2(u8v); // uint8_t -> uint16_t
+ u32v = u32vec2(u8v); // uint8_t -> uint32_t
+ i64v = i64vec2(u8v); // uint8_t -> int64_t
+ u64v = i64vec2(u8v); // uint8_t -> uint64_t
+ f16v = f16vec2(i8v); // int8_t -> float16_t
+ f32v = f32vec2(i8v); // int8_t -> float32_t
+ f64v = f64vec2(i8v); // int8_t -> float64_t
+ f16v = f16vec2(u8v); // uint8_t -> float16_t
+ f32v = f32vec2(u8v); // uint8_t -> float32_t
+ f64v = f64vec2(u8v); // uint8_t -> float64_t
+
+ i8v = i8vec2(bv); // bool -> int8
+ u8v = u8vec2(bv); // bool -> uint8
+ bv = bvec2(i8v); // int8 -> bool
+ bv = bvec2(u8v); // uint8 -> bool
+}
+
+void operators()
+{
+ u8vec3 u8v;
+ int8_t i8;
+ uvec3 uv;
+ int32_t i;
+ int16_t i16;
+ bool b;
+
+ // Unary
+ u8v++;
+ i8--;
+ ++i8;
+ --u8v;
+
+ u8v = ~u8v;
+
+ i8 = +i8;
+ u8v = -u8v;
+
+ // Arithmetic
+ i8 += i8;
+ u8v -= u8v;
+ i *= i8;
+ uv /= u8v;
+ uv %= i8;
+
+ uv = u8v + uv;
+ i16 = i8 - i16;
+ uv = u8v * uv;
+ i16 = i8 * i16;
+ i = i8 % i;
+
+ // Shift
+ u8v <<= i8;
+ i8 >>= u8v.y;
+
+ i8 = i8 << u8v.z;
+ u8v = u8v << i8;
+
+ // Relational
+ b = (u8v.x != i8);
+ b = (i8 == u8v.x);
+ b = (u8v.x > uv.y);
+ b = (i8 < i);
+ b = (u8v.y >= uv.x);
+ b = (i8 <= i);
+
+ // Bitwise
+ uv |= i8;
+ i = i8 | i;
+ i16 &= i8;
+ uv = u8v & uv;
+ uv ^= i8;
+ u8v = u8v ^ i8;
+}
+
+void builtinFuncs()
+{
+ i8vec2 i8v;
+ i8vec4 i8v4;
+ u8vec3 u8v;
+ u8vec2 u8v2;
+ u8vec4 u8v4;
+ bvec3 bv;
+ int16_t i16;
+ int32_t i32;
+ uint16_t u16;
+ uint32_t u32;
+
+ int8_t i8;
+ uint8_t u8;
+
+ // abs()
+ i8v = abs(i8v);
+
+ // sign()
+ i8 = sign(i8);
+
+ // min()
+ i8v = min(i8v, i8);
+ i8v = min(i8v, i8vec2(-1));
+ u8v = min(u8v, u8);
+ u8v = min(u8v, u8vec3(0));
+
+ // max()
+ i8v = max(i8v, i8);
+ i8v = max(i8v, i8vec2(-1));
+ u8v = max(u8v, u8);
+ u8v = max(u8v, u8vec3(0));
+
+ // clamp()
+ i8v = clamp(i8v, -i8, i8);
+ i8v = clamp(i8v, -i8v, i8v);
+ u8v = clamp(u8v, -u8, u8);
+ u8v = clamp(u8v, -u8v, u8v);
+
+ // mix()
+ i8 = mix(i8v.x, i8v.y, true);
+ i8v = mix(i8vec2(i8), i8vec2(-i8), bvec2(false));
+ u8 = mix(u8v.x, u8v.y, true);
+ u8v = mix(u8vec3(u8), u8vec3(-u8), bvec3(false));
+
+ //pack
+ i16 = pack16(i8v);
+ i32 = pack32(i8v4);
+ u16 = pack16(u8v2);
+ u32 = pack32(u8v4);
+
+ i8v = unpack8(i16);
+ i8v4 = unpack8(i32);
+ u8v2 = unpack8(u16);
+ u8v4 = unpack8(u32);
+
+ // lessThan()
+ bv = lessThan(u8v, u8vec3(u8));
+ bv.xy = lessThan(i8v, i8vec2(i8));
+
+ // lessThanEqual()
+ bv = lessThanEqual(u8v, u8vec3(u8));
+ bv.xy = lessThanEqual(i8v, i8vec2(i8));
+
+ // greaterThan()
+ bv = greaterThan(u8v, u8vec3(u8));
+ bv.xy = greaterThan(i8v, i8vec2(i8));
+
+ // greaterThanEqual()
+ bv = greaterThanEqual(u8v, u8vec3(u8));
+ bv.xy = greaterThanEqual(i8v, i8vec2(i8));
+
+ // equal()
+ bv = equal(u8v, u8vec3(u8));
+ bv.xy = equal(i8v, i8vec2(i8));
+
+ // notEqual()
+ bv = notEqual(u8v, u8vec3(u8));
+ bv.xy = notEqual(i8v, i8vec2(i8));
+}
+
+// Type conversion for specialization constant
+layout(constant_id = 100) const int8_t si8 = int8_t(-10);
+layout(constant_id = 101) const uint8_t su8 = uint8_t(20);
diff --git a/Test/spv.subgroup.frag b/Test/spv.subgroup.frag
new file mode 100644
index 0000000..520052f
--- /dev/null
+++ b/Test/spv.subgroup.frag
@@ -0,0 +1,7 @@
+#version 450
+#extension GL_KHR_shader_subgroup_basic: enable
+layout(location = 0) out uvec4 data;
+void main (void)
+{
+ data = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
+}
diff --git a/Test/spv.subgroup.geom b/Test/spv.subgroup.geom
new file mode 100644
index 0000000..70e9dd4
--- /dev/null
+++ b/Test/spv.subgroup.geom
@@ -0,0 +1,13 @@
+#version 450
+#extension GL_KHR_shader_subgroup_basic: enable
+layout(points) in;
+layout(points, max_vertices = 1) out;
+layout(set = 0, binding = 0, std430) buffer Output
+{
+ uvec4 result[];
+};
+
+void main (void)
+{
+ result[gl_PrimitiveIDIn] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
+}
diff --git a/Test/spv.subgroup.tesc b/Test/spv.subgroup.tesc
new file mode 100644
index 0000000..63bf5e5
--- /dev/null
+++ b/Test/spv.subgroup.tesc
@@ -0,0 +1,12 @@
+#version 450
+#extension GL_KHR_shader_subgroup_basic: enable
+layout(vertices=1) out;
+layout(set = 0, binding = 0, std430) buffer Output
+{
+ uvec4 result[];
+};
+
+void main (void)
+{
+ result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
+}
diff --git a/Test/spv.subgroup.tese b/Test/spv.subgroup.tese
new file mode 100644
index 0000000..e504df7
--- /dev/null
+++ b/Test/spv.subgroup.tese
@@ -0,0 +1,12 @@
+#version 450
+#extension GL_KHR_shader_subgroup_basic: enable
+layout(isolines) in;
+layout(set = 0, binding = 0, std430) buffer Output
+{
+ uvec4 result[];
+};
+
+void main (void)
+{
+ result[gl_PrimitiveID] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
+}
diff --git a/Test/spv.subgroup.vert b/Test/spv.subgroup.vert
new file mode 100644
index 0000000..779b758
--- /dev/null
+++ b/Test/spv.subgroup.vert
@@ -0,0 +1,11 @@
+#version 450
+#extension GL_KHR_shader_subgroup_basic: enable
+layout(set = 0, binding = 0, std430) buffer Output
+{
+ uvec4 result[];
+};
+
+void main (void)
+{
+ result[gl_VertexIndex] = uvec4(gl_SubgroupSize, gl_SubgroupInvocationID, 0, 0);
+}
diff --git a/Test/spv.subgroupArithmetic.comp b/Test/spv.subgroupArithmetic.comp
new file mode 100644
index 0000000..6cc9337
--- /dev/null
+++ b/Test/spv.subgroupArithmetic.comp
@@ -0,0 +1,393 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_arithmetic: 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;
+
+ data[invocation].f4.x = subgroupAdd(data[0].f4.x);
+ data[invocation].f4.xy = subgroupAdd(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupAdd(data[2].f4.xyz);
+ data[invocation].f4 = subgroupAdd(data[3].f4);
+
+ data[invocation].i4.x = subgroupAdd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupAdd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupAdd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupAdd(data[3].i4);
+
+ data[invocation].u4.x = subgroupAdd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupAdd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupAdd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupAdd(data[3].u4);
+
+ data[invocation].d4.x = subgroupAdd(data[0].d4.x);
+ data[invocation].d4.xy = subgroupAdd(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupAdd(data[2].d4.xyz);
+ data[invocation].d4 = subgroupAdd(data[3].d4);
+
+ data[invocation].f4.x = subgroupMul(data[0].f4.x);
+ data[invocation].f4.xy = subgroupMul(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupMul(data[2].f4.xyz);
+ data[invocation].f4 = subgroupMul(data[3].f4);
+
+ data[invocation].i4.x = subgroupMul(data[0].i4.x);
+ data[invocation].i4.xy = subgroupMul(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupMul(data[2].i4.xyz);
+ data[invocation].i4 = subgroupMul(data[3].i4);
+
+ data[invocation].u4.x = subgroupMul(data[0].u4.x);
+ data[invocation].u4.xy = subgroupMul(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupMul(data[2].u4.xyz);
+ data[invocation].u4 = subgroupMul(data[3].u4);
+
+ data[invocation].d4.x = subgroupMul(data[0].d4.x);
+ data[invocation].d4.xy = subgroupMul(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupMul(data[2].d4.xyz);
+ data[invocation].d4 = subgroupMul(data[3].d4);
+
+ data[invocation].f4.x = subgroupMin(data[0].f4.x);
+ data[invocation].f4.xy = subgroupMin(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupMin(data[2].f4.xyz);
+ data[invocation].f4 = subgroupMin(data[3].f4);
+
+ data[invocation].i4.x = subgroupMin(data[0].i4.x);
+ data[invocation].i4.xy = subgroupMin(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupMin(data[2].i4.xyz);
+ data[invocation].i4 = subgroupMin(data[3].i4);
+
+ data[invocation].u4.x = subgroupMin(data[0].u4.x);
+ data[invocation].u4.xy = subgroupMin(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupMin(data[2].u4.xyz);
+ data[invocation].u4 = subgroupMin(data[3].u4);
+
+ data[invocation].d4.x = subgroupMin(data[0].d4.x);
+ data[invocation].d4.xy = subgroupMin(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupMin(data[2].d4.xyz);
+ data[invocation].d4 = subgroupMin(data[3].d4);
+
+ data[invocation].f4.x = subgroupMax(data[0].f4.x);
+ data[invocation].f4.xy = subgroupMax(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupMax(data[2].f4.xyz);
+ data[invocation].f4 = subgroupMax(data[3].f4);
+
+ data[invocation].i4.x = subgroupMax(data[0].i4.x);
+ data[invocation].i4.xy = subgroupMax(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupMax(data[2].i4.xyz);
+ data[invocation].i4 = subgroupMax(data[3].i4);
+
+ data[invocation].u4.x = subgroupMax(data[0].u4.x);
+ data[invocation].u4.xy = subgroupMax(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupMax(data[2].u4.xyz);
+ data[invocation].u4 = subgroupMax(data[3].u4);
+
+ data[invocation].d4.x = subgroupMax(data[0].d4.x);
+ data[invocation].d4.xy = subgroupMax(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupMax(data[2].d4.xyz);
+ data[invocation].d4 = subgroupMax(data[3].d4);
+
+ data[invocation].i4.x = subgroupAnd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupAnd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupAnd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupAnd(data[3].i4);
+
+ data[invocation].u4.x = subgroupAnd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupAnd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupAnd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupAnd(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupAnd(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupOr(data[0].i4.x);
+ data[invocation].i4.xy = subgroupOr(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupOr(data[2].i4.xyz);
+ data[invocation].i4 = subgroupOr(data[3].i4);
+
+ data[invocation].u4.x = subgroupOr(data[0].u4.x);
+ data[invocation].u4.xy = subgroupOr(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupOr(data[2].u4.xyz);
+ data[invocation].u4 = subgroupOr(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupOr(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupXor(data[0].i4.x);
+ data[invocation].i4.xy = subgroupXor(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupXor(data[2].i4.xyz);
+ data[invocation].i4 = subgroupXor(data[3].i4);
+
+ data[invocation].u4.x = subgroupXor(data[0].u4.x);
+ data[invocation].u4.xy = subgroupXor(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupXor(data[2].u4.xyz);
+ data[invocation].u4 = subgroupXor(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupXor(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].f4.x = subgroupInclusiveAdd(data[0].f4.x);
+ data[invocation].f4.xy = subgroupInclusiveAdd(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz);
+ data[invocation].f4 = subgroupInclusiveAdd(data[3].f4);
+
+ data[invocation].i4.x = subgroupInclusiveAdd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveAdd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveAdd(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveAdd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveAdd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveAdd(data[3].u4);
+
+ data[invocation].d4.x = subgroupInclusiveAdd(data[0].d4.x);
+ data[invocation].d4.xy = subgroupInclusiveAdd(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupInclusiveAdd(data[2].d4.xyz);
+ data[invocation].d4 = subgroupInclusiveAdd(data[3].d4);
+
+ data[invocation].f4.x = subgroupInclusiveMul(data[0].f4.x);
+ data[invocation].f4.xy = subgroupInclusiveMul(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz);
+ data[invocation].f4 = subgroupInclusiveMul(data[3].f4);
+
+ data[invocation].i4.x = subgroupInclusiveMul(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveMul(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveMul(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveMul(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveMul(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveMul(data[3].u4);
+
+ data[invocation].d4.x = subgroupInclusiveMul(data[0].d4.x);
+ data[invocation].d4.xy = subgroupInclusiveMul(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupInclusiveMul(data[2].d4.xyz);
+ data[invocation].d4 = subgroupInclusiveMul(data[3].d4);
+
+ data[invocation].f4.x = subgroupInclusiveMin(data[0].f4.x);
+ data[invocation].f4.xy = subgroupInclusiveMin(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz);
+ data[invocation].f4 = subgroupInclusiveMin(data[3].f4);
+
+ data[invocation].i4.x = subgroupInclusiveMin(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveMin(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveMin(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveMin(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveMin(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveMin(data[3].u4);
+
+ data[invocation].d4.x = subgroupInclusiveMin(data[0].d4.x);
+ data[invocation].d4.xy = subgroupInclusiveMin(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupInclusiveMin(data[2].d4.xyz);
+ data[invocation].d4 = subgroupInclusiveMin(data[3].d4);
+
+ data[invocation].f4.x = subgroupInclusiveMax(data[0].f4.x);
+ data[invocation].f4.xy = subgroupInclusiveMax(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz);
+ data[invocation].f4 = subgroupInclusiveMax(data[3].f4);
+
+ data[invocation].i4.x = subgroupInclusiveMax(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveMax(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveMax(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveMax(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveMax(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveMax(data[3].u4);
+
+ data[invocation].d4.x = subgroupInclusiveMax(data[0].d4.x);
+ data[invocation].d4.xy = subgroupInclusiveMax(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupInclusiveMax(data[2].d4.xyz);
+ data[invocation].d4 = subgroupInclusiveMax(data[3].d4);
+
+ data[invocation].i4.x = subgroupInclusiveAnd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveAnd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveAnd(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveAnd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveAnd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveAnd(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupInclusiveOr(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveOr(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveOr(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveOr(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveOr(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveOr(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupInclusiveXor(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveXor(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveXor(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveXor(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveXor(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveXor(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].f4.x = subgroupExclusiveAdd(data[0].f4.x);
+ data[invocation].f4.xy = subgroupExclusiveAdd(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz);
+ data[invocation].f4 = subgroupExclusiveAdd(data[3].f4);
+
+ data[invocation].i4.x = subgroupExclusiveAdd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveAdd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveAdd(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveAdd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveAdd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveAdd(data[3].u4);
+
+ data[invocation].d4.x = subgroupExclusiveAdd(data[0].d4.x);
+ data[invocation].d4.xy = subgroupExclusiveAdd(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupExclusiveAdd(data[2].d4.xyz);
+ data[invocation].d4 = subgroupExclusiveAdd(data[3].d4);
+
+ data[invocation].f4.x = subgroupExclusiveMul(data[0].f4.x);
+ data[invocation].f4.xy = subgroupExclusiveMul(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz);
+ data[invocation].f4 = subgroupExclusiveMul(data[3].f4);
+
+ data[invocation].i4.x = subgroupExclusiveMul(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveMul(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveMul(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveMul(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveMul(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveMul(data[3].u4);
+
+ data[invocation].d4.x = subgroupExclusiveMul(data[0].d4.x);
+ data[invocation].d4.xy = subgroupExclusiveMul(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupExclusiveMul(data[2].d4.xyz);
+ data[invocation].d4 = subgroupExclusiveMul(data[3].d4);
+
+ data[invocation].f4.x = subgroupExclusiveMin(data[0].f4.x);
+ data[invocation].f4.xy = subgroupExclusiveMin(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz);
+ data[invocation].f4 = subgroupExclusiveMin(data[3].f4);
+
+ data[invocation].i4.x = subgroupExclusiveMin(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveMin(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveMin(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveMin(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveMin(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveMin(data[3].u4);
+
+ data[invocation].d4.x = subgroupExclusiveMin(data[0].d4.x);
+ data[invocation].d4.xy = subgroupExclusiveMin(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupExclusiveMin(data[2].d4.xyz);
+ data[invocation].d4 = subgroupExclusiveMin(data[3].d4);
+
+ data[invocation].f4.x = subgroupExclusiveMax(data[0].f4.x);
+ data[invocation].f4.xy = subgroupExclusiveMax(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz);
+ data[invocation].f4 = subgroupExclusiveMax(data[3].f4);
+
+ data[invocation].i4.x = subgroupExclusiveMax(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveMax(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveMax(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveMax(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveMax(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveMax(data[3].u4);
+
+ data[invocation].d4.x = subgroupExclusiveMax(data[0].d4.x);
+ data[invocation].d4.xy = subgroupExclusiveMax(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupExclusiveMax(data[2].d4.xyz);
+ data[invocation].d4 = subgroupExclusiveMax(data[3].d4);
+
+ data[invocation].i4.x = subgroupExclusiveAnd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveAnd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveAnd(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveAnd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveAnd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveAnd(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupExclusiveOr(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveOr(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveOr(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveOr(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveOr(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveOr(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupExclusiveXor(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveXor(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveXor(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveXor(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveXor(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveXor(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0))));
+}
diff --git a/Test/spv.subgroupBallot.comp b/Test/spv.subgroupBallot.comp
new file mode 100644
index 0000000..2875468
--- /dev/null
+++ b/Test/spv.subgroupBallot.comp
@@ -0,0 +1,86 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_ballot: enable
+
+layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) 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 relMask = gl_SubgroupEqMask +
+ gl_SubgroupGeMask +
+ gl_SubgroupGtMask +
+ gl_SubgroupLeMask +
+ gl_SubgroupLtMask;
+
+ uvec4 result = subgroupBallot(true);
+
+ data[invocation].u4.x = subgroupBallotBitCount(result);
+ data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0;
+ data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
+ data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
+
+ if ((relMask == result) && subgroupInverseBallot(data[0].u4))
+ {
+ data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation);
+ data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, invocation);
+ data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, invocation);
+ data[invocation].f4 = subgroupBroadcast(data[3].f4, invocation);
+
+ data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, invocation);
+ data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, invocation);
+ data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, invocation);
+ data[invocation].i4 = subgroupBroadcast(data[3].i4, invocation);
+
+ data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, invocation);
+ data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, invocation);
+ data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, invocation);
+ data[invocation].u4 = subgroupBroadcast(data[3].u4, invocation);
+
+ data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, invocation);
+ data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, invocation);
+ data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, invocation);
+ data[invocation].d4 = subgroupBroadcast(data[3].d4, invocation);
+
+ data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, invocation));
+ data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), invocation));
+ data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
+ data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), invocation));
+ }
+ else
+ {
+ data[invocation].f4.x = subgroupBroadcastFirst(data[0].f4.x);
+ data[invocation].f4.xy = subgroupBroadcastFirst(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupBroadcastFirst(data[2].f4.xyz);
+ data[invocation].f4 = subgroupBroadcastFirst(data[3].f4);
+
+ data[invocation].i4.x = subgroupBroadcastFirst(data[0].i4.x);
+ data[invocation].i4.xy = subgroupBroadcastFirst(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupBroadcastFirst(data[2].i4.xyz);
+ data[invocation].i4 = subgroupBroadcastFirst(data[3].i4);
+
+ data[invocation].u4.x = subgroupBroadcastFirst(data[0].u4.x);
+ data[invocation].u4.xy = subgroupBroadcastFirst(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupBroadcastFirst(data[2].u4.xyz);
+ data[invocation].u4 = subgroupBroadcastFirst(data[3].u4);
+
+ data[invocation].d4.x = subgroupBroadcastFirst(data[0].d4.x);
+ data[invocation].d4.xy = subgroupBroadcastFirst(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupBroadcastFirst(data[2].d4.xyz);
+ data[invocation].d4 = subgroupBroadcastFirst(data[3].d4);
+
+ data[invocation].i4.x = int(subgroupBroadcastFirst(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupBroadcastFirst(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupBroadcastFirst(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupBroadcastFirst(lessThan(data[1].i4, ivec4(0))));
+ }
+}
diff --git a/Test/spv.subgroupBasic.comp b/Test/spv.subgroupBasic.comp
new file mode 100644
index 0000000..4801c10
--- /dev/null
+++ b/Test/spv.subgroupBasic.comp
@@ -0,0 +1,23 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_basic: enable
+
+layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
+
+layout(binding = 0) buffer Buffer
+{
+ int a[];
+} data;
+
+void main()
+{
+ data.a[gl_SubgroupSize] = 1;
+ data.a[gl_SubgroupInvocationID] = 1;
+ data.a[gl_NumSubgroups] = 1;
+ data.a[gl_SubgroupID] = (subgroupElect()) ? 1 : 0;
+ subgroupBarrier();
+ subgroupMemoryBarrier();
+ subgroupMemoryBarrierBuffer();
+ subgroupMemoryBarrierShared();
+ subgroupMemoryBarrierImage();
+}
diff --git a/Test/spv.subgroupClustered.comp b/Test/spv.subgroupClustered.comp
new file mode 100644
index 0000000..128a24c
--- /dev/null
+++ b/Test/spv.subgroupClustered.comp
@@ -0,0 +1,143 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_clustered: 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;
+
+ data[invocation].f4.x = subgroupClusteredAdd(data[0].f4.x, 1);
+ data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 1);
+ data[invocation].f4.xyz = subgroupClusteredAdd(data[2].f4.xyz, 1);
+ data[invocation].f4 = subgroupClusteredAdd(data[3].f4, 1);
+
+ data[invocation].i4.x = subgroupClusteredAdd(data[0].i4.x, 1);
+ data[invocation].i4.xy = subgroupClusteredAdd(data[1].i4.xy, 1);
+ data[invocation].i4.xyz = subgroupClusteredAdd(data[2].i4.xyz, 1);
+ data[invocation].i4 = subgroupClusteredAdd(data[3].i4, 1);
+
+ data[invocation].u4.x = subgroupClusteredAdd(data[0].u4.x, 1);
+ data[invocation].u4.xy = subgroupClusteredAdd(data[1].u4.xy, 1);
+ data[invocation].u4.xyz = subgroupClusteredAdd(data[2].u4.xyz, 1);
+ data[invocation].u4 = subgroupClusteredAdd(data[3].u4, 1);
+
+ data[invocation].d4.x = subgroupClusteredAdd(data[0].d4.x, 1);
+ data[invocation].d4.xy = subgroupClusteredAdd(data[1].d4.xy, 1);
+ data[invocation].d4.xyz = subgroupClusteredAdd(data[2].d4.xyz, 1);
+ data[invocation].d4 = subgroupClusteredAdd(data[3].d4, 1);
+
+ data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 1);
+ data[invocation].f4.xy = subgroupClusteredMul(data[1].f4.xy, 1);
+ data[invocation].f4.xyz = subgroupClusteredMul(data[2].f4.xyz, 1);
+ data[invocation].f4 = subgroupClusteredMul(data[3].f4, 1);
+
+ data[invocation].i4.x = subgroupClusteredMul(data[0].i4.x, 1);
+ data[invocation].i4.xy = subgroupClusteredMul(data[1].i4.xy, 1);
+ data[invocation].i4.xyz = subgroupClusteredMul(data[2].i4.xyz, 1);
+ data[invocation].i4 = subgroupClusteredMul(data[3].i4, 1);
+
+ data[invocation].u4.x = subgroupClusteredMul(data[0].u4.x, 1);
+ data[invocation].u4.xy = subgroupClusteredMul(data[1].u4.xy, 1);
+ data[invocation].u4.xyz = subgroupClusteredMul(data[2].u4.xyz, 1);
+ data[invocation].u4 = subgroupClusteredMul(data[3].u4, 1);
+
+ data[invocation].d4.x = subgroupClusteredMul(data[0].d4.x, 1);
+ data[invocation].d4.xy = subgroupClusteredMul(data[1].d4.xy, 1);
+ data[invocation].d4.xyz = subgroupClusteredMul(data[2].d4.xyz, 1);
+ data[invocation].d4 = subgroupClusteredMul(data[3].d4, 1);
+
+ data[invocation].f4.x = subgroupClusteredMin(data[0].f4.x, 1);
+ data[invocation].f4.xy = subgroupClusteredMin(data[1].f4.xy, 1);
+ data[invocation].f4.xyz = subgroupClusteredMin(data[2].f4.xyz, 1);
+ data[invocation].f4 = subgroupClusteredMin(data[3].f4, 1);
+
+ data[invocation].i4.x = subgroupClusteredMin(data[0].i4.x, 1);
+ data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 1);
+ data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 1);
+ data[invocation].i4 = subgroupClusteredMin(data[3].i4, 1);
+
+ data[invocation].u4.x = subgroupClusteredMin(data[0].u4.x, 1);
+ data[invocation].u4.xy = subgroupClusteredMin(data[1].u4.xy, 1);
+ data[invocation].u4.xyz = subgroupClusteredMin(data[2].u4.xyz, 1);
+ data[invocation].u4 = subgroupClusteredMin(data[3].u4, 1);
+
+ data[invocation].d4.x = subgroupClusteredMin(data[0].d4.x, 1);
+ data[invocation].d4.xy = subgroupClusteredMin(data[1].d4.xy, 1);
+ data[invocation].d4.xyz = subgroupClusteredMin(data[2].d4.xyz, 1);
+ data[invocation].d4 = subgroupClusteredMin(data[3].d4, 1);
+
+ data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, 1);
+ data[invocation].f4.xy = subgroupClusteredMax(data[1].f4.xy, 1);
+ data[invocation].f4.xyz = subgroupClusteredMax(data[2].f4.xyz, 1);
+ data[invocation].f4 = subgroupClusteredMax(data[3].f4, 1);
+
+ data[invocation].i4.x = subgroupClusteredMax(data[0].i4.x, 1);
+ data[invocation].i4.xy = subgroupClusteredMax(data[1].i4.xy, 1);
+ data[invocation].i4.xyz = subgroupClusteredMax(data[2].i4.xyz, 1);
+ data[invocation].i4 = subgroupClusteredMax(data[3].i4, 1);
+
+ data[invocation].u4.x = subgroupClusteredMax(data[0].u4.x, 1);
+ data[invocation].u4.xy = subgroupClusteredMax(data[1].u4.xy, 1);
+ data[invocation].u4.xyz = subgroupClusteredMax(data[2].u4.xyz, 1);
+ data[invocation].u4 = subgroupClusteredMax(data[3].u4, 1);
+
+ data[invocation].d4.x = subgroupClusteredMax(data[0].d4.x, 1);
+ data[invocation].d4.xy = subgroupClusteredMax(data[1].d4.xy, 1);
+ data[invocation].d4.xyz = subgroupClusteredMax(data[2].d4.xyz, 1);
+ data[invocation].d4 = subgroupClusteredMax(data[3].d4, 1);
+
+ data[invocation].i4.x = subgroupClusteredAnd(data[0].i4.x, 1);
+ data[invocation].i4.xy = subgroupClusteredAnd(data[1].i4.xy, 1);
+ data[invocation].i4.xyz = subgroupClusteredAnd(data[2].i4.xyz, 1);
+ data[invocation].i4 = subgroupClusteredAnd(data[3].i4, 1);
+
+ data[invocation].u4.x = subgroupClusteredAnd(data[0].u4.x, 1);
+ data[invocation].u4.xy = subgroupClusteredAnd(data[1].u4.xy, 1);
+ data[invocation].u4.xyz = subgroupClusteredAnd(data[2].u4.xyz, 1);
+ data[invocation].u4 = subgroupClusteredAnd(data[3].u4, 1);
+
+ data[invocation].i4.x = int(subgroupClusteredAnd(data[0].i4.x < 0, 1));
+ data[invocation].i4.xy = ivec2(subgroupClusteredAnd(lessThan(data[1].i4.xy, ivec2(0)), 1));
+ data[invocation].i4.xyz = ivec3(subgroupClusteredAnd(lessThan(data[1].i4.xyz, ivec3(0)), 1));
+ data[invocation].i4 = ivec4(subgroupClusteredAnd(lessThan(data[1].i4, ivec4(0)), 1));
+
+ data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, 1);
+ data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, 1);
+ data[invocation].i4.xyz = subgroupClusteredOr(data[2].i4.xyz, 1);
+ data[invocation].i4 = subgroupClusteredOr(data[3].i4, 1);
+
+ data[invocation].u4.x = subgroupClusteredOr(data[0].u4.x, 1);
+ data[invocation].u4.xy = subgroupClusteredOr(data[1].u4.xy, 1);
+ data[invocation].u4.xyz = subgroupClusteredOr(data[2].u4.xyz, 1);
+ data[invocation].u4 = subgroupClusteredOr(data[3].u4, 1);
+
+ data[invocation].i4.x = int(subgroupClusteredOr(data[0].i4.x < 0, 1));
+ data[invocation].i4.xy = ivec2(subgroupClusteredOr(lessThan(data[1].i4.xy, ivec2(0)), 1));
+ data[invocation].i4.xyz = ivec3(subgroupClusteredOr(lessThan(data[1].i4.xyz, ivec3(0)), 1));
+ data[invocation].i4 = ivec4(subgroupClusteredOr(lessThan(data[1].i4, ivec4(0)), 1));
+
+ data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1);
+ data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, 1);
+ data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1);
+ data[invocation].i4 = subgroupClusteredXor(data[3].i4, 1);
+
+ data[invocation].u4.x = subgroupClusteredXor(data[0].u4.x, 1);
+ data[invocation].u4.xy = subgroupClusteredXor(data[1].u4.xy, 1);
+ data[invocation].u4.xyz = subgroupClusteredXor(data[2].u4.xyz, 1);
+ data[invocation].u4 = subgroupClusteredXor(data[3].u4, 1);
+
+ data[invocation].i4.x = int(subgroupClusteredXor(data[0].i4.x < 0, 1));
+ data[invocation].i4.xy = ivec2(subgroupClusteredXor(lessThan(data[1].i4.xy, ivec2(0)), 1));
+ data[invocation].i4.xyz = ivec3(subgroupClusteredXor(lessThan(data[1].i4.xyz, ivec3(0)), 1));
+ data[invocation].i4 = ivec4(subgroupClusteredXor(lessThan(data[1].i4, ivec4(0)), 1));
+}
diff --git a/Test/spv.subgroupClusteredNeg.comp b/Test/spv.subgroupClusteredNeg.comp
new file mode 100644
index 0000000..ec15413
--- /dev/null
+++ b/Test/spv.subgroupClusteredNeg.comp
@@ -0,0 +1,39 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_clustered: enable
+
+layout (local_size_x = 8) in;
+
+layout(binding = 0) buffer Buffers
+{
+ vec4 f4;
+ ivec4 i4;
+ uvec4 u4;
+ dvec4 d4;
+} data[4];
+
+void main()
+{
+ int a = 1;
+ const int aConst = 1;
+
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ data[invocation].f4.xy = subgroupClusteredAdd(data[1].f4.xy, 0); // ERROR, less than 1
+
+ data[invocation].f4.x = subgroupClusteredMul(data[0].f4.x, 3); // ERROR, not a power of 2
+
+ data[invocation].i4.xy = subgroupClusteredMin(data[1].i4.xy, 8);
+ data[invocation].i4.xyz = subgroupClusteredMin(data[2].i4.xyz, 6); // ERROR, not a power of 2
+
+ data[invocation].f4.x = subgroupClusteredMax(data[0].f4.x, -1); // ERROR, less than 1
+
+ data[invocation].i4 = subgroupClusteredAnd(data[3].i4, -3); // ERROR, less than 1
+
+ data[invocation].i4.x = subgroupClusteredOr(data[0].i4.x, a); // ERROR, not constant
+ data[invocation].i4.xy = subgroupClusteredOr(data[1].i4.xy, aConst);
+
+ data[invocation].i4.x = subgroupClusteredXor(data[0].i4.x, 1 + a); // ERROR, not constant
+ data[invocation].i4.xy = subgroupClusteredXor(data[1].i4.xy, aConst + a); // ERROR, not constant
+ data[invocation].i4.xyz = subgroupClusteredXor(data[2].i4.xyz, 1 + aConst);
+}
diff --git a/Test/spv.subgroupQuad.comp b/Test/spv.subgroupQuad.comp
new file mode 100644
index 0000000..223a7cd
--- /dev/null
+++ b/Test/spv.subgroupQuad.comp
@@ -0,0 +1,118 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_quad: 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;
+
+ data[invocation].f4.x = subgroupQuadBroadcast(data[0].f4.x, 1);
+ data[invocation].f4.xy = subgroupQuadBroadcast(data[1].f4.xy, 1);
+ data[invocation].f4.xyz = subgroupQuadBroadcast(data[2].f4.xyz, 1);
+ data[invocation].f4 = subgroupQuadBroadcast(data[3].f4, 1);
+
+ data[invocation].i4.x = subgroupQuadBroadcast(data[0].i4.x, 1);
+ data[invocation].i4.xy = subgroupQuadBroadcast(data[1].i4.xy, 1);
+ data[invocation].i4.xyz = subgroupQuadBroadcast(data[2].i4.xyz, 1);
+ data[invocation].i4 = subgroupQuadBroadcast(data[3].i4, 1);
+
+ data[invocation].u4.x = subgroupQuadBroadcast(data[0].u4.x, 1);
+ data[invocation].u4.xy = subgroupQuadBroadcast(data[1].u4.xy, 1);
+ data[invocation].u4.xyz = subgroupQuadBroadcast(data[2].u4.xyz, 1);
+ data[invocation].u4 = subgroupQuadBroadcast(data[3].u4, 1);
+
+ data[invocation].d4.x = subgroupQuadBroadcast(data[0].d4.x, 1);
+ data[invocation].d4.xy = subgroupQuadBroadcast(data[1].d4.xy, 1);
+ data[invocation].d4.xyz = subgroupQuadBroadcast(data[2].d4.xyz, 1);
+ data[invocation].d4 = subgroupQuadBroadcast(data[3].d4, 1);
+
+ data[invocation].i4.x = int(subgroupQuadBroadcast(data[0].i4.x < 0, 1));
+ data[invocation].i4.xy = ivec2(subgroupQuadBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1));
+ data[invocation].i4.xyz = ivec3(subgroupQuadBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1));
+ data[invocation].i4 = ivec4(subgroupQuadBroadcast(lessThan(data[1].i4, ivec4(0)), 1));
+
+ data[invocation].f4.x = subgroupQuadSwapHorizontal(data[0].f4.x);
+ data[invocation].f4.xy = subgroupQuadSwapHorizontal(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupQuadSwapHorizontal(data[2].f4.xyz);
+ data[invocation].f4 = subgroupQuadSwapHorizontal(data[3].f4);
+
+ data[invocation].i4.x = subgroupQuadSwapHorizontal(data[0].i4.x);
+ data[invocation].i4.xy = subgroupQuadSwapHorizontal(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupQuadSwapHorizontal(data[2].i4.xyz);
+ data[invocation].i4 = subgroupQuadSwapHorizontal(data[3].i4);
+
+ data[invocation].u4.x = subgroupQuadSwapHorizontal(data[0].u4.x);
+ data[invocation].u4.xy = subgroupQuadSwapHorizontal(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupQuadSwapHorizontal(data[2].u4.xyz);
+ data[invocation].u4 = subgroupQuadSwapHorizontal(data[3].u4);
+
+ data[invocation].d4.x = subgroupQuadSwapHorizontal(data[0].d4.x);
+ data[invocation].d4.xy = subgroupQuadSwapHorizontal(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupQuadSwapHorizontal(data[2].d4.xyz);
+ data[invocation].d4 = subgroupQuadSwapHorizontal(data[3].d4);
+
+ data[invocation].i4.x = int(subgroupQuadSwapHorizontal(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupQuadSwapHorizontal(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupQuadSwapHorizontal(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].f4.x = subgroupQuadSwapVertical(data[0].f4.x);
+ data[invocation].f4.xy = subgroupQuadSwapVertical(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupQuadSwapVertical(data[2].f4.xyz);
+ data[invocation].f4 = subgroupQuadSwapVertical(data[3].f4);
+
+ data[invocation].i4.x = subgroupQuadSwapVertical(data[0].i4.x);
+ data[invocation].i4.xy = subgroupQuadSwapVertical(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupQuadSwapVertical(data[2].i4.xyz);
+ data[invocation].i4 = subgroupQuadSwapVertical(data[3].i4);
+
+ data[invocation].u4.x = subgroupQuadSwapVertical(data[0].u4.x);
+ data[invocation].u4.xy = subgroupQuadSwapVertical(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupQuadSwapVertical(data[2].u4.xyz);
+ data[invocation].u4 = subgroupQuadSwapVertical(data[3].u4);
+
+ data[invocation].d4.x = subgroupQuadSwapVertical(data[0].d4.x);
+ data[invocation].d4.xy = subgroupQuadSwapVertical(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupQuadSwapVertical(data[2].d4.xyz);
+ data[invocation].d4 = subgroupQuadSwapVertical(data[3].d4);
+
+ data[invocation].i4.x = int(subgroupQuadSwapVertical(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupQuadSwapVertical(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupQuadSwapVertical(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupQuadSwapVertical(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].f4.x = subgroupQuadSwapDiagonal(data[0].f4.x);
+ data[invocation].f4.xy = subgroupQuadSwapDiagonal(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupQuadSwapDiagonal(data[2].f4.xyz);
+ data[invocation].f4 = subgroupQuadSwapDiagonal(data[3].f4);
+
+ data[invocation].i4.x = subgroupQuadSwapDiagonal(data[0].i4.x);
+ data[invocation].i4.xy = subgroupQuadSwapDiagonal(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupQuadSwapDiagonal(data[2].i4.xyz);
+ data[invocation].i4 = subgroupQuadSwapDiagonal(data[3].i4);
+
+ data[invocation].u4.x = subgroupQuadSwapDiagonal(data[0].u4.x);
+ data[invocation].u4.xy = subgroupQuadSwapDiagonal(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupQuadSwapDiagonal(data[2].u4.xyz);
+ data[invocation].u4 = subgroupQuadSwapDiagonal(data[3].u4);
+
+ data[invocation].d4.x = subgroupQuadSwapDiagonal(data[0].d4.x);
+ data[invocation].d4.xy = subgroupQuadSwapDiagonal(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupQuadSwapDiagonal(data[2].d4.xyz);
+ data[invocation].d4 = subgroupQuadSwapDiagonal(data[3].d4);
+
+ data[invocation].i4.x = int(subgroupQuadSwapDiagonal(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupQuadSwapDiagonal(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupQuadSwapDiagonal(lessThan(data[1].i4, ivec4(0))));
+}
diff --git a/Test/spv.subgroupShuffle.comp b/Test/spv.subgroupShuffle.comp
new file mode 100644
index 0000000..6d26488
--- /dev/null
+++ b/Test/spv.subgroupShuffle.comp
@@ -0,0 +1,68 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_shuffle: enable
+
+layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) 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;
+
+ data[invocation].f4.x = subgroupShuffle(data[0].f4.x, invocation);
+ data[invocation].f4.xy = subgroupShuffle(data[1].f4.xy, invocation);
+ data[invocation].f4.xyz = subgroupShuffle(data[2].f4.xyz, invocation);
+ data[invocation].f4 = subgroupShuffle(data[3].f4, invocation);
+
+ data[invocation].i4.x = subgroupShuffle(data[0].i4.x, invocation);
+ data[invocation].i4.xy = subgroupShuffle(data[1].i4.xy, invocation);
+ data[invocation].i4.xyz = subgroupShuffle(data[2].i4.xyz, invocation);
+ data[invocation].i4 = subgroupShuffle(data[3].i4, invocation);
+
+ data[invocation].u4.x = subgroupShuffle(data[0].u4.x, invocation);
+ data[invocation].u4.xy = subgroupShuffle(data[1].u4.xy, invocation);
+ data[invocation].u4.xyz = subgroupShuffle(data[2].u4.xyz, invocation);
+ data[invocation].u4 = subgroupShuffle(data[3].u4, invocation);
+
+ data[invocation].d4.x = subgroupShuffle(data[0].d4.x, invocation);
+ data[invocation].d4.xy = subgroupShuffle(data[1].d4.xy, invocation);
+ data[invocation].d4.xyz = subgroupShuffle(data[2].d4.xyz, invocation);
+ data[invocation].d4 = subgroupShuffle(data[3].d4, invocation);
+
+ data[invocation].i4.x = int(subgroupShuffle(data[0].i4.x < 0, invocation));
+ data[invocation].i4.xy = ivec2(subgroupShuffle(lessThan(data[1].i4.xy, ivec2(0)), invocation));
+ data[invocation].i4.xyz = ivec3(subgroupShuffle(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
+ data[invocation].i4 = ivec4(subgroupShuffle(lessThan(data[1].i4, ivec4(0)), invocation));
+
+ data[invocation].f4.x = subgroupShuffleXor(data[0].f4.x, invocation);
+ data[invocation].f4.xy = subgroupShuffleXor(data[1].f4.xy, invocation);
+ data[invocation].f4.xyz = subgroupShuffleXor(data[2].f4.xyz, invocation);
+ data[invocation].f4 = subgroupShuffleXor(data[3].f4, invocation);
+
+ data[invocation].i4.x = subgroupShuffleXor(data[0].i4.x, invocation);
+ data[invocation].i4.xy = subgroupShuffleXor(data[1].i4.xy, invocation);
+ data[invocation].i4.xyz = subgroupShuffleXor(data[2].i4.xyz, invocation);
+ data[invocation].i4 = subgroupShuffleXor(data[3].i4, invocation);
+
+ data[invocation].u4.x = subgroupShuffleXor(data[0].u4.x, invocation);
+ data[invocation].u4.xy = subgroupShuffleXor(data[1].u4.xy, invocation);
+ data[invocation].u4.xyz = subgroupShuffleXor(data[2].u4.xyz, invocation);
+ data[invocation].u4 = subgroupShuffleXor(data[3].u4, invocation);
+
+ data[invocation].d4.x = subgroupShuffleXor(data[0].d4.x, invocation);
+ data[invocation].d4.xy = subgroupShuffleXor(data[1].d4.xy, invocation);
+ data[invocation].d4.xyz = subgroupShuffleXor(data[2].d4.xyz, invocation);
+ data[invocation].d4 = subgroupShuffleXor(data[3].d4, invocation);
+
+ data[invocation].i4.x = int(subgroupShuffleXor(data[0].i4.x < 0, invocation));
+ data[invocation].i4.xy = ivec2(subgroupShuffleXor(lessThan(data[1].i4.xy, ivec2(0)), invocation));
+ data[invocation].i4.xyz = ivec3(subgroupShuffleXor(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
+ data[invocation].i4 = ivec4(subgroupShuffleXor(lessThan(data[1].i4, ivec4(0)), invocation));
+}
diff --git a/Test/spv.subgroupShuffleRelative.comp b/Test/spv.subgroupShuffleRelative.comp
new file mode 100644
index 0000000..1864de1
--- /dev/null
+++ b/Test/spv.subgroupShuffleRelative.comp
@@ -0,0 +1,68 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_shuffle_relative: enable
+
+layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) 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;
+
+ data[invocation].f4.x = subgroupShuffleUp(data[0].f4.x, invocation);
+ data[invocation].f4.xy = subgroupShuffleUp(data[1].f4.xy, invocation);
+ data[invocation].f4.xyz = subgroupShuffleUp(data[2].f4.xyz, invocation);
+ data[invocation].f4 = subgroupShuffleUp(data[3].f4, invocation);
+
+ data[invocation].i4.x = subgroupShuffleUp(data[0].i4.x, invocation);
+ data[invocation].i4.xy = subgroupShuffleUp(data[1].i4.xy, invocation);
+ data[invocation].i4.xyz = subgroupShuffleUp(data[2].i4.xyz, invocation);
+ data[invocation].i4 = subgroupShuffleUp(data[3].i4, invocation);
+
+ data[invocation].u4.x = subgroupShuffleUp(data[0].u4.x, invocation);
+ data[invocation].u4.xy = subgroupShuffleUp(data[1].u4.xy, invocation);
+ data[invocation].u4.xyz = subgroupShuffleUp(data[2].u4.xyz, invocation);
+ data[invocation].u4 = subgroupShuffleUp(data[3].u4, invocation);
+
+ data[invocation].d4.x = subgroupShuffleUp(data[0].d4.x, invocation);
+ data[invocation].d4.xy = subgroupShuffleUp(data[1].d4.xy, invocation);
+ data[invocation].d4.xyz = subgroupShuffleUp(data[2].d4.xyz, invocation);
+ data[invocation].d4 = subgroupShuffleUp(data[3].d4, invocation);
+
+ data[invocation].i4.x = int(subgroupShuffleUp(data[0].i4.x < 0, invocation));
+ data[invocation].i4.xy = ivec2(subgroupShuffleUp(lessThan(data[1].i4.xy, ivec2(0)), invocation));
+ data[invocation].i4.xyz = ivec3(subgroupShuffleUp(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
+ data[invocation].i4 = ivec4(subgroupShuffleUp(lessThan(data[1].i4, ivec4(0)), invocation));
+
+ data[invocation].f4.x = subgroupShuffleDown(data[0].f4.x, invocation);
+ data[invocation].f4.xy = subgroupShuffleDown(data[1].f4.xy, invocation);
+ data[invocation].f4.xyz = subgroupShuffleDown(data[2].f4.xyz, invocation);
+ data[invocation].f4 = subgroupShuffleDown(data[3].f4, invocation);
+
+ data[invocation].i4.x = subgroupShuffleDown(data[0].i4.x, invocation);
+ data[invocation].i4.xy = subgroupShuffleDown(data[1].i4.xy, invocation);
+ data[invocation].i4.xyz = subgroupShuffleDown(data[2].i4.xyz, invocation);
+ data[invocation].i4 = subgroupShuffleDown(data[3].i4, invocation);
+
+ data[invocation].u4.x = subgroupShuffleDown(data[0].u4.x, invocation);
+ data[invocation].u4.xy = subgroupShuffleDown(data[1].u4.xy, invocation);
+ data[invocation].u4.xyz = subgroupShuffleDown(data[2].u4.xyz, invocation);
+ data[invocation].u4 = subgroupShuffleDown(data[3].u4, invocation);
+
+ data[invocation].d4.x = subgroupShuffleDown(data[0].d4.x, invocation);
+ data[invocation].d4.xy = subgroupShuffleDown(data[1].d4.xy, invocation);
+ data[invocation].d4.xyz = subgroupShuffleDown(data[2].d4.xyz, invocation);
+ data[invocation].d4 = subgroupShuffleDown(data[3].d4, invocation);
+
+ data[invocation].i4.x = int(subgroupShuffleDown(data[0].i4.x < 0, invocation));
+ data[invocation].i4.xy = ivec2(subgroupShuffleDown(lessThan(data[1].i4.xy, ivec2(0)), invocation));
+ data[invocation].i4.xyz = ivec3(subgroupShuffleDown(lessThan(data[1].i4.xyz, ivec3(0)), invocation));
+ data[invocation].i4 = ivec4(subgroupShuffleDown(lessThan(data[1].i4, ivec4(0)), invocation));
+}
diff --git a/Test/spv.subgroupVote.comp b/Test/spv.subgroupVote.comp
new file mode 100644
index 0000000..c1c877a
--- /dev/null
+++ b/Test/spv.subgroupVote.comp
@@ -0,0 +1,49 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_vote: enable
+
+layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
+
+layout(binding = 0) buffer Buffers
+{
+ vec4 f4;
+ ivec4 i4;
+ uvec4 u4;
+ dvec4 d4;
+ int r;
+} data[4];
+
+void main()
+{
+ uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
+
+ if (subgroupAll(data[invocation].r < 0))
+ {
+ data[invocation].r = int(subgroupAllEqual(data[0].f4.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].f4.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].f4.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].f4));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].i4.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].i4.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].i4.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].i4));
+
+ data[invocation].r = int(subgroupAllEqual(data[0].u4.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].u4.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].u4.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].u4));
+ }
+ else if (subgroupAny(data[invocation].r < 0))
+ {
+ data[invocation].r = int(subgroupAllEqual(data[0].d4.x));
+ data[invocation].r = int(subgroupAllEqual(data[1].d4.xy));
+ data[invocation].r = int(subgroupAllEqual(data[2].d4.xyz));
+ data[invocation].r = int(subgroupAllEqual(data[3].d4));
+
+ data[invocation].r = int(int(subgroupAllEqual(data[0].i4.x < 0)));
+ data[invocation].r = int(ivec2(subgroupAllEqual(lessThan(data[1].i4.xy, ivec2(0)))));
+ data[invocation].r = int(ivec3(subgroupAllEqual(lessThan(data[1].i4.xyz, ivec3(0)))));
+ data[invocation].r = int(ivec4(subgroupAllEqual(lessThan(data[1].i4, ivec4(0)))));
+ }
+}
diff --git a/Test/spv.vulkan100.subgroupArithmetic.comp b/Test/spv.vulkan100.subgroupArithmetic.comp
new file mode 100644
index 0000000..6cc9337
--- /dev/null
+++ b/Test/spv.vulkan100.subgroupArithmetic.comp
@@ -0,0 +1,393 @@
+#version 450
+
+#extension GL_KHR_shader_subgroup_arithmetic: 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;
+
+ data[invocation].f4.x = subgroupAdd(data[0].f4.x);
+ data[invocation].f4.xy = subgroupAdd(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupAdd(data[2].f4.xyz);
+ data[invocation].f4 = subgroupAdd(data[3].f4);
+
+ data[invocation].i4.x = subgroupAdd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupAdd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupAdd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupAdd(data[3].i4);
+
+ data[invocation].u4.x = subgroupAdd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupAdd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupAdd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupAdd(data[3].u4);
+
+ data[invocation].d4.x = subgroupAdd(data[0].d4.x);
+ data[invocation].d4.xy = subgroupAdd(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupAdd(data[2].d4.xyz);
+ data[invocation].d4 = subgroupAdd(data[3].d4);
+
+ data[invocation].f4.x = subgroupMul(data[0].f4.x);
+ data[invocation].f4.xy = subgroupMul(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupMul(data[2].f4.xyz);
+ data[invocation].f4 = subgroupMul(data[3].f4);
+
+ data[invocation].i4.x = subgroupMul(data[0].i4.x);
+ data[invocation].i4.xy = subgroupMul(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupMul(data[2].i4.xyz);
+ data[invocation].i4 = subgroupMul(data[3].i4);
+
+ data[invocation].u4.x = subgroupMul(data[0].u4.x);
+ data[invocation].u4.xy = subgroupMul(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupMul(data[2].u4.xyz);
+ data[invocation].u4 = subgroupMul(data[3].u4);
+
+ data[invocation].d4.x = subgroupMul(data[0].d4.x);
+ data[invocation].d4.xy = subgroupMul(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupMul(data[2].d4.xyz);
+ data[invocation].d4 = subgroupMul(data[3].d4);
+
+ data[invocation].f4.x = subgroupMin(data[0].f4.x);
+ data[invocation].f4.xy = subgroupMin(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupMin(data[2].f4.xyz);
+ data[invocation].f4 = subgroupMin(data[3].f4);
+
+ data[invocation].i4.x = subgroupMin(data[0].i4.x);
+ data[invocation].i4.xy = subgroupMin(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupMin(data[2].i4.xyz);
+ data[invocation].i4 = subgroupMin(data[3].i4);
+
+ data[invocation].u4.x = subgroupMin(data[0].u4.x);
+ data[invocation].u4.xy = subgroupMin(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupMin(data[2].u4.xyz);
+ data[invocation].u4 = subgroupMin(data[3].u4);
+
+ data[invocation].d4.x = subgroupMin(data[0].d4.x);
+ data[invocation].d4.xy = subgroupMin(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupMin(data[2].d4.xyz);
+ data[invocation].d4 = subgroupMin(data[3].d4);
+
+ data[invocation].f4.x = subgroupMax(data[0].f4.x);
+ data[invocation].f4.xy = subgroupMax(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupMax(data[2].f4.xyz);
+ data[invocation].f4 = subgroupMax(data[3].f4);
+
+ data[invocation].i4.x = subgroupMax(data[0].i4.x);
+ data[invocation].i4.xy = subgroupMax(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupMax(data[2].i4.xyz);
+ data[invocation].i4 = subgroupMax(data[3].i4);
+
+ data[invocation].u4.x = subgroupMax(data[0].u4.x);
+ data[invocation].u4.xy = subgroupMax(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupMax(data[2].u4.xyz);
+ data[invocation].u4 = subgroupMax(data[3].u4);
+
+ data[invocation].d4.x = subgroupMax(data[0].d4.x);
+ data[invocation].d4.xy = subgroupMax(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupMax(data[2].d4.xyz);
+ data[invocation].d4 = subgroupMax(data[3].d4);
+
+ data[invocation].i4.x = subgroupAnd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupAnd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupAnd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupAnd(data[3].i4);
+
+ data[invocation].u4.x = subgroupAnd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupAnd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupAnd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupAnd(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupAnd(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupAnd(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupAnd(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupAnd(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupOr(data[0].i4.x);
+ data[invocation].i4.xy = subgroupOr(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupOr(data[2].i4.xyz);
+ data[invocation].i4 = subgroupOr(data[3].i4);
+
+ data[invocation].u4.x = subgroupOr(data[0].u4.x);
+ data[invocation].u4.xy = subgroupOr(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupOr(data[2].u4.xyz);
+ data[invocation].u4 = subgroupOr(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupOr(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupOr(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupOr(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupOr(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupXor(data[0].i4.x);
+ data[invocation].i4.xy = subgroupXor(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupXor(data[2].i4.xyz);
+ data[invocation].i4 = subgroupXor(data[3].i4);
+
+ data[invocation].u4.x = subgroupXor(data[0].u4.x);
+ data[invocation].u4.xy = subgroupXor(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupXor(data[2].u4.xyz);
+ data[invocation].u4 = subgroupXor(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupXor(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupXor(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupXor(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupXor(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].f4.x = subgroupInclusiveAdd(data[0].f4.x);
+ data[invocation].f4.xy = subgroupInclusiveAdd(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupInclusiveAdd(data[2].f4.xyz);
+ data[invocation].f4 = subgroupInclusiveAdd(data[3].f4);
+
+ data[invocation].i4.x = subgroupInclusiveAdd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveAdd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveAdd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveAdd(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveAdd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveAdd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveAdd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveAdd(data[3].u4);
+
+ data[invocation].d4.x = subgroupInclusiveAdd(data[0].d4.x);
+ data[invocation].d4.xy = subgroupInclusiveAdd(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupInclusiveAdd(data[2].d4.xyz);
+ data[invocation].d4 = subgroupInclusiveAdd(data[3].d4);
+
+ data[invocation].f4.x = subgroupInclusiveMul(data[0].f4.x);
+ data[invocation].f4.xy = subgroupInclusiveMul(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupInclusiveMul(data[2].f4.xyz);
+ data[invocation].f4 = subgroupInclusiveMul(data[3].f4);
+
+ data[invocation].i4.x = subgroupInclusiveMul(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveMul(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveMul(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveMul(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveMul(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveMul(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveMul(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveMul(data[3].u4);
+
+ data[invocation].d4.x = subgroupInclusiveMul(data[0].d4.x);
+ data[invocation].d4.xy = subgroupInclusiveMul(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupInclusiveMul(data[2].d4.xyz);
+ data[invocation].d4 = subgroupInclusiveMul(data[3].d4);
+
+ data[invocation].f4.x = subgroupInclusiveMin(data[0].f4.x);
+ data[invocation].f4.xy = subgroupInclusiveMin(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupInclusiveMin(data[2].f4.xyz);
+ data[invocation].f4 = subgroupInclusiveMin(data[3].f4);
+
+ data[invocation].i4.x = subgroupInclusiveMin(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveMin(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveMin(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveMin(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveMin(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveMin(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveMin(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveMin(data[3].u4);
+
+ data[invocation].d4.x = subgroupInclusiveMin(data[0].d4.x);
+ data[invocation].d4.xy = subgroupInclusiveMin(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupInclusiveMin(data[2].d4.xyz);
+ data[invocation].d4 = subgroupInclusiveMin(data[3].d4);
+
+ data[invocation].f4.x = subgroupInclusiveMax(data[0].f4.x);
+ data[invocation].f4.xy = subgroupInclusiveMax(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupInclusiveMax(data[2].f4.xyz);
+ data[invocation].f4 = subgroupInclusiveMax(data[3].f4);
+
+ data[invocation].i4.x = subgroupInclusiveMax(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveMax(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveMax(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveMax(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveMax(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveMax(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveMax(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveMax(data[3].u4);
+
+ data[invocation].d4.x = subgroupInclusiveMax(data[0].d4.x);
+ data[invocation].d4.xy = subgroupInclusiveMax(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupInclusiveMax(data[2].d4.xyz);
+ data[invocation].d4 = subgroupInclusiveMax(data[3].d4);
+
+ data[invocation].i4.x = subgroupInclusiveAnd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveAnd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveAnd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveAnd(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveAnd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveAnd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveAnd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveAnd(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupInclusiveAnd(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupInclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupInclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupInclusiveAnd(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupInclusiveOr(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveOr(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveOr(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveOr(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveOr(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveOr(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveOr(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveOr(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupInclusiveOr(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupInclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupInclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupInclusiveOr(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupInclusiveXor(data[0].i4.x);
+ data[invocation].i4.xy = subgroupInclusiveXor(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupInclusiveXor(data[2].i4.xyz);
+ data[invocation].i4 = subgroupInclusiveXor(data[3].i4);
+
+ data[invocation].u4.x = subgroupInclusiveXor(data[0].u4.x);
+ data[invocation].u4.xy = subgroupInclusiveXor(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupInclusiveXor(data[2].u4.xyz);
+ data[invocation].u4 = subgroupInclusiveXor(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupInclusiveXor(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupInclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupInclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupInclusiveXor(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].f4.x = subgroupExclusiveAdd(data[0].f4.x);
+ data[invocation].f4.xy = subgroupExclusiveAdd(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupExclusiveAdd(data[2].f4.xyz);
+ data[invocation].f4 = subgroupExclusiveAdd(data[3].f4);
+
+ data[invocation].i4.x = subgroupExclusiveAdd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveAdd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveAdd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveAdd(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveAdd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveAdd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveAdd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveAdd(data[3].u4);
+
+ data[invocation].d4.x = subgroupExclusiveAdd(data[0].d4.x);
+ data[invocation].d4.xy = subgroupExclusiveAdd(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupExclusiveAdd(data[2].d4.xyz);
+ data[invocation].d4 = subgroupExclusiveAdd(data[3].d4);
+
+ data[invocation].f4.x = subgroupExclusiveMul(data[0].f4.x);
+ data[invocation].f4.xy = subgroupExclusiveMul(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupExclusiveMul(data[2].f4.xyz);
+ data[invocation].f4 = subgroupExclusiveMul(data[3].f4);
+
+ data[invocation].i4.x = subgroupExclusiveMul(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveMul(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveMul(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveMul(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveMul(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveMul(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveMul(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveMul(data[3].u4);
+
+ data[invocation].d4.x = subgroupExclusiveMul(data[0].d4.x);
+ data[invocation].d4.xy = subgroupExclusiveMul(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupExclusiveMul(data[2].d4.xyz);
+ data[invocation].d4 = subgroupExclusiveMul(data[3].d4);
+
+ data[invocation].f4.x = subgroupExclusiveMin(data[0].f4.x);
+ data[invocation].f4.xy = subgroupExclusiveMin(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupExclusiveMin(data[2].f4.xyz);
+ data[invocation].f4 = subgroupExclusiveMin(data[3].f4);
+
+ data[invocation].i4.x = subgroupExclusiveMin(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveMin(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveMin(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveMin(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveMin(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveMin(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveMin(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveMin(data[3].u4);
+
+ data[invocation].d4.x = subgroupExclusiveMin(data[0].d4.x);
+ data[invocation].d4.xy = subgroupExclusiveMin(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupExclusiveMin(data[2].d4.xyz);
+ data[invocation].d4 = subgroupExclusiveMin(data[3].d4);
+
+ data[invocation].f4.x = subgroupExclusiveMax(data[0].f4.x);
+ data[invocation].f4.xy = subgroupExclusiveMax(data[1].f4.xy);
+ data[invocation].f4.xyz = subgroupExclusiveMax(data[2].f4.xyz);
+ data[invocation].f4 = subgroupExclusiveMax(data[3].f4);
+
+ data[invocation].i4.x = subgroupExclusiveMax(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveMax(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveMax(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveMax(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveMax(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveMax(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveMax(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveMax(data[3].u4);
+
+ data[invocation].d4.x = subgroupExclusiveMax(data[0].d4.x);
+ data[invocation].d4.xy = subgroupExclusiveMax(data[1].d4.xy);
+ data[invocation].d4.xyz = subgroupExclusiveMax(data[2].d4.xyz);
+ data[invocation].d4 = subgroupExclusiveMax(data[3].d4);
+
+ data[invocation].i4.x = subgroupExclusiveAnd(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveAnd(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveAnd(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveAnd(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveAnd(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveAnd(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveAnd(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveAnd(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupExclusiveAnd(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupExclusiveAnd(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupExclusiveAnd(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupExclusiveAnd(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupExclusiveOr(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveOr(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveOr(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveOr(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveOr(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveOr(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveOr(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveOr(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupExclusiveOr(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupExclusiveOr(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupExclusiveOr(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupExclusiveOr(lessThan(data[1].i4, ivec4(0))));
+
+ data[invocation].i4.x = subgroupExclusiveXor(data[0].i4.x);
+ data[invocation].i4.xy = subgroupExclusiveXor(data[1].i4.xy);
+ data[invocation].i4.xyz = subgroupExclusiveXor(data[2].i4.xyz);
+ data[invocation].i4 = subgroupExclusiveXor(data[3].i4);
+
+ data[invocation].u4.x = subgroupExclusiveXor(data[0].u4.x);
+ data[invocation].u4.xy = subgroupExclusiveXor(data[1].u4.xy);
+ data[invocation].u4.xyz = subgroupExclusiveXor(data[2].u4.xyz);
+ data[invocation].u4 = subgroupExclusiveXor(data[3].u4);
+
+ data[invocation].i4.x = int(subgroupExclusiveXor(data[0].i4.x < 0));
+ data[invocation].i4.xy = ivec2(subgroupExclusiveXor(lessThan(data[1].i4.xy, ivec2(0))));
+ data[invocation].i4.xyz = ivec3(subgroupExclusiveXor(lessThan(data[1].i4.xyz, ivec3(0))));
+ data[invocation].i4 = ivec4(subgroupExclusiveXor(lessThan(data[1].i4, ivec4(0))));
+}
diff --git a/Test/spv.vulkan110.int16.frag b/Test/spv.vulkan110.int16.frag
new file mode 100644
index 0000000..d29894b
--- /dev/null
+++ b/Test/spv.vulkan110.int16.frag
@@ -0,0 +1,251 @@
+#version 450
+
+#extension GL_KHX_shader_explicit_arithmetic_types: enable
+#extension GL_KHX_shader_explicit_arithmetic_types_int8: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_int64: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float16: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float32: require
+#extension GL_KHX_shader_explicit_arithmetic_types_float64: require
+
+layout(binding = 0) uniform Uniforms
+{
+ uint index;
+};
+
+layout(std140, binding = 1) uniform Block
+{
+ int16_t i16;
+ i16vec2 i16v2;
+ i16vec3 i16v3;
+ i16vec4 i16v4;
+ uint16_t u16;
+ u16vec2 u16v2;
+ u16vec3 u16v3;
+ u16vec4 u16v4;
+} block;
+
+void main()
+{
+}
+
+void literal()
+{
+ const int16_t i16Const[3] =
+ {
+ int16_t(-0x1111), // Hex
+ int16_t(-1), // Dec
+ int16_t(040000), // Oct
+ };
+
+ int16_t i16 = i16Const[index];
+
+ const uint16_t u16Const[] =
+ {
+ uint16_t(0xFFFF), // Hex
+ uint16_t(65535), // Dec
+ uint16_t(077777), // Oct
+ };
+
+ uint16_t u16 = u16Const[index];
+}
+
+void typeCast16()
+{
+ i8vec2 i8v;
+ u8vec2 u8v;
+ i16vec2 i16v;
+ u16vec2 u16v;
+ i32vec2 i32v;
+ u32vec2 u32v;
+ i64vec2 i64v;
+ u64vec2 u64v;
+ f16vec2 f16v;
+ f32vec2 f32v;
+ f64vec2 f64v;
+ bvec2 bv;
+
+ i32v = i16v; // int16_t -> int32_t
+ i32v = u16v; // uint16_t -> int32_t
+ u16v = i16v; // int16_t -> uint16_t
+ u32v = i16v; // int16_t -> uint32_t
+ i64v = i16v; // int16_t -> int64_t
+ u64v = i16v; // int16_t -> uint64_t
+ u32v = u16v; // uint16_t -> uint32_t
+ i64v = u16v; // uint16_t -> int64_t
+ u64v = u16v; // uint16_t -> uint64_t
+ f16v = i16v; // int16_t -> float16_t
+ f32v = i16v; // int16_t -> float32_t
+ f64v = i16v; // int16_t -> float64_t
+ f16v = u16v; // uint16_t -> float16_t
+ f32v = u16v; // uint16_t -> float32_t
+ f64v = u16v; // uint16_t -> float64_t
+
+ i32v = i32vec2(i16v); // int16_t -> int32_t
+ i32v = i32vec2(u16v); // uint16_t -> int32_t
+ u16v = u16vec2(i16v); // int16_t -> uint16_t
+ u32v = u32vec2(i16v); // int16_t -> uint32_t
+ i64v = i64vec2(i16v); // int16_t -> int64_t
+ u64v = i64vec2(i16v); // int16_t -> uint64_t
+ u32v = u32vec2(u16v); // uint16_t -> uint32_t
+ i64v = i64vec2(u16v); // uint16_t -> int64_t
+ u64v = i64vec2(u16v); // uint16_t -> uint64_t
+ f16v = f16vec2(i16v); // int16_t -> float16_t
+ f32v = f32vec2(i16v); // int16_t -> float32_t
+ f64v = f64vec2(i16v); // int16_t -> float64_t
+ f16v = f16vec2(u16v); // uint16_t -> float16_t
+ f32v = f32vec2(u16v); // uint16_t -> float32_t
+ f64v = f64vec2(u16v); // uint16_t -> float64_t
+
+ i8v = i8vec2(i16v); // int16_t -> int8_t
+ i8v = i8vec2(u16v); // uint16_t -> int8_t
+ u8v = u8vec2(i16v); // int16_t -> uint8_t
+ u8v = u8vec2(u16v); // uint16_t -> uint8_t
+ i16v = u8vec2(u16v); // uint16_t -> int16_t
+ i16v = i16vec2(bv); // bool -> int16
+ u16v = u16vec2(bv); // bool -> uint16
+ bv = bvec2(i16v); // int16 -> bool
+ bv = bvec2(u16v); // uint16 -> bool
+}
+void operators()
+{
+ u16vec3 u16v;
+ int16_t i16;
+ uvec3 uv;
+ int32_t i;
+ int64_t i64;
+ bool b;
+
+ // Unary
+ u16v++;
+ i16--;
+ ++i16;
+ --u16v;
+
+ u16v = ~u16v;
+
+ i16 = +i16;
+ u16v = -u16v;
+
+ // Arithmetic
+ i16 += i16;
+ u16v -= u16v;
+ i *= i16;
+ uv /= u16v;
+ uv %= i16;
+
+ uv = u16v + uv;
+ i64 = i16 - i64;
+ uv = u16v * uv;
+ i64 = i16 * i64;
+ i = i16 % i;
+
+ // Shift
+ u16v <<= i16;
+ i16 >>= u16v.y;
+
+ i16 = i16 << u16v.z;
+ uv = u16v << i;
+
+ // Relational
+ b = (u16v.x != i16);
+ b = (i16 == u16v.x);
+ b = (u16v.x > uv.y);
+ b = (i16 < i);
+ b = (u16v.y >= uv.x);
+ b = (i16 <= i);
+
+ // Bitwise
+ uv |= i16;
+ i = i16 | i;
+ i64 &= i16;
+ uv = u16v & uv;
+ uv ^= i16;
+ u16v = u16v ^ i16;
+}
+
+void builtinFuncs()
+{
+ i16vec2 i16v;
+ i16vec4 i16v4;
+ u16vec3 u16v;
+ u16vec2 u16v2;
+ u16vec4 u16v4;
+ bvec3 bv;
+ int16_t i16;
+ uint16_t u16;
+ int32_t i32;
+ uint32_t u32;
+ int64_t i64;
+ uint64_t u64;
+
+ // abs()
+ i16v = abs(i16v);
+
+ // sign()
+ i16 = sign(i16);
+
+ // min()
+ i16v = min(i16v, i16);
+ i16v = min(i16v, i16vec2(-1));
+ u16v = min(u16v, u16);
+ u16v = min(u16v, u16vec3(0));
+
+ // max()
+ i16v = max(i16v, i16);
+ i16v = max(i16v, i16vec2(-1));
+ u16v = max(u16v, u16);
+ u16v = max(u16v, u16vec3(0));
+
+ // clamp()
+ i16v = clamp(i16v, -i16, i16);
+ i16v = clamp(i16v, -i16v, i16v);
+ u16v = clamp(u16v, -u16, u16);
+ u16v = clamp(u16v, -u16v, u16v);
+
+ // mix()
+ i16 = mix(i16v.x, i16v.y, true);
+ i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false));
+ u16 = mix(u16v.x, u16v.y, true);
+ u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false));
+
+ //pack
+ i32 = pack32(i16v);
+ i64 = pack64(i16v4);
+ u32 = pack32(u16v2);
+ u64 = pack64(u16v4);
+
+ i16v = unpack16(i32);
+ i16v4 = unpack16(i64);
+ u16v2 = unpack16(u32);
+ u16v4 = unpack16(u64);
+
+ // lessThan()
+ bv = lessThan(u16v, u16vec3(u16));
+ bv.xy = lessThan(i16v, i16vec2(i16));
+
+ // lessThanEqual()
+ bv = lessThanEqual(u16v, u16vec3(u16));
+ bv.xy = lessThanEqual(i16v, i16vec2(i16));
+
+ // greaterThan()
+ bv = greaterThan(u16v, u16vec3(u16));
+ bv.xy = greaterThan(i16v, i16vec2(i16));
+
+ // greaterThanEqual()
+ bv = greaterThanEqual(u16v, u16vec3(u16));
+ bv.xy = greaterThanEqual(i16v, i16vec2(i16));
+
+ // equal()
+ bv = equal(u16v, u16vec3(u16));
+ bv.xy = equal(i16v, i16vec2(i16));
+
+ // notEqual()
+ bv = notEqual(u16v, u16vec3(u16));
+ bv.xy = notEqual(i16v, i16vec2(i16));
+}
+
+// Type conversion for specialization constant
+layout(constant_id = 100) const int16_t si16 = int16_t(-10);
+layout(constant_id = 101) const uint16_t su16 = uint16_t(20);
diff --git a/Test/spv.vulkan110.storageBuffer.vert b/Test/spv.vulkan110.storageBuffer.vert
new file mode 100644
index 0000000..6dd629e
--- /dev/null
+++ b/Test/spv.vulkan110.storageBuffer.vert
@@ -0,0 +1,16 @@
+#version 450
+
+#pragma use_storage_buffer
+
+uniform ub {
+ vec4 a;
+} ubi;
+
+buffer bb {
+ vec4 b;
+} bbi;
+
+void main()
+{
+ gl_Position = ubi.a + bbi.b;
+}
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index 050c2c4..46fe159 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -46,17 +47,15 @@
EbtVoid,
EbtFloat,
EbtDouble,
-#ifdef AMD_EXTENSIONS
EbtFloat16,
-#endif
+ EbtInt8,
+ EbtUint8,
+ EbtInt16,
+ EbtUint16,
EbtInt,
EbtUint,
EbtInt64,
EbtUint64,
-#ifdef AMD_EXTENSIONS
- EbtInt16,
- EbtUint16,
-#endif
EbtBool,
EbtAtomicUint,
EbtSampler,
@@ -141,6 +140,8 @@
EbvLocalInvocationId,
EbvGlobalInvocationId,
EbvLocalInvocationIndex,
+ EbvNumSubgroups,
+ EbvSubgroupID,
EbvSubGroupSize,
EbvSubGroupInvocation,
EbvSubGroupEqMask,
@@ -148,6 +149,13 @@
EbvSubGroupGtMask,
EbvSubGroupLeMask,
EbvSubGroupLtMask,
+ EbvSubgroupSize2,
+ EbvSubgroupInvocation2,
+ EbvSubgroupEqMask2,
+ EbvSubgroupGeMask2,
+ EbvSubgroupGtMask2,
+ EbvSubgroupLeMask2,
+ EbvSubgroupLtMask2,
EbvVertexId,
EbvInstanceId,
EbvVertexIndex,
@@ -373,7 +381,7 @@
__inline const char* GetPrecisionQualifierString(TPrecisionQualifier p)
{
- switch(p) {
+ switch (p) {
case EpqNone: return ""; break;
case EpqLow: return "lowp"; break;
case EpqMedium: return "mediump"; break;
@@ -382,6 +390,75 @@
}
}
+__inline bool isTypeSignedInt(TBasicType type)
+{
+ switch (type) {
+ case EbtInt8:
+ case EbtInt16:
+ case EbtInt:
+ case EbtInt64:
+ return true;
+ default:
+ return false;
+ }
+}
+
+__inline bool isTypeUnsignedInt(TBasicType type)
+{
+ switch (type) {
+ case EbtUint8:
+ case EbtUint16:
+ case EbtUint:
+ case EbtUint64:
+ return true;
+ default:
+ return false;
+ }
+}
+
+__inline bool isTypeInt(TBasicType type)
+{
+ return isTypeSignedInt(type) || isTypeUnsignedInt(type);
+}
+
+__inline bool isTypeFloat(TBasicType type)
+{
+ switch (type) {
+ case EbtFloat:
+ case EbtDouble:
+ case EbtFloat16:
+ return true;
+ default:
+ return false;
+ }
+}
+
+__inline int getTypeRank(TBasicType type) {
+ int res = -1;
+ switch(type) {
+ case EbtInt8:
+ case EbtUint8:
+ res = 0;
+ break;
+ case EbtInt16:
+ case EbtUint16:
+ res = 1;
+ break;
+ case EbtInt:
+ case EbtUint:
+ res = 2;
+ break;
+ case EbtInt64:
+ case EbtUint64:
+ res = 3;
+ break;
+ default:
+ assert(false);
+ break;
+ }
+ return res;
+}
+
} // end namespace glslang
#endif // _BASICTYPES_INCLUDED_
diff --git a/glslang/Include/ConstantUnion.h b/glslang/Include/ConstantUnion.h
index 58c6094..3e93340 100644
--- a/glslang/Include/ConstantUnion.h
+++ b/glslang/Include/ConstantUnion.h
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -48,6 +49,30 @@
TConstUnion() : iConst(0), type(EbtInt) { }
+ void setI8Const(signed char i)
+ {
+ i8Const = i;
+ type = EbtInt8;
+ }
+
+ void setU8Const(unsigned char u)
+ {
+ u8Const = u;
+ type = EbtUint8;
+ }
+
+ void setI16Const(signed short i)
+ {
+ i16Const = i;
+ type = EbtInt16;
+ }
+
+ void setU16Const(unsigned short u)
+ {
+ u16Const = u;
+ type = EbtUint16;
+ }
+
void setIConst(int i)
{
iConst = i;
@@ -90,6 +115,10 @@
type = EbtString;
}
+ signed char getI8Const() const { return i8Const; }
+ unsigned char getU8Const() const { return u8Const; }
+ signed short getI16Const() const { return i16Const; }
+ unsigned short getU16Const() const { return u16Const; }
int getIConst() const { return iConst; }
unsigned int getUConst() const { return uConst; }
long long getI64Const() const { return i64Const; }
@@ -98,6 +127,38 @@
bool getBConst() const { return bConst; }
const TString* getSConst() const { return sConst; }
+ bool operator==(const signed char i) const
+ {
+ if (i == i8Const)
+ return true;
+
+ return false;
+ }
+
+ bool operator==(const unsigned char u) const
+ {
+ if (u == u8Const)
+ return true;
+
+ return false;
+ }
+
+ bool operator==(const signed short i) const
+ {
+ if (i == i16Const)
+ return true;
+
+ return false;
+ }
+
+ bool operator==(const unsigned short u) const
+ {
+ if (u == u16Const)
+ return true;
+
+ return false;
+ }
+
bool operator==(const int i) const
{
if (i == iConst)
@@ -152,6 +213,26 @@
return false;
switch (type) {
+ case EbtInt16:
+ if (constant.i16Const == i16Const)
+ return true;
+
+ break;
+ case EbtUint16:
+ if (constant.u16Const == u16Const)
+ return true;
+
+ break;
+ case EbtInt8:
+ if (constant.i8Const == i8Const)
+ return true;
+
+ break;
+ case EbtUint8:
+ if (constant.u8Const == u8Const)
+ return true;
+
+ break;
case EbtInt:
if (constant.iConst == iConst)
return true;
@@ -189,6 +270,26 @@
return false;
}
+ bool operator!=(const signed char i) const
+ {
+ return !operator==(i);
+ }
+
+ bool operator!=(const unsigned char u) const
+ {
+ return !operator==(u);
+ }
+
+ bool operator!=(const signed short i) const
+ {
+ return !operator==(i);
+ }
+
+ bool operator!=(const unsigned short u) const
+ {
+ return !operator==(u);
+ }
+
bool operator!=(const int i) const
{
return !operator==(i);
@@ -228,6 +329,26 @@
{
assert(type == constant.type);
switch (type) {
+ case EbtInt8:
+ if (i8Const > constant.i8Const)
+ return true;
+
+ return false;
+ case EbtUint8:
+ if (u8Const > constant.u8Const)
+ return true;
+
+ return false;
+ case EbtInt16:
+ if (i16Const > constant.i16Const)
+ return true;
+
+ return false;
+ case EbtUint16:
+ if (u16Const > constant.u16Const)
+ return true;
+
+ return false;
case EbtInt:
if (iConst > constant.iConst)
return true;
@@ -263,6 +384,26 @@
{
assert(type == constant.type);
switch (type) {
+ case EbtInt8:
+ if (i8Const < constant.i8Const)
+ return true;
+
+ return false;
+ case EbtUint8:
+ if (u8Const < constant.u8Const)
+ return true;
+
+ return false;
+ case EbtInt16:
+ if (i16Const < constant.i16Const)
+ return true;
+
+ return false;
+ case EbtUint16:
+ if (u16Const < constant.u16Const)
+ return true;
+
+ return false;
case EbtInt:
if (iConst < constant.iConst)
return true;
@@ -299,9 +440,13 @@
TConstUnion returnValue;
assert(type == constant.type);
switch (type) {
- case EbtInt: returnValue.setIConst(iConst + constant.iConst); break;
- case EbtInt64: returnValue.setI64Const(i64Const + constant.i64Const); break;
- case EbtUint: returnValue.setUConst(uConst + constant.uConst); break;
+ case EbtInt8: returnValue.setI8Const(i8Const + constant.i8Const); break;
+ case EbtInt16: returnValue.setI16Const(i16Const + constant.i16Const); break;
+ case EbtInt: returnValue.setIConst(iConst + constant.iConst); break;
+ case EbtInt64: returnValue.setI64Const(i64Const + constant.i64Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const + constant.u8Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const + constant.u16Const); break;
+ case EbtUint: returnValue.setUConst(uConst + constant.uConst); break;
case EbtUint64: returnValue.setU64Const(u64Const + constant.u64Const); break;
case EbtDouble: returnValue.setDConst(dConst + constant.dConst); break;
default: assert(false && "Default missing");
@@ -315,9 +460,13 @@
TConstUnion returnValue;
assert(type == constant.type);
switch (type) {
- case EbtInt: returnValue.setIConst(iConst - constant.iConst); break;
- case EbtInt64: returnValue.setI64Const(i64Const - constant.i64Const); break;
- case EbtUint: returnValue.setUConst(uConst - constant.uConst); break;
+ case EbtInt8: returnValue.setI8Const(i8Const - constant.i8Const); break;
+ case EbtInt16: returnValue.setI16Const(i16Const - constant.i16Const); break;
+ case EbtInt: returnValue.setIConst(iConst - constant.iConst); break;
+ case EbtInt64: returnValue.setI64Const(i64Const - constant.i64Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const - constant.u8Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const - constant.u16Const); break;
+ case EbtUint: returnValue.setUConst(uConst - constant.uConst); break;
case EbtUint64: returnValue.setU64Const(u64Const - constant.u64Const); break;
case EbtDouble: returnValue.setDConst(dConst - constant.dConst); break;
default: assert(false && "Default missing");
@@ -331,9 +480,13 @@
TConstUnion returnValue;
assert(type == constant.type);
switch (type) {
- case EbtInt: returnValue.setIConst(iConst * constant.iConst); break;
- case EbtInt64: returnValue.setI64Const(i64Const * constant.i64Const); break;
- case EbtUint: returnValue.setUConst(uConst * constant.uConst); break;
+ case EbtInt8: returnValue.setI8Const(i8Const * constant.i8Const); break;
+ case EbtInt16: returnValue.setI16Const(i16Const * constant.i16Const); break;
+ case EbtInt: returnValue.setIConst(iConst * constant.iConst); break;
+ case EbtInt64: returnValue.setI64Const(i64Const * constant.i64Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const * constant.u8Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const * constant.u16Const); break;
+ case EbtUint: returnValue.setUConst(uConst * constant.uConst); break;
case EbtUint64: returnValue.setU64Const(u64Const * constant.u64Const); break;
case EbtDouble: returnValue.setDConst(dConst * constant.dConst); break;
default: assert(false && "Default missing");
@@ -347,9 +500,13 @@
TConstUnion returnValue;
assert(type == constant.type);
switch (type) {
- case EbtInt: returnValue.setIConst(iConst % constant.iConst); break;
- case EbtInt64: returnValue.setI64Const(i64Const % constant.i64Const); break;
- case EbtUint: returnValue.setUConst(uConst % constant.uConst); break;
+ case EbtInt8: returnValue.setI8Const(i8Const % constant.i8Const); break;
+ case EbtInt16: returnValue.setI8Const(i8Const % constant.i16Const); break;
+ case EbtInt: returnValue.setIConst(iConst % constant.iConst); break;
+ case EbtInt64: returnValue.setI64Const(i64Const % constant.i64Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const % constant.u8Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const % constant.u16Const); break;
+ case EbtUint: returnValue.setUConst(uConst % constant.uConst); break;
case EbtUint64: returnValue.setU64Const(u64Const % constant.u64Const); break;
default: assert(false && "Default missing");
}
@@ -361,8 +518,64 @@
{
TConstUnion returnValue;
switch (type) {
+ case EbtInt8:
+ switch (constant.type) {
+ case EbtInt8: returnValue.setI8Const(i8Const >> constant.i8Const); break;
+ case EbtUint8: returnValue.setI8Const(i8Const >> constant.u8Const); break;
+ case EbtInt16: returnValue.setI8Const(i8Const >> constant.i16Const); break;
+ case EbtUint16: returnValue.setI8Const(i8Const >> constant.u16Const); break;
+ case EbtInt: returnValue.setI8Const(i8Const >> constant.iConst); break;
+ case EbtUint: returnValue.setI8Const(i8Const >> constant.uConst); break;
+ case EbtInt64: returnValue.setI8Const(i8Const >> constant.i64Const); break;
+ case EbtUint64: returnValue.setI8Const(i8Const >> constant.u64Const); break;
+ default: assert(false && "Default missing");
+ }
+ break;
+ case EbtUint8:
+ switch (constant.type) {
+ case EbtInt8: returnValue.setU8Const(u8Const >> constant.i8Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const >> constant.u8Const); break;
+ case EbtInt16: returnValue.setU8Const(u8Const >> constant.i16Const); break;
+ case EbtUint16: returnValue.setU8Const(u8Const >> constant.u16Const); break;
+ case EbtInt: returnValue.setU8Const(u8Const >> constant.iConst); break;
+ case EbtUint: returnValue.setU8Const(u8Const >> constant.uConst); break;
+ case EbtInt64: returnValue.setU8Const(u8Const >> constant.i64Const); break;
+ case EbtUint64: returnValue.setU8Const(u8Const >> constant.u64Const); break;
+ default: assert(false && "Default missing");
+ }
+ break;
+ case EbtInt16:
+ switch (constant.type) {
+ case EbtInt8: returnValue.setI16Const(i16Const >> constant.i8Const); break;
+ case EbtUint8: returnValue.setI16Const(i16Const >> constant.u8Const); break;
+ case EbtInt16: returnValue.setI16Const(i16Const >> constant.i16Const); break;
+ case EbtUint16: returnValue.setI16Const(i16Const >> constant.u16Const); break;
+ case EbtInt: returnValue.setI16Const(i16Const >> constant.iConst); break;
+ case EbtUint: returnValue.setI16Const(i16Const >> constant.uConst); break;
+ case EbtInt64: returnValue.setI16Const(i16Const >> constant.i64Const); break;
+ case EbtUint64: returnValue.setI16Const(i16Const >> constant.u64Const); break;
+ default: assert(false && "Default missing");
+ }
+ break;
+ case EbtUint16:
+ switch (constant.type) {
+ case EbtInt8: returnValue.setU16Const(u16Const >> constant.i8Const); break;
+ case EbtUint8: returnValue.setU16Const(u16Const >> constant.u8Const); break;
+ case EbtInt16: returnValue.setU16Const(u16Const >> constant.i16Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const >> constant.u16Const); break;
+ case EbtInt: returnValue.setU16Const(u16Const >> constant.iConst); break;
+ case EbtUint: returnValue.setU16Const(u16Const >> constant.uConst); break;
+ case EbtInt64: returnValue.setU16Const(u16Const >> constant.i64Const); break;
+ case EbtUint64: returnValue.setU16Const(u16Const >> constant.u64Const); break;
+ default: assert(false && "Default missing");
+ }
+ break;
case EbtInt:
switch (constant.type) {
+ case EbtInt8: returnValue.setIConst(iConst >> constant.i8Const); break;
+ case EbtUint8: returnValue.setIConst(iConst >> constant.u8Const); break;
+ case EbtInt16: returnValue.setIConst(iConst >> constant.i16Const); break;
+ case EbtUint16: returnValue.setIConst(iConst >> constant.u16Const); break;
case EbtInt: returnValue.setIConst(iConst >> constant.iConst); break;
case EbtUint: returnValue.setIConst(iConst >> constant.uConst); break;
case EbtInt64: returnValue.setIConst(iConst >> constant.i64Const); break;
@@ -372,6 +585,10 @@
break;
case EbtUint:
switch (constant.type) {
+ case EbtInt8: returnValue.setUConst(uConst >> constant.i8Const); break;
+ case EbtUint8: returnValue.setUConst(uConst >> constant.u8Const); break;
+ case EbtInt16: returnValue.setUConst(uConst >> constant.i16Const); break;
+ case EbtUint16: returnValue.setUConst(uConst >> constant.u16Const); break;
case EbtInt: returnValue.setUConst(uConst >> constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst >> constant.uConst); break;
case EbtInt64: returnValue.setUConst(uConst >> constant.i64Const); break;
@@ -381,6 +598,10 @@
break;
case EbtInt64:
switch (constant.type) {
+ case EbtInt8: returnValue.setI64Const(i64Const >> constant.i8Const); break;
+ case EbtUint8: returnValue.setI64Const(i64Const >> constant.u8Const); break;
+ case EbtInt16: returnValue.setI64Const(i64Const >> constant.i16Const); break;
+ case EbtUint16: returnValue.setI64Const(i64Const >> constant.u16Const); break;
case EbtInt: returnValue.setI64Const(i64Const >> constant.iConst); break;
case EbtUint: returnValue.setI64Const(i64Const >> constant.uConst); break;
case EbtInt64: returnValue.setI64Const(i64Const >> constant.i64Const); break;
@@ -390,6 +611,10 @@
break;
case EbtUint64:
switch (constant.type) {
+ case EbtInt8: returnValue.setU64Const(u64Const >> constant.i8Const); break;
+ case EbtUint8: returnValue.setU64Const(u64Const >> constant.u8Const); break;
+ case EbtInt16: returnValue.setU64Const(u64Const >> constant.i16Const); break;
+ case EbtUint16: returnValue.setU64Const(u64Const >> constant.u16Const); break;
case EbtInt: returnValue.setU64Const(u64Const >> constant.iConst); break;
case EbtUint: returnValue.setU64Const(u64Const >> constant.uConst); break;
case EbtInt64: returnValue.setU64Const(u64Const >> constant.i64Const); break;
@@ -407,8 +632,64 @@
{
TConstUnion returnValue;
switch (type) {
+ case EbtInt8:
+ switch (constant.type) {
+ case EbtInt8: returnValue.setI8Const(i8Const << constant.i8Const); break;
+ case EbtUint8: returnValue.setI8Const(i8Const << constant.u8Const); break;
+ case EbtInt16: returnValue.setI8Const(i8Const << constant.i16Const); break;
+ case EbtUint16: returnValue.setI8Const(i8Const << constant.u16Const); break;
+ case EbtInt: returnValue.setI8Const(i8Const << constant.iConst); break;
+ case EbtUint: returnValue.setI8Const(i8Const << constant.uConst); break;
+ case EbtInt64: returnValue.setI8Const(i8Const << constant.i64Const); break;
+ case EbtUint64: returnValue.setI8Const(i8Const << constant.u64Const); break;
+ default: assert(false && "Default missing");
+ }
+ break;
+ case EbtUint8:
+ switch (constant.type) {
+ case EbtInt8: returnValue.setU8Const(u8Const << constant.i8Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const << constant.u8Const); break;
+ case EbtInt16: returnValue.setU8Const(u8Const << constant.i16Const); break;
+ case EbtUint16: returnValue.setU8Const(u8Const << constant.u16Const); break;
+ case EbtInt: returnValue.setU8Const(u8Const << constant.iConst); break;
+ case EbtUint: returnValue.setU8Const(u8Const << constant.uConst); break;
+ case EbtInt64: returnValue.setU8Const(u8Const << constant.i64Const); break;
+ case EbtUint64: returnValue.setU8Const(u8Const << constant.u64Const); break;
+ default: assert(false && "Default missing");
+ }
+ break;
+ case EbtInt16:
+ switch (constant.type) {
+ case EbtInt8: returnValue.setI16Const(i16Const << constant.i8Const); break;
+ case EbtUint8: returnValue.setI16Const(i16Const << constant.u8Const); break;
+ case EbtInt16: returnValue.setI16Const(i16Const << constant.i16Const); break;
+ case EbtUint16: returnValue.setI16Const(i16Const << constant.u16Const); break;
+ case EbtInt: returnValue.setI16Const(i16Const << constant.iConst); break;
+ case EbtUint: returnValue.setI16Const(i16Const << constant.uConst); break;
+ case EbtInt64: returnValue.setI16Const(i16Const << constant.i64Const); break;
+ case EbtUint64: returnValue.setI16Const(i16Const << constant.u64Const); break;
+ default: assert(false && "Default missing");
+ }
+ break;
+ case EbtUint16:
+ switch (constant.type) {
+ case EbtInt8: returnValue.setU16Const(u16Const << constant.i8Const); break;
+ case EbtUint8: returnValue.setU16Const(u16Const << constant.u8Const); break;
+ case EbtInt16: returnValue.setU16Const(u16Const << constant.i16Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const << constant.u16Const); break;
+ case EbtInt: returnValue.setU16Const(u16Const << constant.iConst); break;
+ case EbtUint: returnValue.setU16Const(u16Const << constant.uConst); break;
+ case EbtInt64: returnValue.setU16Const(u16Const << constant.i64Const); break;
+ case EbtUint64: returnValue.setU16Const(u16Const << constant.u64Const); break;
+ default: assert(false && "Default missing");
+ }
+ break;
case EbtInt:
switch (constant.type) {
+ case EbtInt8: returnValue.setIConst(iConst << constant.i8Const); break;
+ case EbtUint8: returnValue.setIConst(iConst << constant.u8Const); break;
+ case EbtInt16: returnValue.setIConst(iConst << constant.i16Const); break;
+ case EbtUint16: returnValue.setIConst(iConst << constant.u16Const); break;
case EbtInt: returnValue.setIConst(iConst << constant.iConst); break;
case EbtUint: returnValue.setIConst(iConst << constant.uConst); break;
case EbtInt64: returnValue.setIConst(iConst << constant.i64Const); break;
@@ -418,6 +699,10 @@
break;
case EbtUint:
switch (constant.type) {
+ case EbtInt8: returnValue.setUConst(uConst << constant.i8Const); break;
+ case EbtUint8: returnValue.setUConst(uConst << constant.u8Const); break;
+ case EbtInt16: returnValue.setUConst(uConst << constant.i16Const); break;
+ case EbtUint16: returnValue.setUConst(uConst << constant.u16Const); break;
case EbtInt: returnValue.setUConst(uConst << constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst << constant.uConst); break;
case EbtInt64: returnValue.setUConst(uConst << constant.i64Const); break;
@@ -425,8 +710,12 @@
default: assert(false && "Default missing");
}
break;
- case EbtInt64:
+ case EbtInt64:
switch (constant.type) {
+ case EbtInt8: returnValue.setI64Const(i64Const << constant.i8Const); break;
+ case EbtUint8: returnValue.setI64Const(i64Const << constant.u8Const); break;
+ case EbtInt16: returnValue.setI64Const(i64Const << constant.i16Const); break;
+ case EbtUint16: returnValue.setI64Const(i64Const << constant.u16Const); break;
case EbtInt: returnValue.setI64Const(i64Const << constant.iConst); break;
case EbtUint: returnValue.setI64Const(i64Const << constant.uConst); break;
case EbtInt64: returnValue.setI64Const(i64Const << constant.i64Const); break;
@@ -436,6 +725,10 @@
break;
case EbtUint64:
switch (constant.type) {
+ case EbtInt8: returnValue.setU64Const(u64Const << constant.i8Const); break;
+ case EbtUint8: returnValue.setU64Const(u64Const << constant.u8Const); break;
+ case EbtInt16: returnValue.setU64Const(u64Const << constant.i16Const); break;
+ case EbtUint16: returnValue.setU64Const(u64Const << constant.u16Const); break;
case EbtInt: returnValue.setU64Const(u64Const << constant.iConst); break;
case EbtUint: returnValue.setU64Const(u64Const << constant.uConst); break;
case EbtInt64: returnValue.setU64Const(u64Const << constant.i64Const); break;
@@ -454,8 +747,12 @@
TConstUnion returnValue;
assert(type == constant.type);
switch (type) {
- case EbtInt: returnValue.setIConst(iConst & constant.iConst); break;
- case EbtUint: returnValue.setUConst(uConst & constant.uConst); break;
+ case EbtInt8: returnValue.setI8Const(i8Const & constant.i8Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const & constant.u8Const); break;
+ case EbtInt16: returnValue.setI16Const(i16Const & constant.i16Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const & constant.u16Const); break;
+ case EbtInt: returnValue.setIConst(iConst & constant.iConst); break;
+ case EbtUint: returnValue.setUConst(uConst & constant.uConst); break;
case EbtInt64: returnValue.setI64Const(i64Const & constant.i64Const); break;
case EbtUint64: returnValue.setU64Const(u64Const & constant.u64Const); break;
default: assert(false && "Default missing");
@@ -469,8 +766,12 @@
TConstUnion returnValue;
assert(type == constant.type);
switch (type) {
- case EbtInt: returnValue.setIConst(iConst | constant.iConst); break;
- case EbtUint: returnValue.setUConst(uConst | constant.uConst); break;
+ case EbtInt8: returnValue.setI8Const(i8Const | constant.i8Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const | constant.u8Const); break;
+ case EbtInt16: returnValue.setI16Const(i16Const | constant.i16Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const | constant.u16Const); break;
+ case EbtInt: returnValue.setIConst(iConst | constant.iConst); break;
+ case EbtUint: returnValue.setUConst(uConst | constant.uConst); break;
case EbtInt64: returnValue.setI64Const(i64Const | constant.i64Const); break;
case EbtUint64: returnValue.setU64Const(u64Const | constant.u64Const); break;
default: assert(false && "Default missing");
@@ -484,8 +785,12 @@
TConstUnion returnValue;
assert(type == constant.type);
switch (type) {
- case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break;
- case EbtUint: returnValue.setUConst(uConst ^ constant.uConst); break;
+ case EbtInt8: returnValue.setI8Const(i8Const ^ constant.i8Const); break;
+ case EbtUint8: returnValue.setU8Const(u8Const ^ constant.u8Const); break;
+ case EbtInt16: returnValue.setI16Const(i16Const ^ constant.i16Const); break;
+ case EbtUint16: returnValue.setU16Const(u16Const ^ constant.u16Const); break;
+ case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break;
+ case EbtUint: returnValue.setUConst(uConst ^ constant.uConst); break;
case EbtInt64: returnValue.setI64Const(i64Const ^ constant.i64Const); break;
case EbtUint64: returnValue.setU64Const(u64Const ^ constant.u64Const); break;
default: assert(false && "Default missing");
@@ -498,8 +803,12 @@
{
TConstUnion returnValue;
switch (type) {
- case EbtInt: returnValue.setIConst(~iConst); break;
- case EbtUint: returnValue.setUConst(~uConst); break;
+ case EbtInt8: returnValue.setI8Const(~i8Const); break;
+ case EbtUint8: returnValue.setU8Const(~u8Const); break;
+ case EbtInt16: returnValue.setI16Const(~i16Const); break;
+ case EbtUint16: returnValue.setU16Const(~u16Const); break;
+ case EbtInt: returnValue.setIConst(~iConst); break;
+ case EbtUint: returnValue.setUConst(~uConst); break;
case EbtInt64: returnValue.setI64Const(~i64Const); break;
case EbtUint64: returnValue.setU64Const(~u64Const); break;
default: assert(false && "Default missing");
@@ -536,6 +845,10 @@
private:
union {
+ signed char i8Const; // used for i8vec, scalar int8s
+ unsigned char u8Const; // used for u8vec, scalar uint8s
+ signed short i16Const; // used for i16vec, scalar int16s
+ unsigned short u16Const; // used for u16vec, scalar uint16s
int iConst; // used for ivec, scalar ints
unsigned int uConst; // used for uvec, scalar uints
long long i64Const; // used for i64vec, scalar int64s
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index c3d0acb..9c3cc19 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -2,6 +2,7 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2016 LunarG, Inc.
// Copyright (C) 2015-2016 Google, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -204,12 +205,18 @@
}
switch (type) {
- case EbtFloat: break;
+ case EbtFloat: break;
#ifdef AMD_EXTENSIONS
case EbtFloat16: s.append("f16"); break;
#endif
- case EbtInt: s.append("i"); break;
- case EbtUint: s.append("u"); break;
+ case EbtInt8: s.append("i8"); break;
+ case EbtUint16: s.append("u8"); break;
+ case EbtInt16: s.append("i16"); break;
+ case EbtUint8: s.append("u16"); break;
+ case EbtInt: s.append("i"); break;
+ case EbtUint: s.append("u"); break;
+ case EbtInt64: s.append("i64"); break;
+ case EbtUint64: s.append("u64"); break;
default: break; // some compilers want this
}
if (image) {
@@ -1373,22 +1380,18 @@
virtual bool isImplicitlySizedArray() const { return isArray() && getOuterArraySize() == UnsizedArraySize && qualifier.storage != EvqBuffer; }
virtual bool isRuntimeSizedArray() const { return isArray() && getOuterArraySize() == UnsizedArraySize && qualifier.storage == EvqBuffer; }
virtual bool isStruct() const { return structure != nullptr; }
-#ifdef AMD_EXTENSIONS
virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16; }
-#else
- virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; }
-#endif
virtual bool isIntegerDomain() const
{
switch (basicType) {
+ case EbtInt8:
+ case EbtUint8:
+ case EbtInt16:
+ case EbtUint16:
case EbtInt:
case EbtUint:
case EbtInt64:
case EbtUint64:
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- case EbtUint16:
-#endif
case EbtAtomicUint:
return true;
default:
@@ -1404,7 +1407,7 @@
virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); }
// return true if this type contains any subtype which satisfies the given predicate.
- template <typename P>
+ template <typename P>
bool contains(P predicate) const
{
if (predicate(this))
@@ -1457,17 +1460,15 @@
case EbtVoid:
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
+ case EbtInt8:
+ case EbtUint8:
+ case EbtInt16:
+ case EbtUint16:
case EbtInt:
case EbtUint:
case EbtInt64:
case EbtUint64:
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- case EbtUint16:
-#endif
case EbtBool:
return true;
default:
@@ -1544,17 +1545,15 @@
case EbtVoid: return "void";
case EbtFloat: return "float";
case EbtDouble: return "double";
-#ifdef AMD_EXTENSIONS
case EbtFloat16: return "float16_t";
-#endif
+ case EbtInt8: return "int8_t";
+ case EbtUint8: return "uint8_t";
+ case EbtInt16: return "int16_t";
+ case EbtUint16: return "uint16_t";
case EbtInt: return "int";
case EbtUint: return "uint";
case EbtInt64: return "int64_t";
case EbtUint64: return "uint64_t";
-#ifdef AMD_EXTENSIONS
- case EbtInt16: return "int16_t";
- case EbtUint16: return "uint16_t";
-#endif
case EbtBool: return "bool";
case EbtAtomicUint: return "atomic_uint";
case EbtSampler: return "sampler/image";
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index ea3e82e..72f83e9 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2016 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -84,100 +85,189 @@
EOpPreIncrement,
EOpPreDecrement,
+ // (u)int* -> bool
+ EOpConvInt8ToBool,
+ EOpConvUint8ToBool,
+ EOpConvInt16ToBool,
+ EOpConvUint16ToBool,
EOpConvIntToBool,
EOpConvUintToBool,
- EOpConvFloatToBool,
- EOpConvDoubleToBool,
EOpConvInt64ToBool,
EOpConvUint64ToBool,
- EOpConvBoolToFloat,
- EOpConvIntToFloat,
- EOpConvUintToFloat,
- EOpConvDoubleToFloat,
- EOpConvInt64ToFloat,
- EOpConvUint64ToFloat,
- EOpConvUintToInt,
- EOpConvFloatToInt,
- EOpConvBoolToInt,
- EOpConvDoubleToInt,
- EOpConvInt64ToInt,
- EOpConvUint64ToInt,
- EOpConvIntToUint,
- EOpConvFloatToUint,
- EOpConvBoolToUint,
- EOpConvDoubleToUint,
- EOpConvInt64ToUint,
- EOpConvUint64ToUint,
- EOpConvIntToDouble,
- EOpConvUintToDouble,
- EOpConvFloatToDouble,
- EOpConvBoolToDouble,
- EOpConvInt64ToDouble,
- EOpConvUint64ToDouble,
- EOpConvBoolToInt64,
- EOpConvIntToInt64,
- EOpConvUintToInt64,
- EOpConvFloatToInt64,
- EOpConvDoubleToInt64,
- EOpConvUint64ToInt64,
- EOpConvBoolToUint64,
- EOpConvIntToUint64,
- EOpConvUintToUint64,
- EOpConvFloatToUint64,
- EOpConvDoubleToUint64,
- EOpConvInt64ToUint64,
-#ifdef AMD_EXTENSIONS
- EOpConvBoolToFloat16,
- EOpConvIntToFloat16,
- EOpConvUintToFloat16,
- EOpConvFloatToFloat16,
- EOpConvDoubleToFloat16,
- EOpConvInt64ToFloat16,
- EOpConvUint64ToFloat16,
- EOpConvFloat16ToBool,
- EOpConvFloat16ToInt,
- EOpConvFloat16ToUint,
- EOpConvFloat16ToFloat,
- EOpConvFloat16ToDouble,
- EOpConvFloat16ToInt64,
- EOpConvFloat16ToUint64,
+ // float* -> bool
+ EOpConvFloat16ToBool,
+ EOpConvFloatToBool,
+ EOpConvDoubleToBool,
+
+ // bool -> (u)int*
+ EOpConvBoolToInt8,
+ EOpConvBoolToUint8,
EOpConvBoolToInt16,
- EOpConvIntToInt16,
- EOpConvUintToInt16,
- EOpConvFloatToInt16,
- EOpConvDoubleToInt16,
- EOpConvFloat16ToInt16,
- EOpConvInt64ToInt16,
- EOpConvUint64ToInt16,
- EOpConvUint16ToInt16,
- EOpConvInt16ToBool,
+ EOpConvBoolToUint16,
+ EOpConvBoolToInt,
+ EOpConvBoolToUint,
+ EOpConvBoolToInt64,
+ EOpConvBoolToUint64,
+
+ // bool -> float*
+ EOpConvBoolToFloat16,
+ EOpConvBoolToFloat,
+ EOpConvBoolToDouble,
+
+ // int8_t -> (u)int*
+ EOpConvInt8ToInt16,
+ EOpConvInt8ToInt,
+ EOpConvInt8ToInt64,
+ EOpConvInt8ToUint8,
+ EOpConvInt8ToUint16,
+ EOpConvInt8ToUint,
+ EOpConvInt8ToUint64,
+
+ // uint8_t -> (u)int*
+ EOpConvUint8ToInt8,
+ EOpConvUint8ToInt16,
+ EOpConvUint8ToInt,
+ EOpConvUint8ToInt64,
+ EOpConvUint8ToUint16,
+ EOpConvUint8ToUint,
+ EOpConvUint8ToUint64,
+
+ // int8_t -> float*
+ EOpConvInt8ToFloat16,
+ EOpConvInt8ToFloat,
+ EOpConvInt8ToDouble,
+
+ // uint8_t -> float*
+ EOpConvUint8ToFloat16,
+ EOpConvUint8ToFloat,
+ EOpConvUint8ToDouble,
+
+ // int16_t -> (u)int*
+ EOpConvInt16ToInt8,
EOpConvInt16ToInt,
- EOpConvInt16ToUint,
- EOpConvInt16ToFloat,
- EOpConvInt16ToDouble,
- EOpConvInt16ToFloat16,
EOpConvInt16ToInt64,
+ EOpConvInt16ToUint8,
+ EOpConvInt16ToUint16,
+ EOpConvInt16ToUint,
EOpConvInt16ToUint64,
- EOpConvBoolToUint16,
- EOpConvIntToUint16,
- EOpConvUintToUint16,
- EOpConvFloatToUint16,
- EOpConvDoubleToUint16,
- EOpConvFloat16ToUint16,
- EOpConvInt64ToUint16,
- EOpConvUint64ToUint16,
- EOpConvInt16ToUint16,
- EOpConvUint16ToBool,
+ // uint16_t -> (u)int*
+ EOpConvUint16ToInt8,
+ EOpConvUint16ToInt16,
EOpConvUint16ToInt,
+ EOpConvUint16ToInt64,
+ EOpConvUint16ToUint8,
EOpConvUint16ToUint,
+ EOpConvUint16ToUint64,
+
+ // int16_t -> float*
+ EOpConvInt16ToFloat16,
+ EOpConvInt16ToFloat,
+ EOpConvInt16ToDouble,
+
+ // uint16_t -> float*
+ EOpConvUint16ToFloat16,
EOpConvUint16ToFloat,
EOpConvUint16ToDouble,
- EOpConvUint16ToFloat16,
- EOpConvUint16ToInt64,
- EOpConvUint16ToUint64,
-#endif
+
+ // int32_t -> (u)int*
+ EOpConvIntToInt8,
+ EOpConvIntToInt16,
+ EOpConvIntToInt64,
+ EOpConvIntToUint8,
+ EOpConvIntToUint16,
+ EOpConvIntToUint,
+ EOpConvIntToUint64,
+
+ // uint32_t -> (u)int*
+ EOpConvUintToInt8,
+ EOpConvUintToInt16,
+ EOpConvUintToInt,
+ EOpConvUintToInt64,
+ EOpConvUintToUint8,
+ EOpConvUintToUint16,
+ EOpConvUintToUint64,
+
+ // int32_t -> float*
+ EOpConvIntToFloat16,
+ EOpConvIntToFloat,
+ EOpConvIntToDouble,
+
+ // uint32_t -> float*
+ EOpConvUintToFloat16,
+ EOpConvUintToFloat,
+ EOpConvUintToDouble,
+
+ // int64_t -> (u)int*
+ EOpConvInt64ToInt8,
+ EOpConvInt64ToInt16,
+ EOpConvInt64ToInt,
+ EOpConvInt64ToUint8,
+ EOpConvInt64ToUint16,
+ EOpConvInt64ToUint,
+ EOpConvInt64ToUint64,
+
+ // uint64_t -> (u)int*
+ EOpConvUint64ToInt8,
+ EOpConvUint64ToInt16,
+ EOpConvUint64ToInt,
+ EOpConvUint64ToInt64,
+ EOpConvUint64ToUint8,
+ EOpConvUint64ToUint16,
+ EOpConvUint64ToUint,
+
+ // int64_t -> float*
+ EOpConvInt64ToFloat16,
+ EOpConvInt64ToFloat,
+ EOpConvInt64ToDouble,
+
+ // uint64_t -> float*
+ EOpConvUint64ToFloat16,
+ EOpConvUint64ToFloat,
+ EOpConvUint64ToDouble,
+
+ // float16_t -> (u)int*
+ EOpConvFloat16ToInt8,
+ EOpConvFloat16ToInt16,
+ EOpConvFloat16ToInt,
+ EOpConvFloat16ToInt64,
+ EOpConvFloat16ToUint8,
+ EOpConvFloat16ToUint16,
+ EOpConvFloat16ToUint,
+ EOpConvFloat16ToUint64,
+
+ // float16_t -> float*
+ EOpConvFloat16ToFloat,
+ EOpConvFloat16ToDouble,
+
+ // float -> (u)int*
+ EOpConvFloatToInt8,
+ EOpConvFloatToInt16,
+ EOpConvFloatToInt,
+ EOpConvFloatToInt64,
+ EOpConvFloatToUint8,
+ EOpConvFloatToUint16,
+ EOpConvFloatToUint,
+ EOpConvFloatToUint64,
+
+ // float -> float*
+ EOpConvFloatToFloat16,
+ EOpConvFloatToDouble,
+
+ // float64 _t-> (u)int*
+ EOpConvDoubleToInt8,
+ EOpConvDoubleToInt16,
+ EOpConvDoubleToInt,
+ EOpConvDoubleToInt64,
+ EOpConvDoubleToUint8,
+ EOpConvDoubleToUint16,
+ EOpConvDoubleToUint,
+ EOpConvDoubleToUint64,
+
+ // float64_t -> float*
+ EOpConvDoubleToFloat16,
+ EOpConvDoubleToFloat,
//
// binary operations
@@ -280,12 +370,10 @@
EOpDoubleBitsToUint64,
EOpInt64BitsToDouble,
EOpUint64BitsToDouble,
-#ifdef AMD_EXTENSIONS
EOpFloat16BitsToInt16,
EOpFloat16BitsToUint16,
EOpInt16BitsToFloat16,
EOpUint16BitsToFloat16,
-#endif
EOpPackSnorm2x16,
EOpUnpackSnorm2x16,
EOpPackUnorm2x16,
@@ -302,7 +390,6 @@
EOpUnpackInt2x32,
EOpPackUint2x32,
EOpUnpackUint2x32,
-#ifdef AMD_EXTENSIONS
EOpPackFloat2x16,
EOpUnpackFloat2x16,
EOpPackInt2x16,
@@ -313,7 +400,12 @@
EOpUnpackInt4x16,
EOpPackUint4x16,
EOpUnpackUint4x16,
-#endif
+ EOpPack16,
+ EOpPack32,
+ EOpPack64,
+ EOpUnpack32,
+ EOpUnpack16,
+ EOpUnpack8,
EOpLength,
EOpDistance,
@@ -379,6 +471,64 @@
EOpAllInvocations,
EOpAllInvocationsEqual,
+ EOpSubgroupGuardStart,
+ EOpSubgroupBarrier,
+ EOpSubgroupMemoryBarrier,
+ EOpSubgroupMemoryBarrierBuffer,
+ EOpSubgroupMemoryBarrierImage,
+ EOpSubgroupMemoryBarrierShared, // compute only
+ EOpSubgroupElect,
+ EOpSubgroupAll,
+ EOpSubgroupAny,
+ EOpSubgroupAllEqual,
+ EOpSubgroupBroadcast,
+ EOpSubgroupBroadcastFirst,
+ EOpSubgroupBallot,
+ EOpSubgroupInverseBallot,
+ EOpSubgroupBallotBitExtract,
+ EOpSubgroupBallotBitCount,
+ EOpSubgroupBallotInclusiveBitCount,
+ EOpSubgroupBallotExclusiveBitCount,
+ EOpSubgroupBallotFindLSB,
+ EOpSubgroupBallotFindMSB,
+ EOpSubgroupShuffle,
+ EOpSubgroupShuffleXor,
+ EOpSubgroupShuffleUp,
+ EOpSubgroupShuffleDown,
+ EOpSubgroupAdd,
+ EOpSubgroupMul,
+ EOpSubgroupMin,
+ EOpSubgroupMax,
+ EOpSubgroupAnd,
+ EOpSubgroupOr,
+ EOpSubgroupXor,
+ EOpSubgroupInclusiveAdd,
+ EOpSubgroupInclusiveMul,
+ EOpSubgroupInclusiveMin,
+ EOpSubgroupInclusiveMax,
+ EOpSubgroupInclusiveAnd,
+ EOpSubgroupInclusiveOr,
+ EOpSubgroupInclusiveXor,
+ EOpSubgroupExclusiveAdd,
+ EOpSubgroupExclusiveMul,
+ EOpSubgroupExclusiveMin,
+ EOpSubgroupExclusiveMax,
+ EOpSubgroupExclusiveAnd,
+ EOpSubgroupExclusiveOr,
+ EOpSubgroupExclusiveXor,
+ EOpSubgroupClusteredAdd,
+ EOpSubgroupClusteredMul,
+ EOpSubgroupClusteredMin,
+ EOpSubgroupClusteredMax,
+ EOpSubgroupClusteredAnd,
+ EOpSubgroupClusteredOr,
+ EOpSubgroupClusteredXor,
+ EOpSubgroupQuadBroadcast,
+ EOpSubgroupQuadSwapHorizontal,
+ EOpSubgroupQuadSwapVertical,
+ EOpSubgroupQuadSwapDiagonal,
+ EOpSubgroupGuardStop,
+
#ifdef AMD_EXTENSIONS
EOpMinInvocations,
EOpMaxInvocations,
@@ -451,32 +601,36 @@
EOpConstructGuardStart,
EOpConstructInt, // these first scalar forms also identify what implicit conversion is needed
EOpConstructUint,
- EOpConstructInt64,
- EOpConstructUint64,
-#ifdef AMD_EXTENSIONS
+ EOpConstructInt8,
+ EOpConstructUint8,
EOpConstructInt16,
EOpConstructUint16,
-#endif
+ EOpConstructInt64,
+ EOpConstructUint64,
EOpConstructBool,
EOpConstructFloat,
EOpConstructDouble,
-#ifdef AMD_EXTENSIONS
- EOpConstructFloat16,
-#endif
EOpConstructVec2,
EOpConstructVec3,
EOpConstructVec4,
EOpConstructDVec2,
EOpConstructDVec3,
EOpConstructDVec4,
-#ifdef AMD_EXTENSIONS
- EOpConstructF16Vec2,
- EOpConstructF16Vec3,
- EOpConstructF16Vec4,
-#endif
EOpConstructBVec2,
EOpConstructBVec3,
EOpConstructBVec4,
+ EOpConstructI8Vec2,
+ EOpConstructI8Vec3,
+ EOpConstructI8Vec4,
+ EOpConstructU8Vec2,
+ EOpConstructU8Vec3,
+ EOpConstructU8Vec4,
+ EOpConstructI16Vec2,
+ EOpConstructI16Vec3,
+ EOpConstructI16Vec4,
+ EOpConstructU16Vec2,
+ EOpConstructU16Vec3,
+ EOpConstructU16Vec4,
EOpConstructIVec2,
EOpConstructIVec3,
EOpConstructIVec4,
@@ -489,14 +643,6 @@
EOpConstructU64Vec2,
EOpConstructU64Vec3,
EOpConstructU64Vec4,
-#ifdef AMD_EXTENSIONS
- EOpConstructI16Vec2,
- EOpConstructI16Vec3,
- EOpConstructI16Vec4,
- EOpConstructU16Vec2,
- EOpConstructU16Vec3,
- EOpConstructU16Vec4,
-#endif
EOpConstructMat2x2,
EOpConstructMat2x3,
EOpConstructMat2x4,
@@ -542,7 +688,10 @@
EOpConstructBMat4x2,
EOpConstructBMat4x3,
EOpConstructBMat4x4,
-#ifdef AMD_EXTENSIONS
+ EOpConstructFloat16,
+ EOpConstructF16Vec2,
+ EOpConstructF16Vec3,
+ EOpConstructF16Vec4,
EOpConstructF16Mat2x2,
EOpConstructF16Mat2x3,
EOpConstructF16Mat2x4,
@@ -552,7 +701,6 @@
EOpConstructF16Mat4x2,
EOpConstructF16Mat4x3,
EOpConstructF16Mat4x4,
-#endif
EOpConstructStruct,
EOpConstructTextureSampler,
EOpConstructGuardEnd,
@@ -777,6 +925,12 @@
// matrix
EOpMatrixSwizzle, // select multiple matrix components (non-column)
+
+ // SM6 wave ops
+ EOpWaveGetLaneCount, // Will decompose to gl_SubgroupSize.
+ EOpWaveGetLaneIndex, // Will decompose to gl_SubgroupInvocationID.
+ EOpWaveActiveCountBits, // Will decompose to subgroupBallotBitCount(subgroupBallot()).
+ EOpWavePrefixCountBits, // Will decompose to subgroupBallotInclusiveBitCount(subgroupBallot()).
};
class TIntermTraverser;
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index 5e94323..d6d362a 100644
--- a/glslang/Include/revision.h
+++ b/glslang/Include/revision.h
@@ -1,3 +1,3 @@
// This header is generated by the make-revision script.
-#define GLSLANG_PATCH_LEVEL 2583
+#define GLSLANG_PATCH_LEVEL 2593
diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp
index 1b73d96..142492d 100644
--- a/glslang/MachineIndependent/Constant.cpp
+++ b/glslang/MachineIndependent/Constant.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -177,11 +178,40 @@
switch (getType().getBasicType()) {
case EbtDouble:
case EbtFloat:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst());
break;
+ case EbtInt8:
+ if (rightUnionArray[i] == 0)
+ newConstArray[i].setI8Const(0x7F);
+ else if (rightUnionArray[i].getI8Const() == -1 && leftUnionArray[i].getI8Const() == (signed char)0x80)
+ newConstArray[i].setI8Const((signed char)0x80);
+ else
+ newConstArray[i].setI8Const(leftUnionArray[i].getI8Const() / rightUnionArray[i].getI8Const());
+ break;
+
+ case EbtUint8:
+ if (rightUnionArray[i] == 0) {
+ newConstArray[i].setU8Const(0xFF);
+ } else
+ newConstArray[i].setU8Const(leftUnionArray[i].getU8Const() / rightUnionArray[i].getU8Const());
+ break;
+
+ case EbtInt16:
+ if (rightUnionArray[i] == 0)
+ newConstArray[i].setI16Const(0x7FFF);
+ else if (rightUnionArray[i].getI16Const() == -1 && leftUnionArray[i].getI16Const() == (signed short)0x8000)
+ newConstArray[i].setI16Const(short(0x8000));
+ else
+ newConstArray[i].setI16Const(leftUnionArray[i].getI16Const() / rightUnionArray[i].getI16Const());
+ break;
+
+ case EbtUint16:
+ if (rightUnionArray[i] == 0) {
+ newConstArray[i].setU16Const(0xFFFF);
+ } else
+ newConstArray[i].setU16Const(leftUnionArray[i].getU16Const() / rightUnionArray[i].getU16Const());
+ break;
case EbtInt:
if (rightUnionArray[i] == 0)
@@ -214,23 +244,6 @@
} else
newConstArray[i].setU64Const(leftUnionArray[i].getU64Const() / rightUnionArray[i].getU64Const());
break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- if (rightUnionArray[i] == 0)
- newConstArray[i].setIConst(0x7FFF);
- else if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == (int)0x8000)
- newConstArray[i].setIConst(0x8000);
- else
- newConstArray[i].setIConst(leftUnionArray[i].getIConst() / rightUnionArray[i].getIConst());
- break;
-
- case EbtUint16:
- if (rightUnionArray[i] == 0) {
- newConstArray[i].setUConst(0xFFFFu);
- } else
- newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst());
- break;
-#endif
default:
return 0;
}
@@ -411,6 +424,12 @@
resultSize = 2;
break;
+ case EOpPack16:
+ case EOpPack32:
+ case EOpPack64:
+ case EOpUnpack32:
+ case EOpUnpack16:
+ case EOpUnpack8:
case EOpNormalize:
componentWise = false;
resultSize = objectSize;
@@ -469,6 +488,12 @@
case EOpPackSnorm2x16:
case EOpPackUnorm2x16:
case EOpPackHalf2x16:
+ case EOpPack16:
+ case EOpPack32:
+ case EOpPack64:
+ case EOpUnpack32:
+ case EOpUnpack16:
+ case EOpUnpack8:
case EOpUnpackSnorm2x16:
case EOpUnpackUnorm2x16:
@@ -494,17 +519,13 @@
case EOpNegative:
switch (getType().getBasicType()) {
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
-#endif
+ case EbtInt8: newConstArray[i].setI8Const(-unionArray[i].getI8Const()); break;
+ case EbtUint8: newConstArray[i].setU8Const(static_cast<unsigned int>(-static_cast<signed int>(unionArray[i].getU8Const()))); break;
+ case EbtInt16: newConstArray[i].setI16Const(-unionArray[i].getI16Const()); break;
+ case EbtUint16:newConstArray[i].setU16Const(static_cast<unsigned int>(-static_cast<signed int>(unionArray[i].getU16Const()))); break;
case EbtInt: newConstArray[i].setIConst(-unionArray[i].getIConst()); break;
-#ifdef AMD_EXTENSIONS
- case EbtUint16:
-#endif
case EbtUint: newConstArray[i].setUConst(static_cast<unsigned int>(-static_cast<int>(unionArray[i].getUConst()))); break;
case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break;
case EbtUint64: newConstArray[i].setU64Const(static_cast<unsigned long long>(-static_cast<long long>(unionArray[i].getU64Const()))); break;
@@ -659,13 +680,10 @@
case EOpDoubleBitsToUint64:
case EOpInt64BitsToDouble:
case EOpUint64BitsToDouble:
-#ifdef AMD_EXTENSIONS
case EOpFloat16BitsToInt16:
case EOpFloat16BitsToUint16:
case EOpInt16BitsToFloat16:
case EOpUint16BitsToFloat16:
-#endif
-
default:
return 0;
}
@@ -749,20 +767,6 @@
for (unsigned int arg = 0; arg < children.size(); ++arg)
childConstUnions.push_back(children[arg]->getAsConstantUnion()->getConstArray());
- // Second, do the actual folding
-
- bool isFloatingPoint = children[0]->getAsTyped()->getBasicType() == EbtFloat ||
-#ifdef AMD_EXTENSIONS
- children[0]->getAsTyped()->getBasicType() == EbtFloat16 ||
-#endif
- children[0]->getAsTyped()->getBasicType() == EbtDouble;
- bool isSigned = children[0]->getAsTyped()->getBasicType() == EbtInt ||
-#ifdef AMD_EXTENSIONS
- children[0]->getAsTyped()->getBasicType() == EbtInt16 ||
-#endif
- children[0]->getAsTyped()->getBasicType() == EbtInt64;
- bool isInt64 = children[0]->getAsTyped()->getBasicType() == EbtInt64 ||
- children[0]->getAsTyped()->getBasicType() == EbtUint64;
if (componentwise) {
for (int comp = 0; comp < objectSize; comp++) {
@@ -783,53 +787,114 @@
newConstArray[comp].setDConst(pow(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst()));
break;
case EOpMin:
- if (isFloatingPoint)
+ switch(children[0]->getAsTyped()->getBasicType()) {
+ case EbtFloat16:
+ case EbtFloat:
+ case EbtDouble:
newConstArray[comp].setDConst(std::min(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst()));
- else if (isSigned) {
- if (isInt64)
- newConstArray[comp].setI64Const(std::min(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const()));
- else
- newConstArray[comp].setIConst(std::min(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst()));
- } else {
- if (isInt64)
- newConstArray[comp].setU64Const(std::min(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()));
- else
- newConstArray[comp].setUConst(std::min(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()));
+ break;
+ case EbtInt8:
+ newConstArray[comp].setI8Const(std::min(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()));
+ break;
+ case EbtUint8:
+ newConstArray[comp].setU8Const(std::min(childConstUnions[0][arg0comp].getU8Const(), childConstUnions[1][arg1comp].getU8Const()));
+ break;
+ case EbtInt16:
+ newConstArray[comp].setI16Const(std::min(childConstUnions[0][arg0comp].getI16Const(), childConstUnions[1][arg1comp].getI16Const()));
+ break;
+ case EbtUint16:
+ newConstArray[comp].setU16Const(std::min(childConstUnions[0][arg0comp].getU16Const(), childConstUnions[1][arg1comp].getU16Const()));
+ break;
+ case EbtInt:
+ newConstArray[comp].setIConst(std::min(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst()));
+ break;
+ case EbtUint:
+ newConstArray[comp].setUConst(std::min(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()));
+ break;
+ case EbtInt64:
+ newConstArray[comp].setI64Const(std::min(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const()));
+ break;
+ case EbtUint64:
+ newConstArray[comp].setU64Const(std::min(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()));
+ break;
+ default: assert(false && "Default missing");
}
break;
case EOpMax:
- if (isFloatingPoint)
+ switch(children[0]->getAsTyped()->getBasicType()) {
+ case EbtFloat16:
+ case EbtFloat:
+ case EbtDouble:
newConstArray[comp].setDConst(std::max(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst()));
- else if (isSigned) {
- if (isInt64)
- newConstArray[comp].setI64Const(std::max(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const()));
- else
- newConstArray[comp].setIConst(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst()));
- } else {
- if (isInt64)
- newConstArray[comp].setU64Const(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()));
- else
- newConstArray[comp].setUConst(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()));
+ break;
+ case EbtInt8:
+ newConstArray[comp].setI8Const(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()));
+ break;
+ case EbtUint8:
+ newConstArray[comp].setU8Const(std::max(childConstUnions[0][arg0comp].getU8Const(), childConstUnions[1][arg1comp].getU8Const()));
+ break;
+ case EbtInt16:
+ newConstArray[comp].setI16Const(std::max(childConstUnions[0][arg0comp].getI16Const(), childConstUnions[1][arg1comp].getI16Const()));
+ break;
+ case EbtUint16:
+ newConstArray[comp].setU16Const(std::max(childConstUnions[0][arg0comp].getU16Const(), childConstUnions[1][arg1comp].getU16Const()));
+ break;
+ case EbtInt:
+ newConstArray[comp].setIConst(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst()));
+ break;
+ case EbtUint:
+ newConstArray[comp].setUConst(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()));
+ break;
+ case EbtInt64:
+ newConstArray[comp].setI64Const(std::max(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const()));
+ break;
+ case EbtUint64:
+ newConstArray[comp].setU64Const(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()));
+ break;
+ default: assert(false && "Default missing");
}
break;
case EOpClamp:
- if (isFloatingPoint)
+ switch(children[0]->getAsTyped()->getBasicType()) {
+ case EbtFloat16:
+ case EbtFloat:
+ case EbtDouble:
newConstArray[comp].setDConst(std::min(std::max(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst()),
childConstUnions[2][arg2comp].getDConst()));
- else if (isSigned) {
- if (isInt64)
- newConstArray[comp].setI64Const(std::min(std::max(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const()),
- childConstUnions[2][arg2comp].getI64Const()));
- else
- newConstArray[comp].setIConst(std::min(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst()),
+ break;
+ case EbtInt8:
+ newConstArray[comp].setI8Const(std::min(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()),
+ childConstUnions[2][arg2comp].getI8Const()));
+ break;
+ case EbtUint8:
+ newConstArray[comp].setU8Const(std::min(std::max(childConstUnions[0][arg0comp].getU8Const(), childConstUnions[1][arg1comp].getU8Const()),
+ childConstUnions[2][arg2comp].getU8Const()));
+ break;
+ case EbtInt16:
+ newConstArray[comp].setI16Const(std::min(std::max(childConstUnions[0][arg0comp].getI16Const(), childConstUnions[1][arg1comp].getI16Const()),
+ childConstUnions[2][arg2comp].getI16Const()));
+ break;
+ case EbtUint16:
+ newConstArray[comp].setU16Const(std::min(std::max(childConstUnions[0][arg0comp].getU16Const(), childConstUnions[1][arg1comp].getU16Const()),
+ childConstUnions[2][arg2comp].getU16Const()));
+ break;
+ case EbtInt:
+ newConstArray[comp].setIConst(std::min(std::max(childConstUnions[0][arg0comp].getIConst(), childConstUnions[1][arg1comp].getIConst()),
childConstUnions[2][arg2comp].getIConst()));
- } else {
- if (isInt64)
- newConstArray[comp].setU64Const(std::min(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()),
- childConstUnions[2][arg2comp].getU64Const()));
- else
- newConstArray[comp].setUConst(std::min(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()),
+ break;
+ case EbtUint:
+ newConstArray[comp].setUConst(std::min(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()),
childConstUnions[2][arg2comp].getUConst()));
+ break;
+ case EbtInt64:
+ newConstArray[comp].setI64Const(std::min(std::max(childConstUnions[0][arg0comp].getI64Const(), childConstUnions[1][arg1comp].getI64Const()),
+ childConstUnions[2][arg2comp].getI64Const()));
+ break;
+ case EbtUint64:
+ newConstArray[comp].setU64Const(std::min(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()),
+ childConstUnions[2][arg2comp].getU64Const()));
+ break;
+ default: assert(false && "Default missing");
}
break;
case EOpLessThan:
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 66f824f..b231898 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -2,6 +2,7 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2016 LunarG, Inc.
// Copyright (C) 2015-2017 Google, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -82,10 +83,14 @@
{
// Set up textual representations for making all the permutations
// of texturing/imaging functions.
- prefixes[EbtFloat] = "";
+ prefixes[EbtFloat] = "";
#ifdef AMD_EXTENSIONS
prefixes[EbtFloat16] = "f16";
#endif
+ prefixes[EbtInt8] = "i8";
+ prefixes[EbtUint8] = "u8";
+ prefixes[EbtInt16] = "i16";
+ prefixes[EbtUint16] = "u16";
prefixes[EbtInt] = "i";
prefixes[EbtUint] = "u";
postfixes[2] = "2";
@@ -802,7 +807,6 @@
"bvec3 notEqual(u64vec3, u64vec3);"
"bvec4 notEqual(u64vec4, u64vec4);"
-#ifdef AMD_EXTENSIONS
"int findLSB(int64_t);"
"ivec2 findLSB(i64vec2);"
"ivec3 findLSB(i64vec3);"
@@ -822,7 +826,7 @@
"ivec2 findMSB(u64vec2);"
"ivec3 findMSB(u64vec3);"
"ivec4 findMSB(u64vec4);"
-#endif
+
"\n"
);
}
@@ -1630,6 +1634,727 @@
"\n");
}
+ // GL_KHR_shader_subgroup
+ if (spvVersion.vulkan > 0) {
+ commonBuiltins.append(
+ "void subgroupBarrier();"
+ "void subgroupMemoryBarrier();"
+ "void subgroupMemoryBarrierBuffer();"
+ "void subgroupMemoryBarrierImage();"
+ "bool subgroupElect();"
+
+ "bool subgroupAll(bool);\n"
+ "bool subgroupAny(bool);\n"
+
+ "bool subgroupAllEqual(float);\n"
+ "bool subgroupAllEqual(vec2);\n"
+ "bool subgroupAllEqual(vec3);\n"
+ "bool subgroupAllEqual(vec4);\n"
+ "bool subgroupAllEqual(int);\n"
+ "bool subgroupAllEqual(ivec2);\n"
+ "bool subgroupAllEqual(ivec3);\n"
+ "bool subgroupAllEqual(ivec4);\n"
+ "bool subgroupAllEqual(uint);\n"
+ "bool subgroupAllEqual(uvec2);\n"
+ "bool subgroupAllEqual(uvec3);\n"
+ "bool subgroupAllEqual(uvec4);\n"
+ "bool subgroupAllEqual(bool);\n"
+ "bool subgroupAllEqual(bvec2);\n"
+ "bool subgroupAllEqual(bvec3);\n"
+ "bool subgroupAllEqual(bvec4);\n"
+
+ "float subgroupBroadcast(float, uint);\n"
+ "vec2 subgroupBroadcast(vec2, uint);\n"
+ "vec3 subgroupBroadcast(vec3, uint);\n"
+ "vec4 subgroupBroadcast(vec4, uint);\n"
+ "int subgroupBroadcast(int, uint);\n"
+ "ivec2 subgroupBroadcast(ivec2, uint);\n"
+ "ivec3 subgroupBroadcast(ivec3, uint);\n"
+ "ivec4 subgroupBroadcast(ivec4, uint);\n"
+ "uint subgroupBroadcast(uint, uint);\n"
+ "uvec2 subgroupBroadcast(uvec2, uint);\n"
+ "uvec3 subgroupBroadcast(uvec3, uint);\n"
+ "uvec4 subgroupBroadcast(uvec4, uint);\n"
+ "bool subgroupBroadcast(bool, uint);\n"
+ "bvec2 subgroupBroadcast(bvec2, uint);\n"
+ "bvec3 subgroupBroadcast(bvec3, uint);\n"
+ "bvec4 subgroupBroadcast(bvec4, uint);\n"
+
+ "float subgroupBroadcastFirst(float);\n"
+ "vec2 subgroupBroadcastFirst(vec2);\n"
+ "vec3 subgroupBroadcastFirst(vec3);\n"
+ "vec4 subgroupBroadcastFirst(vec4);\n"
+ "int subgroupBroadcastFirst(int);\n"
+ "ivec2 subgroupBroadcastFirst(ivec2);\n"
+ "ivec3 subgroupBroadcastFirst(ivec3);\n"
+ "ivec4 subgroupBroadcastFirst(ivec4);\n"
+ "uint subgroupBroadcastFirst(uint);\n"
+ "uvec2 subgroupBroadcastFirst(uvec2);\n"
+ "uvec3 subgroupBroadcastFirst(uvec3);\n"
+ "uvec4 subgroupBroadcastFirst(uvec4);\n"
+ "bool subgroupBroadcastFirst(bool);\n"
+ "bvec2 subgroupBroadcastFirst(bvec2);\n"
+ "bvec3 subgroupBroadcastFirst(bvec3);\n"
+ "bvec4 subgroupBroadcastFirst(bvec4);\n"
+
+ "uvec4 subgroupBallot(bool);\n"
+ "bool subgroupInverseBallot(uvec4);\n"
+ "bool subgroupBallotBitExtract(uvec4, uint);\n"
+ "uint subgroupBallotBitCount(uvec4);\n"
+ "uint subgroupBallotInclusiveBitCount(uvec4);\n"
+ "uint subgroupBallotExclusiveBitCount(uvec4);\n"
+ "uint subgroupBallotFindLSB(uvec4);\n"
+ "uint subgroupBallotFindMSB(uvec4);\n"
+
+ "float subgroupShuffle(float, uint);\n"
+ "vec2 subgroupShuffle(vec2, uint);\n"
+ "vec3 subgroupShuffle(vec3, uint);\n"
+ "vec4 subgroupShuffle(vec4, uint);\n"
+ "int subgroupShuffle(int, uint);\n"
+ "ivec2 subgroupShuffle(ivec2, uint);\n"
+ "ivec3 subgroupShuffle(ivec3, uint);\n"
+ "ivec4 subgroupShuffle(ivec4, uint);\n"
+ "uint subgroupShuffle(uint, uint);\n"
+ "uvec2 subgroupShuffle(uvec2, uint);\n"
+ "uvec3 subgroupShuffle(uvec3, uint);\n"
+ "uvec4 subgroupShuffle(uvec4, uint);\n"
+ "bool subgroupShuffle(bool, uint);\n"
+ "bvec2 subgroupShuffle(bvec2, uint);\n"
+ "bvec3 subgroupShuffle(bvec3, uint);\n"
+ "bvec4 subgroupShuffle(bvec4, uint);\n"
+
+ "float subgroupShuffleXor(float, uint);\n"
+ "vec2 subgroupShuffleXor(vec2, uint);\n"
+ "vec3 subgroupShuffleXor(vec3, uint);\n"
+ "vec4 subgroupShuffleXor(vec4, uint);\n"
+ "int subgroupShuffleXor(int, uint);\n"
+ "ivec2 subgroupShuffleXor(ivec2, uint);\n"
+ "ivec3 subgroupShuffleXor(ivec3, uint);\n"
+ "ivec4 subgroupShuffleXor(ivec4, uint);\n"
+ "uint subgroupShuffleXor(uint, uint);\n"
+ "uvec2 subgroupShuffleXor(uvec2, uint);\n"
+ "uvec3 subgroupShuffleXor(uvec3, uint);\n"
+ "uvec4 subgroupShuffleXor(uvec4, uint);\n"
+ "bool subgroupShuffleXor(bool, uint);\n"
+ "bvec2 subgroupShuffleXor(bvec2, uint);\n"
+ "bvec3 subgroupShuffleXor(bvec3, uint);\n"
+ "bvec4 subgroupShuffleXor(bvec4, uint);\n"
+
+ "float subgroupShuffleUp(float, uint delta);\n"
+ "vec2 subgroupShuffleUp(vec2, uint delta);\n"
+ "vec3 subgroupShuffleUp(vec3, uint delta);\n"
+ "vec4 subgroupShuffleUp(vec4, uint delta);\n"
+ "int subgroupShuffleUp(int, uint delta);\n"
+ "ivec2 subgroupShuffleUp(ivec2, uint delta);\n"
+ "ivec3 subgroupShuffleUp(ivec3, uint delta);\n"
+ "ivec4 subgroupShuffleUp(ivec4, uint delta);\n"
+ "uint subgroupShuffleUp(uint, uint delta);\n"
+ "uvec2 subgroupShuffleUp(uvec2, uint delta);\n"
+ "uvec3 subgroupShuffleUp(uvec3, uint delta);\n"
+ "uvec4 subgroupShuffleUp(uvec4, uint delta);\n"
+ "bool subgroupShuffleUp(bool, uint delta);\n"
+ "bvec2 subgroupShuffleUp(bvec2, uint delta);\n"
+ "bvec3 subgroupShuffleUp(bvec3, uint delta);\n"
+ "bvec4 subgroupShuffleUp(bvec4, uint delta);\n"
+
+ "float subgroupShuffleDown(float, uint delta);\n"
+ "vec2 subgroupShuffleDown(vec2, uint delta);\n"
+ "vec3 subgroupShuffleDown(vec3, uint delta);\n"
+ "vec4 subgroupShuffleDown(vec4, uint delta);\n"
+ "int subgroupShuffleDown(int, uint delta);\n"
+ "ivec2 subgroupShuffleDown(ivec2, uint delta);\n"
+ "ivec3 subgroupShuffleDown(ivec3, uint delta);\n"
+ "ivec4 subgroupShuffleDown(ivec4, uint delta);\n"
+ "uint subgroupShuffleDown(uint, uint delta);\n"
+ "uvec2 subgroupShuffleDown(uvec2, uint delta);\n"
+ "uvec3 subgroupShuffleDown(uvec3, uint delta);\n"
+ "uvec4 subgroupShuffleDown(uvec4, uint delta);\n"
+ "bool subgroupShuffleDown(bool, uint delta);\n"
+ "bvec2 subgroupShuffleDown(bvec2, uint delta);\n"
+ "bvec3 subgroupShuffleDown(bvec3, uint delta);\n"
+ "bvec4 subgroupShuffleDown(bvec4, uint delta);\n"
+
+ "float subgroupAdd(float);\n"
+ "vec2 subgroupAdd(vec2);\n"
+ "vec3 subgroupAdd(vec3);\n"
+ "vec4 subgroupAdd(vec4);\n"
+ "int subgroupAdd(int);\n"
+ "ivec2 subgroupAdd(ivec2);\n"
+ "ivec3 subgroupAdd(ivec3);\n"
+ "ivec4 subgroupAdd(ivec4);\n"
+ "uint subgroupAdd(uint);\n"
+ "uvec2 subgroupAdd(uvec2);\n"
+ "uvec3 subgroupAdd(uvec3);\n"
+ "uvec4 subgroupAdd(uvec4);\n"
+
+ "float subgroupMul(float);\n"
+ "vec2 subgroupMul(vec2);\n"
+ "vec3 subgroupMul(vec3);\n"
+ "vec4 subgroupMul(vec4);\n"
+ "int subgroupMul(int);\n"
+ "ivec2 subgroupMul(ivec2);\n"
+ "ivec3 subgroupMul(ivec3);\n"
+ "ivec4 subgroupMul(ivec4);\n"
+ "uint subgroupMul(uint);\n"
+ "uvec2 subgroupMul(uvec2);\n"
+ "uvec3 subgroupMul(uvec3);\n"
+ "uvec4 subgroupMul(uvec4);\n"
+
+ "float subgroupMin(float);\n"
+ "vec2 subgroupMin(vec2);\n"
+ "vec3 subgroupMin(vec3);\n"
+ "vec4 subgroupMin(vec4);\n"
+ "int subgroupMin(int);\n"
+ "ivec2 subgroupMin(ivec2);\n"
+ "ivec3 subgroupMin(ivec3);\n"
+ "ivec4 subgroupMin(ivec4);\n"
+ "uint subgroupMin(uint);\n"
+ "uvec2 subgroupMin(uvec2);\n"
+ "uvec3 subgroupMin(uvec3);\n"
+ "uvec4 subgroupMin(uvec4);\n"
+
+ "float subgroupMax(float);\n"
+ "vec2 subgroupMax(vec2);\n"
+ "vec3 subgroupMax(vec3);\n"
+ "vec4 subgroupMax(vec4);\n"
+ "int subgroupMax(int);\n"
+ "ivec2 subgroupMax(ivec2);\n"
+ "ivec3 subgroupMax(ivec3);\n"
+ "ivec4 subgroupMax(ivec4);\n"
+ "uint subgroupMax(uint);\n"
+ "uvec2 subgroupMax(uvec2);\n"
+ "uvec3 subgroupMax(uvec3);\n"
+ "uvec4 subgroupMax(uvec4);\n"
+
+ "int subgroupAnd(int);\n"
+ "ivec2 subgroupAnd(ivec2);\n"
+ "ivec3 subgroupAnd(ivec3);\n"
+ "ivec4 subgroupAnd(ivec4);\n"
+ "uint subgroupAnd(uint);\n"
+ "uvec2 subgroupAnd(uvec2);\n"
+ "uvec3 subgroupAnd(uvec3);\n"
+ "uvec4 subgroupAnd(uvec4);\n"
+ "bool subgroupAnd(bool);\n"
+ "bvec2 subgroupAnd(bvec2);\n"
+ "bvec3 subgroupAnd(bvec3);\n"
+ "bvec4 subgroupAnd(bvec4);\n"
+
+ "int subgroupOr(int);\n"
+ "ivec2 subgroupOr(ivec2);\n"
+ "ivec3 subgroupOr(ivec3);\n"
+ "ivec4 subgroupOr(ivec4);\n"
+ "uint subgroupOr(uint);\n"
+ "uvec2 subgroupOr(uvec2);\n"
+ "uvec3 subgroupOr(uvec3);\n"
+ "uvec4 subgroupOr(uvec4);\n"
+ "bool subgroupOr(bool);\n"
+ "bvec2 subgroupOr(bvec2);\n"
+ "bvec3 subgroupOr(bvec3);\n"
+ "bvec4 subgroupOr(bvec4);\n"
+
+ "int subgroupXor(int);\n"
+ "ivec2 subgroupXor(ivec2);\n"
+ "ivec3 subgroupXor(ivec3);\n"
+ "ivec4 subgroupXor(ivec4);\n"
+ "uint subgroupXor(uint);\n"
+ "uvec2 subgroupXor(uvec2);\n"
+ "uvec3 subgroupXor(uvec3);\n"
+ "uvec4 subgroupXor(uvec4);\n"
+ "bool subgroupXor(bool);\n"
+ "bvec2 subgroupXor(bvec2);\n"
+ "bvec3 subgroupXor(bvec3);\n"
+ "bvec4 subgroupXor(bvec4);\n"
+
+ "float subgroupInclusiveAdd(float);\n"
+ "vec2 subgroupInclusiveAdd(vec2);\n"
+ "vec3 subgroupInclusiveAdd(vec3);\n"
+ "vec4 subgroupInclusiveAdd(vec4);\n"
+ "int subgroupInclusiveAdd(int);\n"
+ "ivec2 subgroupInclusiveAdd(ivec2);\n"
+ "ivec3 subgroupInclusiveAdd(ivec3);\n"
+ "ivec4 subgroupInclusiveAdd(ivec4);\n"
+ "uint subgroupInclusiveAdd(uint);\n"
+ "uvec2 subgroupInclusiveAdd(uvec2);\n"
+ "uvec3 subgroupInclusiveAdd(uvec3);\n"
+ "uvec4 subgroupInclusiveAdd(uvec4);\n"
+
+ "float subgroupInclusiveMul(float);\n"
+ "vec2 subgroupInclusiveMul(vec2);\n"
+ "vec3 subgroupInclusiveMul(vec3);\n"
+ "vec4 subgroupInclusiveMul(vec4);\n"
+ "int subgroupInclusiveMul(int);\n"
+ "ivec2 subgroupInclusiveMul(ivec2);\n"
+ "ivec3 subgroupInclusiveMul(ivec3);\n"
+ "ivec4 subgroupInclusiveMul(ivec4);\n"
+ "uint subgroupInclusiveMul(uint);\n"
+ "uvec2 subgroupInclusiveMul(uvec2);\n"
+ "uvec3 subgroupInclusiveMul(uvec3);\n"
+ "uvec4 subgroupInclusiveMul(uvec4);\n"
+
+ "float subgroupInclusiveMin(float);\n"
+ "vec2 subgroupInclusiveMin(vec2);\n"
+ "vec3 subgroupInclusiveMin(vec3);\n"
+ "vec4 subgroupInclusiveMin(vec4);\n"
+ "int subgroupInclusiveMin(int);\n"
+ "ivec2 subgroupInclusiveMin(ivec2);\n"
+ "ivec3 subgroupInclusiveMin(ivec3);\n"
+ "ivec4 subgroupInclusiveMin(ivec4);\n"
+ "uint subgroupInclusiveMin(uint);\n"
+ "uvec2 subgroupInclusiveMin(uvec2);\n"
+ "uvec3 subgroupInclusiveMin(uvec3);\n"
+ "uvec4 subgroupInclusiveMin(uvec4);\n"
+
+ "float subgroupInclusiveMax(float);\n"
+ "vec2 subgroupInclusiveMax(vec2);\n"
+ "vec3 subgroupInclusiveMax(vec3);\n"
+ "vec4 subgroupInclusiveMax(vec4);\n"
+ "int subgroupInclusiveMax(int);\n"
+ "ivec2 subgroupInclusiveMax(ivec2);\n"
+ "ivec3 subgroupInclusiveMax(ivec3);\n"
+ "ivec4 subgroupInclusiveMax(ivec4);\n"
+ "uint subgroupInclusiveMax(uint);\n"
+ "uvec2 subgroupInclusiveMax(uvec2);\n"
+ "uvec3 subgroupInclusiveMax(uvec3);\n"
+ "uvec4 subgroupInclusiveMax(uvec4);\n"
+
+ "int subgroupInclusiveAnd(int);\n"
+ "ivec2 subgroupInclusiveAnd(ivec2);\n"
+ "ivec3 subgroupInclusiveAnd(ivec3);\n"
+ "ivec4 subgroupInclusiveAnd(ivec4);\n"
+ "uint subgroupInclusiveAnd(uint);\n"
+ "uvec2 subgroupInclusiveAnd(uvec2);\n"
+ "uvec3 subgroupInclusiveAnd(uvec3);\n"
+ "uvec4 subgroupInclusiveAnd(uvec4);\n"
+ "bool subgroupInclusiveAnd(bool);\n"
+ "bvec2 subgroupInclusiveAnd(bvec2);\n"
+ "bvec3 subgroupInclusiveAnd(bvec3);\n"
+ "bvec4 subgroupInclusiveAnd(bvec4);\n"
+
+ "int subgroupInclusiveOr(int);\n"
+ "ivec2 subgroupInclusiveOr(ivec2);\n"
+ "ivec3 subgroupInclusiveOr(ivec3);\n"
+ "ivec4 subgroupInclusiveOr(ivec4);\n"
+ "uint subgroupInclusiveOr(uint);\n"
+ "uvec2 subgroupInclusiveOr(uvec2);\n"
+ "uvec3 subgroupInclusiveOr(uvec3);\n"
+ "uvec4 subgroupInclusiveOr(uvec4);\n"
+ "bool subgroupInclusiveOr(bool);\n"
+ "bvec2 subgroupInclusiveOr(bvec2);\n"
+ "bvec3 subgroupInclusiveOr(bvec3);\n"
+ "bvec4 subgroupInclusiveOr(bvec4);\n"
+
+ "int subgroupInclusiveXor(int);\n"
+ "ivec2 subgroupInclusiveXor(ivec2);\n"
+ "ivec3 subgroupInclusiveXor(ivec3);\n"
+ "ivec4 subgroupInclusiveXor(ivec4);\n"
+ "uint subgroupInclusiveXor(uint);\n"
+ "uvec2 subgroupInclusiveXor(uvec2);\n"
+ "uvec3 subgroupInclusiveXor(uvec3);\n"
+ "uvec4 subgroupInclusiveXor(uvec4);\n"
+ "bool subgroupInclusiveXor(bool);\n"
+ "bvec2 subgroupInclusiveXor(bvec2);\n"
+ "bvec3 subgroupInclusiveXor(bvec3);\n"
+ "bvec4 subgroupInclusiveXor(bvec4);\n"
+
+ "float subgroupExclusiveAdd(float);\n"
+ "vec2 subgroupExclusiveAdd(vec2);\n"
+ "vec3 subgroupExclusiveAdd(vec3);\n"
+ "vec4 subgroupExclusiveAdd(vec4);\n"
+ "int subgroupExclusiveAdd(int);\n"
+ "ivec2 subgroupExclusiveAdd(ivec2);\n"
+ "ivec3 subgroupExclusiveAdd(ivec3);\n"
+ "ivec4 subgroupExclusiveAdd(ivec4);\n"
+ "uint subgroupExclusiveAdd(uint);\n"
+ "uvec2 subgroupExclusiveAdd(uvec2);\n"
+ "uvec3 subgroupExclusiveAdd(uvec3);\n"
+ "uvec4 subgroupExclusiveAdd(uvec4);\n"
+
+ "float subgroupExclusiveMul(float);\n"
+ "vec2 subgroupExclusiveMul(vec2);\n"
+ "vec3 subgroupExclusiveMul(vec3);\n"
+ "vec4 subgroupExclusiveMul(vec4);\n"
+ "int subgroupExclusiveMul(int);\n"
+ "ivec2 subgroupExclusiveMul(ivec2);\n"
+ "ivec3 subgroupExclusiveMul(ivec3);\n"
+ "ivec4 subgroupExclusiveMul(ivec4);\n"
+ "uint subgroupExclusiveMul(uint);\n"
+ "uvec2 subgroupExclusiveMul(uvec2);\n"
+ "uvec3 subgroupExclusiveMul(uvec3);\n"
+ "uvec4 subgroupExclusiveMul(uvec4);\n"
+
+ "float subgroupExclusiveMin(float);\n"
+ "vec2 subgroupExclusiveMin(vec2);\n"
+ "vec3 subgroupExclusiveMin(vec3);\n"
+ "vec4 subgroupExclusiveMin(vec4);\n"
+ "int subgroupExclusiveMin(int);\n"
+ "ivec2 subgroupExclusiveMin(ivec2);\n"
+ "ivec3 subgroupExclusiveMin(ivec3);\n"
+ "ivec4 subgroupExclusiveMin(ivec4);\n"
+ "uint subgroupExclusiveMin(uint);\n"
+ "uvec2 subgroupExclusiveMin(uvec2);\n"
+ "uvec3 subgroupExclusiveMin(uvec3);\n"
+ "uvec4 subgroupExclusiveMin(uvec4);\n"
+
+ "float subgroupExclusiveMax(float);\n"
+ "vec2 subgroupExclusiveMax(vec2);\n"
+ "vec3 subgroupExclusiveMax(vec3);\n"
+ "vec4 subgroupExclusiveMax(vec4);\n"
+ "int subgroupExclusiveMax(int);\n"
+ "ivec2 subgroupExclusiveMax(ivec2);\n"
+ "ivec3 subgroupExclusiveMax(ivec3);\n"
+ "ivec4 subgroupExclusiveMax(ivec4);\n"
+ "uint subgroupExclusiveMax(uint);\n"
+ "uvec2 subgroupExclusiveMax(uvec2);\n"
+ "uvec3 subgroupExclusiveMax(uvec3);\n"
+ "uvec4 subgroupExclusiveMax(uvec4);\n"
+
+ "int subgroupExclusiveAnd(int);\n"
+ "ivec2 subgroupExclusiveAnd(ivec2);\n"
+ "ivec3 subgroupExclusiveAnd(ivec3);\n"
+ "ivec4 subgroupExclusiveAnd(ivec4);\n"
+ "uint subgroupExclusiveAnd(uint);\n"
+ "uvec2 subgroupExclusiveAnd(uvec2);\n"
+ "uvec3 subgroupExclusiveAnd(uvec3);\n"
+ "uvec4 subgroupExclusiveAnd(uvec4);\n"
+ "bool subgroupExclusiveAnd(bool);\n"
+ "bvec2 subgroupExclusiveAnd(bvec2);\n"
+ "bvec3 subgroupExclusiveAnd(bvec3);\n"
+ "bvec4 subgroupExclusiveAnd(bvec4);\n"
+
+ "int subgroupExclusiveOr(int);\n"
+ "ivec2 subgroupExclusiveOr(ivec2);\n"
+ "ivec3 subgroupExclusiveOr(ivec3);\n"
+ "ivec4 subgroupExclusiveOr(ivec4);\n"
+ "uint subgroupExclusiveOr(uint);\n"
+ "uvec2 subgroupExclusiveOr(uvec2);\n"
+ "uvec3 subgroupExclusiveOr(uvec3);\n"
+ "uvec4 subgroupExclusiveOr(uvec4);\n"
+ "bool subgroupExclusiveOr(bool);\n"
+ "bvec2 subgroupExclusiveOr(bvec2);\n"
+ "bvec3 subgroupExclusiveOr(bvec3);\n"
+ "bvec4 subgroupExclusiveOr(bvec4);\n"
+
+ "int subgroupExclusiveXor(int);\n"
+ "ivec2 subgroupExclusiveXor(ivec2);\n"
+ "ivec3 subgroupExclusiveXor(ivec3);\n"
+ "ivec4 subgroupExclusiveXor(ivec4);\n"
+ "uint subgroupExclusiveXor(uint);\n"
+ "uvec2 subgroupExclusiveXor(uvec2);\n"
+ "uvec3 subgroupExclusiveXor(uvec3);\n"
+ "uvec4 subgroupExclusiveXor(uvec4);\n"
+ "bool subgroupExclusiveXor(bool);\n"
+ "bvec2 subgroupExclusiveXor(bvec2);\n"
+ "bvec3 subgroupExclusiveXor(bvec3);\n"
+ "bvec4 subgroupExclusiveXor(bvec4);\n"
+
+ "float subgroupClusteredAdd(float, uint);\n"
+ "vec2 subgroupClusteredAdd(vec2, uint);\n"
+ "vec3 subgroupClusteredAdd(vec3, uint);\n"
+ "vec4 subgroupClusteredAdd(vec4, uint);\n"
+ "int subgroupClusteredAdd(int, uint);\n"
+ "ivec2 subgroupClusteredAdd(ivec2, uint);\n"
+ "ivec3 subgroupClusteredAdd(ivec3, uint);\n"
+ "ivec4 subgroupClusteredAdd(ivec4, uint);\n"
+ "uint subgroupClusteredAdd(uint, uint);\n"
+ "uvec2 subgroupClusteredAdd(uvec2, uint);\n"
+ "uvec3 subgroupClusteredAdd(uvec3, uint);\n"
+ "uvec4 subgroupClusteredAdd(uvec4, uint);\n"
+
+ "float subgroupClusteredMul(float, uint);\n"
+ "vec2 subgroupClusteredMul(vec2, uint);\n"
+ "vec3 subgroupClusteredMul(vec3, uint);\n"
+ "vec4 subgroupClusteredMul(vec4, uint);\n"
+ "int subgroupClusteredMul(int, uint);\n"
+ "ivec2 subgroupClusteredMul(ivec2, uint);\n"
+ "ivec3 subgroupClusteredMul(ivec3, uint);\n"
+ "ivec4 subgroupClusteredMul(ivec4, uint);\n"
+ "uint subgroupClusteredMul(uint, uint);\n"
+ "uvec2 subgroupClusteredMul(uvec2, uint);\n"
+ "uvec3 subgroupClusteredMul(uvec3, uint);\n"
+ "uvec4 subgroupClusteredMul(uvec4, uint);\n"
+
+ "float subgroupClusteredMin(float, uint);\n"
+ "vec2 subgroupClusteredMin(vec2, uint);\n"
+ "vec3 subgroupClusteredMin(vec3, uint);\n"
+ "vec4 subgroupClusteredMin(vec4, uint);\n"
+ "int subgroupClusteredMin(int, uint);\n"
+ "ivec2 subgroupClusteredMin(ivec2, uint);\n"
+ "ivec3 subgroupClusteredMin(ivec3, uint);\n"
+ "ivec4 subgroupClusteredMin(ivec4, uint);\n"
+ "uint subgroupClusteredMin(uint, uint);\n"
+ "uvec2 subgroupClusteredMin(uvec2, uint);\n"
+ "uvec3 subgroupClusteredMin(uvec3, uint);\n"
+ "uvec4 subgroupClusteredMin(uvec4, uint);\n"
+
+ "float subgroupClusteredMax(float, uint);\n"
+ "vec2 subgroupClusteredMax(vec2, uint);\n"
+ "vec3 subgroupClusteredMax(vec3, uint);\n"
+ "vec4 subgroupClusteredMax(vec4, uint);\n"
+ "int subgroupClusteredMax(int, uint);\n"
+ "ivec2 subgroupClusteredMax(ivec2, uint);\n"
+ "ivec3 subgroupClusteredMax(ivec3, uint);\n"
+ "ivec4 subgroupClusteredMax(ivec4, uint);\n"
+ "uint subgroupClusteredMax(uint, uint);\n"
+ "uvec2 subgroupClusteredMax(uvec2, uint);\n"
+ "uvec3 subgroupClusteredMax(uvec3, uint);\n"
+ "uvec4 subgroupClusteredMax(uvec4, uint);\n"
+
+ "int subgroupClusteredAnd(int, uint);\n"
+ "ivec2 subgroupClusteredAnd(ivec2, uint);\n"
+ "ivec3 subgroupClusteredAnd(ivec3, uint);\n"
+ "ivec4 subgroupClusteredAnd(ivec4, uint);\n"
+ "uint subgroupClusteredAnd(uint, uint);\n"
+ "uvec2 subgroupClusteredAnd(uvec2, uint);\n"
+ "uvec3 subgroupClusteredAnd(uvec3, uint);\n"
+ "uvec4 subgroupClusteredAnd(uvec4, uint);\n"
+ "bool subgroupClusteredAnd(bool, uint);\n"
+ "bvec2 subgroupClusteredAnd(bvec2, uint);\n"
+ "bvec3 subgroupClusteredAnd(bvec3, uint);\n"
+ "bvec4 subgroupClusteredAnd(bvec4, uint);\n"
+
+ "int subgroupClusteredOr(int, uint);\n"
+ "ivec2 subgroupClusteredOr(ivec2, uint);\n"
+ "ivec3 subgroupClusteredOr(ivec3, uint);\n"
+ "ivec4 subgroupClusteredOr(ivec4, uint);\n"
+ "uint subgroupClusteredOr(uint, uint);\n"
+ "uvec2 subgroupClusteredOr(uvec2, uint);\n"
+ "uvec3 subgroupClusteredOr(uvec3, uint);\n"
+ "uvec4 subgroupClusteredOr(uvec4, uint);\n"
+ "bool subgroupClusteredOr(bool, uint);\n"
+ "bvec2 subgroupClusteredOr(bvec2, uint);\n"
+ "bvec3 subgroupClusteredOr(bvec3, uint);\n"
+ "bvec4 subgroupClusteredOr(bvec4, uint);\n"
+
+ "int subgroupClusteredXor(int, uint);\n"
+ "ivec2 subgroupClusteredXor(ivec2, uint);\n"
+ "ivec3 subgroupClusteredXor(ivec3, uint);\n"
+ "ivec4 subgroupClusteredXor(ivec4, uint);\n"
+ "uint subgroupClusteredXor(uint, uint);\n"
+ "uvec2 subgroupClusteredXor(uvec2, uint);\n"
+ "uvec3 subgroupClusteredXor(uvec3, uint);\n"
+ "uvec4 subgroupClusteredXor(uvec4, uint);\n"
+ "bool subgroupClusteredXor(bool, uint);\n"
+ "bvec2 subgroupClusteredXor(bvec2, uint);\n"
+ "bvec3 subgroupClusteredXor(bvec3, uint);\n"
+ "bvec4 subgroupClusteredXor(bvec4, uint);\n"
+
+ "float subgroupQuadBroadcast(float, uint);\n"
+ "vec2 subgroupQuadBroadcast(vec2, uint);\n"
+ "vec3 subgroupQuadBroadcast(vec3, uint);\n"
+ "vec4 subgroupQuadBroadcast(vec4, uint);\n"
+ "int subgroupQuadBroadcast(int, uint);\n"
+ "ivec2 subgroupQuadBroadcast(ivec2, uint);\n"
+ "ivec3 subgroupQuadBroadcast(ivec3, uint);\n"
+ "ivec4 subgroupQuadBroadcast(ivec4, uint);\n"
+ "uint subgroupQuadBroadcast(uint, uint);\n"
+ "uvec2 subgroupQuadBroadcast(uvec2, uint);\n"
+ "uvec3 subgroupQuadBroadcast(uvec3, uint);\n"
+ "uvec4 subgroupQuadBroadcast(uvec4, uint);\n"
+ "bool subgroupQuadBroadcast(bool, uint);\n"
+ "bvec2 subgroupQuadBroadcast(bvec2, uint);\n"
+ "bvec3 subgroupQuadBroadcast(bvec3, uint);\n"
+ "bvec4 subgroupQuadBroadcast(bvec4, uint);\n"
+
+ "float subgroupQuadSwapHorizontal(float);\n"
+ "vec2 subgroupQuadSwapHorizontal(vec2);\n"
+ "vec3 subgroupQuadSwapHorizontal(vec3);\n"
+ "vec4 subgroupQuadSwapHorizontal(vec4);\n"
+ "int subgroupQuadSwapHorizontal(int);\n"
+ "ivec2 subgroupQuadSwapHorizontal(ivec2);\n"
+ "ivec3 subgroupQuadSwapHorizontal(ivec3);\n"
+ "ivec4 subgroupQuadSwapHorizontal(ivec4);\n"
+ "uint subgroupQuadSwapHorizontal(uint);\n"
+ "uvec2 subgroupQuadSwapHorizontal(uvec2);\n"
+ "uvec3 subgroupQuadSwapHorizontal(uvec3);\n"
+ "uvec4 subgroupQuadSwapHorizontal(uvec4);\n"
+ "bool subgroupQuadSwapHorizontal(bool);\n"
+ "bvec2 subgroupQuadSwapHorizontal(bvec2);\n"
+ "bvec3 subgroupQuadSwapHorizontal(bvec3);\n"
+ "bvec4 subgroupQuadSwapHorizontal(bvec4);\n"
+
+ "float subgroupQuadSwapVertical(float);\n"
+ "vec2 subgroupQuadSwapVertical(vec2);\n"
+ "vec3 subgroupQuadSwapVertical(vec3);\n"
+ "vec4 subgroupQuadSwapVertical(vec4);\n"
+ "int subgroupQuadSwapVertical(int);\n"
+ "ivec2 subgroupQuadSwapVertical(ivec2);\n"
+ "ivec3 subgroupQuadSwapVertical(ivec3);\n"
+ "ivec4 subgroupQuadSwapVertical(ivec4);\n"
+ "uint subgroupQuadSwapVertical(uint);\n"
+ "uvec2 subgroupQuadSwapVertical(uvec2);\n"
+ "uvec3 subgroupQuadSwapVertical(uvec3);\n"
+ "uvec4 subgroupQuadSwapVertical(uvec4);\n"
+ "bool subgroupQuadSwapVertical(bool);\n"
+ "bvec2 subgroupQuadSwapVertical(bvec2);\n"
+ "bvec3 subgroupQuadSwapVertical(bvec3);\n"
+ "bvec4 subgroupQuadSwapVertical(bvec4);\n"
+
+ "float subgroupQuadSwapDiagonal(float);\n"
+ "vec2 subgroupQuadSwapDiagonal(vec2);\n"
+ "vec3 subgroupQuadSwapDiagonal(vec3);\n"
+ "vec4 subgroupQuadSwapDiagonal(vec4);\n"
+ "int subgroupQuadSwapDiagonal(int);\n"
+ "ivec2 subgroupQuadSwapDiagonal(ivec2);\n"
+ "ivec3 subgroupQuadSwapDiagonal(ivec3);\n"
+ "ivec4 subgroupQuadSwapDiagonal(ivec4);\n"
+ "uint subgroupQuadSwapDiagonal(uint);\n"
+ "uvec2 subgroupQuadSwapDiagonal(uvec2);\n"
+ "uvec3 subgroupQuadSwapDiagonal(uvec3);\n"
+ "uvec4 subgroupQuadSwapDiagonal(uvec4);\n"
+ "bool subgroupQuadSwapDiagonal(bool);\n"
+ "bvec2 subgroupQuadSwapDiagonal(bvec2);\n"
+ "bvec3 subgroupQuadSwapDiagonal(bvec3);\n"
+ "bvec4 subgroupQuadSwapDiagonal(bvec4);\n"
+
+ "\n");
+
+ if (profile != EEsProfile && version >= 400) {
+ commonBuiltins.append(
+ "bool subgroupAllEqual(double);\n"
+ "bool subgroupAllEqual(dvec2);\n"
+ "bool subgroupAllEqual(dvec3);\n"
+ "bool subgroupAllEqual(dvec4);\n"
+
+ "double subgroupBroadcast(double, uint);\n"
+ "dvec2 subgroupBroadcast(dvec2, uint);\n"
+ "dvec3 subgroupBroadcast(dvec3, uint);\n"
+ "dvec4 subgroupBroadcast(dvec4, uint);\n"
+
+ "double subgroupBroadcastFirst(double);\n"
+ "dvec2 subgroupBroadcastFirst(dvec2);\n"
+ "dvec3 subgroupBroadcastFirst(dvec3);\n"
+ "dvec4 subgroupBroadcastFirst(dvec4);\n"
+
+ "double subgroupShuffle(double, uint);\n"
+ "dvec2 subgroupShuffle(dvec2, uint);\n"
+ "dvec3 subgroupShuffle(dvec3, uint);\n"
+ "dvec4 subgroupShuffle(dvec4, uint);\n"
+
+ "double subgroupShuffleXor(double, uint);\n"
+ "dvec2 subgroupShuffleXor(dvec2, uint);\n"
+ "dvec3 subgroupShuffleXor(dvec3, uint);\n"
+ "dvec4 subgroupShuffleXor(dvec4, uint);\n"
+
+ "double subgroupShuffleUp(double, uint delta);\n"
+ "dvec2 subgroupShuffleUp(dvec2, uint delta);\n"
+ "dvec3 subgroupShuffleUp(dvec3, uint delta);\n"
+ "dvec4 subgroupShuffleUp(dvec4, uint delta);\n"
+
+ "double subgroupShuffleDown(double, uint delta);\n"
+ "dvec2 subgroupShuffleDown(dvec2, uint delta);\n"
+ "dvec3 subgroupShuffleDown(dvec3, uint delta);\n"
+ "dvec4 subgroupShuffleDown(dvec4, uint delta);\n"
+
+ "double subgroupAdd(double);\n"
+ "dvec2 subgroupAdd(dvec2);\n"
+ "dvec3 subgroupAdd(dvec3);\n"
+ "dvec4 subgroupAdd(dvec4);\n"
+
+ "double subgroupMul(double);\n"
+ "dvec2 subgroupMul(dvec2);\n"
+ "dvec3 subgroupMul(dvec3);\n"
+ "dvec4 subgroupMul(dvec4);\n"
+
+ "double subgroupMin(double);\n"
+ "dvec2 subgroupMin(dvec2);\n"
+ "dvec3 subgroupMin(dvec3);\n"
+ "dvec4 subgroupMin(dvec4);\n"
+
+ "double subgroupMax(double);\n"
+ "dvec2 subgroupMax(dvec2);\n"
+ "dvec3 subgroupMax(dvec3);\n"
+ "dvec4 subgroupMax(dvec4);\n"
+
+ "double subgroupInclusiveAdd(double);\n"
+ "dvec2 subgroupInclusiveAdd(dvec2);\n"
+ "dvec3 subgroupInclusiveAdd(dvec3);\n"
+ "dvec4 subgroupInclusiveAdd(dvec4);\n"
+
+ "double subgroupInclusiveMul(double);\n"
+ "dvec2 subgroupInclusiveMul(dvec2);\n"
+ "dvec3 subgroupInclusiveMul(dvec3);\n"
+ "dvec4 subgroupInclusiveMul(dvec4);\n"
+
+ "double subgroupInclusiveMin(double);\n"
+ "dvec2 subgroupInclusiveMin(dvec2);\n"
+ "dvec3 subgroupInclusiveMin(dvec3);\n"
+ "dvec4 subgroupInclusiveMin(dvec4);\n"
+
+ "double subgroupInclusiveMax(double);\n"
+ "dvec2 subgroupInclusiveMax(dvec2);\n"
+ "dvec3 subgroupInclusiveMax(dvec3);\n"
+ "dvec4 subgroupInclusiveMax(dvec4);\n"
+
+ "double subgroupExclusiveAdd(double);\n"
+ "dvec2 subgroupExclusiveAdd(dvec2);\n"
+ "dvec3 subgroupExclusiveAdd(dvec3);\n"
+ "dvec4 subgroupExclusiveAdd(dvec4);\n"
+
+ "double subgroupExclusiveMul(double);\n"
+ "dvec2 subgroupExclusiveMul(dvec2);\n"
+ "dvec3 subgroupExclusiveMul(dvec3);\n"
+ "dvec4 subgroupExclusiveMul(dvec4);\n"
+
+ "double subgroupExclusiveMin(double);\n"
+ "dvec2 subgroupExclusiveMin(dvec2);\n"
+ "dvec3 subgroupExclusiveMin(dvec3);\n"
+ "dvec4 subgroupExclusiveMin(dvec4);\n"
+
+ "double subgroupExclusiveMax(double);\n"
+ "dvec2 subgroupExclusiveMax(dvec2);\n"
+ "dvec3 subgroupExclusiveMax(dvec3);\n"
+ "dvec4 subgroupExclusiveMax(dvec4);\n"
+
+ "double subgroupClusteredAdd(double, uint);\n"
+ "dvec2 subgroupClusteredAdd(dvec2, uint);\n"
+ "dvec3 subgroupClusteredAdd(dvec3, uint);\n"
+ "dvec4 subgroupClusteredAdd(dvec4, uint);\n"
+
+ "double subgroupClusteredMul(double, uint);\n"
+ "dvec2 subgroupClusteredMul(dvec2, uint);\n"
+ "dvec3 subgroupClusteredMul(dvec3, uint);\n"
+ "dvec4 subgroupClusteredMul(dvec4, uint);\n"
+
+ "double subgroupClusteredMin(double, uint);\n"
+ "dvec2 subgroupClusteredMin(dvec2, uint);\n"
+ "dvec3 subgroupClusteredMin(dvec3, uint);\n"
+ "dvec4 subgroupClusteredMin(dvec4, uint);\n"
+
+ "double subgroupClusteredMax(double, uint);\n"
+ "dvec2 subgroupClusteredMax(dvec2, uint);\n"
+ "dvec3 subgroupClusteredMax(dvec3, uint);\n"
+ "dvec4 subgroupClusteredMax(dvec4, uint);\n"
+
+ "double subgroupQuadBroadcast(double, uint);\n"
+ "dvec2 subgroupQuadBroadcast(dvec2, uint);\n"
+ "dvec3 subgroupQuadBroadcast(dvec3, uint);\n"
+ "dvec4 subgroupQuadBroadcast(dvec4, uint);\n"
+
+ "double subgroupQuadSwapHorizontal(double);\n"
+ "dvec2 subgroupQuadSwapHorizontal(dvec2);\n"
+ "dvec3 subgroupQuadSwapHorizontal(dvec3);\n"
+ "dvec4 subgroupQuadSwapHorizontal(dvec4);\n"
+
+ "double subgroupQuadSwapVertical(double);\n"
+ "dvec2 subgroupQuadSwapVertical(dvec2);\n"
+ "dvec3 subgroupQuadSwapVertical(dvec3);\n"
+ "dvec4 subgroupQuadSwapVertical(dvec4);\n"
+
+ "double subgroupQuadSwapDiagonal(double);\n"
+ "dvec2 subgroupQuadSwapDiagonal(dvec2);\n"
+ "dvec3 subgroupQuadSwapDiagonal(dvec3);\n"
+ "dvec4 subgroupQuadSwapDiagonal(dvec4);\n"
+
+ "\n");
+ }
+
+ stageBuiltins[EShLangCompute].append(
+ "void subgroupMemoryBarrierShared();"
+
+ "\n"
+ );
+ }
+
if (profile != EEsProfile && version >= 460) {
commonBuiltins.append(
"bool anyInvocation(bool);"
@@ -2333,7 +3058,31 @@
"\n");
}
- // GL_AMD_gpu_shader_half_float
+ // GL_AMD_shader_fragment_mask
+ if (profile != EEsProfile && version >= 450) {
+ commonBuiltins.append(
+ "uint fragmentMaskFetchAMD(sampler2DMS, ivec2);"
+ "uint fragmentMaskFetchAMD(isampler2DMS, ivec2);"
+ "uint fragmentMaskFetchAMD(usampler2DMS, ivec2);"
+
+ "uint fragmentMaskFetchAMD(sampler2DMSArray, ivec3);"
+ "uint fragmentMaskFetchAMD(isampler2DMSArray, ivec3);"
+ "uint fragmentMaskFetchAMD(usampler2DMSArray, ivec3);"
+
+ "vec4 fragmentFetchAMD(sampler2DMS, ivec2, uint);"
+ "ivec4 fragmentFetchAMD(isampler2DMS, ivec2, uint);"
+ "uvec4 fragmentFetchAMD(usampler2DMS, ivec2, uint);"
+
+ "vec4 fragmentFetchAMD(sampler2DMSArray, ivec3, uint);"
+ "ivec4 fragmentFetchAMD(isampler2DMSArray, ivec3, uint);"
+ "uvec4 fragmentFetchAMD(usampler2DMSArray, ivec3, uint);"
+
+ "\n");
+ }
+
+#endif // AMD_EXTENSIONS
+
+ // GL_AMD_gpu_shader_half_float/Explicit types
if (profile != EEsProfile && version >= 450) {
commonBuiltins.append(
"float16_t radians(float16_t);"
@@ -2681,9 +3430,168 @@
"\n");
}
- // GL_AMD_gpu_shader_int16
+ // Explicit types
if (profile != EEsProfile && version >= 450) {
commonBuiltins.append(
+ "int8_t abs(int8_t);"
+ "i8vec2 abs(i8vec2);"
+ "i8vec3 abs(i8vec3);"
+ "i8vec4 abs(i8vec4);"
+
+ "int8_t sign(int8_t);"
+ "i8vec2 sign(i8vec2);"
+ "i8vec3 sign(i8vec3);"
+ "i8vec4 sign(i8vec4);"
+
+ "int8_t min(int8_t x, int8_t y);"
+ "i8vec2 min(i8vec2 x, int8_t y);"
+ "i8vec3 min(i8vec3 x, int8_t y);"
+ "i8vec4 min(i8vec4 x, int8_t y);"
+ "i8vec2 min(i8vec2 x, i8vec2 y);"
+ "i8vec3 min(i8vec3 x, i8vec3 y);"
+ "i8vec4 min(i8vec4 x, i8vec4 y);"
+
+ "uint8_t min(uint8_t x, uint8_t y);"
+ "u8vec2 min(u8vec2 x, uint8_t y);"
+ "u8vec3 min(u8vec3 x, uint8_t y);"
+ "u8vec4 min(u8vec4 x, uint8_t y);"
+ "u8vec2 min(u8vec2 x, u8vec2 y);"
+ "u8vec3 min(u8vec3 x, u8vec3 y);"
+ "u8vec4 min(u8vec4 x, u8vec4 y);"
+
+ "int8_t max(int8_t x, int8_t y);"
+ "i8vec2 max(i8vec2 x, int8_t y);"
+ "i8vec3 max(i8vec3 x, int8_t y);"
+ "i8vec4 max(i8vec4 x, int8_t y);"
+ "i8vec2 max(i8vec2 x, i8vec2 y);"
+ "i8vec3 max(i8vec3 x, i8vec3 y);"
+ "i8vec4 max(i8vec4 x, i8vec4 y);"
+
+ "uint8_t max(uint8_t x, uint8_t y);"
+ "u8vec2 max(u8vec2 x, uint8_t y);"
+ "u8vec3 max(u8vec3 x, uint8_t y);"
+ "u8vec4 max(u8vec4 x, uint8_t y);"
+ "u8vec2 max(u8vec2 x, u8vec2 y);"
+ "u8vec3 max(u8vec3 x, u8vec3 y);"
+ "u8vec4 max(u8vec4 x, u8vec4 y);"
+
+ "int8_t clamp(int8_t x, int8_t minVal, int8_t maxVal);"
+ "i8vec2 clamp(i8vec2 x, int8_t minVal, int8_t maxVal);"
+ "i8vec3 clamp(i8vec3 x, int8_t minVal, int8_t maxVal);"
+ "i8vec4 clamp(i8vec4 x, int8_t minVal, int8_t maxVal);"
+ "i8vec2 clamp(i8vec2 x, i8vec2 minVal, i8vec2 maxVal);"
+ "i8vec3 clamp(i8vec3 x, i8vec3 minVal, i8vec3 maxVal);"
+ "i8vec4 clamp(i8vec4 x, i8vec4 minVal, i8vec4 maxVal);"
+
+ "uint8_t clamp(uint8_t x, uint8_t minVal, uint8_t maxVal);"
+ "u8vec2 clamp(u8vec2 x, uint8_t minVal, uint8_t maxVal);"
+ "u8vec3 clamp(u8vec3 x, uint8_t minVal, uint8_t maxVal);"
+ "u8vec4 clamp(u8vec4 x, uint8_t minVal, uint8_t maxVal);"
+ "u8vec2 clamp(u8vec2 x, u8vec2 minVal, u8vec2 maxVal);"
+ "u8vec3 clamp(u8vec3 x, u8vec3 minVal, u8vec3 maxVal);"
+ "u8vec4 clamp(u8vec4 x, u8vec4 minVal, u8vec4 maxVal);"
+
+ "int8_t mix(int8_t, int8_t, bool);"
+ "i8vec2 mix(i8vec2, i8vec2, bvec2);"
+ "i8vec3 mix(i8vec3, i8vec3, bvec3);"
+ "i8vec4 mix(i8vec4, i8vec4, bvec4);"
+ "uint8_t mix(uint8_t, uint8_t, bool);"
+ "u8vec2 mix(u8vec2, u8vec2, bvec2);"
+ "u8vec3 mix(u8vec3, u8vec3, bvec3);"
+ "u8vec4 mix(u8vec4, u8vec4, bvec4);"
+
+ "bvec2 lessThan(i8vec2, i8vec2);"
+ "bvec3 lessThan(i8vec3, i8vec3);"
+ "bvec4 lessThan(i8vec4, i8vec4);"
+ "bvec2 lessThan(u8vec2, u8vec2);"
+ "bvec3 lessThan(u8vec3, u8vec3);"
+ "bvec4 lessThan(u8vec4, u8vec4);"
+
+ "bvec2 lessThanEqual(i8vec2, i8vec2);"
+ "bvec3 lessThanEqual(i8vec3, i8vec3);"
+ "bvec4 lessThanEqual(i8vec4, i8vec4);"
+ "bvec2 lessThanEqual(u8vec2, u8vec2);"
+ "bvec3 lessThanEqual(u8vec3, u8vec3);"
+ "bvec4 lessThanEqual(u8vec4, u8vec4);"
+
+ "bvec2 greaterThan(i8vec2, i8vec2);"
+ "bvec3 greaterThan(i8vec3, i8vec3);"
+ "bvec4 greaterThan(i8vec4, i8vec4);"
+ "bvec2 greaterThan(u8vec2, u8vec2);"
+ "bvec3 greaterThan(u8vec3, u8vec3);"
+ "bvec4 greaterThan(u8vec4, u8vec4);"
+
+ "bvec2 greaterThanEqual(i8vec2, i8vec2);"
+ "bvec3 greaterThanEqual(i8vec3, i8vec3);"
+ "bvec4 greaterThanEqual(i8vec4, i8vec4);"
+ "bvec2 greaterThanEqual(u8vec2, u8vec2);"
+ "bvec3 greaterThanEqual(u8vec3, u8vec3);"
+ "bvec4 greaterThanEqual(u8vec4, u8vec4);"
+
+ "bvec2 equal(i8vec2, i8vec2);"
+ "bvec3 equal(i8vec3, i8vec3);"
+ "bvec4 equal(i8vec4, i8vec4);"
+ "bvec2 equal(u8vec2, u8vec2);"
+ "bvec3 equal(u8vec3, u8vec3);"
+ "bvec4 equal(u8vec4, u8vec4);"
+
+ "bvec2 notEqual(i8vec2, i8vec2);"
+ "bvec3 notEqual(i8vec3, i8vec3);"
+ "bvec4 notEqual(i8vec4, i8vec4);"
+ "bvec2 notEqual(u8vec2, u8vec2);"
+ "bvec3 notEqual(u8vec3, u8vec3);"
+ "bvec4 notEqual(u8vec4, u8vec4);"
+
+ " int8_t bitfieldExtract( int8_t, int8_t, int8_t);"
+ "i8vec2 bitfieldExtract(i8vec2, int8_t, int8_t);"
+ "i8vec3 bitfieldExtract(i8vec3, int8_t, int8_t);"
+ "i8vec4 bitfieldExtract(i8vec4, int8_t, int8_t);"
+
+ " uint8_t bitfieldExtract( uint8_t, int8_t, int8_t);"
+ "u8vec2 bitfieldExtract(u8vec2, int8_t, int8_t);"
+ "u8vec3 bitfieldExtract(u8vec3, int8_t, int8_t);"
+ "u8vec4 bitfieldExtract(u8vec4, int8_t, int8_t);"
+
+ " int8_t bitfieldInsert( int8_t base, int8_t, int8_t, int8_t);"
+ "i8vec2 bitfieldInsert(i8vec2 base, i8vec2, int8_t, int8_t);"
+ "i8vec3 bitfieldInsert(i8vec3 base, i8vec3, int8_t, int8_t);"
+ "i8vec4 bitfieldInsert(i8vec4 base, i8vec4, int8_t, int8_t);"
+
+ " uint8_t bitfieldInsert( uint8_t base, uint8_t, int8_t, int8_t);"
+ "u8vec2 bitfieldInsert(u8vec2 base, u8vec2, int8_t, int8_t);"
+ "u8vec3 bitfieldInsert(u8vec3 base, u8vec3, int8_t, int8_t);"
+ "u8vec4 bitfieldInsert(u8vec4 base, u8vec4, int8_t, int8_t);"
+
+ " int8_t bitCount( int8_t);"
+ "i8vec2 bitCount(i8vec2);"
+ "i8vec3 bitCount(i8vec3);"
+ "i8vec4 bitCount(i8vec4);"
+
+ " int8_t bitCount( uint8_t);"
+ "i8vec2 bitCount(u8vec2);"
+ "i8vec3 bitCount(u8vec3);"
+ "i8vec4 bitCount(u8vec4);"
+
+ " int8_t findLSB( int8_t);"
+ "i8vec2 findLSB(i8vec2);"
+ "i8vec3 findLSB(i8vec3);"
+ "i8vec4 findLSB(i8vec4);"
+
+ " int8_t findLSB( uint8_t);"
+ "i8vec2 findLSB(u8vec2);"
+ "i8vec3 findLSB(u8vec3);"
+ "i8vec4 findLSB(u8vec4);"
+
+ " int8_t findMSB( int8_t);"
+ "i8vec2 findMSB(i8vec2);"
+ "i8vec3 findMSB(i8vec3);"
+ "i8vec4 findMSB(i8vec4);"
+
+ " int8_t findMSB( uint8_t);"
+ "i8vec2 findMSB(u8vec2);"
+ "i8vec3 findMSB(u8vec3);"
+ "i8vec4 findMSB(u8vec4);"
+
"int16_t abs(int16_t);"
"i16vec2 abs(i16vec2);"
"i16vec3 abs(i16vec3);"
@@ -2694,50 +3602,53 @@
"i16vec3 sign(i16vec3);"
"i16vec4 sign(i16vec4);"
- "int16_t min(int16_t, int16_t);"
- "i16vec2 min(i16vec2, int16_t);"
- "i16vec3 min(i16vec3, int16_t);"
- "i16vec4 min(i16vec4, int16_t);"
- "i16vec2 min(i16vec2, i16vec2);"
- "i16vec3 min(i16vec3, i16vec3);"
- "i16vec4 min(i16vec4, i16vec4);"
- "uint16_t min(uint16_t, uint16_t);"
- "u16vec2 min(u16vec2, uint16_t);"
- "u16vec3 min(u16vec3, uint16_t);"
- "u16vec4 min(u16vec4, uint16_t);"
- "u16vec2 min(u16vec2, u16vec2);"
- "u16vec3 min(u16vec3, u16vec3);"
- "u16vec4 min(u16vec4, u16vec4);"
+ "int16_t min(int16_t x, int16_t y);"
+ "i16vec2 min(i16vec2 x, int16_t y);"
+ "i16vec3 min(i16vec3 x, int16_t y);"
+ "i16vec4 min(i16vec4 x, int16_t y);"
+ "i16vec2 min(i16vec2 x, i16vec2 y);"
+ "i16vec3 min(i16vec3 x, i16vec3 y);"
+ "i16vec4 min(i16vec4 x, i16vec4 y);"
- "int16_t max(int16_t, int16_t);"
- "i16vec2 max(i16vec2, int16_t);"
- "i16vec3 max(i16vec3, int16_t);"
- "i16vec4 max(i16vec4, int16_t);"
- "i16vec2 max(i16vec2, i16vec2);"
- "i16vec3 max(i16vec3, i16vec3);"
- "i16vec4 max(i16vec4, i16vec4);"
- "uint16_t max(uint16_t, uint16_t);"
- "u16vec2 max(u16vec2, uint16_t);"
- "u16vec3 max(u16vec3, uint16_t);"
- "u16vec4 max(u16vec4, uint16_t);"
- "u16vec2 max(u16vec2, u16vec2);"
- "u16vec3 max(u16vec3, u16vec3);"
- "u16vec4 max(u16vec4, u16vec4);"
+ "uint16_t min(uint16_t x, uint16_t y);"
+ "u16vec2 min(u16vec2 x, uint16_t y);"
+ "u16vec3 min(u16vec3 x, uint16_t y);"
+ "u16vec4 min(u16vec4 x, uint16_t y);"
+ "u16vec2 min(u16vec2 x, u16vec2 y);"
+ "u16vec3 min(u16vec3 x, u16vec3 y);"
+ "u16vec4 min(u16vec4 x, u16vec4 y);"
- "int16_t clamp(int16_t, int16_t, int16_t);"
- "i16vec2 clamp(i16vec2, int16_t, int16_t);"
- "i16vec3 clamp(i16vec3, int16_t, int16_t);"
- "i16vec4 clamp(i16vec4, int16_t, int16_t);"
- "i16vec2 clamp(i16vec2, i16vec2, i16vec2);"
- "i16vec3 clamp(i16vec3, i16vec3, i16vec3);"
- "i16vec4 clamp(i16vec4, i16vec4, i16vec4);"
- "uint16_t clamp(uint16_t, uint16_t, uint16_t);"
- "u16vec2 clamp(u16vec2, uint16_t, uint16_t);"
- "u16vec3 clamp(u16vec3, uint16_t, uint16_t);"
- "u16vec4 clamp(u16vec4, uint16_t, uint16_t);"
- "u16vec2 clamp(u16vec2, u16vec2, u16vec2);"
- "u16vec3 clamp(u16vec3, u16vec3, u16vec3);"
- "u16vec4 clamp(u16vec4, u16vec4, u16vec4);"
+ "int16_t max(int16_t x, int16_t y);"
+ "i16vec2 max(i16vec2 x, int16_t y);"
+ "i16vec3 max(i16vec3 x, int16_t y);"
+ "i16vec4 max(i16vec4 x, int16_t y);"
+ "i16vec2 max(i16vec2 x, i16vec2 y);"
+ "i16vec3 max(i16vec3 x, i16vec3 y);"
+ "i16vec4 max(i16vec4 x, i16vec4 y);"
+
+ "uint16_t max(uint16_t x, uint16_t y);"
+ "u16vec2 max(u16vec2 x, uint16_t y);"
+ "u16vec3 max(u16vec3 x, uint16_t y);"
+ "u16vec4 max(u16vec4 x, uint16_t y);"
+ "u16vec2 max(u16vec2 x, u16vec2 y);"
+ "u16vec3 max(u16vec3 x, u16vec3 y);"
+ "u16vec4 max(u16vec4 x, u16vec4 y);"
+
+ "int16_t clamp(int16_t x, int16_t minVal, int16_t maxVal);"
+ "i16vec2 clamp(i16vec2 x, int16_t minVal, int16_t maxVal);"
+ "i16vec3 clamp(i16vec3 x, int16_t minVal, int16_t maxVal);"
+ "i16vec4 clamp(i16vec4 x, int16_t minVal, int16_t maxVal);"
+ "i16vec2 clamp(i16vec2 x, i16vec2 minVal, i16vec2 maxVal);"
+ "i16vec3 clamp(i16vec3 x, i16vec3 minVal, i16vec3 maxVal);"
+ "i16vec4 clamp(i16vec4 x, i16vec4 minVal, i16vec4 maxVal);"
+
+ "uint16_t clamp(uint16_t x, uint16_t minVal, uint16_t maxVal);"
+ "u16vec2 clamp(u16vec2 x, uint16_t minVal, uint16_t maxVal);"
+ "u16vec3 clamp(u16vec3 x, uint16_t minVal, uint16_t maxVal);"
+ "u16vec4 clamp(u16vec4 x, uint16_t minVal, uint16_t maxVal);"
+ "u16vec2 clamp(u16vec2 x, u16vec2 minVal, u16vec2 maxVal);"
+ "u16vec3 clamp(u16vec3 x, u16vec3 minVal, u16vec3 maxVal);"
+ "u16vec4 clamp(u16vec4 x, u16vec4 minVal, u16vec4 maxVal);"
"int16_t mix(int16_t, int16_t, bool);"
"i16vec2 mix(i16vec2, i16vec2, bvec2);"
@@ -2758,6 +3669,16 @@
"f16vec3 ldexp(f16vec3, i16vec3);"
"f16vec4 ldexp(f16vec4, i16vec4);"
+ "int16_t halfBitsToInt16(float16_t);"
+ "i16vec2 halfBitsToInt16(f16vec2);"
+ "i16vec3 halhBitsToInt16(f16vec3);"
+ "i16vec4 halfBitsToInt16(f16vec4);"
+
+ "uint16_t halfBitsToUint16(float16_t);"
+ "u16vec2 halfBitsToUint16(f16vec2);"
+ "u16vec3 halfBitsToUint16(f16vec3);"
+ "u16vec4 halfBitsToUint16(f16vec4);"
+
"int16_t float16BitsToInt16(float16_t);"
"i16vec2 float16BitsToInt16(f16vec2);"
"i16vec3 float16BitsToInt16(f16vec3);"
@@ -2778,6 +3699,16 @@
"f16vec3 uint16BitsToFloat16(u16vec3);"
"f16vec4 uint16BitsToFloat16(u16vec4);"
+ "float16_t int16BitsToHalf(int16_t);"
+ "f16vec2 int16BitsToHalf(i16vec2);"
+ "f16vec3 int16BitsToHalf(i16vec3);"
+ "f16vec4 int16BitsToHalf(i16vec4);"
+
+ "float16_t uint16BitsToHalf(uint16_t);"
+ "f16vec2 uint16BitsToHalf(u16vec2);"
+ "f16vec3 uint16BitsToHalf(u16vec3);"
+ "f16vec4 uint16BitsToHalf(u16vec4);"
+
"int packInt2x16(i16vec2);"
"uint packUint2x16(u16vec2);"
"int64_t packInt4x16(i16vec4);"
@@ -2829,33 +3760,245 @@
"bvec3 notEqual(u16vec3, u16vec3);"
"bvec4 notEqual(u16vec4, u16vec4);"
+ " int16_t bitfieldExtract( int16_t, int16_t, int16_t);"
+ "i16vec2 bitfieldExtract(i16vec2, int16_t, int16_t);"
+ "i16vec3 bitfieldExtract(i16vec3, int16_t, int16_t);"
+ "i16vec4 bitfieldExtract(i16vec4, int16_t, int16_t);"
+
+ " uint16_t bitfieldExtract( uint16_t, int16_t, int16_t);"
+ "u16vec2 bitfieldExtract(u16vec2, int16_t, int16_t);"
+ "u16vec3 bitfieldExtract(u16vec3, int16_t, int16_t);"
+ "u16vec4 bitfieldExtract(u16vec4, int16_t, int16_t);"
+
+ " int16_t bitfieldInsert( int16_t base, int16_t, int16_t, int16_t);"
+ "i16vec2 bitfieldInsert(i16vec2 base, i16vec2, int16_t, int16_t);"
+ "i16vec3 bitfieldInsert(i16vec3 base, i16vec3, int16_t, int16_t);"
+ "i16vec4 bitfieldInsert(i16vec4 base, i16vec4, int16_t, int16_t);"
+
+ " uint16_t bitfieldInsert( uint16_t base, uint16_t, int16_t, int16_t);"
+ "u16vec2 bitfieldInsert(u16vec2 base, u16vec2, int16_t, int16_t);"
+ "u16vec3 bitfieldInsert(u16vec3 base, u16vec3, int16_t, int16_t);"
+ "u16vec4 bitfieldInsert(u16vec4 base, u16vec4, int16_t, int16_t);"
+
+ " int16_t bitCount( int16_t);"
+ "i16vec2 bitCount(i16vec2);"
+ "i16vec3 bitCount(i16vec3);"
+ "i16vec4 bitCount(i16vec4);"
+
+ " int16_t bitCount( uint16_t);"
+ "i16vec2 bitCount(u16vec2);"
+ "i16vec3 bitCount(u16vec3);"
+ "i16vec4 bitCount(u16vec4);"
+
+ " int16_t findLSB( int16_t);"
+ "i16vec2 findLSB(i16vec2);"
+ "i16vec3 findLSB(i16vec3);"
+ "i16vec4 findLSB(i16vec4);"
+
+ " int16_t findLSB( uint16_t);"
+ "i16vec2 findLSB(u16vec2);"
+ "i16vec3 findLSB(u16vec3);"
+ "i16vec4 findLSB(u16vec4);"
+
+ " int16_t findMSB( int16_t);"
+ "i16vec2 findMSB(i16vec2);"
+ "i16vec3 findMSB(i16vec3);"
+ "i16vec4 findMSB(i16vec4);"
+
+ " int16_t findMSB( uint16_t);"
+ "i16vec2 findMSB(u16vec2);"
+ "i16vec3 findMSB(u16vec3);"
+ "i16vec4 findMSB(u16vec4);"
+
+ "int16_t pack16(i8vec2);"
+ "uint16_t pack16(u8vec2);"
+ "int32_t pack32(i8vec4);"
+ "uint32_t pack32(u8vec4);"
+ "int32_t pack32(i16vec2);"
+ "uint32_t pack32(u16vec2);"
+ "int64_t pack64(i16vec4);"
+ "uint64_t pack64(u16vec4);"
+ "int64_t pack64(i32vec2);"
+ "uint64_t pack64(u32vec2);"
+
+ "i8vec2 unpack8(int16_t);"
+ "u8vec2 unpack8(uint16_t);"
+ "i8vec4 unpack8(int32_t);"
+ "u8vec4 unpack8(uint32_t);"
+ "i16vec2 unpack16(int32_t);"
+ "u16vec2 unpack16(uint32_t);"
+ "i16vec4 unpack16(int64_t);"
+ "u16vec4 unpack16(uint64_t);"
+ "i32vec2 unpack32(int64_t);"
+ "u32vec2 unpack32(uint64_t);"
+
+ "float64_t radians(float64_t);"
+ "f64vec2 radians(f64vec2);"
+ "f64vec3 radians(f64vec3);"
+ "f64vec4 radians(f64vec4);"
+
+ "float64_t degrees(float64_t);"
+ "f64vec2 degrees(f64vec2);"
+ "f64vec3 degrees(f64vec3);"
+ "f64vec4 degrees(f64vec4);"
+
+ "float64_t sin(float64_t);"
+ "f64vec2 sin(f64vec2);"
+ "f64vec3 sin(f64vec3);"
+ "f64vec4 sin(f64vec4);"
+
+ "float64_t cos(float64_t);"
+ "f64vec2 cos(f64vec2);"
+ "f64vec3 cos(f64vec3);"
+ "f64vec4 cos(f64vec4);"
+
+ "float64_t tan(float64_t);"
+ "f64vec2 tan(f64vec2);"
+ "f64vec3 tan(f64vec3);"
+ "f64vec4 tan(f64vec4);"
+
+ "float64_t asin(float64_t);"
+ "f64vec2 asin(f64vec2);"
+ "f64vec3 asin(f64vec3);"
+ "f64vec4 asin(f64vec4);"
+
+ "float64_t acos(float64_t);"
+ "f64vec2 acos(f64vec2);"
+ "f64vec3 acos(f64vec3);"
+ "f64vec4 acos(f64vec4);"
+
+ "float64_t atan(float64_t, float64_t);"
+ "f64vec2 atan(f64vec2, f64vec2);"
+ "f64vec3 atan(f64vec3, f64vec3);"
+ "f64vec4 atan(f64vec4, f64vec4);"
+
+ "float64_t atan(float64_t);"
+ "f64vec2 atan(f64vec2);"
+ "f64vec3 atan(f64vec3);"
+ "f64vec4 atan(f64vec4);"
+
+ "float64_t sinh(float64_t);"
+ "f64vec2 sinh(f64vec2);"
+ "f64vec3 sinh(f64vec3);"
+ "f64vec4 sinh(f64vec4);"
+
+ "float64_t cosh(float64_t);"
+ "f64vec2 cosh(f64vec2);"
+ "f64vec3 cosh(f64vec3);"
+ "f64vec4 cosh(f64vec4);"
+
+ "float64_t tanh(float64_t);"
+ "f64vec2 tanh(f64vec2);"
+ "f64vec3 tanh(f64vec3);"
+ "f64vec4 tanh(f64vec4);"
+
+ "float64_t asinh(float64_t);"
+ "f64vec2 asinh(f64vec2);"
+ "f64vec3 asinh(f64vec3);"
+ "f64vec4 asinh(f64vec4);"
+
+ "float64_t acosh(float64_t);"
+ "f64vec2 acosh(f64vec2);"
+ "f64vec3 acosh(f64vec3);"
+ "f64vec4 acosh(f64vec4);"
+
+ "float64_t atanh(float64_t);"
+ "f64vec2 atanh(f64vec2);"
+ "f64vec3 atanh(f64vec3);"
+ "f64vec4 atanh(f64vec4);"
+
+ "float64_t pow(float64_t, float64_t);"
+ "f64vec2 pow(f64vec2, f64vec2);"
+ "f64vec3 pow(f64vec3, f64vec3);"
+ "f64vec4 pow(f64vec4, f64vec4);"
+
+ "float64_t exp(float64_t);"
+ "f64vec2 exp(f64vec2);"
+ "f64vec3 exp(f64vec3);"
+ "f64vec4 exp(f64vec4);"
+
+ "float64_t log(float64_t);"
+ "f64vec2 log(f64vec2);"
+ "f64vec3 log(f64vec3);"
+ "f64vec4 log(f64vec4);"
+
+ "float64_t exp2(float64_t);"
+ "f64vec2 exp2(f64vec2);"
+ "f64vec3 exp2(f64vec3);"
+ "f64vec4 exp2(f64vec4);"
+
+ "float64_t log2(float64_t);"
+ "f64vec2 log2(f64vec2);"
+ "f64vec3 log2(f64vec3);"
+ "f64vec4 log2(f64vec4);"
"\n");
+ }
+ if (profile != EEsProfile && version >= 450) {
+ stageBuiltins[EShLangFragment].append(
+ "float64_t dFdx(float64_t);"
+ "f64vec2 dFdx(f64vec2);"
+ "f64vec3 dFdx(f64vec3);"
+ "f64vec4 dFdx(f64vec4);"
+
+ "float64_t dFdy(float64_t);"
+ "f64vec2 dFdy(f64vec2);"
+ "f64vec3 dFdy(f64vec3);"
+ "f64vec4 dFdy(f64vec4);"
+
+ "float64_t dFdxFine(float64_t);"
+ "f64vec2 dFdxFine(f64vec2);"
+ "f64vec3 dFdxFine(f64vec3);"
+ "f64vec4 dFdxFine(f64vec4);"
+
+ "float64_t dFdyFine(float64_t);"
+ "f64vec2 dFdyFine(f64vec2);"
+ "f64vec3 dFdyFine(f64vec3);"
+ "f64vec4 dFdyFine(f64vec4);"
+
+ "float64_t dFdxCoarse(float64_t);"
+ "f64vec2 dFdxCoarse(f64vec2);"
+ "f64vec3 dFdxCoarse(f64vec3);"
+ "f64vec4 dFdxCoarse(f64vec4);"
+
+ "float64_t dFdyCoarse(float64_t);"
+ "f64vec2 dFdyCoarse(f64vec2);"
+ "f64vec3 dFdyCoarse(f64vec3);"
+ "f64vec4 dFdyCoarse(f64vec4);"
+
+ "float64_t fwidth(float64_t);"
+ "f64vec2 fwidth(f64vec2);"
+ "f64vec3 fwidth(f64vec3);"
+ "f64vec4 fwidth(f64vec4);"
+
+ "float64_t fwidthFine(float64_t);"
+ "f64vec2 fwidthFine(f64vec2);"
+ "f64vec3 fwidthFine(f64vec3);"
+ "f64vec4 fwidthFine(f64vec4);"
+
+ "float64_t fwidthCoarse(float64_t);"
+ "f64vec2 fwidthCoarse(f64vec2);"
+ "f64vec3 fwidthCoarse(f64vec3);"
+ "f64vec4 fwidthCoarse(f64vec4);"
+
+ "float64_t interpolateAtCentroid(float64_t);"
+ "f64vec2 interpolateAtCentroid(f64vec2);"
+ "f64vec3 interpolateAtCentroid(f64vec3);"
+ "f64vec4 interpolateAtCentroid(f64vec4);"
+
+ "float64_t interpolateAtSample(float64_t, int);"
+ "f64vec2 interpolateAtSample(f64vec2, int);"
+ "f64vec3 interpolateAtSample(f64vec3, int);"
+ "f64vec4 interpolateAtSample(f64vec4, int);"
+
+ "float64_t interpolateAtOffset(float64_t, f64vec2);"
+ "f64vec2 interpolateAtOffset(f64vec2, f64vec2);"
+ "f64vec3 interpolateAtOffset(f64vec3, f64vec2);"
+ "f64vec4 interpolateAtOffset(f64vec4, f64vec2);"
+
+ "\n");
+
}
- // GL_AMD_shader_fragment_mask
- if (profile != EEsProfile && version >= 450) {
- commonBuiltins.append(
- "uint fragmentMaskFetchAMD(sampler2DMS, ivec2);"
- "uint fragmentMaskFetchAMD(isampler2DMS, ivec2);"
- "uint fragmentMaskFetchAMD(usampler2DMS, ivec2);"
-
- "uint fragmentMaskFetchAMD(sampler2DMSArray, ivec3);"
- "uint fragmentMaskFetchAMD(isampler2DMSArray, ivec3);"
- "uint fragmentMaskFetchAMD(usampler2DMSArray, ivec3);"
-
- "vec4 fragmentFetchAMD(sampler2DMS, ivec2, uint);"
- "ivec4 fragmentFetchAMD(isampler2DMS, ivec2, uint);"
- "uvec4 fragmentFetchAMD(usampler2DMS, ivec2, uint);"
-
- "vec4 fragmentFetchAMD(sampler2DMSArray, ivec3, uint);"
- "ivec4 fragmentFetchAMD(isampler2DMSArray, ivec3, uint);"
- "uvec4 fragmentFetchAMD(usampler2DMSArray, ivec3, uint);"
-
- "\n");
- }
-
-#endif
-
//============================================================================
//
// Prototypes for built-in functions seen by vertex shaders only.
@@ -4021,17 +5164,30 @@
// GL_ARB_shader_ballot
if (profile != EEsProfile && version >= 450) {
- commonBuiltins.append(
+ const char* ballotDecls =
"uniform uint gl_SubGroupSizeARB;"
-
"in uint gl_SubGroupInvocationARB;"
"in uint64_t gl_SubGroupEqMaskARB;"
"in uint64_t gl_SubGroupGeMaskARB;"
"in uint64_t gl_SubGroupGtMaskARB;"
"in uint64_t gl_SubGroupLeMaskARB;"
"in uint64_t gl_SubGroupLtMaskARB;"
-
- "\n");
+ "\n";
+ const char* fragmentBallotDecls =
+ "uniform uint gl_SubGroupSizeARB;"
+ "flat in uint gl_SubGroupInvocationARB;"
+ "flat in uint64_t gl_SubGroupEqMaskARB;"
+ "flat in uint64_t gl_SubGroupGeMaskARB;"
+ "flat in uint64_t gl_SubGroupGtMaskARB;"
+ "flat in uint64_t gl_SubGroupLeMaskARB;"
+ "flat in uint64_t gl_SubGroupLtMaskARB;"
+ "\n";
+ stageBuiltins[EShLangVertex] .append(ballotDecls);
+ stageBuiltins[EShLangTessControl] .append(ballotDecls);
+ stageBuiltins[EShLangTessEvaluation].append(ballotDecls);
+ stageBuiltins[EShLangGeometry] .append(ballotDecls);
+ stageBuiltins[EShLangCompute] .append(ballotDecls);
+ stageBuiltins[EShLangFragment] .append(fragmentBallotDecls);
}
if ((profile != EEsProfile && version >= 140) ||
@@ -4042,6 +5198,39 @@
"\n");
}
+ // GL_KHR_shader_subgroup
+ if (spvVersion.vulkan > 0) {
+ const char* ballotDecls =
+ "in mediump uint gl_SubgroupSize;"
+ "in mediump uint gl_SubgroupInvocationID;"
+ "in highp uvec4 gl_SubgroupEqMask;"
+ "in highp uvec4 gl_SubgroupGeMask;"
+ "in highp uvec4 gl_SubgroupGtMask;"
+ "in highp uvec4 gl_SubgroupLeMask;"
+ "in highp uvec4 gl_SubgroupLtMask;"
+ "\n";
+ const char* fragmentBallotDecls =
+ "flat in mediump uint gl_SubgroupSize;"
+ "flat in mediump uint gl_SubgroupInvocationID;"
+ "flat in highp uvec4 gl_SubgroupEqMask;"
+ "flat in highp uvec4 gl_SubgroupGeMask;"
+ "flat in highp uvec4 gl_SubgroupGtMask;"
+ "flat in highp uvec4 gl_SubgroupLeMask;"
+ "flat in highp uvec4 gl_SubgroupLtMask;"
+ "\n";
+ stageBuiltins[EShLangVertex] .append(ballotDecls);
+ stageBuiltins[EShLangTessControl] .append(ballotDecls);
+ stageBuiltins[EShLangTessEvaluation].append(ballotDecls);
+ stageBuiltins[EShLangGeometry] .append(ballotDecls);
+ stageBuiltins[EShLangCompute] .append(ballotDecls);
+ stageBuiltins[EShLangFragment] .append(fragmentBallotDecls);
+
+ stageBuiltins[EShLangCompute].append(
+ "highp in uint gl_NumSubgroups;"
+ "highp in uint gl_SubgroupID;"
+ "\n");
+ }
+
if (version >= 300 /* both ES and non-ES */) {
stageBuiltins[EShLangFragment].append(
"flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2
@@ -5572,6 +6761,8 @@
if (spvVersion.vulkan > 0)
// Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ else
+ BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
if (version >= 430) {
symbolTable.setFunctionExtensions("anyInvocationARB", 1, &E_GL_ARB_shader_group_vote);
@@ -5810,6 +7001,25 @@
symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview);
BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable);
}
+
+ // GL_KHR_shader_subgroup
+ if (spvVersion.vulkan > 0) {
+ symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+
+ BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable);
+ BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable);
+ BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable);
+ }
break;
@@ -6055,6 +7265,104 @@
BuiltInVariable("gl_ViewID_OVR", EbvViewIndex, symbolTable);
}
+ // GL_ARB_shader_ballot
+ if (profile != EEsProfile) {
+ symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot);
+
+ BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable);
+ BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable);
+ BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable);
+ BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable);
+ BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable);
+ BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable);
+
+ if (spvVersion.vulkan > 0)
+ // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
+ SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ else
+ BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
+ }
+
+ // GL_KHR_shader_subgroup
+ if (spvVersion.vulkan > 0) {
+ symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+
+ BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable);
+ BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable);
+ BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable);
+
+ symbolTable.setFunctionExtensions("subgroupBarrier", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setFunctionExtensions("subgroupMemoryBarrier", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setFunctionExtensions("subgroupMemoryBarrierBuffer", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setFunctionExtensions("subgroupMemoryBarrierImage", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setFunctionExtensions("subgroupElect", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setFunctionExtensions("subgroupAll", 1, &E_GL_KHR_shader_subgroup_vote);
+ symbolTable.setFunctionExtensions("subgroupAny", 1, &E_GL_KHR_shader_subgroup_vote);
+ symbolTable.setFunctionExtensions("subgroupAllEqual", 1, &E_GL_KHR_shader_subgroup_vote);
+ symbolTable.setFunctionExtensions("subgroupBroadcast", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupBroadcastFirst", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupBallot", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupInverseBallot", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupBallotBitExtract", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupBallotBitCount", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupBallotInclusiveBitCount", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupBallotExclusiveBitCount", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupBallotFindLSB", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupBallotFindMSB", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setFunctionExtensions("subgroupShuffle", 1, &E_GL_KHR_shader_subgroup_shuffle);
+ symbolTable.setFunctionExtensions("subgroupShuffleXor", 1, &E_GL_KHR_shader_subgroup_shuffle);
+ symbolTable.setFunctionExtensions("subgroupShuffleUp", 1, &E_GL_KHR_shader_subgroup_shuffle_relative);
+ symbolTable.setFunctionExtensions("subgroupShuffleDown", 1, &E_GL_KHR_shader_subgroup_shuffle_relative);
+ symbolTable.setFunctionExtensions("subgroupAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupMul", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupMin", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupMax", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupAnd", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupOr", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupXor", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupInclusiveAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupInclusiveMul", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupInclusiveMin", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupInclusiveMax", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupInclusiveAnd", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupInclusiveOr", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupInclusiveXor", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupExclusiveAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupExclusiveMul", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupExclusiveMin", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupExclusiveMax", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupExclusiveAnd", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupExclusiveOr", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupExclusiveXor", 1, &E_GL_KHR_shader_subgroup_arithmetic);
+ symbolTable.setFunctionExtensions("subgroupClusteredAdd", 1, &E_GL_KHR_shader_subgroup_clustered);
+ symbolTable.setFunctionExtensions("subgroupClusteredMul", 1, &E_GL_KHR_shader_subgroup_clustered);
+ symbolTable.setFunctionExtensions("subgroupClusteredMin", 1, &E_GL_KHR_shader_subgroup_clustered);
+ symbolTable.setFunctionExtensions("subgroupClusteredMax", 1, &E_GL_KHR_shader_subgroup_clustered);
+ symbolTable.setFunctionExtensions("subgroupClusteredAnd", 1, &E_GL_KHR_shader_subgroup_clustered);
+ symbolTable.setFunctionExtensions("subgroupClusteredOr", 1, &E_GL_KHR_shader_subgroup_clustered);
+ symbolTable.setFunctionExtensions("subgroupClusteredXor", 1, &E_GL_KHR_shader_subgroup_clustered);
+ symbolTable.setFunctionExtensions("subgroupQuadBroadcast", 1, &E_GL_KHR_shader_subgroup_quad);
+ 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);
+ }
+
if (profile == EEsProfile) {
symbolTable.setFunctionExtensions("shadow2DEXT", 1, &E_GL_EXT_shadow_samplers);
symbolTable.setFunctionExtensions("shadow2DProjEXT", 1, &E_GL_EXT_shadow_samplers);
@@ -6093,6 +7401,49 @@
symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_ARB_compute_shader);
}
+ // GL_ARB_shader_ballot
+ if (profile != EEsProfile) {
+ symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot);
+ symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot);
+
+ BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable);
+ BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable);
+ BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable);
+ BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable);
+ BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable);
+ BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable);
+
+ if (spvVersion.vulkan > 0)
+ // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan
+ SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable);
+ else
+ BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable);
+ }
+
+ // GL_ARB_shader_ballot
+ if (spvVersion.vulkan > 0) {
+ symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+ symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot);
+
+ BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable);
+ BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable);
+ BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable);
+ BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable);
+ }
+
if ((profile != EEsProfile && version >= 140) ||
(profile == EEsProfile && version >= 310)) {
symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
@@ -6101,6 +7452,16 @@
BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable);
}
+ // GL_KHR_shader_subgroup
+ if (spvVersion.vulkan > 0) {
+ symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic);
+ symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic);
+
+ BuiltInVariable("gl_NumSubgroups", EbvNumSubgroups, symbolTable);
+ BuiltInVariable("gl_SubgroupID", EbvSubgroupID, symbolTable);
+
+ symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic);
+ }
break;
default:
@@ -6186,12 +7547,15 @@
symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64);
symbolTable.relateToOperator("int64BitsToDouble", EOpInt64BitsToDouble);
symbolTable.relateToOperator("uint64BitsToDouble", EOpUint64BitsToDouble);
-#ifdef AMD_EXTENSIONS
+ symbolTable.relateToOperator("halfBitsToInt16", EOpFloat16BitsToInt16);
+ symbolTable.relateToOperator("halfBitsToUint16", EOpFloat16BitsToUint16);
symbolTable.relateToOperator("float16BitsToInt16", EOpFloat16BitsToInt16);
symbolTable.relateToOperator("float16BitsToUint16", EOpFloat16BitsToUint16);
symbolTable.relateToOperator("int16BitsToFloat16", EOpInt16BitsToFloat16);
symbolTable.relateToOperator("uint16BitsToFloat16", EOpUint16BitsToFloat16);
-#endif
+
+ symbolTable.relateToOperator("int16BitsToHalf", EOpInt16BitsToFloat16);
+ symbolTable.relateToOperator("uint16BitsToHalf", EOpUint16BitsToFloat16);
symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16);
symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16);
@@ -6214,7 +7578,6 @@
symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32);
symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32);
-#ifdef AMD_EXTENSIONS
symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16);
symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16);
symbolTable.relateToOperator("packUint2x16", EOpPackUint2x16);
@@ -6224,10 +7587,16 @@
symbolTable.relateToOperator("unpackInt4x16", EOpUnpackInt4x16);
symbolTable.relateToOperator("packUint4x16", EOpPackUint4x16);
symbolTable.relateToOperator("unpackUint4x16", EOpUnpackUint4x16);
-
symbolTable.relateToOperator("packFloat2x16", EOpPackFloat2x16);
symbolTable.relateToOperator("unpackFloat2x16", EOpUnpackFloat2x16);
-#endif
+
+ symbolTable.relateToOperator("pack16", EOpPack16);
+ symbolTable.relateToOperator("pack32", EOpPack32);
+ symbolTable.relateToOperator("pack64", EOpPack64);
+
+ symbolTable.relateToOperator("unpack32", EOpUnpack32);
+ symbolTable.relateToOperator("unpack16", EOpUnpack16);
+ symbolTable.relateToOperator("unpack8", EOpUnpack8);
symbolTable.relateToOperator("length", EOpLength);
symbolTable.relateToOperator("distance", EOpDistance);
@@ -6471,6 +7840,65 @@
symbolTable.relateToOperator("fragmentFetchAMD", EOpFragmentFetch);
#endif
}
+
+ // GL_KHR_shader_subgroup
+ if (spvVersion.vulkan > 0) {
+ symbolTable.relateToOperator("subgroupBarrier", EOpSubgroupBarrier);
+ symbolTable.relateToOperator("subgroupMemoryBarrier", EOpSubgroupMemoryBarrier);
+ symbolTable.relateToOperator("subgroupMemoryBarrierBuffer", EOpSubgroupMemoryBarrierBuffer);
+ symbolTable.relateToOperator("subgroupMemoryBarrierImage", EOpSubgroupMemoryBarrierImage);
+ symbolTable.relateToOperator("subgroupElect", EOpSubgroupElect);
+ symbolTable.relateToOperator("subgroupAll", EOpSubgroupAll);
+ symbolTable.relateToOperator("subgroupAny", EOpSubgroupAny);
+ symbolTable.relateToOperator("subgroupAllEqual", EOpSubgroupAllEqual);
+ symbolTable.relateToOperator("subgroupBroadcast", EOpSubgroupBroadcast);
+ symbolTable.relateToOperator("subgroupBroadcastFirst", EOpSubgroupBroadcastFirst);
+ symbolTable.relateToOperator("subgroupBallot", EOpSubgroupBallot);
+ symbolTable.relateToOperator("subgroupInverseBallot", EOpSubgroupInverseBallot);
+ symbolTable.relateToOperator("subgroupBallotBitExtract", EOpSubgroupBallotBitExtract);
+ symbolTable.relateToOperator("subgroupBallotBitCount", EOpSubgroupBallotBitCount);
+ symbolTable.relateToOperator("subgroupBallotInclusiveBitCount", EOpSubgroupBallotInclusiveBitCount);
+ symbolTable.relateToOperator("subgroupBallotExclusiveBitCount", EOpSubgroupBallotExclusiveBitCount);
+ symbolTable.relateToOperator("subgroupBallotFindLSB", EOpSubgroupBallotFindLSB);
+ symbolTable.relateToOperator("subgroupBallotFindMSB", EOpSubgroupBallotFindMSB);
+ symbolTable.relateToOperator("subgroupShuffle", EOpSubgroupShuffle);
+ symbolTable.relateToOperator("subgroupShuffleXor", EOpSubgroupShuffleXor);
+ symbolTable.relateToOperator("subgroupShuffleUp", EOpSubgroupShuffleUp);
+ symbolTable.relateToOperator("subgroupShuffleDown", EOpSubgroupShuffleDown);
+ symbolTable.relateToOperator("subgroupAdd", EOpSubgroupAdd);
+ symbolTable.relateToOperator("subgroupMul", EOpSubgroupMul);
+ symbolTable.relateToOperator("subgroupMin", EOpSubgroupMin);
+ symbolTable.relateToOperator("subgroupMax", EOpSubgroupMax);
+ symbolTable.relateToOperator("subgroupAnd", EOpSubgroupAnd);
+ symbolTable.relateToOperator("subgroupOr", EOpSubgroupOr);
+ symbolTable.relateToOperator("subgroupXor", EOpSubgroupXor);
+ symbolTable.relateToOperator("subgroupInclusiveAdd", EOpSubgroupInclusiveAdd);
+ symbolTable.relateToOperator("subgroupInclusiveMul", EOpSubgroupInclusiveMul);
+ symbolTable.relateToOperator("subgroupInclusiveMin", EOpSubgroupInclusiveMin);
+ symbolTable.relateToOperator("subgroupInclusiveMax", EOpSubgroupInclusiveMax);
+ symbolTable.relateToOperator("subgroupInclusiveAnd", EOpSubgroupInclusiveAnd);
+ symbolTable.relateToOperator("subgroupInclusiveOr", EOpSubgroupInclusiveOr);
+ symbolTable.relateToOperator("subgroupInclusiveXor", EOpSubgroupInclusiveXor);
+ symbolTable.relateToOperator("subgroupExclusiveAdd", EOpSubgroupExclusiveAdd);
+ symbolTable.relateToOperator("subgroupExclusiveMul", EOpSubgroupExclusiveMul);
+ symbolTable.relateToOperator("subgroupExclusiveMin", EOpSubgroupExclusiveMin);
+ symbolTable.relateToOperator("subgroupExclusiveMax", EOpSubgroupExclusiveMax);
+ symbolTable.relateToOperator("subgroupExclusiveAnd", EOpSubgroupExclusiveAnd);
+ symbolTable.relateToOperator("subgroupExclusiveOr", EOpSubgroupExclusiveOr);
+ symbolTable.relateToOperator("subgroupExclusiveXor", EOpSubgroupExclusiveXor);
+ symbolTable.relateToOperator("subgroupClusteredAdd", EOpSubgroupClusteredAdd);
+ symbolTable.relateToOperator("subgroupClusteredMul", EOpSubgroupClusteredMul);
+ symbolTable.relateToOperator("subgroupClusteredMin", EOpSubgroupClusteredMin);
+ symbolTable.relateToOperator("subgroupClusteredMax", EOpSubgroupClusteredMax);
+ symbolTable.relateToOperator("subgroupClusteredAnd", EOpSubgroupClusteredAnd);
+ symbolTable.relateToOperator("subgroupClusteredOr", EOpSubgroupClusteredOr);
+ symbolTable.relateToOperator("subgroupClusteredXor", EOpSubgroupClusteredXor);
+ symbolTable.relateToOperator("subgroupQuadBroadcast", EOpSubgroupQuadBroadcast);
+ symbolTable.relateToOperator("subgroupQuadSwapHorizontal", EOpSubgroupQuadSwapHorizontal);
+ symbolTable.relateToOperator("subgroupQuadSwapVertical", EOpSubgroupQuadSwapVertical);
+ symbolTable.relateToOperator("subgroupQuadSwapDiagonal", EOpSubgroupQuadSwapDiagonal);
+ }
+
if (profile == EEsProfile) {
symbolTable.relateToOperator("shadow2DEXT", EOpTexture);
symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj);
@@ -6515,8 +7943,9 @@
break;
case EShLangCompute:
- symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared);
- symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier);
+ symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared);
+ symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier);
+ symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared);
break;
default:
diff --git a/glslang/MachineIndependent/Initialize.h b/glslang/MachineIndependent/Initialize.h
index 6b54c4d..b5de324 100644
--- a/glslang/MachineIndependent/Initialize.h
+++ b/glslang/MachineIndependent/Initialize.h
@@ -67,7 +67,6 @@
virtual const TString& getStageString(EShLanguage language) const { return stageBuiltins[language]; }
virtual void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable) = 0;
-
virtual void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) = 0;
protected:
@@ -89,7 +88,6 @@
void initialize(const TBuiltInResource& resources, int version, EProfile, const SpvVersion& spvVersion, EShLanguage);
void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable);
-
void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources);
protected:
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index a867399..cd5060e 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -2,6 +2,7 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2015 LunarG, Inc.
// Copyright (C) 2015-2016 Google, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -118,16 +119,12 @@
return nullptr;
// Try converting the children's base types to compatible types.
- TIntermTyped* child = addConversion(op, left->getType(), right);
- if (child)
- right = child;
- else {
- child = addConversion(op, right->getType(), left);
- if (child)
- left = child;
- else
- return nullptr;
- }
+ auto children = addConversion(op, left, right);
+ left = std::get<0>(children);
+ right = std::get<1>(children);
+
+ if (left == nullptr || right == nullptr)
+ return nullptr;
// Convert the children's type shape to be compatible.
addBiShapeConversion(op, left, right);
@@ -304,20 +301,18 @@
//
TBasicType newType = EbtVoid;
switch (op) {
+ case EOpConstructInt8: newType = EbtInt8; break;
+ case EOpConstructUint8: newType = EbtUint8; break;
+ case EOpConstructInt16: newType = EbtInt16; break;
+ case EOpConstructUint16: newType = EbtUint16; break;
case EOpConstructInt: newType = EbtInt; break;
case EOpConstructUint: newType = EbtUint; break;
case EOpConstructInt64: newType = EbtInt64; break;
case EOpConstructUint64: newType = EbtUint64; break;
-#ifdef AMD_EXTENSIONS
- case EOpConstructInt16: newType = EbtInt16; break;
- case EOpConstructUint16: newType = EbtUint16; break;
-#endif
case EOpConstructBool: newType = EbtBool; break;
case EOpConstructFloat: newType = EbtFloat; break;
case EOpConstructDouble: newType = EbtDouble; break;
-#ifdef AMD_EXTENSIONS
case EOpConstructFloat16: newType = EbtFloat16; break;
-#endif
default: break; // some compilers want this
}
@@ -336,20 +331,18 @@
// TODO: but, did this bypass constant folding?
//
switch (op) {
+ case EOpConstructInt8:
+ case EOpConstructUint8:
+ case EOpConstructInt16:
+ case EOpConstructUint16:
case EOpConstructInt:
case EOpConstructUint:
case EOpConstructInt64:
case EOpConstructUint64:
-#ifdef AMD_EXTENSIONS
- case EOpConstructInt16:
- case EOpConstructUint16:
-#endif
case EOpConstructBool:
case EOpConstructFloat:
case EOpConstructDouble:
-#ifdef AMD_EXTENSIONS
case EOpConstructFloat16:
-#endif
return child;
default: break; // some compilers want this
}
@@ -447,27 +440,14 @@
return fold(aggNode);
}
-//
-// Convert the node's type to the given type, as allowed by the operation involved: 'op'.
-// For implicit conversions, 'op' is not the requested conversion, it is the explicit
-// operation requiring the implicit conversion.
-//
-// Returns a node representing the conversion, which could be the same
-// node passed in if no conversion was needed.
-//
-// Generally, this is focused on basic type conversion, not shape conversion.
-// See addShapeConversion().
-//
-// Return nullptr if a conversion can't be done.
-//
-TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TIntermTyped* node) const
+bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const
{
//
// Does the base type even allow the operation?
//
switch (node->getBasicType()) {
case EbtVoid:
- return nullptr;
+ return false;
case EbtAtomicUint:
case EbtSampler:
// opaque types can be passed to functions
@@ -485,11 +465,422 @@
break;
// otherwise, opaque types can't even be operated on, let alone converted
- return nullptr;
+ return false;
default:
break;
}
+ return true;
+}
+
+// This is 'mechanism' here, it does any conversion told.
+// It is about basic type, not about shape.
+// The policy comes from the shader or the above code.
+TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped* node) const
+{
+ //
+ // Add a new newNode for the conversion.
+ //
+ TIntermUnary* newNode = nullptr;
+
+ TOperator newOp = EOpNull;
+
+ switch (convertTo) {
+ case EbtDouble:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToDouble; break;
+ case EbtUint8: newOp = EOpConvUint8ToDouble; break;
+ case EbtInt16: newOp = EOpConvInt16ToDouble; break;
+ case EbtUint16:newOp = EOpConvUint16ToDouble;break;
+ case EbtInt: newOp = EOpConvIntToDouble; break;
+ case EbtUint: newOp = EOpConvUintToDouble; break;
+ case EbtBool: newOp = EOpConvBoolToDouble; break;
+ case EbtFloat: newOp = EOpConvFloatToDouble; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToDouble; break;
+ case EbtInt64: newOp = EOpConvInt64ToDouble; break;
+ case EbtUint64: newOp = EOpConvUint64ToDouble; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtFloat:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToFloat; break;
+ case EbtUint8: newOp = EOpConvUint8ToFloat; break;
+ case EbtInt16: newOp = EOpConvInt16ToFloat; break;
+ case EbtUint16: newOp = EOpConvUint16ToFloat; break;
+ case EbtInt: newOp = EOpConvIntToFloat; break;
+ case EbtUint: newOp = EOpConvUintToFloat; break;
+ case EbtBool: newOp = EOpConvBoolToFloat; break;
+ case EbtDouble: newOp = EOpConvDoubleToFloat; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToFloat; break;
+ case EbtInt64: newOp = EOpConvInt64ToFloat; break;
+ case EbtUint64: newOp = EOpConvUint64ToFloat; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtFloat16:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToFloat16; break;
+ case EbtUint8: newOp = EOpConvUint8ToFloat16; break;
+ case EbtInt16: newOp = EOpConvInt16ToFloat16; break;
+ case EbtUint16: newOp = EOpConvUint16ToFloat16; break;
+ case EbtInt: newOp = EOpConvIntToFloat16; break;
+ case EbtUint: newOp = EOpConvUintToFloat16; break;
+ case EbtBool: newOp = EOpConvBoolToFloat16; break;
+ case EbtFloat: newOp = EOpConvFloatToFloat16; break;
+ case EbtDouble: newOp = EOpConvDoubleToFloat16; break;
+ case EbtInt64: newOp = EOpConvInt64ToFloat16; break;
+ case EbtUint64: newOp = EOpConvUint64ToFloat16; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtBool:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToBool; break;
+ case EbtUint8: newOp = EOpConvUint8ToBool; break;
+ case EbtInt16: newOp = EOpConvInt16ToBool; break;
+ case EbtUint16: newOp = EOpConvUint16ToBool; break;
+ case EbtInt: newOp = EOpConvIntToBool; break;
+ case EbtUint: newOp = EOpConvUintToBool; break;
+ case EbtFloat: newOp = EOpConvFloatToBool; break;
+ case EbtDouble: newOp = EOpConvDoubleToBool; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToBool; break;
+ case EbtInt64: newOp = EOpConvInt64ToBool; break;
+ case EbtUint64: newOp = EOpConvUint64ToBool; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtInt8:
+ switch (node->getBasicType()) {
+ case EbtUint8: newOp = EOpConvUint8ToInt8; break;
+ case EbtInt16: newOp = EOpConvInt16ToInt8; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt8; break;
+ case EbtInt: newOp = EOpConvIntToInt8; break;
+ case EbtUint: newOp = EOpConvUintToInt8; break;
+ case EbtInt64: newOp = EOpConvInt64ToInt8; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt8; break;
+ case EbtBool: newOp = EOpConvBoolToInt8; break;
+ case EbtFloat: newOp = EOpConvFloatToInt8; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt8; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt8; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtUint8:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToUint8; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint8; break;
+ case EbtUint16: newOp = EOpConvUint16ToUint8; break;
+ case EbtInt: newOp = EOpConvIntToUint8; break;
+ case EbtUint: newOp = EOpConvUintToUint8; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint8; break;
+ case EbtUint64: newOp = EOpConvUint64ToUint8; break;
+ case EbtBool: newOp = EOpConvBoolToUint8; break;
+ case EbtFloat: newOp = EOpConvFloatToUint8; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint8; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint8; break;
+ default:
+ return nullptr;
+ }
+ break;
+
+ case EbtInt16:
+ switch (node->getBasicType()) {
+ case EbtUint8: newOp = EOpConvUint8ToInt16; break;
+ case EbtInt8: newOp = EOpConvInt8ToInt16; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt16; break;
+ case EbtInt: newOp = EOpConvIntToInt16; break;
+ case EbtUint: newOp = EOpConvUintToInt16; break;
+ case EbtInt64: newOp = EOpConvInt64ToInt16; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt16; break;
+ case EbtBool: newOp = EOpConvBoolToInt16; break;
+ case EbtFloat: newOp = EOpConvFloatToInt16; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt16; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt16; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtUint16:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToUint16; break;
+ case EbtUint8: newOp = EOpConvUint8ToUint16; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint16; break;
+ case EbtInt: newOp = EOpConvIntToUint16; break;
+ case EbtUint: newOp = EOpConvUintToUint16; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint16; break;
+ case EbtUint64: newOp = EOpConvUint64ToUint16; break;
+ case EbtBool: newOp = EOpConvBoolToUint16; break;
+ case EbtFloat: newOp = EOpConvFloatToUint16; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint16; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint16; break;
+ default:
+ return nullptr;
+ }
+ break;
+
+ case EbtInt:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToInt; break;
+ case EbtUint8: newOp = EOpConvUint8ToInt; break;
+ case EbtInt16: newOp = EOpConvInt16ToInt; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt; break;
+ case EbtUint: newOp = EOpConvUintToInt; break;
+ case EbtBool: newOp = EOpConvBoolToInt; break;
+ case EbtFloat: newOp = EOpConvFloatToInt; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt; break;
+ case EbtInt64: newOp = EOpConvInt64ToInt; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtUint:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToUint; break;
+ case EbtUint8: newOp = EOpConvUint8ToUint; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint; break;
+ case EbtUint16: newOp = EOpConvUint16ToUint; break;
+ case EbtInt: newOp = EOpConvIntToUint; break;
+ case EbtBool: newOp = EOpConvBoolToUint; break;
+ case EbtFloat: newOp = EOpConvFloatToUint; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint; break;
+ case EbtUint64: newOp = EOpConvUint64ToUint; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtInt64:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToInt64; break;
+ case EbtUint8: newOp = EOpConvUint8ToInt64; break;
+ case EbtInt16: newOp = EOpConvInt16ToInt64; break;
+ case EbtUint16: newOp = EOpConvUint16ToInt64; break;
+ case EbtInt: newOp = EOpConvIntToInt64; break;
+ case EbtUint: newOp = EOpConvUintToInt64; break;
+ case EbtBool: newOp = EOpConvBoolToInt64; break;
+ case EbtFloat: newOp = EOpConvFloatToInt64; break;
+ case EbtDouble: newOp = EOpConvDoubleToInt64; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToInt64; break;
+ case EbtUint64: newOp = EOpConvUint64ToInt64; break;
+ default:
+ return nullptr;
+ }
+ break;
+ case EbtUint64:
+ switch (node->getBasicType()) {
+ case EbtInt8: newOp = EOpConvInt8ToUint64; break;
+ case EbtUint8: newOp = EOpConvUint8ToUint64; break;
+ case EbtInt16: newOp = EOpConvInt16ToUint64; break;
+ case EbtUint16: newOp = EOpConvUint16ToUint64; break;
+ case EbtInt: newOp = EOpConvIntToUint64; break;
+ case EbtUint: newOp = EOpConvUintToUint64; break;
+ case EbtBool: newOp = EOpConvBoolToUint64; break;
+ case EbtFloat: newOp = EOpConvFloatToUint64; break;
+ case EbtDouble: newOp = EOpConvDoubleToUint64; break;
+ case EbtFloat16: newOp = EOpConvFloat16ToUint64; break;
+ case EbtInt64: newOp = EOpConvInt64ToUint64; break;
+ default:
+ return nullptr;
+ }
+ break;
+ default:
+ return nullptr;
+ }
+
+ TType newType(convertTo, EvqTemporary, node->getVectorSize(), node->getMatrixCols(), node->getMatrixRows());
+ newNode = addUnaryNode(newOp, node, node->getLoc(), newType);
+
+ // TODO: it seems that some unary folding operations should occur here, but are not
+
+ // Propagate specialization-constant-ness, if allowed
+ if (node->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*newNode))
+ newNode->getWritableType().getQualifier().makeSpecConstant();
+
+ // TODO: it seems that some unary folding operations should occur here, but are not
+
+ // Propagate specialization-constant-ness, if allowed
+ if (node->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*newNode))
+ newNode->getWritableType().getQualifier().makeSpecConstant();
+
+ return newNode;
+}
+
+std::tuple<TIntermTyped*, TIntermTyped*>
+TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1) const
+{
+ if (!isConversionAllowed(op, node0) || !isConversionAllowed(op, node1)) {
+ return std::make_tuple(nullptr, nullptr);
+ }
+
+ // If types are identical, no problem
+ if (node0->getType() == node1->getType())
+ return std::make_tuple(node0, node1);
+
+ // If one's a structure, then no conversions.
+ if (node0->isStruct() || node1->isStruct())
+ return std::make_tuple(nullptr, nullptr);
+
+ // If one's an array, then no conversions.
+ if (node0->getType().isArray() || node1->getType().isArray())
+ return std::make_tuple(nullptr, nullptr);
+
+ auto promoteTo = std::make_tuple(EbtNumTypes, EbtNumTypes);
+
+ TBasicType type0 = node0->getType().getBasicType();
+ TBasicType type1 = node1->getType().getBasicType();
+
+ switch (op) {
+ //
+ // List all the binary ops that can implicitly convert one operand to the other's type;
+ // This implements the 'policy' for implicit type conversion.
+ //
+ case EOpLessThan:
+ case EOpGreaterThan:
+ case EOpLessThanEqual:
+ case EOpGreaterThanEqual:
+ case EOpEqual:
+ case EOpNotEqual:
+
+ case EOpAdd:
+ case EOpSub:
+ case EOpMul:
+ case EOpDiv:
+ case EOpMod:
+
+ case EOpVectorTimesScalar:
+ case EOpVectorTimesMatrix:
+ case EOpMatrixTimesVector:
+ case EOpMatrixTimesScalar:
+
+ case EOpAnd:
+ case EOpInclusiveOr:
+ case EOpExclusiveOr:
+ case EOpAndAssign:
+ case EOpInclusiveOrAssign:
+ case EOpExclusiveOrAssign:
+ case EOpLogicalNot:
+ case EOpLogicalAnd:
+ case EOpLogicalOr:
+ case EOpLogicalXor:
+
+ case EOpFunctionCall:
+ case EOpReturn:
+ case EOpAssign:
+ case EOpAddAssign:
+ case EOpSubAssign:
+ case EOpMulAssign:
+ case EOpVectorTimesScalarAssign:
+ case EOpMatrixTimesScalarAssign:
+ case EOpDivAssign:
+ case EOpModAssign:
+
+ case EOpAtan:
+ case EOpClamp:
+ case EOpCross:
+ case EOpDistance:
+ case EOpDot:
+ case EOpDst:
+ case EOpFaceForward:
+ case EOpFma:
+ case EOpFrexp:
+ case EOpLdexp:
+ case EOpMix:
+ case EOpLit:
+ case EOpMax:
+ case EOpMin:
+ case EOpModf:
+ case EOpPow:
+ case EOpReflect:
+ case EOpRefract:
+ case EOpSmoothStep:
+ case EOpStep:
+
+ case EOpSequence:
+ case EOpConstructStruct:
+
+ if (type0 == type1)
+ return std::make_tuple(node0, node1);
+
+ promoteTo = getConversionDestinatonType(type0, type1, op);
+ if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes)
+ return std::make_tuple(nullptr, nullptr);
+
+ break;
+
+ // Shifts can have mixed types as long as they are integer and of the same rank,
+ // without converting.
+ // It's the left operand's type that determines the resulting type, so no issue
+ // with assign shift ops either.
+ case EOpLeftShift:
+ case EOpRightShift:
+ case EOpLeftShiftAssign:
+ case EOpRightShiftAssign:
+
+ if (isTypeInt(type0) && isTypeInt(type1)) {
+ if (getTypeRank(type0) == getTypeRank(type1)) {
+ return std::make_tuple(node0, node1);
+ } else {
+ promoteTo = getConversionDestinatonType(type0, type1, op);
+ if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes)
+ return std::make_tuple(nullptr, nullptr);
+ }
+ } else
+ return std::make_tuple(nullptr, nullptr);
+ break;
+
+ default:
+ return std::make_tuple(nullptr, nullptr);
+ }
+
+ TIntermTyped* newNode0;
+ TIntermTyped* newNode1;
+
+ if (std::get<0>(promoteTo) != node0->getType().getBasicType()) {
+ if (node0->getAsConstantUnion())
+ newNode0 = promoteConstantUnion(std::get<0>(promoteTo), node0->getAsConstantUnion());
+ else
+ newNode0 = createConversion(std::get<0>(promoteTo), node0);
+ } else
+ newNode0 = node0;
+
+ if (std::get<1>(promoteTo) != node1->getType().getBasicType()) {
+ if (node1->getAsConstantUnion())
+ newNode1 = promoteConstantUnion(std::get<1>(promoteTo), node1->getAsConstantUnion());
+ else
+ newNode1 = createConversion(std::get<1>(promoteTo), node1);
+ } else
+ newNode1 = node1;
+
+ return std::make_tuple(newNode0, newNode1);
+}
+
+//
+// Convert the node's type to the given type, as allowed by the operation involved: 'op'.
+// For implicit conversions, 'op' is not the requested conversion, it is the explicit
+// operation requiring the implicit conversion.
+//
+// Returns a node representing the conversion, which could be the same
+// node passed in if no conversion was needed.
+//
+// Generally, this is focused on basic type conversion, not shape conversion.
+// See addShapeConversion().
+//
+// Return nullptr if a conversion can't be done.
+//
+TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TIntermTyped* node) const
+{
+ if (!isConversionAllowed(op, node))
+ return nullptr;
+
// Otherwise, if types are identical, no problem
if (type == node->getType())
return node;
@@ -520,11 +911,21 @@
case EOpConstructDouble:
promoteTo = EbtDouble;
break;
-#ifdef AMD_EXTENSIONS
case EOpConstructFloat16:
promoteTo = EbtFloat16;
break;
-#endif
+ case EOpConstructInt8:
+ promoteTo = EbtInt8;
+ break;
+ case EOpConstructUint8:
+ promoteTo = EbtUint8;
+ break;
+ case EOpConstructInt16:
+ promoteTo = EbtInt16;
+ break;
+ case EOpConstructUint16:
+ promoteTo = EbtUint16;
+ break;
case EOpConstructInt:
promoteTo = EbtInt;
break;
@@ -537,14 +938,6 @@
case EOpConstructUint64:
promoteTo = EbtUint64;
break;
-#ifdef AMD_EXTENSIONS
- case EOpConstructInt16:
- promoteTo = EbtInt16;
- break;
- case EOpConstructUint16:
- promoteTo = EbtUint16;
- break;
-#endif
//
// List all the binary ops that can implicitly convert one operand to the other's type;
@@ -620,40 +1013,38 @@
if (canImplicitlyPromote(node->getType().getBasicType(), type.getBasicType(), op))
promoteTo = type.getBasicType();
else
- return nullptr;
-
+ return nullptr;
break;
- // Shifts can have mixed types as long as they are integer, without converting.
+ // Shifts can have mixed types as long as they are integer and of the same rank,
+ // without converting.
// It's the left operand's type that determines the resulting type, so no issue
// with assign shift ops either.
case EOpLeftShift:
case EOpRightShift:
case EOpLeftShiftAssign:
case EOpRightShiftAssign:
- if ((type.getBasicType() == EbtInt ||
- type.getBasicType() == EbtUint ||
-#ifdef AMD_EXTENSIONS
- type.getBasicType() == EbtInt16 ||
- type.getBasicType() == EbtUint16 ||
-#endif
- type.getBasicType() == EbtInt64 ||
- type.getBasicType() == EbtUint64) &&
- (node->getType().getBasicType() == EbtInt ||
- node->getType().getBasicType() == EbtUint ||
-#ifdef AMD_EXTENSIONS
- node->getType().getBasicType() == EbtInt16 ||
- node->getType().getBasicType() == EbtUint16 ||
-#endif
- node->getType().getBasicType() == EbtInt64 ||
- node->getType().getBasicType() == EbtUint64))
+ {
+ TBasicType type0 = type.getBasicType();
+ TBasicType type1 = node->getType().getBasicType();
- return node;
- else if (source == EShSourceHlsl && node->getType().getBasicType() == EbtBool) {
- promoteTo = type.getBasicType();
- break;
- } else
- return nullptr;
+ if (source == EShSourceHlsl && node->getType().getBasicType() == EbtBool) {
+ promoteTo = type0;
+ } else {
+ if (isTypeInt(type0) && isTypeInt(type1)) {
+ if (getTypeRank(type0) == getTypeRank(type1)) {
+ return node;
+ } else {
+ if (canImplicitlyPromote(type1, type0, op))
+ promoteTo = type0;
+ else
+ return nullptr;
+ }
+ } else
+ return nullptr;
+ }
+ break;
+ }
default:
// default is to require a match; all exceptions should have case statements above
@@ -670,207 +1061,7 @@
//
// Add a new newNode for the conversion.
//
- TIntermUnary* newNode = nullptr;
-
- TOperator newOp = EOpNull;
-
- // This is 'mechanism' here, it does any conversion told. The policy comes
- // from the shader or the above code.
- switch (promoteTo) {
- case EbtDouble:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToDouble; break;
- case EbtUint: newOp = EOpConvUintToDouble; break;
- case EbtBool: newOp = EOpConvBoolToDouble; break;
- case EbtFloat: newOp = EOpConvFloatToDouble; break;
-#ifdef AMD_EXTENSIONS
- case EbtFloat16: newOp = EOpConvFloat16ToDouble; break;
-#endif
- case EbtInt64: newOp = EOpConvInt64ToDouble; break;
- case EbtUint64: newOp = EOpConvUint64ToDouble; break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16: newOp = EOpConvInt16ToDouble; break;
- case EbtUint16: newOp = EOpConvUint16ToDouble; break;
-#endif
- default:
- return nullptr;
- }
- break;
- case EbtFloat:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToFloat; break;
- case EbtUint: newOp = EOpConvUintToFloat; break;
- case EbtBool: newOp = EOpConvBoolToFloat; break;
- case EbtDouble: newOp = EOpConvDoubleToFloat; break;
-#ifdef AMD_EXTENSIONS
- case EbtFloat16: newOp = EOpConvFloat16ToFloat; break;
-#endif
- case EbtInt64: newOp = EOpConvInt64ToFloat; break;
- case EbtUint64: newOp = EOpConvUint64ToFloat; break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16: newOp = EOpConvInt16ToFloat; break;
- case EbtUint16: newOp = EOpConvUint16ToFloat; break;
-#endif
- default:
- return nullptr;
- }
- break;
-#ifdef AMD_EXTENSIONS
- case EbtFloat16:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToFloat16; break;
- case EbtUint: newOp = EOpConvUintToFloat16; break;
- case EbtBool: newOp = EOpConvBoolToFloat16; break;
- case EbtFloat: newOp = EOpConvFloatToFloat16; break;
- case EbtDouble: newOp = EOpConvDoubleToFloat16; break;
- case EbtInt64: newOp = EOpConvInt64ToFloat16; break;
- case EbtUint64: newOp = EOpConvUint64ToFloat16; break;
- case EbtInt16: newOp = EOpConvInt16ToFloat16; break;
- case EbtUint16: newOp = EOpConvUint16ToFloat16; break;
- default:
- return nullptr;
- }
- break;
-#endif
- case EbtBool:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToBool; break;
- case EbtUint: newOp = EOpConvUintToBool; break;
- case EbtFloat: newOp = EOpConvFloatToBool; break;
- case EbtDouble: newOp = EOpConvDoubleToBool; break;
-#ifdef AMD_EXTENSIONS
- case EbtFloat16: newOp = EOpConvFloat16ToBool; break;
-#endif
- case EbtInt64: newOp = EOpConvInt64ToBool; break;
- case EbtUint64: newOp = EOpConvUint64ToBool; break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16: newOp = EOpConvInt16ToBool; break;
- case EbtUint16: newOp = EOpConvUint16ToBool; break;
-#endif
- default:
- return nullptr;
- }
- break;
- case EbtInt:
- switch (node->getBasicType()) {
- case EbtUint: newOp = EOpConvUintToInt; break;
- case EbtBool: newOp = EOpConvBoolToInt; break;
- case EbtFloat: newOp = EOpConvFloatToInt; break;
- case EbtDouble: newOp = EOpConvDoubleToInt; break;
-#ifdef AMD_EXTENSIONS
- case EbtFloat16: newOp = EOpConvFloat16ToInt; break;
-#endif
- case EbtInt64: newOp = EOpConvInt64ToInt; break;
- case EbtUint64: newOp = EOpConvUint64ToInt; break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16: newOp = EOpConvInt16ToInt; break;
- case EbtUint16: newOp = EOpConvUint16ToInt; break;
-#endif
- default:
- return nullptr;
- }
- break;
- case EbtUint:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToUint; break;
- case EbtBool: newOp = EOpConvBoolToUint; break;
- case EbtFloat: newOp = EOpConvFloatToUint; break;
- case EbtDouble: newOp = EOpConvDoubleToUint; break;
-#ifdef AMD_EXTENSIONS
- case EbtFloat16: newOp = EOpConvFloat16ToUint; break;
-#endif
- case EbtInt64: newOp = EOpConvInt64ToUint; break;
- case EbtUint64: newOp = EOpConvUint64ToUint; break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16: newOp = EOpConvInt16ToUint; break;
- case EbtUint16: newOp = EOpConvUint16ToUint; break;
-#endif
- default:
- return nullptr;
- }
- break;
- case EbtInt64:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToInt64; break;
- case EbtUint: newOp = EOpConvUintToInt64; break;
- case EbtBool: newOp = EOpConvBoolToInt64; break;
- case EbtFloat: newOp = EOpConvFloatToInt64; break;
- case EbtDouble: newOp = EOpConvDoubleToInt64; break;
-#ifdef AMD_EXTENSIONS
- case EbtFloat16: newOp = EOpConvFloat16ToInt64; break;
-#endif
- case EbtUint64: newOp = EOpConvUint64ToInt64; break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16: newOp = EOpConvInt16ToInt64; break;
- case EbtUint16: newOp = EOpConvUint16ToInt64; break;
-#endif
- default:
- return nullptr;
- }
- break;
- case EbtUint64:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToUint64; break;
- case EbtUint: newOp = EOpConvUintToUint64; break;
- case EbtBool: newOp = EOpConvBoolToUint64; break;
- case EbtFloat: newOp = EOpConvFloatToUint64; break;
- case EbtDouble: newOp = EOpConvDoubleToUint64; break;
-#ifdef AMD_EXTENSIONS
- case EbtFloat16: newOp = EOpConvFloat16ToUint64; break;
-#endif
- case EbtInt64: newOp = EOpConvInt64ToUint64; break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16: newOp = EOpConvInt16ToUint64; break;
- case EbtUint16: newOp = EOpConvUint16ToUint64; break;
-#endif
- default:
- return nullptr;
- }
- break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToInt16; break;
- case EbtUint: newOp = EOpConvUintToInt16; break;
- case EbtBool: newOp = EOpConvBoolToInt16; break;
- case EbtFloat: newOp = EOpConvFloatToInt16; break;
- case EbtDouble: newOp = EOpConvDoubleToInt16; break;
- case EbtFloat16: newOp = EOpConvFloat16ToInt16; break;
- case EbtInt64: newOp = EOpConvInt64ToInt16; break;
- case EbtUint64: newOp = EOpConvUint64ToInt16; break;
- case EbtUint16: newOp = EOpConvUint16ToInt16; break;
- default:
- return nullptr;
- }
- break;
- case EbtUint16:
- switch (node->getBasicType()) {
- case EbtInt: newOp = EOpConvIntToUint16; break;
- case EbtUint: newOp = EOpConvUintToUint16; break;
- case EbtBool: newOp = EOpConvBoolToUint16; break;
- case EbtFloat: newOp = EOpConvFloatToUint16; break;
- case EbtDouble: newOp = EOpConvDoubleToUint16; break;
- case EbtFloat16: newOp = EOpConvFloat16ToUint16; break;
- case EbtInt64: newOp = EOpConvInt64ToUint16; break;
- case EbtUint64: newOp = EOpConvUint64ToUint16; break;
- case EbtInt16: newOp = EOpConvInt16ToUint16; break;
- default:
- return nullptr;
- }
- break;
-#endif
- default:
- return nullptr;
- }
-
- TType newType(promoteTo, EvqTemporary, node->getVectorSize(), node->getMatrixCols(), node->getMatrixRows());
- newNode = addUnaryNode(newOp, node, node->getLoc(), newType);
-
- // TODO: it seems that some unary folding operations should occur here, but are not
-
- // Propagate specialization-constant-ness, if allowed
- if (node->getType().getQualifier().isSpecConstant() && isSpecializationOperation(*newNode))
- newNode->getWritableType().getQualifier().makeSpecConstant();
+ TIntermUnary* newNode = createConversion(promoteTo, node);
return newNode;
}
@@ -1020,12 +1211,11 @@
rhsNode = addShapeConversion(lhsNode->getType(), rhsNode);
}
-// Convert the node's shape of type for the given type. It's not necessarily
-// an error if they are different and not converted, as some operations accept
-// mixed types. Promotion will do final shape checking.
+// Convert the node's shape of type for the given type, as allowed by the
+// operation involved: 'op'.
//
-// If there is a chance of two nodes, with conversions possible in each direction,
-// the policy for what to ask for must be in the caller; this will do what is asked.
+// Generally, the AST represents allowed GLSL shapes, so this isn't needed
+// for GLSL. Bad shapes are caught in conversion or promotion.
//
// Return 'node' if no conversion was done. Promotion handles final shape
// checking.
@@ -1081,6 +1271,166 @@
return node;
}
+bool TIntermediate::isIntegralPromotion(TBasicType from, TBasicType to) const
+{
+ // integral promotions
+ if (to == EbtInt) {
+ switch(from) {
+ case EbtInt8:
+ case EbtInt16:
+ case EbtUint8:
+ case EbtUint16:
+ return true;
+ default:
+ break;
+ }
+ }
+ return false;
+}
+
+bool TIntermediate::isFPPromotion(TBasicType from, TBasicType to) const
+{
+ // floating-point promotions
+ if (to == EbtDouble) {
+ switch(from) {
+ case EbtFloat16:
+ case EbtFloat:
+ return true;
+ default:
+ break;
+ }
+ }
+ return false;
+}
+
+bool TIntermediate::isIntegralConversion(TBasicType from, TBasicType to) const
+{
+ switch (from) {
+ case EbtInt8:
+ switch (to) {
+ case EbtUint8:
+ case EbtInt16:
+ case EbtUint16:
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case EbtUint8:
+ switch (to) {
+ case EbtInt16:
+ case EbtUint16:
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case EbtInt16:
+ switch(to) {
+ case EbtUint16:
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case EbtUint16:
+ switch(to) {
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case EbtInt:
+ switch(to) {
+ case EbtUint:
+ return version >= 400 || (source == EShSourceHlsl);
+ case EbtInt64:
+ case EbtUint64:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case EbtUint:
+ switch(to) {
+ case EbtInt64:
+ case EbtUint64:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case EbtInt64:
+ if (to == EbtUint64) {
+ return true;
+ }
+ break;
+ default:
+ break;
+ }
+ return false;
+}
+
+bool TIntermediate::isFPConversion(TBasicType from, TBasicType to) const
+{
+ if (to == EbtFloat && from == EbtFloat16) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool TIntermediate::isFPIntegralConversion(TBasicType from, TBasicType to) const
+{
+ switch (from) {
+ case EbtInt8:
+ case EbtUint8:
+ case EbtInt16:
+ case EbtUint16:
+ switch (to) {
+ case EbtFloat16:
+ case EbtFloat:
+ case EbtDouble:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case EbtInt:
+ case EbtUint:
+ switch(to) {
+ case EbtFloat:
+ case EbtDouble:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case EbtInt64:
+ case EbtUint64:
+ if (to == EbtDouble) {
+ return true;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return false;
+}
+
//
// See if the 'from' type is allowed to be implicitly converted to the
// 'to' type. This is not about vector/array/struct, only about basic type.
@@ -1126,120 +1476,339 @@
}
}
- switch (to) {
- case EbtDouble:
- switch (from) {
- case EbtInt:
- case EbtUint:
- case EbtInt64:
- case EbtUint64:
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- case EbtUint16:
-#endif
- case EbtFloat:
+ bool explicitTypesEnabled = extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_int8) ||
+ extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_int16) ||
+ extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_int32) ||
+ extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_int64) ||
+ extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_float16) ||
+ extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_float32) ||
+ extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_float64);
+
+ if(explicitTypesEnabled)
+ {
+
+ // integral promotions
+ if (isIntegralPromotion(from, to)) {
+ return true;
+ }
+
+ // floating-point promotions
+ if (isFPPromotion(from, to)) {
+ return true;
+ }
+
+ // integral conversions
+ if (isIntegralConversion(from, to)) {
+ return true;
+ }
+
+ // floating-point conversions
+ if (isFPConversion(from, to)) {
+ return true;
+ }
+
+ // floating-integral conversions
+ if (isFPIntegralConversion(from, to)) {
+ return true;
+ }
+
+ // hlsl supported conversions
+ if (source == EShSourceHlsl) {
+ if (from == EbtBool && (to == EbtInt || to == EbtUint || to == EbtFloat))
+ return true;
+ }
+ } else {
+ switch (to) {
case EbtDouble:
+ switch (from) {
+ case EbtInt:
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
#ifdef AMD_EXTENSIONS
- case EbtFloat16:
+ case EbtInt16:
+ case EbtUint16:
#endif
- return true;
- default:
- return false;
- }
- case EbtFloat:
- switch (from) {
- case EbtInt:
- case EbtUint:
+ case EbtFloat:
+ case EbtDouble:
#ifdef AMD_EXTENSIONS
- case EbtInt16:
- case EbtUint16:
+ case EbtFloat16:
#endif
+ return true;
+ default:
+ return false;
+ }
case EbtFloat:
+ switch (from) {
+ case EbtInt:
+ case EbtUint:
#ifdef AMD_EXTENSIONS
- case EbtFloat16:
+ case EbtInt16:
+ case EbtUint16:
#endif
- return true;
- case EbtBool:
- return (source == EShSourceHlsl);
- default:
- return false;
- }
- case EbtUint:
- switch (from) {
- case EbtInt:
- return version >= 400 || (source == EShSourceHlsl);
+ case EbtFloat:
+#ifdef AMD_EXTENSIONS
+ case EbtFloat16:
+#endif
+ return true;
+ case EbtBool:
+ return (source == EShSourceHlsl);
+ default:
+ return false;
+ }
case EbtUint:
+ switch (from) {
+ case EbtInt:
+ return version >= 400 || (source == EShSourceHlsl);
+ case EbtUint:
#ifdef AMD_EXTENSIONS
- case EbtInt16:
- case EbtUint16:
+ case EbtInt16:
+ case EbtUint16:
#endif
- return true;
- case EbtBool:
- return (source == EShSourceHlsl);
- default:
- return false;
- }
- case EbtInt:
- switch (from) {
+ return true;
+ case EbtBool:
+ return (source == EShSourceHlsl);
+ default:
+ return false;
+ }
case EbtInt:
+ switch (from) {
+ case EbtInt:
#ifdef AMD_EXTENSIONS
- case EbtInt16:
+ case EbtInt16:
#endif
- return true;
- case EbtBool:
- return (source == EShSourceHlsl);
- default:
- return false;
- }
- case EbtUint64:
- switch (from) {
- case EbtInt:
- case EbtUint:
- case EbtInt64:
+ return true;
+ case EbtBool:
+ return (source == EShSourceHlsl);
+ default:
+ return false;
+ }
case EbtUint64:
+ switch (from) {
+ case EbtInt:
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
#ifdef AMD_EXTENSIONS
- case EbtInt16:
- case EbtUint16:
+ case EbtInt16:
+ case EbtUint16:
#endif
- return true;
- default:
- return false;
- }
- case EbtInt64:
- switch (from) {
- case EbtInt:
+ return true;
+ default:
+ return false;
+ }
case EbtInt64:
+ switch (from) {
+ case EbtInt:
+ case EbtInt64:
#ifdef AMD_EXTENSIONS
- case EbtInt16:
+ case EbtInt16:
#endif
- return true;
- default:
- return false;
- }
+ return true;
+ default:
+ return false;
+ }
#ifdef AMD_EXTENSIONS
- case EbtFloat16:
- switch (from) {
- case EbtInt16:
- case EbtUint16:
case EbtFloat16:
- return true;
- default:
- return false;
+ switch (from) {
+ case EbtInt16:
+ case EbtUint16:
+ case EbtFloat16:
+ return true;
+ default:
+ return false;
}
- case EbtUint16:
- switch (from) {
- case EbtInt16:
case EbtUint16:
- return true;
- default:
- return false;
+ switch (from) {
+ case EbtInt16:
+ case EbtUint16:
+ return true;
+ default:
+ return false;
}
#endif
+ default:
+ return false;
+ }
+ }
+
+ return false;
+}
+
+static bool canSignedIntTypeRepresentAllUnsignedValues(TBasicType sintType, TBasicType uintType) {
+ switch(sintType) {
+ case EbtInt8:
+ switch(uintType) {
+ case EbtUint8:
+ case EbtUint16:
+ case EbtUint:
+ case EbtUint64:
+ return false;
+ default:
+ assert(false);
+ return false;
+ }
+ break;
+ case EbtInt16:
+ switch(uintType) {
+ case EbtUint8:
+ return true;
+ case EbtUint16:
+ case EbtUint:
+ case EbtUint64:
+ return false;
+ default:
+ assert(false);
+ return false;
+ }
+ break;
+ case EbtInt:
+ switch(uintType) {
+ case EbtUint8:
+ case EbtUint16:
+ return true;
+ case EbtUint:
+ return false;
+ default:
+ assert(false);
+ return false;
+ }
+ break;
+ case EbtInt64:
+ switch(uintType) {
+ case EbtUint8:
+ case EbtUint16:
+ case EbtUint:
+ return true;
+ case EbtUint64:
+ return false;
+ default:
+ assert(false);
+ return false;
+ }
+ break;
default:
+ assert(false);
return false;
}
}
+
+static TBasicType getCorrespondingUnsignedType(TBasicType type) {
+ switch(type) {
+ case EbtInt8:
+ return EbtUint8;
+ case EbtInt16:
+ return EbtUint16;
+ case EbtInt:
+ return EbtUint;
+ case EbtInt64:
+ return EbtUint64;
+ default:
+ assert(false);
+ return EbtNumTypes;
+ }
+}
+
+// Implements the following rules
+// - If either operand has type float64_t or derived from float64_t,
+// the other shall be converted to float64_t or derived type.
+// - Otherwise, if either operand has type float32_t or derived from
+// float32_t, the other shall be converted to float32_t or derived type.
+// - Otherwise, if either operand has type float16_t or derived from
+// float16_t, the other shall be converted to float16_t or derived type.
+// - Otherwise, if both operands have integer types the following rules
+// shall be applied to the operands:
+// - If both operands have the same type, no further conversion
+// is needed.
+// - Otherwise, if both operands have signed integer types or both
+// have unsigned integer types, the operand with the type of lesser
+// integer conversion rank shall be converted to the type of the
+// operand with greater rank.
+// - Otherwise, if the operand that has unsigned integer type has rank
+// greater than or equal to the rank of the type of the other
+// operand, the operand with signed integer type shall be converted
+// to the type of the operand with unsigned integer type.
+// - Otherwise, if the type of the operand with signed integer type can
+// represent all of the values of the type of the operand with
+// unsigned integer type, the operand with unsigned integer type
+// shall be converted to the type of the operand with signed
+// integer type.
+// - Otherwise, both operands shall be converted to the unsigned
+// integer type corresponding to the type of the operand with signed
+// integer type.
+
+std::tuple<TBasicType, TBasicType> TIntermediate::getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const
+{
+ TBasicType res0 = EbtNumTypes;
+ TBasicType res1 = EbtNumTypes;
+
+ if (profile == EEsProfile || version == 110)
+ return std::make_tuple(res0, res1);;
+
+ if (source == EShSourceHlsl) {
+ if (canImplicitlyPromote(type1, type0, op)) {
+ res0 = type0;
+ res1 = type0;
+ } else if (canImplicitlyPromote(type0, type1, op)) {
+ res0 = type1;
+ res1 = type1;
+ }
+ return std::make_tuple(res0, res1);
+ }
+
+ if ((type0 == EbtDouble && canImplicitlyPromote(type1, EbtDouble, op)) ||
+ (type1 == EbtDouble && canImplicitlyPromote(type0, EbtDouble, op)) ) {
+ res0 = EbtDouble;
+ res1 = EbtDouble;
+ } else if ((type0 == EbtFloat && canImplicitlyPromote(type1, EbtFloat, op)) ||
+ (type1 == EbtFloat && canImplicitlyPromote(type0, EbtFloat, op)) ) {
+ res0 = EbtFloat;
+ res1 = EbtFloat;
+ } else if ((type0 == EbtFloat16 && canImplicitlyPromote(type1, EbtFloat16, op)) ||
+ (type1 == EbtFloat16 && canImplicitlyPromote(type0, EbtFloat16, op)) ) {
+ res0 = EbtFloat16;
+ res1 = EbtFloat16;
+ } else if (isTypeInt(type0) && isTypeInt(type1) &&
+ (canImplicitlyPromote(type0, type1, op) || canImplicitlyPromote(type1, type0, op))) {
+ if ((isTypeSignedInt(type0) && isTypeSignedInt(type1)) ||
+ (isTypeUnsignedInt(type0) && isTypeUnsignedInt(type1))) {
+ if (getTypeRank(type0) < getTypeRank(type1)) {
+ res0 = type1;
+ res1 = type1;
+ } else {
+ res0 = type0;
+ res1 = type0;
+ }
+ } else if (isTypeUnsignedInt(type0) && (getTypeRank(type0) > getTypeRank(type1))) {
+ res0 = type0;
+ res1 = type0;
+ } else if (isTypeUnsignedInt(type1) && (getTypeRank(type1) > getTypeRank(type0))) {
+ res0 = type1;
+ res1 = type1;
+ } else if (isTypeSignedInt(type0)) {
+ if (canSignedIntTypeRepresentAllUnsignedValues(type0, type1)) {
+ res0 = type0;
+ res1 = type0;
+ } else {
+ res0 = getCorrespondingUnsignedType(type0);
+ res1 = getCorrespondingUnsignedType(type0);
+ }
+ } else if (isTypeSignedInt(type1)) {
+ if (canSignedIntTypeRepresentAllUnsignedValues(type1, type0)) {
+ res0 = type1;
+ res1 = type1;
+ } else {
+ res0 = getCorrespondingUnsignedType(type1);
+ res1 = getCorrespondingUnsignedType(type1);
+ }
+ }
+ }
+
+ return std::make_tuple(res0, res1);
+}
+
//
// Given a type, find what operation would fully construct it.
//
@@ -1332,7 +1901,6 @@
}
}
break;
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
if (type.getMatrixCols()) {
switch (type.getMatrixCols()) {
@@ -1372,7 +1940,42 @@
}
}
break;
-#endif
+ case EbtInt8:
+ switch(type.getVectorSize()) {
+ case 1: op = EOpConstructInt8; break;
+ case 2: op = EOpConstructI8Vec2; break;
+ case 3: op = EOpConstructI8Vec3; break;
+ case 4: op = EOpConstructI8Vec4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case EbtUint8:
+ switch(type.getVectorSize()) {
+ case 1: op = EOpConstructUint8; break;
+ case 2: op = EOpConstructU8Vec2; break;
+ case 3: op = EOpConstructU8Vec3; break;
+ case 4: op = EOpConstructU8Vec4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case EbtInt16:
+ switch(type.getVectorSize()) {
+ case 1: op = EOpConstructInt16; break;
+ case 2: op = EOpConstructI16Vec2; break;
+ case 3: op = EOpConstructI16Vec3; break;
+ case 4: op = EOpConstructI16Vec4; break;
+ default: break; // some compilers want this
+ }
+ break;
+ case EbtUint16:
+ switch(type.getVectorSize()) {
+ case 1: op = EOpConstructUint16; break;
+ case 2: op = EOpConstructU16Vec2; break;
+ case 3: op = EOpConstructU16Vec3; break;
+ case 4: op = EOpConstructU16Vec4; break;
+ default: break; // some compilers want this
+ }
+ break;
case EbtInt:
if (type.getMatrixCols()) {
switch (type.getMatrixCols()) {
@@ -1467,26 +2070,6 @@
default: break; // some compilers want this
}
break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- switch(type.getVectorSize()) {
- case 1: op = EOpConstructInt16; break;
- case 2: op = EOpConstructI16Vec2; break;
- case 3: op = EOpConstructI16Vec3; break;
- case 4: op = EOpConstructI16Vec4; break;
- default: break; // some compilers want this
- }
- break;
- case EbtUint16:
- switch(type.getVectorSize()) {
- case 1: op = EOpConstructUint16; break;
- case 2: op = EOpConstructU16Vec2; break;
- case 3: op = EOpConstructU16Vec3; break;
- case 4: op = EOpConstructU16Vec4; break;
- default: break; // some compilers want this
- }
- break;
-#endif
case EbtBool:
if (type.getMatrixCols()) {
switch (type.getMatrixCols()) {
@@ -1682,16 +2265,12 @@
//
// Get compatible types.
//
- TIntermTyped* child = addConversion(EOpSequence, trueBlock->getType(), falseBlock);
- if (child)
- falseBlock = child;
- else {
- child = addConversion(EOpSequence, falseBlock->getType(), trueBlock);
- if (child)
- trueBlock = child;
- else
- return nullptr;
- }
+ auto children = addConversion(EOpSequence, trueBlock, falseBlock);
+ trueBlock = std::get<0>(children);
+ falseBlock = std::get<1>(children);
+
+ if (trueBlock == nullptr || falseBlock == nullptr)
+ return nullptr;
// Handle a vector condition as a mix
if (!cond->getType().isScalarOrVec1()) {
@@ -1769,6 +2348,37 @@
return node;
}
+TIntermConstantUnion* TIntermediate::addConstantUnion(signed char i8, const TSourceLoc& loc, bool literal) const
+{
+ TConstUnionArray unionArray(1);
+ unionArray[0].setI8Const(i8);
+
+ return addConstantUnion(unionArray, TType(EbtInt8, EvqConst), loc, literal);
+}
+
+TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned char u8, const TSourceLoc& loc, bool literal) const
+{
+ TConstUnionArray unionArray(1);
+ unionArray[0].setUConst(u8);
+
+ return addConstantUnion(unionArray, TType(EbtUint8, EvqConst), loc, literal);
+}
+
+TIntermConstantUnion* TIntermediate::addConstantUnion(signed short i16, const TSourceLoc& loc, bool literal) const
+{
+ TConstUnionArray unionArray(1);
+ unionArray[0].setI16Const(i16);
+
+ return addConstantUnion(unionArray, TType(EbtInt16, EvqConst), loc, literal);
+}
+
+TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned short u16, const TSourceLoc& loc, bool literal) const
+{
+ TConstUnionArray unionArray(1);
+ unionArray[0].setU16Const(u16);
+
+ return addConstantUnion(unionArray, TType(EbtUint16, EvqConst), loc, literal);
+}
TIntermConstantUnion* TIntermediate::addConstantUnion(int i, const TSourceLoc& loc, bool literal) const
{
@@ -1802,24 +2412,6 @@
return addConstantUnion(unionArray, TType(EbtUint64, EvqConst), loc, literal);
}
-#ifdef AMD_EXTENSIONS
-TIntermConstantUnion* TIntermediate::addConstantUnion(short i16, const TSourceLoc& loc, bool literal) const
-{
- TConstUnionArray unionArray(1);
- unionArray[0].setIConst(i16);
-
- return addConstantUnion(unionArray, TType(EbtInt16, EvqConst), loc, literal);
-}
-
-TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned short u16, const TSourceLoc& loc, bool literal) const
-{
- TConstUnionArray unionArray(1);
- unionArray[0].setUConst(u16);
-
- return addConstantUnion(unionArray, TType(EbtUint16, EvqConst), loc, literal);
-}
-#endif
-
TIntermConstantUnion* TIntermediate::addConstantUnion(bool b, const TSourceLoc& loc, bool literal) const
{
TConstUnionArray unionArray(1);
@@ -1830,11 +2422,7 @@
TIntermConstantUnion* TIntermediate::addConstantUnion(double d, TBasicType baseType, const TSourceLoc& loc, bool literal) const
{
-#ifdef AMD_EXTENSIONS
assert(baseType == EbtFloat || baseType == EbtDouble || baseType == EbtFloat16);
-#else
- assert(baseType == EbtFloat || baseType == EbtDouble);
-#endif
TConstUnionArray unionArray(1);
unionArray[0].setDConst(d);
@@ -2129,12 +2717,10 @@
case EOpVectorSwizzle:
case EOpConvFloatToDouble:
case EOpConvDoubleToFloat:
-#ifdef AMD_EXTENSIONS
case EOpConvFloat16ToFloat:
case EOpConvFloatToFloat16:
case EOpConvFloat16ToDouble:
case EOpConvDoubleToFloat16:
-#endif
return true;
default:
return false;
@@ -2158,51 +2744,97 @@
case EOpIndexDirectStruct:
case EOpVectorSwizzle:
- // conversion constructors
- case EOpConvIntToBool:
- case EOpConvUintToBool:
- case EOpConvUintToInt:
- case EOpConvBoolToInt:
- case EOpConvIntToUint:
- case EOpConvBoolToUint:
- case EOpConvInt64ToBool:
- case EOpConvBoolToInt64:
- case EOpConvUint64ToBool:
- case EOpConvBoolToUint64:
- case EOpConvInt64ToInt:
- case EOpConvIntToInt64:
- case EOpConvUint64ToUint:
- case EOpConvUintToUint64:
- case EOpConvInt64ToUint64:
- case EOpConvUint64ToInt64:
- case EOpConvInt64ToUint:
- case EOpConvUintToInt64:
- case EOpConvUint64ToInt:
- case EOpConvIntToUint64:
-#ifdef AMD_EXTENSIONS
+ // (u)int* -> bool
+ case EOpConvInt8ToBool:
case EOpConvInt16ToBool:
- case EOpConvBoolToInt16:
- case EOpConvInt16ToInt:
- case EOpConvIntToInt16:
- case EOpConvInt16ToUint:
- case EOpConvUintToInt16:
- case EOpConvInt16ToInt64:
- case EOpConvInt64ToInt16:
- case EOpConvInt16ToUint64:
- case EOpConvUint64ToInt16:
+ case EOpConvIntToBool:
+ case EOpConvInt64ToBool:
+ case EOpConvUint8ToBool:
case EOpConvUint16ToBool:
+ case EOpConvUintToBool:
+ case EOpConvUint64ToBool:
+
+ // bool -> (u)int*
+ case EOpConvBoolToInt8:
+ case EOpConvBoolToInt16:
+ case EOpConvBoolToInt:
+ case EOpConvBoolToInt64:
+ case EOpConvBoolToUint8:
case EOpConvBoolToUint16:
- case EOpConvUint16ToInt:
- case EOpConvIntToUint16:
- case EOpConvUint16ToUint:
- case EOpConvUintToUint16:
- case EOpConvUint16ToInt64:
- case EOpConvInt64ToUint16:
- case EOpConvUint16ToUint64:
- case EOpConvUint64ToUint16:
+ case EOpConvBoolToUint:
+ case EOpConvBoolToUint64:
+
+ // int8_t -> (u)int*
+ case EOpConvInt8ToInt16:
+ case EOpConvInt8ToInt:
+ case EOpConvInt8ToInt64:
+ case EOpConvInt8ToUint8:
+ case EOpConvInt8ToUint16:
+ case EOpConvInt8ToUint:
+ case EOpConvInt8ToUint64:
+
+ // int16_t -> (u)int*
+ case EOpConvInt16ToInt8:
+ case EOpConvInt16ToInt:
+ case EOpConvInt16ToInt64:
+ case EOpConvInt16ToUint8:
case EOpConvInt16ToUint16:
+ case EOpConvInt16ToUint:
+ case EOpConvInt16ToUint64:
+
+ // int32_t -> (u)int*
+ case EOpConvIntToInt8:
+ case EOpConvIntToInt16:
+ case EOpConvIntToInt64:
+ case EOpConvIntToUint8:
+ case EOpConvIntToUint16:
+ case EOpConvIntToUint:
+ case EOpConvIntToUint64:
+
+ // int64_t -> (u)int*
+ case EOpConvInt64ToInt8:
+ case EOpConvInt64ToInt16:
+ case EOpConvInt64ToInt:
+ case EOpConvInt64ToUint8:
+ case EOpConvInt64ToUint16:
+ case EOpConvInt64ToUint:
+ case EOpConvInt64ToUint64:
+
+ // uint8_t -> (u)int*
+ case EOpConvUint8ToInt8:
+ case EOpConvUint8ToInt16:
+ case EOpConvUint8ToInt:
+ case EOpConvUint8ToInt64:
+ case EOpConvUint8ToUint16:
+ case EOpConvUint8ToUint:
+ case EOpConvUint8ToUint64:
+
+ // uint16_t -> (u)int*
+ case EOpConvUint16ToInt8:
case EOpConvUint16ToInt16:
-#endif
+ case EOpConvUint16ToInt:
+ case EOpConvUint16ToInt64:
+ case EOpConvUint16ToUint8:
+ case EOpConvUint16ToUint:
+ case EOpConvUint16ToUint64:
+
+ // uint32_t -> (u)int*
+ case EOpConvUintToInt8:
+ case EOpConvUintToInt16:
+ case EOpConvUintToInt:
+ case EOpConvUintToInt64:
+ case EOpConvUintToUint8:
+ case EOpConvUintToUint16:
+ case EOpConvUintToUint64:
+
+ // uint64_t -> (u)int*
+ case EOpConvUint64ToInt8:
+ case EOpConvUint64ToInt16:
+ case EOpConvUint64ToInt:
+ case EOpConvUint64ToInt64:
+ case EOpConvUint64ToUint8:
+ case EOpConvUint64ToUint16:
+ case EOpConvUint64ToUint:
// unary operations
case EOpNegative:
@@ -2329,15 +2961,7 @@
}
break;
case EOpBitwiseNot:
- if (operand->getBasicType() != EbtInt &&
- operand->getBasicType() != EbtUint &&
-#ifdef AMD_EXTENSIONS
- operand->getBasicType() != EbtInt16 &&
- operand->getBasicType() != EbtUint16 &&
-#endif
- operand->getBasicType() != EbtInt64 &&
- operand->getBasicType() != EbtUint64)
-
+ if (!isTypeInt(operand->getBasicType()))
return false;
break;
case EOpNegative:
@@ -2345,18 +2969,9 @@
case EOpPostDecrement:
case EOpPreIncrement:
case EOpPreDecrement:
- if (operand->getBasicType() != EbtInt &&
- operand->getBasicType() != EbtUint &&
- operand->getBasicType() != EbtInt64 &&
- operand->getBasicType() != EbtUint64 &&
-#ifdef AMD_EXTENSIONS
- operand->getBasicType() != EbtInt16 &&
- operand->getBasicType() != EbtUint16 &&
-#endif
+ if (!isTypeInt(operand->getBasicType()) &&
operand->getBasicType() != EbtFloat &&
-#ifdef AMD_EXTENSIONS
operand->getBasicType() != EbtFloat16 &&
-#endif
operand->getBasicType() != EbtDouble)
return false;
@@ -2376,11 +2991,7 @@
void TIntermUnary::updatePrecision()
{
-#ifdef AMD_EXTENSIONS
if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat || getBasicType() == EbtFloat16) {
-#else
- if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat) {
-#endif
if (operand->getQualifier().precision > getQualifier().precision)
getQualifier().precision = operand->getQualifier().precision;
}
@@ -2563,16 +3174,7 @@
break;
// Check for integer-only operands.
- if ((left->getBasicType() != EbtInt && left->getBasicType() != EbtUint &&
-#ifdef AMD_EXTENSIONS
- left->getBasicType() != EbtInt16 && left->getBasicType() != EbtUint16 &&
-#endif
- left->getBasicType() != EbtInt64 && left->getBasicType() != EbtUint64) ||
- (right->getBasicType() != EbtInt && right->getBasicType() != EbtUint &&
-#ifdef AMD_EXTENSIONS
- right->getBasicType() != EbtInt16 && right->getBasicType() != EbtUint16 &&
-#endif
- right->getBasicType() != EbtInt64 && right->getBasicType() != EbtUint64))
+ if (!isTypeInt(left->getBasicType()) && !isTypeInt(right->getBasicType()))
return false;
if (left->isMatrix() || right->isMatrix())
return false;
@@ -2873,11 +3475,7 @@
void TIntermBinary::updatePrecision()
{
-#ifdef AMD_EXTENSIONS
if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat || getBasicType() == EbtFloat16) {
-#else
- if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat) {
-#endif
getQualifier().precision = std::max(right->getQualifier().precision, left->getQualifier().precision);
if (getQualifier().precision != EpqNone) {
left->propagatePrecision(getQualifier().precision);
@@ -2888,11 +3486,7 @@
void TIntermTyped::propagatePrecision(TPrecisionQualifier newPrecision)
{
-#ifdef AMD_EXTENSIONS
if (getQualifier().precision != EpqNone || (getBasicType() != EbtInt && getBasicType() != EbtUint && getBasicType() != EbtFloat && getBasicType() != EbtFloat16))
-#else
- if (getQualifier().precision != EpqNone || (getBasicType() != EbtInt && getBasicType() != EbtUint && getBasicType() != EbtFloat))
-#endif
return;
getQualifier().precision = newPrecision;
@@ -2967,9 +3561,7 @@
break;
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
leftUnionArray[i] = rightUnionArray[i];
break;
default:
@@ -2995,16 +3587,13 @@
break;
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
leftUnionArray[i] = rightUnionArray[i];
break;
default:
return node;
}
break;
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
switch (node->getType().getBasicType()) {
case EbtInt:
@@ -3031,7 +3620,6 @@
return node;
}
break;
-#endif
case EbtInt:
switch (node->getType().getBasicType()) {
case EbtInt:
@@ -3051,9 +3639,7 @@
break;
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
leftUnionArray[i].setIConst(static_cast<int>(rightUnionArray[i].getDConst()));
break;
default:
@@ -3079,9 +3665,7 @@
break;
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
leftUnionArray[i].setUConst(static_cast<unsigned int>(rightUnionArray[i].getDConst()));
break;
default:
@@ -3107,9 +3691,7 @@
break;
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
leftUnionArray[i].setBConst(rightUnionArray[i].getDConst() != 0.0);
break;
default:
@@ -3135,9 +3717,7 @@
break;
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
leftUnionArray[i].setI64Const(static_cast<long long>(rightUnionArray[i].getDConst()));
break;
default:
@@ -3163,9 +3743,7 @@
break;
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
leftUnionArray[i].setU64Const(static_cast<unsigned long long>(rightUnionArray[i].getDConst()));
break;
default:
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 0d9cea7..fe0f21a 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -2,6 +2,7 @@
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2015 LunarG, Inc.
// Copyright (C) 2015-2016 Google, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -1632,9 +1633,33 @@
intermediate.setMultiStream();
break;
+ case EOpSubgroupClusteredAdd:
+ case EOpSubgroupClusteredMul:
+ case EOpSubgroupClusteredMin:
+ case EOpSubgroupClusteredMax:
+ case EOpSubgroupClusteredAnd:
+ case EOpSubgroupClusteredOr:
+ case EOpSubgroupClusteredXor:
+ if ((*argp)[1]->getAsConstantUnion() == nullptr)
+ error(loc, "argument must be compile-time constant", "cluster size", "");
+ else {
+ int size = (*argp)[1]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ if (size < 1)
+ error(loc, "argument must be at least 1", "cluster size", "");
+ else if (!IsPow2(size))
+ error(loc, "argument must be a power of 2", "cluster size", "");
+ }
+ break;
+
default:
break;
}
+
+ if (callNode.getOp() > EOpSubgroupGuardStart && callNode.getOp() < EOpSubgroupGuardStop) {
+ // these require SPIR-V 1.3
+ if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3)
+ error(loc, "requires SPIR-V 1.3", "subgroup op", "");
+ }
}
extern bool PureOperatorBuiltins;
@@ -2196,7 +2221,6 @@
case EOpConstructDMat4x2:
case EOpConstructDMat4x3:
case EOpConstructDMat4x4:
-#ifdef AMD_EXTENSIONS
case EOpConstructF16Mat2x2:
case EOpConstructF16Mat2x3:
case EOpConstructF16Mat2x4:
@@ -2206,7 +2230,6 @@
case EOpConstructF16Mat4x2:
case EOpConstructF16Mat4x3:
case EOpConstructF16Mat4x4:
-#endif
constructingMatrix = true;
break;
default:
@@ -2263,18 +2286,30 @@
// Finish pinning down spec-const semantics
if (specConstType) {
switch (op) {
+ case EOpConstructInt8:
+ case EOpConstructUint8:
+ case EOpConstructInt16:
+ case EOpConstructUint16:
case EOpConstructInt:
case EOpConstructUint:
case EOpConstructInt64:
case EOpConstructUint64:
-#ifdef AMD_EXTENSIONS
- case EOpConstructInt16:
- case EOpConstructUint16:
-#endif
case EOpConstructBool:
case EOpConstructBVec2:
case EOpConstructBVec3:
case EOpConstructBVec4:
+ case EOpConstructI8Vec2:
+ case EOpConstructI8Vec3:
+ case EOpConstructI8Vec4:
+ case EOpConstructU8Vec2:
+ case EOpConstructU8Vec3:
+ case EOpConstructU8Vec4:
+ case EOpConstructI16Vec2:
+ case EOpConstructI16Vec3:
+ case EOpConstructI16Vec4:
+ case EOpConstructU16Vec2:
+ case EOpConstructU16Vec3:
+ case EOpConstructU16Vec4:
case EOpConstructIVec2:
case EOpConstructIVec3:
case EOpConstructIVec4:
@@ -2287,14 +2322,6 @@
case EOpConstructU64Vec2:
case EOpConstructU64Vec3:
case EOpConstructU64Vec4:
-#ifdef AMD_EXTENSIONS
- case EOpConstructI16Vec2:
- case EOpConstructI16Vec3:
- case EOpConstructI16Vec4:
- case EOpConstructU16Vec2:
- case EOpConstructU16Vec3:
- case EOpConstructU16Vec4:
-#endif
// This was the list of valid ones, if they aren't converting from float
// and aren't making an array.
makeSpecConst = ! floatArgument && ! type.isArray();
@@ -2602,12 +2629,7 @@
return;
}
- if (publicType.basicType == EbtInt || publicType.basicType == EbtUint ||
-#ifdef AMD_EXTENSIONS
- publicType.basicType == EbtInt16 || publicType.basicType == EbtUint16 ||
-#endif
- publicType.basicType == EbtInt64 || publicType.basicType == EbtUint64 ||
- publicType.basicType == EbtDouble)
+ if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble)
profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output");
#ifdef AMD_EXTENSIONS
@@ -2615,13 +2637,13 @@
#else
if (!qualifier.flat) {
#endif
- if (publicType.basicType == EbtInt || publicType.basicType == EbtUint ||
-#ifdef AMD_EXTENSIONS
- publicType.basicType == EbtInt16 || publicType.basicType == EbtUint16 ||
-#endif
- publicType.basicType == EbtInt64 || publicType.basicType == EbtUint64 ||
+ if (isTypeInt(publicType.basicType) ||
publicType.basicType == EbtDouble ||
- (publicType.userDef && (publicType.userDef->containsBasicType(EbtInt) ||
+ (publicType.userDef && (publicType.userDef->containsBasicType(EbtInt8) ||
+ publicType.userDef->containsBasicType(EbtUint8) ||
+ publicType.userDef->containsBasicType(EbtInt16) ||
+ publicType.userDef->containsBasicType(EbtUint16) ||
+ publicType.userDef->containsBasicType(EbtInt) ||
publicType.userDef->containsBasicType(EbtUint) ||
publicType.userDef->containsBasicType(EbtInt64) ||
publicType.userDef->containsBasicType(EbtUint64) ||
@@ -4643,11 +4665,9 @@
// containing a double, the offset must also be a multiple of 8..."
if (type.containsBasicType(EbtDouble) && ! IsMultipleOfPow2(qualifier.layoutXfbOffset, 8))
error(loc, "type contains double; xfb_offset must be a multiple of 8", "xfb_offset", "");
-#ifdef AMD_EXTENSIONS
// ..., if applied to an aggregate containing a float16_t, the offset must also be a multiple of 2..."
else if (type.containsBasicType(EbtFloat16) && !IsMultipleOfPow2(qualifier.layoutXfbOffset, 2))
error(loc, "type contains half float; xfb_offset must be a multiple of 2", "xfb_offset", "");
-#endif
else if (! IsMultipleOfPow2(qualifier.layoutXfbOffset, 4))
error(loc, "must be a multiple of size of first component", "xfb_offset", "");
}
@@ -4758,20 +4778,18 @@
error(loc, "can only be applied to a scalar", "constant_id", "");
switch (type.getBasicType())
{
+ case EbtInt8:
+ case EbtUint8:
+ case EbtInt16:
+ case EbtUint16:
case EbtInt:
case EbtUint:
case EbtInt64:
case EbtUint64:
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- case EbtUint16:
-#endif
case EbtBool:
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
break;
default:
error(loc, "cannot be applied to this type", "constant_id", "");
@@ -4968,10 +4986,21 @@
return nullptr;
}
+ bool explicitTypesEnabled = extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int8) ||
+ extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int16) ||
+ extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int32) ||
+ extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int64) ||
+ extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_float16) ||
+ extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_float32) ||
+ extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_float64);
+
if (profile == EEsProfile || version < 120)
function = findFunctionExact(loc, call, builtIn);
else if (version < 400)
function = findFunction120(loc, call, builtIn);
+ else if (explicitTypesEnabled)
+ function = findFunctionExplicitTypes(loc, call, builtIn);
else
function = findFunction400(loc, call, builtIn);
@@ -5156,6 +5185,85 @@
return bestMatch;
}
+// "To determine whether the conversion for a single argument in one match
+// is better than that for another match, the conversion is assigned of the
+// three ranks ordered from best to worst:
+// 1. Exact match: no conversion.
+// 2. Promotion: integral or floating-point promotion.
+// 3. Conversion: integral conversion, floating-point conversion,
+// floating-integral conversion.
+// A conversion C1 is better than a conversion C2 if the rank of C1 is
+// better than the rank of C2."
+const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc, const TFunction& call, bool& builtIn)
+{
+ // first, look for an exact match
+ TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn);
+ if (symbol)
+ return symbol->getAsFunction();
+
+ // no exact match, use the generic selector, parameterized by the GLSL rules
+
+ // create list of candidates to send
+ TVector<const TFunction*> candidateList;
+ symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn);
+
+ // can 'from' convert to 'to'?
+ const auto convertible = [this](const TType& from, const TType& to, TOperator, int) -> bool {
+ if (from == to)
+ return true;
+ if (from.isArray() || to.isArray() || ! from.sameElementShape(to))
+ return false;
+ return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType());
+ };
+
+ // Is 'to2' a better conversion than 'to1'?
+ // Ties should not be considered as better.
+ // Assumes 'convertible' already said true.
+ const auto better = [this](const TType& from, const TType& to1, const TType& to2) -> bool {
+ // 1. exact match
+ if (from == to2)
+ return from != to1;
+ if (from == to1)
+ return false;
+
+ // 2. Promotion (integral, floating-point) is better
+ TBasicType from_type = from.getBasicType();
+ TBasicType to1_type = to1.getBasicType();
+ TBasicType to2_type = to2.getBasicType();
+ bool isPromotion1 = (intermediate.isIntegralPromotion(from_type, to1_type) ||
+ intermediate.isFPPromotion(from_type, to1_type));
+ bool isPromotion2 = (intermediate.isIntegralPromotion(from_type, to2_type) ||
+ intermediate.isFPPromotion(from_type, to2_type));
+ if (isPromotion2)
+ return !isPromotion1;
+ if(isPromotion1)
+ return false;
+
+ // 3. Conversion (integral, floating-point , floating-integral)
+ bool isConversion1 = (intermediate.isIntegralConversion(from_type, to1_type) ||
+ intermediate.isFPConversion(from_type, to1_type) ||
+ intermediate.isFPIntegralConversion(from_type, to1_type));
+ bool isConversion2 = (intermediate.isIntegralConversion(from_type, to2_type) ||
+ intermediate.isFPConversion(from_type, to2_type) ||
+ intermediate.isFPIntegralConversion(from_type, to2_type));
+
+ return isConversion2 && !isConversion1;
+ };
+
+ // for ambiguity reporting
+ bool tie = false;
+
+ // send to the generic selector
+ const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie);
+
+ if (bestMatch == nullptr)
+ error(loc, "no matching overloaded function found", call.getName().c_str(), "");
+ else if (tie)
+ error(loc, "ambiguous best function under implicit type conversion", call.getName().c_str(), "");
+
+ return bestMatch;
+}
+
// When a declaration includes a type, but not a variable name, it can be
// to establish defaults.
void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType)
@@ -5680,7 +5788,6 @@
basicOp = EOpConstructDouble;
break;
-#ifdef AMD_EXTENSIONS
case EOpConstructF16Vec2:
case EOpConstructF16Vec3:
case EOpConstructF16Vec4:
@@ -5696,7 +5803,34 @@
case EOpConstructFloat16:
basicOp = EOpConstructFloat16;
break;
-#endif
+
+ case EOpConstructI8Vec2:
+ case EOpConstructI8Vec3:
+ case EOpConstructI8Vec4:
+ case EOpConstructInt8:
+ basicOp = EOpConstructInt8;
+ break;
+
+ case EOpConstructU8Vec2:
+ case EOpConstructU8Vec3:
+ case EOpConstructU8Vec4:
+ case EOpConstructUint8:
+ basicOp = EOpConstructUint8;
+ break;
+
+ case EOpConstructI16Vec2:
+ case EOpConstructI16Vec3:
+ case EOpConstructI16Vec4:
+ case EOpConstructInt16:
+ basicOp = EOpConstructInt16;
+ break;
+
+ case EOpConstructU16Vec2:
+ case EOpConstructU16Vec3:
+ case EOpConstructU16Vec4:
+ case EOpConstructUint16:
+ basicOp = EOpConstructUint16;
+ break;
case EOpConstructIVec2:
case EOpConstructIVec3:
@@ -5726,22 +5860,6 @@
basicOp = EOpConstructUint64;
break;
-#ifdef AMD_EXTENSIONS
- case EOpConstructI16Vec2:
- case EOpConstructI16Vec3:
- case EOpConstructI16Vec4:
- case EOpConstructInt16:
- basicOp = EOpConstructInt16;
- break;
-
- case EOpConstructU16Vec2:
- case EOpConstructU16Vec3:
- case EOpConstructU16Vec4:
- case EOpConstructUint16:
- basicOp = EOpConstructUint16;
- break;
-#endif
-
case EOpConstructBVec2:
case EOpConstructBVec3:
case EOpConstructBVec4:
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index 3ef3e26..c70afc2 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -392,6 +392,7 @@
const TFunction* findFunctionExact(const TSourceLoc& loc, const TFunction& call, bool& builtIn);
const TFunction* findFunction120(const TSourceLoc& loc, const TFunction& call, bool& builtIn);
const TFunction* findFunction400(const TSourceLoc& loc, const TFunction& call, bool& builtIn);
+ const TFunction* findFunctionExplicitTypes(const TSourceLoc& loc, const TFunction& call, bool& builtIn);
void declareTypeDefaults(const TSourceLoc&, const TPublicType&);
TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, const TPublicType&, TArraySizes* typeArray = 0, TIntermTyped* initializer = 0);
TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&);
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index db1642f..92824ef 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -464,16 +465,34 @@
(*KeywordMap)["u64vec3"] = U64VEC3;
(*KeywordMap)["u64vec4"] = U64VEC4;
-#ifdef AMD_EXTENSIONS
+ // GL_KHX_shader_explicit_arithmetic_types
+ (*KeywordMap)["int8_t"] = INT8_T;
+ (*KeywordMap)["i8vec2"] = I8VEC2;
+ (*KeywordMap)["i8vec3"] = I8VEC3;
+ (*KeywordMap)["i8vec4"] = I8VEC4;
+ (*KeywordMap)["uint8_t"] = UINT8_T;
+ (*KeywordMap)["u8vec2"] = U8VEC2;
+ (*KeywordMap)["u8vec3"] = U8VEC3;
+ (*KeywordMap)["u8vec4"] = U8VEC4;
+
(*KeywordMap)["int16_t"] = INT16_T;
- (*KeywordMap)["uint16_t"] = UINT16_T;
(*KeywordMap)["i16vec2"] = I16VEC2;
(*KeywordMap)["i16vec3"] = I16VEC3;
(*KeywordMap)["i16vec4"] = I16VEC4;
+ (*KeywordMap)["uint16_t"] = UINT16_T;
(*KeywordMap)["u16vec2"] = U16VEC2;
(*KeywordMap)["u16vec3"] = U16VEC3;
(*KeywordMap)["u16vec4"] = U16VEC4;
+ (*KeywordMap)["int32_t"] = INT32_T;
+ (*KeywordMap)["i32vec2"] = I32VEC2;
+ (*KeywordMap)["i32vec3"] = I32VEC3;
+ (*KeywordMap)["i32vec4"] = I32VEC4;
+ (*KeywordMap)["uint32_t"] = UINT32_T;
+ (*KeywordMap)["u32vec2"] = U32VEC2;
+ (*KeywordMap)["u32vec3"] = U32VEC3;
+ (*KeywordMap)["u32vec4"] = U32VEC4;
+
(*KeywordMap)["float16_t"] = FLOAT16_T;
(*KeywordMap)["f16vec2"] = F16VEC2;
(*KeywordMap)["f16vec3"] = F16VEC3;
@@ -490,7 +509,39 @@
(*KeywordMap)["f16mat4x2"] = F16MAT4X2;
(*KeywordMap)["f16mat4x3"] = F16MAT4X3;
(*KeywordMap)["f16mat4x4"] = F16MAT4X4;
-#endif
+
+ (*KeywordMap)["float32_t"] = FLOAT32_T;
+ (*KeywordMap)["f32vec2"] = F32VEC2;
+ (*KeywordMap)["f32vec3"] = F32VEC3;
+ (*KeywordMap)["f32vec4"] = F32VEC4;
+ (*KeywordMap)["f32mat2"] = F32MAT2;
+ (*KeywordMap)["f32mat3"] = F32MAT3;
+ (*KeywordMap)["f32mat4"] = F32MAT4;
+ (*KeywordMap)["f32mat2x2"] = F32MAT2X2;
+ (*KeywordMap)["f32mat2x3"] = F32MAT2X3;
+ (*KeywordMap)["f32mat2x4"] = F32MAT2X4;
+ (*KeywordMap)["f32mat3x2"] = F32MAT3X2;
+ (*KeywordMap)["f32mat3x3"] = F32MAT3X3;
+ (*KeywordMap)["f32mat3x4"] = F32MAT3X4;
+ (*KeywordMap)["f32mat4x2"] = F32MAT4X2;
+ (*KeywordMap)["f32mat4x3"] = F32MAT4X3;
+ (*KeywordMap)["f32mat4x4"] = F32MAT4X4;
+ (*KeywordMap)["float64_t"] = FLOAT64_T;
+ (*KeywordMap)["f64vec2"] = F64VEC2;
+ (*KeywordMap)["f64vec3"] = F64VEC3;
+ (*KeywordMap)["f64vec4"] = F64VEC4;
+ (*KeywordMap)["f64mat2"] = F64MAT2;
+ (*KeywordMap)["f64mat3"] = F64MAT3;
+ (*KeywordMap)["f64mat4"] = F64MAT4;
+ (*KeywordMap)["f64mat2x2"] = F64MAT2X2;
+ (*KeywordMap)["f64mat2x3"] = F64MAT2X3;
+ (*KeywordMap)["f64mat2x4"] = F64MAT2X4;
+ (*KeywordMap)["f64mat3x2"] = F64MAT3X2;
+ (*KeywordMap)["f64mat3x3"] = F64MAT3X3;
+ (*KeywordMap)["f64mat3x4"] = F64MAT3X4;
+ (*KeywordMap)["f64mat4x2"] = F64MAT4X2;
+ (*KeywordMap)["f64mat4x3"] = F64MAT4X3;
+ (*KeywordMap)["f64mat4x4"] = F64MAT4X4;
(*KeywordMap)["sampler2D"] = SAMPLER2D;
(*KeywordMap)["samplerCube"] = SAMPLERCUBE;
@@ -763,19 +814,15 @@
parseContext.error(loc, "not supported", "::", "");
break;
- case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT;
- case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT;
- case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT;
- case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT;
-#ifdef AMD_EXTENSIONS
- case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT;
- case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT;
-#endif
- case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT;
- case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT;
-#ifdef AMD_EXTENSIONS
- case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT;
-#endif
+ case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT;
+ case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT;
+ case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT;
+ case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT;
+ case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT;
+ case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT;
+ case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT;
+ case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT;
+ case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT;
case PpAtomIdentifier:
{
int token = tokenizeIdentifier();
@@ -1036,11 +1083,28 @@
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
(parseContext.profile != EEsProfile && parseContext.version >= 450 &&
- parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64)))
+ (parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64) ||
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int64))))
return keyword;
return identifierOrType();
-#ifdef AMD_EXTENSIONS
+ case INT8_T:
+ case UINT8_T:
+ case I8VEC2:
+ case I8VEC3:
+ case I8VEC4:
+ case U8VEC2:
+ case U8VEC3:
+ case U8VEC4:
+ afterType = true;
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ ((parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int8)) &&
+ parseContext.profile != EEsProfile && parseContext.version >= 450))
+ return keyword;
+ return identifierOrType();
+
case INT16_T:
case UINT16_T:
case I16VEC2:
@@ -1052,7 +1116,74 @@
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
(parseContext.profile != EEsProfile && parseContext.version >= 450 &&
- parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16)))
+ (
+#ifdef AMD_EXTENSIONS
+ parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) ||
+#endif
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int16))))
+ return keyword;
+ return identifierOrType();
+ case INT32_T:
+ case UINT32_T:
+ case I32VEC2:
+ case I32VEC3:
+ case I32VEC4:
+ case U32VEC2:
+ case U32VEC3:
+ case U32VEC4:
+ afterType = true;
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ ((parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_int32)) &&
+ parseContext.profile != EEsProfile && parseContext.version >= 450))
+ return keyword;
+ return identifierOrType();
+ case FLOAT32_T:
+ case F32VEC2:
+ case F32VEC3:
+ case F32VEC4:
+ case F32MAT2:
+ case F32MAT3:
+ case F32MAT4:
+ case F32MAT2X2:
+ case F32MAT2X3:
+ case F32MAT2X4:
+ case F32MAT3X2:
+ case F32MAT3X3:
+ case F32MAT3X4:
+ case F32MAT4X2:
+ case F32MAT4X3:
+ case F32MAT4X4:
+ afterType = true;
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ ((parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_float32)) &&
+ parseContext.profile != EEsProfile && parseContext.version >= 450))
+ return keyword;
+ return identifierOrType();
+
+ case FLOAT64_T:
+ case F64VEC2:
+ case F64VEC3:
+ case F64VEC4:
+ case F64MAT2:
+ case F64MAT3:
+ case F64MAT4:
+ case F64MAT2X2:
+ case F64MAT2X3:
+ case F64MAT2X4:
+ case F64MAT3X2:
+ case F64MAT3X3:
+ case F64MAT3X4:
+ case F64MAT4X2:
+ case F64MAT4X3:
+ case F64MAT4X4:
+ afterType = true;
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ ((parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_float64)) &&
+ parseContext.profile != EEsProfile && parseContext.version >= 450))
return keyword;
return identifierOrType();
@@ -1075,11 +1206,15 @@
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
(parseContext.profile != EEsProfile && parseContext.version >= 450 &&
- parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float)))
+ (
+#ifdef AMD_EXTENSIONS
+ parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) ||
+#endif
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types) ||
+ parseContext.extensionTurnedOn(E_GL_KHX_shader_explicit_arithmetic_types_float16))))
return keyword;
return identifierOrType();
-#endif
case SAMPLERCUBEARRAY:
case SAMPLERCUBEARRAYSHADOW:
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index 0bf428e..7525396 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -619,9 +619,9 @@
{
// Set up environmental defaults, first ignoring 'environment'.
if (messages & EShMsgSpvRules)
- spvVersion.spv = 0x00010000;
+ spvVersion.spv = EShTargetSpv_1_0;
if (messages & EShMsgVulkanRules) {
- spvVersion.vulkan = 100;
+ spvVersion.vulkan = EShTargetVulkan_1_0;
spvVersion.vulkanGlsl = 100;
} else if (spvVersion.spv != 0)
spvVersion.openGl = 100;
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 832a0c7..db46e10 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -60,17 +61,15 @@
switch (basicType) {
case EbtFloat: mangledName += 'f'; break;
case EbtDouble: mangledName += 'd'; break;
-#ifdef AMD_EXTENSIONS
case EbtFloat16: mangledName += "f16"; break;
-#endif
case EbtInt: mangledName += 'i'; break;
case EbtUint: mangledName += 'u'; break;
- case EbtInt64: mangledName += "i64"; break;
- case EbtUint64: mangledName += "u64"; break;
-#ifdef AMD_EXTENSIONS
+ case EbtInt8: mangledName += "i8"; break;
+ case EbtUint8: mangledName += "u8"; break;
case EbtInt16: mangledName += "i16"; break;
case EbtUint16: mangledName += "u16"; break;
-#endif
+ case EbtInt64: mangledName += "i64"; break;
+ case EbtUint64: mangledName += "u64"; break;
case EbtBool: mangledName += 'b'; break;
case EbtAtomicUint: mangledName += "au"; break;
case EbtSampler:
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index c67b378..1f44cc3 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -185,6 +186,15 @@
extensionBehavior[E_GL_ARB_post_depth_coverage] = EBhDisable;
extensionBehavior[E_GL_ARB_shader_viewport_layer_array] = EBhDisable;
+ extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable;
+ extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable;
+ extensionBehavior[E_GL_KHR_shader_subgroup_arithmetic] = EBhDisable;
+ extensionBehavior[E_GL_KHR_shader_subgroup_ballot] = EBhDisable;
+ extensionBehavior[E_GL_KHR_shader_subgroup_shuffle] = EBhDisable;
+ extensionBehavior[E_GL_KHR_shader_subgroup_shuffle_relative] = EBhDisable;
+ extensionBehavior[E_GL_KHR_shader_subgroup_clustered] = EBhDisable;
+ extensionBehavior[E_GL_KHR_shader_subgroup_quad] = EBhDisable;
+
extensionBehavior[E_GL_EXT_shader_non_constant_global_initializers] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_image_load_formatted] = EBhDisable;
extensionBehavior[E_GL_EXT_post_depth_coverage] = EBhDisable;
@@ -252,6 +262,16 @@
// OVR extensions
extensionBehavior[E_GL_OVR_multiview] = EBhDisable;
extensionBehavior[E_GL_OVR_multiview2] = EBhDisable;
+
+ // explicit types
+ extensionBehavior[E_GL_KHX_shader_explicit_arithmetic_types] = EBhDisable;
+ extensionBehavior[E_GL_KHX_shader_explicit_arithmetic_types_int8] = EBhDisable;
+ extensionBehavior[E_GL_KHX_shader_explicit_arithmetic_types_int16] = EBhDisable;
+ extensionBehavior[E_GL_KHX_shader_explicit_arithmetic_types_int32] = EBhDisable;
+ extensionBehavior[E_GL_KHX_shader_explicit_arithmetic_types_int64] = EBhDisable;
+ extensionBehavior[E_GL_KHX_shader_explicit_arithmetic_types_float16] = EBhDisable;
+ extensionBehavior[E_GL_KHX_shader_explicit_arithmetic_types_float32] = EBhDisable;
+ extensionBehavior[E_GL_KHX_shader_explicit_arithmetic_types_float64] = EBhDisable;
}
// Get code that is not part of a shared symbol table, is specific to this shader,
@@ -332,6 +352,16 @@
"#define GL_EXT_post_depth_coverage 1\n"
"#define GL_EXT_control_flow_attributes 1\n"
+ // GL_KHR_shader_subgroup
+ "#define GL_KHR_shader_subgroup_basic 1\n"
+ "#define GL_KHR_shader_subgroup_vote 1\n"
+ "#define GL_KHR_shader_subgroup_arithmetic 1\n"
+ "#define GL_KHR_shader_subgroup_ballot 1\n"
+ "#define GL_KHR_shader_subgroup_shuffle 1\n"
+ "#define GL_KHR_shader_subgroup_shuffle_relative 1\n"
+ "#define GL_KHR_shader_subgroup_clustered 1\n"
+ "#define GL_KHR_shader_subgroup_quad 1\n"
+
#ifdef AMD_EXTENSIONS
"#define GL_AMD_shader_ballot 1\n"
"#define GL_AMD_shader_trinary_minmax 1\n"
@@ -352,6 +382,14 @@
"#define GL_NV_shader_atomic_int64 1\n"
"#define GL_NV_conservative_raster_underestimation 1\n"
#endif
+ "#define GL_KHX_shader_explicit_arithmetic_types 1\n"
+ "#define GL_KHX_shader_explicit_arithmetic_types_int8 1\n"
+ "#define GL_KHX_shader_explicit_arithmetic_types_int16 1\n"
+ "#define GL_KHX_shader_explicit_arithmetic_types_int32 1\n"
+ "#define GL_KHX_shader_explicit_arithmetic_types_int64 1\n"
+ "#define GL_KHX_shader_explicit_arithmetic_types_float16 1\n"
+ "#define GL_KHX_shader_explicit_arithmetic_types_float32 1\n"
+ "#define GL_KHX_shader_explicit_arithmetic_types_float64 1\n"
;
if (version >= 150) {
@@ -689,6 +727,21 @@
updateExtensionBehavior(line, "GL_OES_shader_io_blocks", behaviorString);
else if (strcmp(extension, "GL_GOOGLE_include_directive") == 0)
updateExtensionBehavior(line, "GL_GOOGLE_cpp_style_line_directive", behaviorString);
+ // subgroup_* to subgroup_basic
+ else if (strcmp(extension, "GL_KHR_shader_subgroup_vote") == 0)
+ updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
+ else if (strcmp(extension, "GL_KHR_shader_subgroup_arithmetic") == 0)
+ updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
+ else if (strcmp(extension, "GL_KHR_shader_subgroup_ballot") == 0)
+ updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
+ else if (strcmp(extension, "GL_KHR_shader_subgroup_shuffle") == 0)
+ updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
+ else if (strcmp(extension, "GL_KHR_shader_subgroup_shuffle_relative") == 0)
+ updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
+ else if (strcmp(extension, "GL_KHR_shader_subgroup_clustered") == 0)
+ 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);
}
void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior)
@@ -746,29 +799,66 @@
profileRequires(loc, ECompatibilityProfile, 400, nullptr, op);
}
-#ifdef AMD_EXTENSIONS
-// Call for any operation needing GLSL 16-bit integer data-type support.
-void TParseVersions::int16Check(const TSourceLoc& loc, const char* op, bool builtIn)
-{
- if (! builtIn) {
- requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_int16, op);
- requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
- profileRequires(loc, ECoreProfile, 450, nullptr, op);
- profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
- }
-}
-
// Call for any operation needing GLSL float16 data-type support.
void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn)
{
- if (! builtIn) {
- requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_half_float, op);
+ if (!builtIn) {
+#if AMD_EXTENSIONS
+ const char* const extensions[3] = {E_GL_AMD_gpu_shader_half_float,
+ E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_float16};
+
+#else
+ const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_float16};
+#endif
+ requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
profileRequires(loc, ECoreProfile, 450, nullptr, op);
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
}
}
+// Call for any operation needing GLSL float32 data-type support.
+void TParseVersions::explicitFloat32Check(const TSourceLoc& loc, const char* op, bool builtIn)
+{
+ if (!builtIn) {
+ const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_float32};
+ requireExtensions(loc, 2, extensions, "explicit types");
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
+ profileRequires(loc, ECoreProfile, 450, nullptr, op);
+ profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
+ }
+}
+
+// Call for any operation needing GLSL float64 data-type support.
+void TParseVersions::explicitFloat64Check(const TSourceLoc& loc, const char* op, bool builtIn)
+{
+ if (!builtIn) {
+ const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_float64};
+ requireExtensions(loc, 2, extensions, "explicit types");
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
+ profileRequires(loc, ECoreProfile, 450, nullptr, op);
+ profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
+ }
+}
+
+// Call for any operation needing GLSL explicit int8 data-type support.
+void TParseVersions::explicitInt8Check(const TSourceLoc& loc, const char* op, bool builtIn)
+{
+ if (! builtIn) {
+ const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_int8};
+ requireExtensions(loc, 2, extensions, "explicit types");
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
+ profileRequires(loc, ECoreProfile, 450, nullptr, op);
+ profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
+ }
+}
+
+#ifdef AMD_EXTENSIONS
// Call for any operation needing GLSL float16 opaque-type support
void TParseVersions::float16OpaqueCheck(const TSourceLoc& loc, const char* op, bool builtIn)
{
@@ -781,11 +871,46 @@
}
#endif
+// Call for any operation needing GLSL explicit int16 data-type support.
+void TParseVersions::explicitInt16Check(const TSourceLoc& loc, const char* op, bool builtIn)
+{
+ if (! builtIn) {
+#if AMD_EXTENSIONS
+ const char* const extensions[3] = {E_GL_AMD_gpu_shader_int16,
+ E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_int16};
+#else
+ const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_int16};
+#endif
+ requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, "explicit types");
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
+ profileRequires(loc, ECoreProfile, 450, nullptr, op);
+ profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
+ }
+}
+
+// Call for any operation needing GLSL explicit int32 data-type support.
+void TParseVersions::explicitInt32Check(const TSourceLoc& loc, const char* op, bool builtIn)
+{
+ if (! builtIn) {
+ const char* const extensions[2] = {E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_int32};
+ requireExtensions(loc, 2, extensions, "explicit types");
+ requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
+ profileRequires(loc, ECoreProfile, 450, nullptr, op);
+ profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
+ }
+}
+
// Call for any operation needing GLSL 64-bit integer data-type support.
void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool builtIn)
{
if (! builtIn) {
- requireExtensions(loc, 1, &E_GL_ARB_gpu_shader_int64, op);
+ const char* const extensions[3] = {E_GL_ARB_gpu_shader_int64,
+ E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_int64};
+ requireExtensions(loc, 3, extensions, "shader int64");
requireProfile(loc, ECoreProfile | ECompatibilityProfile, op);
profileRequires(loc, ECoreProfile, 450, nullptr, op);
profileRequires(loc, ECompatibilityProfile, 450, nullptr, op);
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index ae96ec2..c9f4e3e 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -139,6 +140,15 @@
const char* const E_GL_ARB_post_depth_coverage = "GL_ARB_post_depth_coverage";
const char* const E_GL_ARB_shader_viewport_layer_array = "GL_ARB_shader_viewport_layer_array";
+const char* const E_GL_KHR_shader_subgroup_basic = "GL_KHR_shader_subgroup_basic";
+const char* const E_GL_KHR_shader_subgroup_vote = "GL_KHR_shader_subgroup_vote";
+const char* const E_GL_KHR_shader_subgroup_arithmetic = "GL_KHR_shader_subgroup_arithmetic";
+const char* const E_GL_KHR_shader_subgroup_ballot = "GL_KHR_shader_subgroup_ballot";
+const char* const E_GL_KHR_shader_subgroup_shuffle = "GL_KHR_shader_subgroup_shuffle";
+const char* const E_GL_KHR_shader_subgroup_shuffle_relative = "GL_KHR_shader_subgroup_shuffle_relative";
+const char* const E_GL_KHR_shader_subgroup_clustered = "GL_KHR_shader_subgroup_clustered";
+const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_subgroup_quad";
+
const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_shader_non_constant_global_initializers";
const char* const E_GL_EXT_shader_image_load_formatted = "GL_EXT_shader_image_load_formatted";
@@ -221,6 +231,16 @@
const char* const E_GL_OES_texture_buffer = "GL_OES_texture_buffer";
const char* const E_GL_OES_texture_cube_map_array = "GL_OES_texture_cube_map_array";
+// KHX
+const char* const E_GL_KHX_shader_explicit_arithmetic_types = "GL_KHX_shader_explicit_arithmetic_types";
+const char* const E_GL_KHX_shader_explicit_arithmetic_types_int8 = "GL_KHX_shader_explicit_arithmetic_types_int8";
+const char* const E_GL_KHX_shader_explicit_arithmetic_types_int16 = "GL_KHX_shader_explicit_arithmetic_types_int16";
+const char* const E_GL_KHX_shader_explicit_arithmetic_types_int32 = "GL_KHX_shader_explicit_arithmetic_types_int32";
+const char* const E_GL_KHX_shader_explicit_arithmetic_types_int64 = "GL_KHX_shader_explicit_arithmetic_types_int64";
+const char* const E_GL_KHX_shader_explicit_arithmetic_types_float16 = "GL_KHX_shader_explicit_arithmetic_types_float16";
+const char* const E_GL_KHX_shader_explicit_arithmetic_types_float32 = "GL_KHX_shader_explicit_arithmetic_types_float32";
+const char* const E_GL_KHX_shader_explicit_arithmetic_types_float64 = "GL_KHX_shader_explicit_arithmetic_types_float64";
+
// Arrays of extensions for the above AEP duplications
const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader };
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index cabcb78..909871e 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -123,15 +124,28 @@
%expect 1 // One shift reduce conflict because of if | else
%token <lex> ATTRIBUTE VARYING
-%token <lex> CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T INT16_T UINT16_T FLOAT16_T
+%token <lex> FLOAT16_T FLOAT FLOAT32_T DOUBLE FLOAT64_T
+%token <lex> CONST BOOL INT UINT INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T
%token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE
-%token <lex> BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 I64VEC2 I64VEC3 I64VEC4 UVEC2 UVEC3 UVEC4 U64VEC2 U64VEC3 U64VEC4 VEC2 VEC3 VEC4
+%token <lex> BVEC2 BVEC3 BVEC4
+%token <lex> IVEC2 IVEC3 IVEC4
+%token <lex> UVEC2 UVEC3 UVEC4
+%token <lex> I64VEC2 I64VEC3 I64VEC4
+%token <lex> U64VEC2 U64VEC3 U64VEC4
+%token <lex> I32VEC2 I32VEC3 I32VEC4
+%token <lex> U32VEC2 U32VEC3 U32VEC4
+%token <lex> I16VEC2 I16VEC3 I16VEC4
+%token <lex> U16VEC2 U16VEC3 U16VEC4
+%token <lex> I8VEC2 I8VEC3 I8VEC4
+%token <lex> U8VEC2 U8VEC3 U8VEC4
+%token <lex> VEC2 VEC3 VEC4
%token <lex> MAT2 MAT3 MAT4 CENTROID IN OUT INOUT
%token <lex> UNIFORM PATCH SAMPLE BUFFER SHARED
%token <lex> COHERENT VOLATILE RESTRICT READONLY WRITEONLY
%token <lex> DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4
%token <lex> F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4
-%token <lex> I16VEC2 I16VEC3 I16VEC4 U16VEC2 U16VEC3 U16VEC4
+%token <lex> F32VEC2 F32VEC3 F32VEC4 F32MAT2 F32MAT3 F32MAT4
+%token <lex> F64VEC2 F64VEC3 F64VEC4 F64MAT2 F64MAT3 F64MAT4
%token <lex> NOPERSPECTIVE FLAT SMOOTH LAYOUT __EXPLICITINTERPAMD
%token <lex> MAT2X2 MAT2X3 MAT2X4
@@ -143,6 +157,12 @@
%token <lex> F16MAT2X2 F16MAT2X3 F16MAT2X4
%token <lex> F16MAT3X2 F16MAT3X3 F16MAT3X4
%token <lex> F16MAT4X2 F16MAT4X3 F16MAT4X4
+%token <lex> F32MAT2X2 F32MAT2X3 F32MAT2X4
+%token <lex> F32MAT3X2 F32MAT3X3 F32MAT3X4
+%token <lex> F32MAT4X2 F32MAT4X3 F32MAT4X4
+%token <lex> F64MAT2X2 F64MAT2X3 F64MAT2X4
+%token <lex> F64MAT3X2 F64MAT3X3 F64MAT3X4
+%token <lex> F64MAT4X2 F64MAT4X3 F64MAT4X4
%token <lex> ATOMIC_UINT
// combined image/sampler
@@ -206,7 +226,7 @@
%token <lex> STRUCT VOID WHILE
%token <lex> IDENTIFIER TYPE_NAME
-%token <lex> FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT INT16CONSTANT UINT16CONSTANT BOOLCONSTANT FLOAT16CONSTANT
+%token <lex> FLOATCONSTANT DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT INT32CONSTANT UINT32CONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT BOOLCONSTANT FLOAT16CONSTANT
%token <lex> LEFT_OP RIGHT_OP
%token <lex> INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP
%token <lex> AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN
@@ -278,6 +298,14 @@
: variable_identifier {
$$ = $1;
}
+ | INT32CONSTANT {
+ parseContext.explicitInt32Check($1.loc, "32-bit signed literal");
+ $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
+ }
+ | UINT32CONSTANT {
+ parseContext.explicitInt32Check($1.loc, "32-bit signed literal");
+ $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true);
+ }
| INTCONSTANT {
$$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
}
@@ -294,16 +322,12 @@
$$ = parseContext.intermediate.addConstantUnion($1.u64, $1.loc, true);
}
| INT16CONSTANT {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit integer literal");
+ parseContext.explicitInt16Check($1.loc, "16-bit integer literal");
$$ = parseContext.intermediate.addConstantUnion((short)$1.i, $1.loc, true);
-#endif
}
| UINT16CONSTANT {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit unsigned integer literal");
+ parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer literal");
$$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true);
-#endif
}
| FLOATCONSTANT {
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true);
@@ -313,10 +337,8 @@
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true);
}
| FLOAT16CONSTANT {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float literal");
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true);
-#endif
}
| BOOLCONSTANT {
$$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
@@ -1375,11 +1397,19 @@
$$.basicType = EbtDouble;
}
| FLOAT16_T {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check($1.loc, "half float", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.float16Check($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
-#endif
+ }
+ | FLOAT32_T {
+ parseContext.explicitFloat32Check($1.loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ }
+ | FLOAT64_T {
+ parseContext.explicitFloat64Check($1.loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
}
| INT {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -1390,6 +1420,36 @@
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint;
}
+ | INT8_T {
+ parseContext.explicitInt8Check($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt8;
+ }
+ | UINT8_T {
+ parseContext.explicitInt8Check($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint8;
+ }
+ | INT16_T {
+ parseContext.explicitInt16Check($1.loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt16;
+ }
+ | UINT16_T {
+ parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint16;
+ }
+ | INT32_T {
+ parseContext.explicitInt32Check($1.loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt;
+ }
+ | UINT32_T {
+ parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint;
+ }
| INT64_T {
parseContext.int64Check($1.loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -1400,20 +1460,6 @@
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint64;
}
- | INT16_T {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel());
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtInt16;
-#endif
- }
- | UINT16_T {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtUint16;
-#endif
- }
| BOOL {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtBool;
@@ -1452,28 +1498,58 @@
$$.setVector(4);
}
| F16VEC2 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setVector(2);
-#endif
}
| F16VEC3 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setVector(3);
-#endif
}
| F16VEC4 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setVector(4);
-#endif
+ }
+ | F32VEC2 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setVector(2);
+ }
+ | F32VEC3 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setVector(3);
+ }
+ | F32VEC4 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setVector(4);
+ }
+ | F64VEC2 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setVector(2);
+ }
+ | F64VEC3 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setVector(3);
+ }
+ | F64VEC4 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setVector(4);
}
| BVEC2 {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -1505,6 +1581,60 @@
$$.basicType = EbtInt;
$$.setVector(4);
}
+ | I8VEC2 {
+ parseContext.explicitInt8Check($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt8;
+ $$.setVector(2);
+ }
+ | I8VEC3 {
+ parseContext.explicitInt8Check($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt8;
+ $$.setVector(3);
+ }
+ | I8VEC4 {
+ parseContext.explicitInt8Check($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt8;
+ $$.setVector(4);
+ }
+ | I16VEC2 {
+ parseContext.explicitInt16Check($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt16;
+ $$.setVector(2);
+ }
+ | I16VEC3 {
+ parseContext.explicitInt16Check($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt16;
+ $$.setVector(3);
+ }
+ | I16VEC4 {
+ parseContext.explicitInt16Check($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt16;
+ $$.setVector(4);
+ }
+ | I32VEC2 {
+ parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt;
+ $$.setVector(2);
+ }
+ | I32VEC3 {
+ parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt;
+ $$.setVector(3);
+ }
+ | I32VEC4 {
+ parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt;
+ $$.setVector(4);
+ }
| I64VEC2 {
parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -1523,30 +1653,6 @@
$$.basicType = EbtInt64;
$$.setVector(4);
}
- | I16VEC2 {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtInt16;
- $$.setVector(2);
-#endif
- }
- | I16VEC3 {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtInt16;
- $$.setVector(3);
-#endif
- }
- | I16VEC4 {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtInt16;
- $$.setVector(4);
-#endif
- }
| UVEC2 {
parseContext.fullIntegerCheck($1.loc, "unsigned integer vector");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -1565,6 +1671,60 @@
$$.basicType = EbtUint;
$$.setVector(4);
}
+ | U8VEC2 {
+ parseContext.explicitInt8Check($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint8;
+ $$.setVector(2);
+ }
+ | U8VEC3 {
+ parseContext.explicitInt8Check($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtInt8;
+ $$.setVector(3);
+ }
+ | U8VEC4 {
+ parseContext.explicitInt8Check($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint8;
+ $$.setVector(4);
+ }
+ | U16VEC2 {
+ parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint16;
+ $$.setVector(2);
+ }
+ | U16VEC3 {
+ parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint16;
+ $$.setVector(3);
+ }
+ | U16VEC4 {
+ parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint16;
+ $$.setVector(4);
+ }
+ | U32VEC2 {
+ parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint;
+ $$.setVector(2);
+ }
+ | U32VEC3 {
+ parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint;
+ $$.setVector(3);
+ }
+ | U32VEC4 {
+ parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtUint;
+ $$.setVector(4);
+ }
| U64VEC2 {
parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -1583,30 +1743,6 @@
$$.basicType = EbtUint64;
$$.setVector(4);
}
- | U16VEC2 {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtUint16;
- $$.setVector(2);
-#endif
- }
- | U16VEC3 {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtUint16;
- $$.setVector(3);
-#endif
- }
- | U16VEC4 {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- $$.basicType = EbtUint16;
- $$.setVector(4);
-#endif
- }
| MAT2 {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
@@ -1740,100 +1876,220 @@
$$.setMatrix(4, 4);
}
| F16MAT2 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(2, 2);
-#endif
}
| F16MAT3 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(3, 3);
-#endif
}
| F16MAT4 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(4, 4);
-#endif
}
| F16MAT2X2 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(2, 2);
-#endif
}
| F16MAT2X3 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(2, 3);
-#endif
}
| F16MAT2X4 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(2, 4);
-#endif
}
| F16MAT3X2 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(3, 2);
-#endif
}
| F16MAT3X3 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(3, 3);
-#endif
}
| F16MAT3X4 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(3, 4);
-#endif
}
| F16MAT4X2 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(4, 2);
-#endif
}
| F16MAT4X3 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(4, 3);
-#endif
}
| F16MAT4X4 {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(4, 4);
-#endif
+ }
+ | F32MAT2 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(2, 2);
+ }
+ | F32MAT3 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(3, 3);
+ }
+ | F32MAT4 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(4, 4);
+ }
+ | F32MAT2X2 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(2, 2);
+ }
+ | F32MAT2X3 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(2, 3);
+ }
+ | F32MAT2X4 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(2, 4);
+ }
+ | F32MAT3X2 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(3, 2);
+ }
+ | F32MAT3X3 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(3, 3);
+ }
+ | F32MAT3X4 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(3, 4);
+ }
+ | F32MAT4X2 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(4, 2);
+ }
+ | F32MAT4X3 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(4, 3);
+ }
+ | F32MAT4X4 {
+ parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtFloat;
+ $$.setMatrix(4, 4);
+ }
+ | F64MAT2 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(2, 2);
+ }
+ | F64MAT3 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(3, 3);
+ }
+ | F64MAT4 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(4, 4);
+ }
+ | F64MAT2X2 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(2, 2);
+ }
+ | F64MAT2X3 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(2, 3);
+ }
+ | F64MAT2X4 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(2, 4);
+ }
+ | F64MAT3X2 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(3, 2);
+ }
+ | F64MAT3X3 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(3, 3);
+ }
+ | F64MAT3X4 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(3, 4);
+ }
+ | F64MAT4X2 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(4, 2);
+ }
+ | F64MAT4X3 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(4, 3);
+ }
+ | F64MAT4X4 {
+ parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtDouble;
+ $$.setMatrix(4, 4);
}
| ATOMIC_UINT {
parseContext.vulkanRemoved($1.loc, "atomic counter types");
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index f6dccee..db5b28e 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.4. */
+/* A Bison parser, made by GNU Bison 3.0. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.0.4"
+#define YYBISON_VERSION "3.0"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -62,7 +62,7 @@
/* Copy the first part of user declarations. */
-#line 41 "glslang.y" /* yacc.c:339 */
+#line 42 "MachineIndependent/glslang.y" /* yacc.c:339 */
/* Based on:
@@ -88,13 +88,13 @@
using namespace glslang;
-#line 92 "glslang_tab.cpp" /* yacc.c:339 */
+#line 92 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339 */
-# ifndef YY_NULLPTR
+# ifndef YY_NULL
# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
+# define YY_NULL nullptr
# else
-# define YY_NULLPTR 0
+# define YY_NULL 0
# endif
# endif
@@ -108,8 +108,8 @@
/* In a future release of Bison, this section will be replaced
by #include "glslang_tab.cpp.h". */
-#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
@@ -125,350 +125,400 @@
{
ATTRIBUTE = 258,
VARYING = 259,
- CONST = 260,
- BOOL = 261,
- FLOAT = 262,
+ FLOAT16_T = 260,
+ FLOAT = 261,
+ FLOAT32_T = 262,
DOUBLE = 263,
- INT = 264,
- UINT = 265,
- INT64_T = 266,
- UINT64_T = 267,
- INT16_T = 268,
- UINT16_T = 269,
- FLOAT16_T = 270,
- BREAK = 271,
- CONTINUE = 272,
- DO = 273,
- ELSE = 274,
- FOR = 275,
- IF = 276,
- DISCARD = 277,
- RETURN = 278,
- SWITCH = 279,
- CASE = 280,
- DEFAULT = 281,
- SUBROUTINE = 282,
- BVEC2 = 283,
- BVEC3 = 284,
- BVEC4 = 285,
- IVEC2 = 286,
- IVEC3 = 287,
- IVEC4 = 288,
- I64VEC2 = 289,
- I64VEC3 = 290,
- I64VEC4 = 291,
- UVEC2 = 292,
- UVEC3 = 293,
- UVEC4 = 294,
- U64VEC2 = 295,
- U64VEC3 = 296,
- U64VEC4 = 297,
- VEC2 = 298,
- VEC3 = 299,
- VEC4 = 300,
- MAT2 = 301,
- MAT3 = 302,
- MAT4 = 303,
- CENTROID = 304,
- IN = 305,
- OUT = 306,
- INOUT = 307,
- UNIFORM = 308,
- PATCH = 309,
- SAMPLE = 310,
- BUFFER = 311,
- SHARED = 312,
- COHERENT = 313,
- VOLATILE = 314,
- RESTRICT = 315,
- READONLY = 316,
- WRITEONLY = 317,
- DVEC2 = 318,
- DVEC3 = 319,
- DVEC4 = 320,
- DMAT2 = 321,
- DMAT3 = 322,
- DMAT4 = 323,
- F16VEC2 = 324,
- F16VEC3 = 325,
- F16VEC4 = 326,
- F16MAT2 = 327,
- F16MAT3 = 328,
- F16MAT4 = 329,
- I16VEC2 = 330,
- I16VEC3 = 331,
- I16VEC4 = 332,
- U16VEC2 = 333,
- U16VEC3 = 334,
- U16VEC4 = 335,
- NOPERSPECTIVE = 336,
- FLAT = 337,
- SMOOTH = 338,
- LAYOUT = 339,
- __EXPLICITINTERPAMD = 340,
- MAT2X2 = 341,
- MAT2X3 = 342,
- MAT2X4 = 343,
- MAT3X2 = 344,
- MAT3X3 = 345,
- MAT3X4 = 346,
- MAT4X2 = 347,
- MAT4X3 = 348,
- MAT4X4 = 349,
- DMAT2X2 = 350,
- DMAT2X3 = 351,
- DMAT2X4 = 352,
- DMAT3X2 = 353,
- DMAT3X3 = 354,
- DMAT3X4 = 355,
- DMAT4X2 = 356,
- DMAT4X3 = 357,
- DMAT4X4 = 358,
- F16MAT2X2 = 359,
- F16MAT2X3 = 360,
- F16MAT2X4 = 361,
- F16MAT3X2 = 362,
- F16MAT3X3 = 363,
- F16MAT3X4 = 364,
- F16MAT4X2 = 365,
- F16MAT4X3 = 366,
- F16MAT4X4 = 367,
- ATOMIC_UINT = 368,
- SAMPLER1D = 369,
- SAMPLER2D = 370,
- SAMPLER3D = 371,
- SAMPLERCUBE = 372,
- SAMPLER1DSHADOW = 373,
- SAMPLER2DSHADOW = 374,
- SAMPLERCUBESHADOW = 375,
- SAMPLER1DARRAY = 376,
- SAMPLER2DARRAY = 377,
- SAMPLER1DARRAYSHADOW = 378,
- SAMPLER2DARRAYSHADOW = 379,
- ISAMPLER1D = 380,
- ISAMPLER2D = 381,
- ISAMPLER3D = 382,
- ISAMPLERCUBE = 383,
- ISAMPLER1DARRAY = 384,
- ISAMPLER2DARRAY = 385,
- USAMPLER1D = 386,
- USAMPLER2D = 387,
- USAMPLER3D = 388,
- USAMPLERCUBE = 389,
- USAMPLER1DARRAY = 390,
- USAMPLER2DARRAY = 391,
- SAMPLER2DRECT = 392,
- SAMPLER2DRECTSHADOW = 393,
- ISAMPLER2DRECT = 394,
- USAMPLER2DRECT = 395,
- SAMPLERBUFFER = 396,
- ISAMPLERBUFFER = 397,
- USAMPLERBUFFER = 398,
- SAMPLERCUBEARRAY = 399,
- SAMPLERCUBEARRAYSHADOW = 400,
- ISAMPLERCUBEARRAY = 401,
- USAMPLERCUBEARRAY = 402,
- SAMPLER2DMS = 403,
- ISAMPLER2DMS = 404,
- USAMPLER2DMS = 405,
- SAMPLER2DMSARRAY = 406,
- ISAMPLER2DMSARRAY = 407,
- USAMPLER2DMSARRAY = 408,
- SAMPLEREXTERNALOES = 409,
- F16SAMPLER1D = 410,
- F16SAMPLER2D = 411,
- F16SAMPLER3D = 412,
- F16SAMPLER2DRECT = 413,
- F16SAMPLERCUBE = 414,
- F16SAMPLER1DARRAY = 415,
- F16SAMPLER2DARRAY = 416,
- F16SAMPLERCUBEARRAY = 417,
- F16SAMPLERBUFFER = 418,
- F16SAMPLER2DMS = 419,
- F16SAMPLER2DMSARRAY = 420,
- F16SAMPLER1DSHADOW = 421,
- F16SAMPLER2DSHADOW = 422,
- F16SAMPLER1DARRAYSHADOW = 423,
- F16SAMPLER2DARRAYSHADOW = 424,
- F16SAMPLER2DRECTSHADOW = 425,
- F16SAMPLERCUBESHADOW = 426,
- F16SAMPLERCUBEARRAYSHADOW = 427,
- SAMPLER = 428,
- SAMPLERSHADOW = 429,
- TEXTURE1D = 430,
- TEXTURE2D = 431,
- TEXTURE3D = 432,
- TEXTURECUBE = 433,
- TEXTURE1DARRAY = 434,
- TEXTURE2DARRAY = 435,
- ITEXTURE1D = 436,
- ITEXTURE2D = 437,
- ITEXTURE3D = 438,
- ITEXTURECUBE = 439,
- ITEXTURE1DARRAY = 440,
- ITEXTURE2DARRAY = 441,
- UTEXTURE1D = 442,
- UTEXTURE2D = 443,
- UTEXTURE3D = 444,
- UTEXTURECUBE = 445,
- UTEXTURE1DARRAY = 446,
- UTEXTURE2DARRAY = 447,
- TEXTURE2DRECT = 448,
- ITEXTURE2DRECT = 449,
- UTEXTURE2DRECT = 450,
- TEXTUREBUFFER = 451,
- ITEXTUREBUFFER = 452,
- UTEXTUREBUFFER = 453,
- TEXTURECUBEARRAY = 454,
- ITEXTURECUBEARRAY = 455,
- UTEXTURECUBEARRAY = 456,
- TEXTURE2DMS = 457,
- ITEXTURE2DMS = 458,
- UTEXTURE2DMS = 459,
- TEXTURE2DMSARRAY = 460,
- ITEXTURE2DMSARRAY = 461,
- UTEXTURE2DMSARRAY = 462,
- F16TEXTURE1D = 463,
- F16TEXTURE2D = 464,
- F16TEXTURE3D = 465,
- F16TEXTURE2DRECT = 466,
- F16TEXTURECUBE = 467,
- F16TEXTURE1DARRAY = 468,
- F16TEXTURE2DARRAY = 469,
- F16TEXTURECUBEARRAY = 470,
- F16TEXTUREBUFFER = 471,
- F16TEXTURE2DMS = 472,
- F16TEXTURE2DMSARRAY = 473,
- SUBPASSINPUT = 474,
- SUBPASSINPUTMS = 475,
- ISUBPASSINPUT = 476,
- ISUBPASSINPUTMS = 477,
- USUBPASSINPUT = 478,
- USUBPASSINPUTMS = 479,
- F16SUBPASSINPUT = 480,
- F16SUBPASSINPUTMS = 481,
- IMAGE1D = 482,
- IIMAGE1D = 483,
- UIMAGE1D = 484,
- IMAGE2D = 485,
- IIMAGE2D = 486,
- UIMAGE2D = 487,
- IMAGE3D = 488,
- IIMAGE3D = 489,
- UIMAGE3D = 490,
- IMAGE2DRECT = 491,
- IIMAGE2DRECT = 492,
- UIMAGE2DRECT = 493,
- IMAGECUBE = 494,
- IIMAGECUBE = 495,
- UIMAGECUBE = 496,
- IMAGEBUFFER = 497,
- IIMAGEBUFFER = 498,
- UIMAGEBUFFER = 499,
- IMAGE1DARRAY = 500,
- IIMAGE1DARRAY = 501,
- UIMAGE1DARRAY = 502,
- IMAGE2DARRAY = 503,
- IIMAGE2DARRAY = 504,
- UIMAGE2DARRAY = 505,
- IMAGECUBEARRAY = 506,
- IIMAGECUBEARRAY = 507,
- UIMAGECUBEARRAY = 508,
- IMAGE2DMS = 509,
- IIMAGE2DMS = 510,
- UIMAGE2DMS = 511,
- IMAGE2DMSARRAY = 512,
- IIMAGE2DMSARRAY = 513,
- UIMAGE2DMSARRAY = 514,
- F16IMAGE1D = 515,
- F16IMAGE2D = 516,
- F16IMAGE3D = 517,
- F16IMAGE2DRECT = 518,
- F16IMAGECUBE = 519,
- F16IMAGE1DARRAY = 520,
- F16IMAGE2DARRAY = 521,
- F16IMAGECUBEARRAY = 522,
- F16IMAGEBUFFER = 523,
- F16IMAGE2DMS = 524,
- F16IMAGE2DMSARRAY = 525,
- STRUCT = 526,
- VOID = 527,
- WHILE = 528,
- IDENTIFIER = 529,
- TYPE_NAME = 530,
- FLOATCONSTANT = 531,
- DOUBLECONSTANT = 532,
- INTCONSTANT = 533,
- UINTCONSTANT = 534,
- INT64CONSTANT = 535,
- UINT64CONSTANT = 536,
- INT16CONSTANT = 537,
- UINT16CONSTANT = 538,
- BOOLCONSTANT = 539,
- FLOAT16CONSTANT = 540,
- LEFT_OP = 541,
- RIGHT_OP = 542,
- INC_OP = 543,
- DEC_OP = 544,
- LE_OP = 545,
- GE_OP = 546,
- EQ_OP = 547,
- NE_OP = 548,
- AND_OP = 549,
- OR_OP = 550,
- XOR_OP = 551,
- MUL_ASSIGN = 552,
- DIV_ASSIGN = 553,
- ADD_ASSIGN = 554,
- MOD_ASSIGN = 555,
- LEFT_ASSIGN = 556,
- RIGHT_ASSIGN = 557,
- AND_ASSIGN = 558,
- XOR_ASSIGN = 559,
- OR_ASSIGN = 560,
- SUB_ASSIGN = 561,
- LEFT_PAREN = 562,
- RIGHT_PAREN = 563,
- LEFT_BRACKET = 564,
- RIGHT_BRACKET = 565,
- LEFT_BRACE = 566,
- RIGHT_BRACE = 567,
- DOT = 568,
- COMMA = 569,
- COLON = 570,
- EQUAL = 571,
- SEMICOLON = 572,
- BANG = 573,
- DASH = 574,
- TILDE = 575,
- PLUS = 576,
- STAR = 577,
- SLASH = 578,
- PERCENT = 579,
- LEFT_ANGLE = 580,
- RIGHT_ANGLE = 581,
- VERTICAL_BAR = 582,
- CARET = 583,
- AMPERSAND = 584,
- QUESTION = 585,
- INVARIANT = 586,
- PRECISE = 587,
- HIGH_PRECISION = 588,
- MEDIUM_PRECISION = 589,
- LOW_PRECISION = 590,
- PRECISION = 591,
- PACKED = 592,
- RESOURCE = 593,
- SUPERP = 594
+ FLOAT64_T = 264,
+ CONST = 265,
+ BOOL = 266,
+ INT = 267,
+ UINT = 268,
+ INT64_T = 269,
+ UINT64_T = 270,
+ INT32_T = 271,
+ UINT32_T = 272,
+ INT16_T = 273,
+ UINT16_T = 274,
+ INT8_T = 275,
+ UINT8_T = 276,
+ BREAK = 277,
+ CONTINUE = 278,
+ DO = 279,
+ ELSE = 280,
+ FOR = 281,
+ IF = 282,
+ DISCARD = 283,
+ RETURN = 284,
+ SWITCH = 285,
+ CASE = 286,
+ DEFAULT = 287,
+ SUBROUTINE = 288,
+ BVEC2 = 289,
+ BVEC3 = 290,
+ BVEC4 = 291,
+ IVEC2 = 292,
+ IVEC3 = 293,
+ IVEC4 = 294,
+ UVEC2 = 295,
+ UVEC3 = 296,
+ UVEC4 = 297,
+ I64VEC2 = 298,
+ I64VEC3 = 299,
+ I64VEC4 = 300,
+ U64VEC2 = 301,
+ U64VEC3 = 302,
+ U64VEC4 = 303,
+ I32VEC2 = 304,
+ I32VEC3 = 305,
+ I32VEC4 = 306,
+ U32VEC2 = 307,
+ U32VEC3 = 308,
+ U32VEC4 = 309,
+ I16VEC2 = 310,
+ I16VEC3 = 311,
+ I16VEC4 = 312,
+ U16VEC2 = 313,
+ U16VEC3 = 314,
+ U16VEC4 = 315,
+ I8VEC2 = 316,
+ I8VEC3 = 317,
+ I8VEC4 = 318,
+ U8VEC2 = 319,
+ U8VEC3 = 320,
+ U8VEC4 = 321,
+ VEC2 = 322,
+ VEC3 = 323,
+ VEC4 = 324,
+ MAT2 = 325,
+ MAT3 = 326,
+ MAT4 = 327,
+ CENTROID = 328,
+ IN = 329,
+ OUT = 330,
+ INOUT = 331,
+ UNIFORM = 332,
+ PATCH = 333,
+ SAMPLE = 334,
+ BUFFER = 335,
+ SHARED = 336,
+ COHERENT = 337,
+ VOLATILE = 338,
+ RESTRICT = 339,
+ READONLY = 340,
+ WRITEONLY = 341,
+ DVEC2 = 342,
+ DVEC3 = 343,
+ DVEC4 = 344,
+ DMAT2 = 345,
+ DMAT3 = 346,
+ DMAT4 = 347,
+ F16VEC2 = 348,
+ F16VEC3 = 349,
+ F16VEC4 = 350,
+ F16MAT2 = 351,
+ F16MAT3 = 352,
+ F16MAT4 = 353,
+ F32VEC2 = 354,
+ F32VEC3 = 355,
+ F32VEC4 = 356,
+ F32MAT2 = 357,
+ F32MAT3 = 358,
+ F32MAT4 = 359,
+ F64VEC2 = 360,
+ F64VEC3 = 361,
+ F64VEC4 = 362,
+ F64MAT2 = 363,
+ F64MAT3 = 364,
+ F64MAT4 = 365,
+ NOPERSPECTIVE = 366,
+ FLAT = 367,
+ SMOOTH = 368,
+ LAYOUT = 369,
+ __EXPLICITINTERPAMD = 370,
+ MAT2X2 = 371,
+ MAT2X3 = 372,
+ MAT2X4 = 373,
+ MAT3X2 = 374,
+ MAT3X3 = 375,
+ MAT3X4 = 376,
+ MAT4X2 = 377,
+ MAT4X3 = 378,
+ MAT4X4 = 379,
+ DMAT2X2 = 380,
+ DMAT2X3 = 381,
+ DMAT2X4 = 382,
+ DMAT3X2 = 383,
+ DMAT3X3 = 384,
+ DMAT3X4 = 385,
+ DMAT4X2 = 386,
+ DMAT4X3 = 387,
+ DMAT4X4 = 388,
+ F16MAT2X2 = 389,
+ F16MAT2X3 = 390,
+ F16MAT2X4 = 391,
+ F16MAT3X2 = 392,
+ F16MAT3X3 = 393,
+ F16MAT3X4 = 394,
+ F16MAT4X2 = 395,
+ F16MAT4X3 = 396,
+ F16MAT4X4 = 397,
+ F32MAT2X2 = 398,
+ F32MAT2X3 = 399,
+ F32MAT2X4 = 400,
+ F32MAT3X2 = 401,
+ F32MAT3X3 = 402,
+ F32MAT3X4 = 403,
+ F32MAT4X2 = 404,
+ F32MAT4X3 = 405,
+ F32MAT4X4 = 406,
+ F64MAT2X2 = 407,
+ F64MAT2X3 = 408,
+ F64MAT2X4 = 409,
+ F64MAT3X2 = 410,
+ F64MAT3X3 = 411,
+ F64MAT3X4 = 412,
+ F64MAT4X2 = 413,
+ F64MAT4X3 = 414,
+ F64MAT4X4 = 415,
+ ATOMIC_UINT = 416,
+ SAMPLER1D = 417,
+ SAMPLER2D = 418,
+ SAMPLER3D = 419,
+ SAMPLERCUBE = 420,
+ SAMPLER1DSHADOW = 421,
+ SAMPLER2DSHADOW = 422,
+ SAMPLERCUBESHADOW = 423,
+ SAMPLER1DARRAY = 424,
+ SAMPLER2DARRAY = 425,
+ SAMPLER1DARRAYSHADOW = 426,
+ SAMPLER2DARRAYSHADOW = 427,
+ ISAMPLER1D = 428,
+ ISAMPLER2D = 429,
+ ISAMPLER3D = 430,
+ ISAMPLERCUBE = 431,
+ ISAMPLER1DARRAY = 432,
+ ISAMPLER2DARRAY = 433,
+ USAMPLER1D = 434,
+ USAMPLER2D = 435,
+ USAMPLER3D = 436,
+ USAMPLERCUBE = 437,
+ USAMPLER1DARRAY = 438,
+ USAMPLER2DARRAY = 439,
+ SAMPLER2DRECT = 440,
+ SAMPLER2DRECTSHADOW = 441,
+ ISAMPLER2DRECT = 442,
+ USAMPLER2DRECT = 443,
+ SAMPLERBUFFER = 444,
+ ISAMPLERBUFFER = 445,
+ USAMPLERBUFFER = 446,
+ SAMPLERCUBEARRAY = 447,
+ SAMPLERCUBEARRAYSHADOW = 448,
+ ISAMPLERCUBEARRAY = 449,
+ USAMPLERCUBEARRAY = 450,
+ SAMPLER2DMS = 451,
+ ISAMPLER2DMS = 452,
+ USAMPLER2DMS = 453,
+ SAMPLER2DMSARRAY = 454,
+ ISAMPLER2DMSARRAY = 455,
+ USAMPLER2DMSARRAY = 456,
+ SAMPLEREXTERNALOES = 457,
+ F16SAMPLER1D = 458,
+ F16SAMPLER2D = 459,
+ F16SAMPLER3D = 460,
+ F16SAMPLER2DRECT = 461,
+ F16SAMPLERCUBE = 462,
+ F16SAMPLER1DARRAY = 463,
+ F16SAMPLER2DARRAY = 464,
+ F16SAMPLERCUBEARRAY = 465,
+ F16SAMPLERBUFFER = 466,
+ F16SAMPLER2DMS = 467,
+ F16SAMPLER2DMSARRAY = 468,
+ F16SAMPLER1DSHADOW = 469,
+ F16SAMPLER2DSHADOW = 470,
+ F16SAMPLER1DARRAYSHADOW = 471,
+ F16SAMPLER2DARRAYSHADOW = 472,
+ F16SAMPLER2DRECTSHADOW = 473,
+ F16SAMPLERCUBESHADOW = 474,
+ F16SAMPLERCUBEARRAYSHADOW = 475,
+ SAMPLER = 476,
+ SAMPLERSHADOW = 477,
+ TEXTURE1D = 478,
+ TEXTURE2D = 479,
+ TEXTURE3D = 480,
+ TEXTURECUBE = 481,
+ TEXTURE1DARRAY = 482,
+ TEXTURE2DARRAY = 483,
+ ITEXTURE1D = 484,
+ ITEXTURE2D = 485,
+ ITEXTURE3D = 486,
+ ITEXTURECUBE = 487,
+ ITEXTURE1DARRAY = 488,
+ ITEXTURE2DARRAY = 489,
+ UTEXTURE1D = 490,
+ UTEXTURE2D = 491,
+ UTEXTURE3D = 492,
+ UTEXTURECUBE = 493,
+ UTEXTURE1DARRAY = 494,
+ UTEXTURE2DARRAY = 495,
+ TEXTURE2DRECT = 496,
+ ITEXTURE2DRECT = 497,
+ UTEXTURE2DRECT = 498,
+ TEXTUREBUFFER = 499,
+ ITEXTUREBUFFER = 500,
+ UTEXTUREBUFFER = 501,
+ TEXTURECUBEARRAY = 502,
+ ITEXTURECUBEARRAY = 503,
+ UTEXTURECUBEARRAY = 504,
+ TEXTURE2DMS = 505,
+ ITEXTURE2DMS = 506,
+ UTEXTURE2DMS = 507,
+ TEXTURE2DMSARRAY = 508,
+ ITEXTURE2DMSARRAY = 509,
+ UTEXTURE2DMSARRAY = 510,
+ F16TEXTURE1D = 511,
+ F16TEXTURE2D = 512,
+ F16TEXTURE3D = 513,
+ F16TEXTURE2DRECT = 514,
+ F16TEXTURECUBE = 515,
+ F16TEXTURE1DARRAY = 516,
+ F16TEXTURE2DARRAY = 517,
+ F16TEXTURECUBEARRAY = 518,
+ F16TEXTUREBUFFER = 519,
+ F16TEXTURE2DMS = 520,
+ F16TEXTURE2DMSARRAY = 521,
+ SUBPASSINPUT = 522,
+ SUBPASSINPUTMS = 523,
+ ISUBPASSINPUT = 524,
+ ISUBPASSINPUTMS = 525,
+ USUBPASSINPUT = 526,
+ USUBPASSINPUTMS = 527,
+ F16SUBPASSINPUT = 528,
+ F16SUBPASSINPUTMS = 529,
+ IMAGE1D = 530,
+ IIMAGE1D = 531,
+ UIMAGE1D = 532,
+ IMAGE2D = 533,
+ IIMAGE2D = 534,
+ UIMAGE2D = 535,
+ IMAGE3D = 536,
+ IIMAGE3D = 537,
+ UIMAGE3D = 538,
+ IMAGE2DRECT = 539,
+ IIMAGE2DRECT = 540,
+ UIMAGE2DRECT = 541,
+ IMAGECUBE = 542,
+ IIMAGECUBE = 543,
+ UIMAGECUBE = 544,
+ IMAGEBUFFER = 545,
+ IIMAGEBUFFER = 546,
+ UIMAGEBUFFER = 547,
+ IMAGE1DARRAY = 548,
+ IIMAGE1DARRAY = 549,
+ UIMAGE1DARRAY = 550,
+ IMAGE2DARRAY = 551,
+ IIMAGE2DARRAY = 552,
+ UIMAGE2DARRAY = 553,
+ IMAGECUBEARRAY = 554,
+ IIMAGECUBEARRAY = 555,
+ UIMAGECUBEARRAY = 556,
+ IMAGE2DMS = 557,
+ IIMAGE2DMS = 558,
+ UIMAGE2DMS = 559,
+ IMAGE2DMSARRAY = 560,
+ IIMAGE2DMSARRAY = 561,
+ UIMAGE2DMSARRAY = 562,
+ F16IMAGE1D = 563,
+ F16IMAGE2D = 564,
+ F16IMAGE3D = 565,
+ F16IMAGE2DRECT = 566,
+ F16IMAGECUBE = 567,
+ F16IMAGE1DARRAY = 568,
+ F16IMAGE2DARRAY = 569,
+ F16IMAGECUBEARRAY = 570,
+ F16IMAGEBUFFER = 571,
+ F16IMAGE2DMS = 572,
+ F16IMAGE2DMSARRAY = 573,
+ STRUCT = 574,
+ VOID = 575,
+ WHILE = 576,
+ IDENTIFIER = 577,
+ TYPE_NAME = 578,
+ FLOATCONSTANT = 579,
+ DOUBLECONSTANT = 580,
+ INT16CONSTANT = 581,
+ UINT16CONSTANT = 582,
+ INT32CONSTANT = 583,
+ UINT32CONSTANT = 584,
+ INTCONSTANT = 585,
+ UINTCONSTANT = 586,
+ INT64CONSTANT = 587,
+ UINT64CONSTANT = 588,
+ BOOLCONSTANT = 589,
+ FLOAT16CONSTANT = 590,
+ LEFT_OP = 591,
+ RIGHT_OP = 592,
+ INC_OP = 593,
+ DEC_OP = 594,
+ LE_OP = 595,
+ GE_OP = 596,
+ EQ_OP = 597,
+ NE_OP = 598,
+ AND_OP = 599,
+ OR_OP = 600,
+ XOR_OP = 601,
+ MUL_ASSIGN = 602,
+ DIV_ASSIGN = 603,
+ ADD_ASSIGN = 604,
+ MOD_ASSIGN = 605,
+ LEFT_ASSIGN = 606,
+ RIGHT_ASSIGN = 607,
+ AND_ASSIGN = 608,
+ XOR_ASSIGN = 609,
+ OR_ASSIGN = 610,
+ SUB_ASSIGN = 611,
+ LEFT_PAREN = 612,
+ RIGHT_PAREN = 613,
+ LEFT_BRACKET = 614,
+ RIGHT_BRACKET = 615,
+ LEFT_BRACE = 616,
+ RIGHT_BRACE = 617,
+ DOT = 618,
+ COMMA = 619,
+ COLON = 620,
+ EQUAL = 621,
+ SEMICOLON = 622,
+ BANG = 623,
+ DASH = 624,
+ TILDE = 625,
+ PLUS = 626,
+ STAR = 627,
+ SLASH = 628,
+ PERCENT = 629,
+ LEFT_ANGLE = 630,
+ RIGHT_ANGLE = 631,
+ VERTICAL_BAR = 632,
+ CARET = 633,
+ AMPERSAND = 634,
+ QUESTION = 635,
+ INVARIANT = 636,
+ PRECISE = 637,
+ HIGH_PRECISION = 638,
+ MEDIUM_PRECISION = 639,
+ LOW_PRECISION = 640,
+ PRECISION = 641,
+ PACKED = 642,
+ RESOURCE = 643,
+ SUPERP = 644
};
#endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
+typedef union YYSTYPE YYSTYPE;
union YYSTYPE
{
-#line 69 "glslang.y" /* yacc.c:355 */
+#line 70 "MachineIndependent/glslang.y" /* yacc.c:355 */
struct {
glslang::TSourceLoc loc;
@@ -503,10 +553,8 @@
};
} interm;
-#line 507 "glslang_tab.cpp" /* yacc.c:355 */
+#line 557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */
};
-
-typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
@@ -515,10 +563,10 @@
int yyparse (glslang::TParseContext* pParseContext);
-#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */
+#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */
/* Copy the second part of user declarations. */
-#line 104 "glslang.y" /* yacc.c:358 */
+#line 105 "MachineIndependent/glslang.y" /* yacc.c:358 */
/* windows only pragma */
@@ -534,7 +582,7 @@
extern int yylex(YYSTYPE*, TParseContext&);
-#line 538 "glslang_tab.cpp" /* yacc.c:358 */
+#line 586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */
#ifdef short
# undef short
@@ -591,30 +639,11 @@
# endif
#endif
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__ \
- && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
- || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-# else
-# define YY_ATTRIBUTE(Spec) /* empty */
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
- && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
-# else
-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if (! defined __GNUC__ || __GNUC__ < 2 \
+ || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
+# define __attribute__(Spec) /* empty */
# endif
#endif
@@ -774,23 +803,23 @@
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 316
+#define YYFINAL 364
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 7455
+#define YYLAST 8818
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 340
+#define YYNTOKENS 390
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 106
/* YYNRULES -- Number of rules. */
-#define YYNRULES 503
+#define YYNRULES 553
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 643
+#define YYNSTATES 693
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 594
+#define YYMAXUTOK 644
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -858,64 +887,74 @@
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 272, 272, 278, 281, 284, 288, 292, 296, 302,
- 308, 311, 315, 321, 324, 332, 335, 338, 341, 344,
- 349, 357, 364, 371, 377, 381, 388, 391, 397, 404,
- 414, 422, 427, 457, 463, 467, 471, 491, 492, 493,
- 494, 500, 501, 506, 511, 520, 521, 526, 534, 535,
- 541, 550, 551, 556, 561, 566, 574, 575, 583, 594,
- 595, 604, 605, 614, 615, 624, 625, 633, 634, 642,
- 643, 651, 652, 652, 670, 671, 686, 690, 694, 698,
- 703, 707, 711, 715, 719, 723, 727, 734, 737, 748,
- 755, 760, 765, 773, 777, 781, 785, 790, 795, 804,
- 804, 815, 819, 826, 833, 836, 843, 851, 871, 894,
- 909, 932, 943, 953, 963, 973, 982, 985, 989, 993,
- 998, 1006, 1011, 1016, 1021, 1026, 1035, 1046, 1073, 1082,
- 1089, 1096, 1103, 1115, 1121, 1124, 1131, 1135, 1139, 1147,
- 1156, 1159, 1170, 1173, 1176, 1180, 1184, 1188, 1195, 1199,
- 1211, 1225, 1230, 1236, 1242, 1249, 1255, 1260, 1265, 1270,
- 1278, 1282, 1286, 1290, 1294, 1298, 1304, 1313, 1316, 1324,
- 1328, 1337, 1342, 1350, 1354, 1364, 1368, 1372, 1377, 1384,
- 1388, 1393, 1398, 1403, 1410, 1417, 1421, 1426, 1431, 1436,
- 1442, 1448, 1454, 1462, 1470, 1478, 1483, 1488, 1493, 1498,
- 1503, 1508, 1514, 1520, 1526, 1534, 1542, 1550, 1556, 1562,
- 1568, 1574, 1580, 1586, 1594, 1602, 1610, 1615, 1620, 1625,
- 1630, 1635, 1640, 1645, 1650, 1655, 1660, 1665, 1670, 1676,
- 1682, 1688, 1694, 1700, 1706, 1712, 1718, 1724, 1730, 1736,
- 1742, 1750, 1758, 1766, 1774, 1782, 1790, 1798, 1806, 1814,
- 1822, 1830, 1838, 1843, 1848, 1853, 1858, 1863, 1868, 1873,
- 1878, 1883, 1888, 1893, 1898, 1903, 1908, 1916, 1924, 1932,
- 1940, 1948, 1956, 1964, 1972, 1980, 1988, 1996, 2004, 2012,
- 2017, 2022, 2027, 2032, 2037, 2042, 2047, 2052, 2057, 2062,
- 2067, 2072, 2077, 2082, 2087, 2092, 2100, 2108, 2113, 2118,
- 2123, 2131, 2136, 2141, 2146, 2154, 2159, 2164, 2169, 2177,
- 2182, 2187, 2192, 2197, 2202, 2210, 2215, 2223, 2228, 2236,
- 2241, 2249, 2254, 2262, 2267, 2275, 2280, 2288, 2293, 2298,
- 2303, 2308, 2313, 2318, 2323, 2328, 2333, 2338, 2343, 2348,
- 2353, 2358, 2363, 2371, 2376, 2381, 2386, 2394, 2399, 2404,
- 2409, 2417, 2422, 2427, 2432, 2440, 2445, 2450, 2455, 2463,
- 2468, 2473, 2478, 2486, 2491, 2496, 2501, 2509, 2514, 2519,
- 2524, 2532, 2537, 2542, 2547, 2555, 2560, 2565, 2570, 2578,
- 2583, 2588, 2593, 2601, 2606, 2611, 2616, 2624, 2629, 2634,
- 2639, 2647, 2652, 2657, 2662, 2670, 2675, 2680, 2685, 2693,
- 2698, 2703, 2709, 2715, 2721, 2730, 2739, 2745, 2751, 2757,
- 2763, 2768, 2784, 2789, 2794, 2802, 2802, 2813, 2813, 2823,
- 2826, 2839, 2857, 2881, 2885, 2891, 2896, 2907, 2910, 2916,
- 2925, 2928, 2934, 2938, 2939, 2945, 2946, 2947, 2948, 2949,
- 2950, 2951, 2955, 2956, 2960, 2956, 2972, 2973, 2977, 2977,
- 2984, 2984, 2998, 3001, 3009, 3017, 3028, 3029, 3033, 3036,
- 3042, 3049, 3053, 3061, 3065, 3078, 3081, 3087, 3087, 3107,
- 3110, 3116, 3128, 3140, 3143, 3149, 3149, 3164, 3164, 3180,
- 3180, 3201, 3204, 3210, 3213, 3219, 3223, 3230, 3235, 3240,
- 3247, 3250, 3259, 3263, 3272, 3275, 3278, 3286, 3286, 3308,
- 3314, 3317, 3322, 3325
+ 0, 292, 292, 298, 301, 305, 309, 312, 316, 320,
+ 324, 328, 332, 335, 339, 343, 346, 354, 357, 360,
+ 363, 366, 371, 379, 386, 393, 399, 403, 410, 413,
+ 419, 426, 436, 444, 449, 479, 485, 489, 493, 513,
+ 514, 515, 516, 522, 523, 528, 533, 542, 543, 548,
+ 556, 557, 563, 572, 573, 578, 583, 588, 596, 597,
+ 605, 616, 617, 626, 627, 636, 637, 646, 647, 655,
+ 656, 664, 665, 673, 674, 674, 692, 693, 708, 712,
+ 716, 720, 725, 729, 733, 737, 741, 745, 749, 756,
+ 759, 770, 777, 782, 787, 795, 799, 803, 807, 812,
+ 817, 826, 826, 837, 841, 848, 855, 858, 865, 873,
+ 893, 916, 931, 954, 965, 975, 985, 995, 1004, 1007,
+ 1011, 1015, 1020, 1028, 1033, 1038, 1043, 1048, 1057, 1068,
+ 1095, 1104, 1111, 1118, 1125, 1137, 1143, 1146, 1153, 1157,
+ 1161, 1169, 1178, 1181, 1192, 1195, 1198, 1202, 1206, 1210,
+ 1217, 1221, 1233, 1247, 1252, 1258, 1264, 1271, 1277, 1282,
+ 1287, 1292, 1300, 1304, 1308, 1312, 1316, 1320, 1326, 1335,
+ 1338, 1346, 1350, 1359, 1364, 1372, 1376, 1386, 1390, 1394,
+ 1399, 1404, 1409, 1414, 1418, 1423, 1428, 1433, 1438, 1443,
+ 1448, 1453, 1458, 1463, 1467, 1472, 1477, 1482, 1488, 1494,
+ 1500, 1506, 1512, 1518, 1524, 1530, 1536, 1542, 1548, 1554,
+ 1559, 1564, 1569, 1574, 1579, 1584, 1590, 1596, 1602, 1608,
+ 1614, 1620, 1626, 1632, 1638, 1644, 1650, 1656, 1662, 1668,
+ 1674, 1680, 1686, 1692, 1698, 1704, 1710, 1716, 1722, 1728,
+ 1734, 1740, 1746, 1751, 1756, 1761, 1766, 1771, 1776, 1781,
+ 1786, 1791, 1796, 1801, 1806, 1812, 1818, 1824, 1830, 1836,
+ 1842, 1848, 1854, 1860, 1866, 1872, 1878, 1884, 1890, 1896,
+ 1902, 1908, 1914, 1920, 1926, 1932, 1938, 1944, 1950, 1956,
+ 1962, 1968, 1974, 1980, 1986, 1992, 1998, 2004, 2010, 2016,
+ 2022, 2028, 2034, 2040, 2046, 2052, 2058, 2064, 2070, 2076,
+ 2082, 2088, 2094, 2099, 2104, 2109, 2114, 2119, 2124, 2129,
+ 2134, 2139, 2144, 2149, 2154, 2159, 2164, 2172, 2180, 2188,
+ 2196, 2204, 2212, 2220, 2228, 2236, 2244, 2252, 2260, 2268,
+ 2273, 2278, 2283, 2288, 2293, 2298, 2303, 2308, 2313, 2318,
+ 2323, 2328, 2333, 2338, 2343, 2348, 2356, 2364, 2369, 2374,
+ 2379, 2387, 2392, 2397, 2402, 2410, 2415, 2420, 2425, 2433,
+ 2438, 2443, 2448, 2453, 2458, 2466, 2471, 2479, 2484, 2492,
+ 2497, 2505, 2510, 2518, 2523, 2531, 2536, 2544, 2549, 2554,
+ 2559, 2564, 2569, 2574, 2579, 2584, 2589, 2594, 2599, 2604,
+ 2609, 2614, 2619, 2627, 2632, 2637, 2642, 2650, 2655, 2660,
+ 2665, 2673, 2678, 2683, 2688, 2696, 2701, 2706, 2711, 2719,
+ 2724, 2729, 2734, 2742, 2747, 2752, 2757, 2765, 2770, 2775,
+ 2780, 2788, 2793, 2798, 2803, 2811, 2816, 2821, 2826, 2834,
+ 2839, 2844, 2849, 2857, 2862, 2867, 2872, 2880, 2885, 2890,
+ 2895, 2903, 2908, 2913, 2918, 2926, 2931, 2936, 2941, 2949,
+ 2954, 2959, 2965, 2971, 2977, 2986, 2995, 3001, 3007, 3013,
+ 3019, 3024, 3040, 3045, 3050, 3058, 3058, 3069, 3069, 3079,
+ 3082, 3095, 3113, 3137, 3141, 3147, 3152, 3163, 3166, 3172,
+ 3181, 3184, 3190, 3194, 3195, 3201, 3202, 3203, 3204, 3205,
+ 3206, 3207, 3211, 3212, 3216, 3212, 3228, 3229, 3233, 3233,
+ 3240, 3240, 3254, 3257, 3265, 3273, 3284, 3285, 3289, 3292,
+ 3298, 3305, 3309, 3317, 3321, 3334, 3337, 3343, 3343, 3363,
+ 3366, 3372, 3384, 3396, 3399, 3405, 3405, 3420, 3420, 3436,
+ 3436, 3457, 3460, 3466, 3469, 3475, 3479, 3486, 3491, 3496,
+ 3503, 3506, 3515, 3519, 3528, 3531, 3534, 3542, 3542, 3564,
+ 3570, 3573, 3578, 3581
};
#endif
@@ -924,39 +963,48 @@
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "CONST", "BOOL",
- "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "INT16_T",
- "UINT16_T", "FLOAT16_T", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF",
- "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "SUBROUTINE", "BVEC2",
- "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "I64VEC2", "I64VEC3",
- "I64VEC4", "UVEC2", "UVEC3", "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4",
- "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID", "IN", "OUT",
- "INOUT", "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED", "COHERENT",
- "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", "DVEC2", "DVEC3",
- "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4",
- "F16MAT2", "F16MAT3", "F16MAT4", "I16VEC2", "I16VEC3", "I16VEC4",
- "U16VEC2", "U16VEC3", "U16VEC4", "NOPERSPECTIVE", "FLAT", "SMOOTH",
- "LAYOUT", "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2",
- "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3",
- "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3",
- "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2",
+ "$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "FLOAT16_T",
+ "FLOAT", "FLOAT32_T", "DOUBLE", "FLOAT64_T", "CONST", "BOOL", "INT",
+ "UINT", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", "INT16_T",
+ "UINT16_T", "INT8_T", "UINT8_T", "BREAK", "CONTINUE", "DO", "ELSE",
+ "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT",
+ "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4",
+ "UVEC2", "UVEC3", "UVEC4", "I64VEC2", "I64VEC3", "I64VEC4", "U64VEC2",
+ "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", "I32VEC4", "U32VEC2",
+ "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", "I16VEC4", "U16VEC2",
+ "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", "U8VEC2", "U8VEC3",
+ "U8VEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID",
+ "IN", "OUT", "INOUT", "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED",
+ "COHERENT", "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", "DVEC2",
+ "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3",
+ "F16VEC4", "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3",
+ "F32VEC4", "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3",
+ "F64VEC4", "F64MAT2", "F64MAT3", "F64MAT4", "NOPERSPECTIVE", "FLAT",
+ "SMOOTH", "LAYOUT", "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4",
+ "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2",
+ "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2",
+ "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2",
"F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4",
- "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE",
- "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW",
- "SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW",
- "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D",
- "ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D",
- "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY",
- "USAMPLER2DARRAY", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW",
- "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER",
- "USAMPLERBUFFER", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW",
- "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS",
- "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY",
- "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "F16SAMPLER1D",
- "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE",
- "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY",
- "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY",
- "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW",
+ "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3",
+ "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2",
+ "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4",
+ "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "SAMPLER1D",
+ "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW",
+ "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER1DARRAY",
+ "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW",
+ "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE",
+ "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D",
+ "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY",
+ "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT",
+ "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER",
+ "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY",
+ "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS",
+ "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY",
+ "SAMPLEREXTERNALOES", "F16SAMPLER1D", "F16SAMPLER2D", "F16SAMPLER3D",
+ "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY",
+ "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER",
+ "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW",
+ "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW",
"F16SAMPLER2DARRAYSHADOW", "F16SAMPLER2DRECTSHADOW",
"F16SAMPLERCUBESHADOW", "F16SAMPLERCUBEARRAYSHADOW", "SAMPLER",
"SAMPLERSHADOW", "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE",
@@ -984,22 +1032,22 @@
"F16IMAGE3D", "F16IMAGE2DRECT", "F16IMAGECUBE", "F16IMAGE1DARRAY",
"F16IMAGE2DARRAY", "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS",
"F16IMAGE2DMSARRAY", "STRUCT", "VOID", "WHILE", "IDENTIFIER",
- "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT", "INTCONSTANT",
- "UINTCONSTANT", "INT64CONSTANT", "UINT64CONSTANT", "INT16CONSTANT",
- "UINT16CONSTANT", "BOOLCONSTANT", "FLOAT16CONSTANT", "LEFT_OP",
- "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP",
- "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
- "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
- "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
- "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON",
- "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH",
- "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET",
- "AMPERSAND", "QUESTION", "INVARIANT", "PRECISE", "HIGH_PRECISION",
- "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE",
- "SUPERP", "$accept", "variable_identifier", "primary_expression",
- "postfix_expression", "integer_expression", "function_call",
- "function_call_or_method", "function_call_generic",
- "function_call_header_no_parameters",
+ "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT", "INT16CONSTANT",
+ "UINT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", "INTCONSTANT",
+ "UINTCONSTANT", "INT64CONSTANT", "UINT64CONSTANT", "BOOLCONSTANT",
+ "FLOAT16CONSTANT", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP",
+ "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN",
+ "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN",
+ "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN",
+ "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE",
+ "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG",
+ "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE",
+ "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION",
+ "INVARIANT", "PRECISE", "HIGH_PRECISION", "MEDIUM_PRECISION",
+ "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP", "$accept",
+ "variable_identifier", "primary_expression", "postfix_expression",
+ "integer_expression", "function_call", "function_call_or_method",
+ "function_call_generic", "function_call_header_no_parameters",
"function_call_header_with_parameters", "function_call_header",
"function_identifier", "unary_expression", "unary_operator",
"multiplicative_expression", "additive_expression", "shift_expression",
@@ -1032,7 +1080,7 @@
"for_init_statement", "conditionopt", "for_rest_statement",
"jump_statement", "translation_unit", "external_declaration",
"function_definition", "$@13", "attribute", "attribute_list",
- "single_attribute", YY_NULLPTR
+ "single_attribute", YY_NULL
};
#endif
@@ -1074,16 +1122,21 @@
555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
575, 576, 577, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592, 593, 594
+ 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
+ 605, 606, 607, 608, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622, 623, 624,
+ 625, 626, 627, 628, 629, 630, 631, 632, 633, 634,
+ 635, 636, 637, 638, 639, 640, 641, 642, 643, 644
};
# endif
-#define YYPACT_NINF -451
+#define YYPACT_NINF -495
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-451)))
+ (!!((Yystate) == (-495)))
-#define YYTABLE_NINF -449
+#define YYTABLE_NINF -499
#define yytable_value_is_error(Yytable_value) \
0
@@ -1092,71 +1145,76 @@
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- -1, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -284, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, 29, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, -451, -451, 8, -451,
- -451, -451, -451, -451, -451, -451, -451, 89, -451, 20,
- 28, 58, 60, 4552, 39, -451, 108, -451, -451, -451,
- -451, 3307, -451, -451, -451, 82, -451, -451, 636, -451,
- -451, 140, 220, 106, -451, 7180, 11, -451, -451, 114,
- -451, 4552, -451, -451, -451, 4552, 155, 160, -451, -292,
- 51, -451, -451, -451, 5141, 129, -451, -451, -451, -8,
- -451, 135, 46, -451, -451, 4552, 126, -451, 31, 970,
- -451, -451, -451, -451, 82, -291, -451, 5457, 6, -451,
- 171, -451, 62, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, -451, -451, 6405, 6405, 6405, -451, -451, -451,
- -451, -451, -451, -451, 50, -451, -451, -451, 144, 47,
- 6707, 146, -451, 6405, 109, 78, 22, 21, 127, 125,
- 128, 130, 161, 162, 12, 149, -451, 5773, -451, 186,
- 6405, -451, 220, 4552, 4552, 187, 3622, -451, -451, -451,
- 145, 147, -451, 156, 163, 150, 6089, 164, 6405, 153,
- 165, 166, 157, -451, -451, 105, -451, -451, 70, -451,
- 28, 169, -451, -451, -451, -451, 1304, -451, -451, -451,
- -451, -451, -451, -451, -451, -451, 266, 129, 5457, 42,
- 5457, -451, -451, 5457, 4552, -451, 199, -451, -451, -451,
- 56, -451, -451, 6405, 203, -451, -451, 6405, 170, -451,
- -451, -451, 6405, 6405, 6405, 6405, 6405, 6405, 6405, 6405,
- 6405, 6405, 6405, 6405, 6405, 6405, 6405, 6405, 6405, 6405,
- 6405, -451, -451, -451, 172, -451, -451, -451, -451, 3932,
- 187, 82, 75, -451, -451, -451, -451, -451, 1638, -451,
- 6405, -451, -451, 98, 6405, 113, -451, -451, 205, -451,
- 1638, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, 6405, 6405, -451, -451, -451, -451, -451, -451,
- -451, 5457, -451, 66, -451, 4242, -451, -451, 173, 167,
- -451, -451, -451, -451, -451, 109, 109, 78, 78, 22,
- 22, 22, 22, 21, 21, 127, 125, 128, 130, 161,
- 162, 6405, -451, -451, 99, 129, 187, -451, 211, 2640,
- 59, -451, 61, -451, 2974, 178, 7, -451, 1638, -451,
- -451, -451, -451, 4825, -451, -451, 122, -451, -451, 179,
- -451, -451, 2974, 176, -451, 167, 218, 4552, 185, 6405,
- 189, 205, 183, -451, -451, 6405, 6405, -451, 180, 192,
- 482, 191, 2306, -451, 193, 190, 1972, 195, -451, -451,
- -451, -451, 63, 6405, 1972, 176, -451, -451, 1638, 5457,
- -451, -451, -451, -451, 188, 167, -451, -451, 1638, 196,
- -451, -451, -451
+ -1, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -328, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -12, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, 17, -495, -495, -495,
+ -495, -495, -495, -495, -495, 80, -495, 20, 7, 39,
+ 52, 5289, -17, -495, 99, -495, -495, -495, -495, 3757,
+ -495, -495, -495, 73, -495, -495, 686, -495, -495, 119,
+ 250, 105, -495, 8210, 3, -495, -495, 110, -495, 5289,
+ -495, -495, -495, 5289, 161, 166, -495, -335, 35, -495,
+ -495, -495, 6008, 78, -495, -495, -495, 64, -495, 129,
+ 76, -495, -495, 5289, 130, -495, 56, 1070, -495, -495,
+ -495, -495, 73, -336, -495, 6375, 59, -495, 176, -495,
+ -3, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, -495, -495, 7476, 7476, 7476, -495, -495, -495,
+ -495, -495, -495, -495, 29, -495, -495, -495, 142, 91,
+ 7843, 144, -495, 7476, 95, 90, 138, 54, 135, 123,
+ 125, 127, 162, 159, 10, 147, -495, 6742, -495, 186,
+ 7476, -495, 250, 5289, 5289, 187, 4140, -495, -495, -495,
+ 143, 145, -495, 154, 156, 150, 7109, 157, 7476, 153,
+ 163, 160, 164, -495, -495, 58, -495, -495, 12, -495,
+ 7, 165, -495, -495, -495, -495, 1454, -495, -495, -495,
+ -495, -495, -495, -495, -495, -495, 300, 78, 6375, 60,
+ 6375, -495, -495, 6375, 5289, -495, 199, -495, -495, -495,
+ 93, -495, -495, 7476, 201, -495, -495, 7476, 167, -495,
+ -495, -495, 7476, 7476, 7476, 7476, 7476, 7476, 7476, 7476,
+ 7476, 7476, 7476, 7476, 7476, 7476, 7476, 7476, 7476, 7476,
+ 7476, -495, -495, -495, 168, -495, -495, -495, -495, 4523,
+ 187, 73, 34, -495, -495, -495, -495, -495, 1838, -495,
+ 7476, -495, -495, 53, 7476, 115, -495, -495, 205, -495,
+ 1838, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, 7476, 7476, -495, -495, -495, -495, -495, -495,
+ -495, 6375, -495, 108, -495, 4906, -495, -495, 169, 170,
+ -495, -495, -495, -495, -495, 95, 95, 90, 90, 138,
+ 138, 138, 138, 54, 54, 135, 123, 125, 127, 162,
+ 159, 7476, -495, -495, 75, 78, 187, -495, 210, 2990,
+ 94, -495, 96, -495, 3374, 175, 5, -495, 1838, -495,
+ -495, -495, -495, 5641, -495, -495, 117, -495, -495, 178,
+ -495, -495, 3374, 172, -495, 170, 214, 5289, 179, 7476,
+ 180, 205, 181, -495, -495, 7476, 7476, -495, 171, 184,
+ 522, 188, 2606, -495, 189, 185, 2222, 194, -495, -495,
+ -495, -495, 98, 7476, 2222, 172, -495, -495, 1838, 6375,
+ -495, -495, -495, -495, 190, 170, -495, -495, 1838, 191,
+ -495, -495, -495
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1164,103 +1222,108 @@
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 0, 149, 150, 148, 185, 176, 177, 179, 180, 181,
- 182, 183, 184, 178, 165, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 207, 208, 209, 210, 211, 212,
- 186, 187, 188, 216, 217, 218, 154, 152, 153, 151,
- 157, 155, 156, 158, 159, 160, 161, 162, 163, 164,
- 189, 190, 191, 228, 229, 230, 192, 193, 194, 240,
- 241, 242, 204, 205, 206, 213, 214, 215, 131, 130,
- 129, 0, 132, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 279, 280, 281, 282, 283, 284, 286, 287,
- 288, 289, 290, 291, 293, 294, 297, 298, 299, 301,
- 302, 264, 265, 285, 292, 303, 305, 306, 307, 309,
- 310, 401, 266, 267, 268, 295, 269, 273, 274, 277,
- 300, 304, 308, 270, 271, 275, 276, 296, 272, 278,
- 311, 312, 313, 315, 317, 319, 321, 323, 327, 328,
- 329, 330, 331, 332, 334, 335, 336, 337, 338, 339,
- 341, 343, 344, 345, 347, 348, 325, 333, 340, 349,
- 351, 352, 353, 355, 356, 314, 316, 318, 342, 320,
- 322, 324, 326, 346, 350, 354, 402, 403, 406, 407,
- 408, 409, 404, 405, 357, 359, 360, 361, 363, 364,
- 365, 367, 368, 369, 371, 372, 373, 375, 376, 377,
- 379, 380, 381, 383, 384, 385, 387, 388, 389, 391,
- 392, 393, 395, 396, 397, 399, 400, 358, 362, 366,
- 370, 374, 382, 386, 390, 378, 394, 398, 0, 175,
- 411, 496, 128, 139, 412, 413, 414, 0, 495, 0,
- 497, 0, 105, 104, 0, 116, 121, 146, 145, 143,
- 147, 0, 140, 142, 126, 169, 144, 410, 0, 492,
- 494, 0, 0, 0, 417, 0, 0, 93, 90, 0,
- 103, 0, 112, 106, 114, 0, 115, 0, 91, 122,
- 0, 96, 141, 127, 0, 170, 1, 493, 167, 0,
- 138, 136, 0, 134, 415, 0, 0, 94, 0, 0,
- 498, 107, 111, 113, 109, 117, 108, 0, 123, 99,
- 0, 97, 0, 2, 10, 11, 4, 5, 6, 7,
- 8, 9, 13, 12, 0, 0, 0, 171, 39, 38,
- 40, 37, 3, 15, 33, 17, 22, 23, 0, 0,
- 27, 0, 41, 0, 45, 48, 51, 56, 59, 61,
- 63, 65, 67, 69, 71, 0, 31, 0, 166, 0,
- 0, 133, 0, 0, 0, 0, 0, 419, 92, 95,
- 0, 0, 477, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 443, 452, 456, 41, 74, 87, 0, 432,
- 0, 126, 435, 454, 434, 433, 0, 436, 437, 458,
- 438, 465, 439, 440, 473, 441, 0, 110, 0, 118,
- 0, 427, 125, 0, 0, 101, 0, 98, 34, 35,
- 0, 19, 20, 0, 0, 25, 24, 0, 175, 28,
- 30, 36, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 151, 152, 180, 178, 181, 179, 182, 150, 193,
+ 183, 184, 191, 192, 189, 190, 187, 188, 185, 186,
+ 167, 209, 210, 211, 212, 213, 214, 227, 228, 229,
+ 224, 225, 226, 239, 240, 241, 221, 222, 223, 236,
+ 237, 238, 218, 219, 220, 233, 234, 235, 215, 216,
+ 217, 230, 231, 232, 194, 195, 196, 242, 243, 244,
+ 156, 154, 155, 153, 159, 157, 158, 160, 161, 162,
+ 163, 164, 165, 166, 197, 198, 199, 254, 255, 256,
+ 200, 201, 202, 266, 267, 268, 203, 204, 205, 278,
+ 279, 280, 206, 207, 208, 290, 291, 292, 133, 132,
+ 131, 0, 134, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 329, 330, 331, 332, 333, 334, 336, 337, 338, 339,
+ 340, 341, 343, 344, 347, 348, 349, 351, 352, 314,
+ 315, 335, 342, 353, 355, 356, 357, 359, 360, 451,
+ 316, 317, 318, 345, 319, 323, 324, 327, 350, 354,
+ 358, 320, 321, 325, 326, 346, 322, 328, 361, 362,
+ 363, 365, 367, 369, 371, 373, 377, 378, 379, 380,
+ 381, 382, 384, 385, 386, 387, 388, 389, 391, 393,
+ 394, 395, 397, 398, 375, 383, 390, 399, 401, 402,
+ 403, 405, 406, 364, 366, 368, 392, 370, 372, 374,
+ 376, 396, 400, 404, 452, 453, 456, 457, 458, 459,
+ 454, 455, 407, 409, 410, 411, 413, 414, 415, 417,
+ 418, 419, 421, 422, 423, 425, 426, 427, 429, 430,
+ 431, 433, 434, 435, 437, 438, 439, 441, 442, 443,
+ 445, 446, 447, 449, 450, 408, 412, 416, 420, 424,
+ 432, 436, 440, 428, 444, 448, 0, 177, 461, 546,
+ 130, 141, 462, 463, 464, 0, 545, 0, 547, 0,
+ 107, 106, 0, 118, 123, 148, 147, 145, 149, 0,
+ 142, 144, 128, 171, 146, 460, 0, 542, 544, 0,
+ 0, 0, 467, 0, 0, 95, 92, 0, 105, 0,
+ 114, 108, 116, 0, 117, 0, 93, 124, 0, 98,
+ 143, 129, 0, 172, 1, 543, 169, 0, 140, 138,
+ 0, 136, 465, 0, 0, 96, 0, 0, 548, 109,
+ 113, 115, 111, 119, 110, 0, 125, 101, 0, 99,
+ 0, 2, 12, 13, 10, 11, 4, 5, 6, 7,
+ 8, 9, 15, 14, 0, 0, 0, 173, 41, 40,
+ 42, 39, 3, 17, 35, 19, 24, 25, 0, 0,
+ 29, 0, 43, 0, 47, 50, 53, 58, 61, 63,
+ 65, 67, 69, 71, 73, 0, 33, 0, 168, 0,
+ 0, 135, 0, 0, 0, 0, 0, 469, 94, 97,
+ 0, 0, 527, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 493, 502, 506, 43, 76, 89, 0, 482,
+ 0, 128, 485, 504, 484, 483, 0, 486, 487, 508,
+ 488, 515, 489, 490, 523, 491, 0, 112, 0, 120,
+ 0, 477, 127, 0, 0, 103, 0, 100, 36, 37,
+ 0, 21, 22, 0, 0, 27, 26, 0, 177, 30,
+ 32, 38, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 72, 172, 173, 0, 168, 89, 137, 135, 0,
- 0, 425, 0, 423, 418, 420, 488, 487, 0, 479,
- 0, 491, 489, 0, 0, 0, 472, 475, 0, 442,
- 0, 77, 78, 80, 79, 82, 83, 84, 85, 86,
- 81, 76, 0, 0, 457, 453, 455, 459, 466, 474,
- 120, 0, 430, 0, 124, 0, 102, 14, 0, 21,
- 18, 29, 42, 43, 44, 47, 46, 49, 50, 54,
- 55, 52, 53, 57, 58, 60, 62, 64, 66, 68,
- 70, 0, 174, 416, 0, 426, 0, 421, 0, 0,
- 0, 490, 0, 471, 0, 502, 0, 500, 444, 75,
- 88, 119, 428, 0, 100, 16, 0, 422, 424, 0,
- 482, 481, 484, 450, 467, 463, 0, 0, 0, 0,
- 0, 0, 0, 429, 431, 0, 0, 483, 0, 0,
- 462, 0, 0, 460, 0, 0, 0, 0, 499, 501,
- 445, 73, 0, 485, 0, 450, 449, 451, 469, 0,
- 447, 476, 446, 503, 0, 486, 480, 461, 470, 0,
- 464, 478, 468
+ 0, 74, 174, 175, 0, 170, 91, 139, 137, 0,
+ 0, 475, 0, 473, 468, 470, 538, 537, 0, 529,
+ 0, 541, 539, 0, 0, 0, 522, 525, 0, 492,
+ 0, 79, 80, 82, 81, 84, 85, 86, 87, 88,
+ 83, 78, 0, 0, 507, 503, 505, 509, 516, 524,
+ 122, 0, 480, 0, 126, 0, 104, 16, 0, 23,
+ 20, 31, 44, 45, 46, 49, 48, 51, 52, 56,
+ 57, 54, 55, 59, 60, 62, 64, 66, 68, 70,
+ 72, 0, 176, 466, 0, 476, 0, 471, 0, 0,
+ 0, 540, 0, 521, 0, 552, 0, 550, 494, 77,
+ 90, 121, 478, 0, 102, 18, 0, 472, 474, 0,
+ 532, 531, 534, 500, 517, 513, 0, 0, 0, 0,
+ 0, 0, 0, 479, 481, 0, 0, 533, 0, 0,
+ 512, 0, 0, 510, 0, 0, 0, 0, 549, 551,
+ 495, 75, 0, 535, 0, 500, 499, 501, 519, 0,
+ 497, 526, 496, 553, 0, 536, 530, 511, 520, 0,
+ 514, 528, 518
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -451, -451, -451, -451, -451, -451, -451, -451, -451, -451,
- -451, -451, 6666, -451, -25, -20, -450, -24, 32, 35,
- 36, 34, 37, 38, -451, -38, -451, -57, -451, -65,
- -85, 1, -451, -451, -451, 16, -451, -451, -451, 210,
- 216, 214, -451, -451, -282, -451, -451, -451, -451, 131,
- -451, 2, -9, -451, -451, 0, -11, -451, 253, -451,
- -451, -451, -100, -117, 40, -45, -141, -451, -47, -148,
- -298, -87, -451, -451, -99, -97, -451, -451, 230, -227,
- -37, -451, 95, -451, -59, -451, 100, -451, -451, -451,
- -451, 102, -451, -451, -451, -451, -451, -451, -451, -451,
- 246, -451, -451, -451, -451, -61
+ -495, -495, -495, -495, -495, -495, -495, -495, -495, -495,
+ -495, -495, 8169, -495, -29, -27, -494, -31, 30, 28,
+ 31, 33, 27, 32, -495, -37, -495, -57, -495, -65,
+ -86, 1, -495, -495, -495, 21, -495, -495, -495, 211,
+ 216, 213, -495, -495, -284, -495, -495, -495, -495, 126,
+ -495, 2, -9, -495, -495, 0, -11, -495, 252, -495,
+ -495, -495, -105, -112, 38, -47, -134, -495, -49, -144,
+ -314, -90, -495, -495, -101, -100, -495, -495, 227, -225,
+ -40, -495, 97, -495, -62, -495, 100, -495, -495, -495,
+ -495, 102, -495, -495, -495, -495, -495, -495, -495, -495,
+ 245, -495, -495, -495, -495, -69
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 362, 363, 364, 538, 365, 366, 367, 368, 369,
- 370, 371, 415, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 416, 561, 417, 522, 418,
- 487, 419, 269, 444, 342, 420, 271, 272, 273, 302,
- 303, 304, 274, 275, 276, 277, 278, 279, 322, 323,
- 280, 281, 282, 283, 319, 386, 315, 285, 286, 287,
- 393, 325, 396, 397, 492, 493, 442, 533, 422, 423,
- 424, 425, 510, 602, 631, 610, 611, 612, 632, 426,
- 427, 428, 429, 613, 598, 430, 431, 614, 639, 432,
- 433, 434, 574, 498, 569, 592, 608, 609, 435, 288,
- 289, 290, 299, 436, 576, 577
+ -1, 412, 413, 414, 588, 415, 416, 417, 418, 419,
+ 420, 421, 465, 423, 424, 425, 426, 427, 428, 429,
+ 430, 431, 432, 433, 434, 466, 611, 467, 572, 468,
+ 537, 469, 317, 494, 390, 470, 319, 320, 321, 350,
+ 351, 352, 322, 323, 324, 325, 326, 327, 370, 371,
+ 328, 329, 330, 331, 367, 436, 363, 333, 334, 335,
+ 443, 373, 446, 447, 542, 543, 492, 583, 472, 473,
+ 474, 475, 560, 652, 681, 660, 661, 662, 682, 476,
+ 477, 478, 479, 663, 648, 480, 481, 664, 689, 482,
+ 483, 484, 624, 548, 619, 642, 658, 659, 485, 336,
+ 337, 338, 347, 486, 626, 627
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -1268,10 +1331,10 @@
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 284, 268, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 336, 270, 314, 314, 549,
- 550, 551, 552, 291, 337, 438, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 332, 316, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 318, 384, 362, 362, 599, 600, 601, 602, 339,
+ 488, 385, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
@@ -1295,46 +1358,51 @@
228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 312, 306, 260, 305, 385, 320, 526, 495,
- 441, 313, 293, 578, 402, 328, 403, 404, 284, 268,
- 407, 450, 596, 489, 296, 326, 312, 530, 338, 532,
- 388, 306, 534, 305, 270, 306, 389, 480, 467, 468,
- 596, 469, 470, 459, 627, 387, 261, 600, 630, 294,
- 314, 601, 443, 437, 439, 395, 630, 394, 327, 421,
- 262, 263, 264, 265, 266, 267, 292, 297, 451, 452,
- 387, 503, 481, 505, 535, 298, 471, 472, 399, 484,
- 568, 387, 486, 307, 391, 456, 308, -32, 531, 453,
- 392, 457, 339, 454, 537, 340, 300, 593, 341, 594,
- 523, 634, 495, 523, 301, 523, 446, 523, 582, 447,
- 583, 441, 309, 441, 523, 312, 441, 524, 539, 566,
- 581, 314, 567, 395, 490, 394, 395, 465, 394, 466,
- 541, 638, 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 523, 566, 318, 571, 587, 324, 495, 473,
- 474, 521, 264, 265, 266, 329, 421, 523, 573, 334,
- 526, 462, 463, 464, 335, 570, 523, 605, 387, 572,
- 545, 546, 604, 398, 395, 445, 394, 547, 548, 553,
- 554, 390, 455, 460, 475, 478, 476, 477, 479, 482,
- 485, 491, 496, 499, 497, 579, 580, 501, 506, 509,
- 500, 504, 507, 536, 441, 508, -31, 540, -26, 575,
- 565, 523, 562, 585, 589, 599, 606, -448, 640, 395,
- 526, 394, 615, 616, 321, 620, 586, 623, 421, 618,
- 624, 625, 412, 633, 628, 641, 629, 555, 642, 595,
- 421, 556, 558, 557, 617, 332, 559, 331, 560, 333,
- 295, 588, 590, 488, 626, 636, 441, 595, 637, 330,
- 564, 527, 591, 607, 317, 395, 528, 394, 529, 410,
- 619, 622, 0, 0, 0, 0, 0, 0, 621, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 635, 0,
- 0, 486, 0, 0, 0, 0, 0, 0, 0, 421,
- 0, 0, 441, 0, 421, 0, 597, 0, 421, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 312, 0,
- 0, 0, 421, 0, 597, 0, 0, 313, 0, 0,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 360, 354, 308, 353, 452, 435, 453, 454, 491, 361,
+ 457, 368, 576, 376, 545, 628, 332, 316, 539, 341,
+ 646, 500, 344, 374, 360, 340, 386, 355, 677, 354,
+ 356, 353, 680, 354, 580, 530, 582, 318, 646, 584,
+ 680, 496, 362, 509, 497, 650, 309, 501, 502, 651,
+ 375, 487, 489, 445, 346, 444, 573, 471, 342, 574,
+ 310, 311, 312, 313, 314, 315, -34, 345, 503, 585,
+ 531, 553, 504, 555, 519, 520, 387, 348, 616, 388,
+ 534, 617, 389, 536, 618, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 437, 349, 573, 437, 437,
+ 621, 357, 438, 449, 571, 493, 581, 545, 439, 521,
+ 522, 491, 362, 491, 441, 360, 491, 437, 589, 616,
+ 442, 366, 637, 445, 540, 444, 445, 631, 444, 506,
+ 591, 587, 643, 688, 644, 507, 684, 573, 573, 515,
+ 573, 516, 573, 312, 313, 314, 372, 512, 513, 514,
+ 632, 377, 633, 545, 517, 518, 471, 523, 524, 573,
+ 623, 573, 655, 382, 576, 620, 595, 596, 383, 622,
+ 597, 598, 603, 604, 445, 440, 444, 448, 495, 654,
+ 505, 510, 525, 526, 527, 529, 528, 532, 535, 541,
+ 546, 549, 547, 550, 554, 629, 630, 551, 556, 558,
+ 557, 586, -33, 590, 491, -28, 559, 625, 612, 635,
+ 615, 639, 649, -498, 573, 656, 665, 666, 673, 445,
+ 668, 444, 674, 670, 576, 690, 636, 675, 471, 462,
+ 678, 679, 683, 692, 606, 605, 609, 691, 607, 645,
+ 471, 608, 610, 667, 380, 379, 381, 343, 538, 638,
+ 640, 676, 369, 686, 378, 687, 491, 645, 614, 641,
+ 657, 365, 669, 577, 0, 445, 578, 444, 579, 0,
+ 0, 672, 0, 0, 0, 0, 0, 0, 671, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 685, 0,
+ 0, 0, 536, 0, 0, 0, 0, 0, 0, 471,
+ 0, 460, 491, 0, 471, 0, 647, 0, 471, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 360, 0,
+ 0, 0, 471, 0, 647, 0, 0, 361, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 421, 0, 0, 0, 421, 0, 0, 0,
- 0, 0, 0, 0, 421, 0, 0, 0, 421, 0,
- 0, 0, 0, 0, 0, 0, 316, 0, 421, 1,
+ 0, 0, 471, 0, 0, 0, 471, 0, 0, 0,
+ 0, 0, 0, 0, 471, 0, 0, 0, 471, 0,
+ 0, 0, 0, 0, 0, 0, 364, 0, 471, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 14, 15, 16, 17, 18, 19, 20,
+ 12, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
@@ -1358,765 +1426,290 @@
221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 0,
- 0, 260, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 261, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 262, 263, 264,
- 265, 266, 267, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 400, 401, 402, 0,
- 403, 404, 405, 406, 407, 408, 409, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 410, 343, 260, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 0, 0, 354, 355,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 356, 0, 411,
- 0, 412, 413, 0, 0, 0, 0, 414, 358, 359,
- 360, 361, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 262, 263, 264, 265, 266, 267, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 400, 401, 402, 0, 403, 404, 405, 406, 407, 408,
- 409, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 410, 343, 260,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 0, 0, 354, 355, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 356, 0, 411, 0, 412, 525, 0, 0, 0,
- 0, 414, 358, 359, 360, 361, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 262, 263, 264, 265, 266,
- 267, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 400, 401, 402, 0, 403, 404,
- 405, 406, 407, 408, 409, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 410, 343, 260, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 0, 0, 354, 355, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 356, 0, 411, 0, 412,
- 0, 0, 0, 0, 0, 414, 358, 359, 360, 361,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 262,
- 263, 264, 265, 266, 267, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 400, 401,
- 402, 0, 403, 404, 405, 406, 407, 408, 409, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 410, 343, 260, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353, 0, 0,
- 354, 355, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 356,
- 0, 411, 0, 329, 0, 0, 0, 0, 0, 414,
- 358, 359, 360, 361, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 262, 263, 264, 265, 266, 267, 1,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 400, 401, 402, 0, 403, 404, 405, 406,
- 407, 408, 409, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 410,
- 343, 260, 344, 345, 346, 347, 348, 349, 350, 351,
- 352, 353, 0, 0, 354, 355, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 356, 0, 411, 0, 0, 0, 0,
- 0, 0, 0, 414, 358, 359, 360, 361, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 262, 263, 264,
- 265, 266, 267, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 0, 343, 260, 344, 345, 346, 347,
- 348, 349, 350, 351, 352, 353, 0, 0, 354, 355,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 356, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 414, 358, 359,
- 360, 361, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 262, 263, 264, 265, 266, 267, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 0, 343, 260,
- 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
- 0, 0, 354, 355, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 356, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 358, 359, 360, 361, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 262, 263, 264, 265, 266,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 0, 310, 260, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 311, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 262, 263,
- 264, 265, 266, 0, 0, 0, 0, 0, 0, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 0, 0, 260, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 494, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 0, 0,
- 0, 0, 0, 262, 263, 264, 265, 266, 0, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 0, 0, 260, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 563, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 0, 0,
- 0, 0, 0, 262, 263, 264, 265, 266, 0, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 0, 0, 260, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 584, 1, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 0, 0,
- 0, 0, 0, 262, 263, 264, 265, 266, 0, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 0, 0, 260, 0, 0,
- 0, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 262, 263, 264, 265, 266, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 0, 0, 0, 0,
- 0, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 0, 343,
- 260, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 0, 0, 354, 355, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 356, 0, 0, 0, 440, 603, 0, 0,
- 0, 0, 0, 358, 359, 360, 361, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 0, 0, 0, 0, 0, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 0, 343, 260, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 0, 0, 354,
- 355, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 356, 0,
- 0, 357, 0, 0, 0, 0, 0, 0, 0, 358,
- 359, 360, 361, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 0, 0,
- 0, 0, 0, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 0, 343, 260, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 0, 0, 354, 355, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 356, 0, 0, 0, 440, 0,
- 0, 0, 0, 0, 0, 358, 359, 360, 361, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 0, 0, 0, 0, 0, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 0, 343, 260, 344,
- 345, 346, 347, 348, 349, 350, 351, 352, 353, 0,
- 0, 354, 355, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 356, 0, 0, 483, 0, 0, 0, 0, 0, 0,
- 0, 358, 359, 360, 361, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 0, 0, 0, 0, 0, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 0, 343, 260, 344, 345, 346, 347, 348,
- 349, 350, 351, 352, 353, 0, 0, 354, 355, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 356, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 502, 358, 359, 360,
- 361, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 0, 0, 0, 0,
- 0, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 0, 343,
- 260, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 0, 0, 354, 355, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 356, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 358, 359, 360, 361, 0, 0, 0,
- 0, 0, 0, 0, 0, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 0, 0,
- 0, 0, 0, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 458,
- 372, 343, 260, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 0, 0, 354, 355, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 356, 0, 0, 0, 0, 0,
- 448, 449, 0, 0, 0, 358, 359, 360, 361, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 461,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 372, 0, 0, 372, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 542, 543,
- 544, 372, 372, 372, 372, 372, 372, 372, 372, 372,
- 372, 372, 372, 372, 372, 372, 372, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 0, 0, 0, 0, 372, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 0, 0, 260
-};
-
-static const yytype_int16 yycheck[] =
-{
- 0, 0, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 307, 0, 309, 309, 469,
- 470, 471, 472, 307, 316, 316, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 281, 273, 275, 273, 314, 57, 426, 396,
- 337, 281, 274, 510, 18, 296, 20, 21, 288, 288,
- 24, 356, 574, 393, 274, 295, 305, 438, 309, 440,
- 308, 301, 443, 301, 288, 305, 314, 295, 286, 287,
- 592, 290, 291, 370, 612, 309, 317, 310, 616, 311,
- 309, 314, 316, 334, 335, 325, 624, 325, 317, 329,
- 331, 332, 333, 334, 335, 336, 307, 317, 288, 289,
- 309, 406, 330, 408, 444, 317, 325, 326, 317, 387,
- 498, 309, 390, 314, 308, 308, 317, 307, 316, 309,
- 314, 314, 311, 313, 308, 314, 308, 308, 317, 308,
- 314, 308, 489, 314, 314, 314, 314, 314, 312, 317,
- 314, 438, 274, 440, 314, 394, 443, 317, 453, 314,
- 531, 309, 317, 393, 394, 393, 396, 319, 396, 321,
- 457, 628, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 314, 314, 274, 317, 317, 311, 535, 292,
- 293, 316, 333, 334, 335, 311, 426, 314, 315, 274,
- 578, 322, 323, 324, 274, 500, 314, 315, 309, 504,
- 465, 466, 583, 317, 444, 274, 444, 467, 468, 473,
- 474, 316, 308, 307, 329, 294, 328, 327, 296, 310,
- 274, 274, 317, 307, 317, 522, 523, 317, 315, 312,
- 307, 307, 307, 274, 531, 309, 307, 274, 308, 274,
- 491, 314, 310, 310, 273, 307, 307, 311, 629, 489,
- 638, 489, 274, 308, 274, 312, 561, 317, 498, 310,
- 308, 19, 311, 308, 311, 317, 316, 475, 312, 574,
- 510, 476, 478, 477, 599, 305, 479, 301, 480, 305,
- 267, 566, 569, 392, 611, 624, 583, 592, 625, 299,
- 490, 436, 569, 592, 288, 535, 436, 535, 436, 273,
- 601, 606, -1, -1, -1, -1, -1, -1, 605, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 623, -1,
- -1, 599, -1, -1, -1, -1, -1, -1, -1, 569,
- -1, -1, 629, -1, 574, -1, 574, -1, 578, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 597, -1,
- -1, -1, 592, -1, 592, -1, -1, 597, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 612, -1, -1, -1, 616, -1, -1, -1,
- -1, -1, -1, -1, 624, -1, -1, -1, 628, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, 638, 3,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 0, 0, 308,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 309, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 310, 311, 312,
+ 313, 314, 315, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 450, 451, 452, 0, 453, 454, 455, 456,
+ 457, 458, 459, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 460, 391, 308, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 0, 0, 404, 405,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 406, 0, 461,
+ 0, 462, 463, 0, 0, 0, 0, 464, 408, 409,
+ 410, 411, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 310, 311, 312, 313, 314, 315, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, 275, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 317, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, -1,
+ 14, 15, 16, 17, 18, 19, 450, 451, 452, 0,
+ 453, 454, 455, 456, 457, 458, 459, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 460, 391, 308, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 0, 0, 404, 405, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 406, 0, 461, 0, 462, 575, 0, 0, 0,
+ 0, 464, 408, 409, 410, 411, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 310, 311, 312, 313, 314,
+ 315, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 450, 451, 452, 0, 453, 454, 455, 456, 457, 458,
+ 459, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 460,
+ 391, 308, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 0, 0, 404, 405, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 406, 0, 461, 0, 462,
+ 0, 0, 0, 0, 0, 464, 408, 409, 410, 411,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 310,
+ 311, 312, 313, 314, 315, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 450, 451, 452, 0, 453, 454,
+ 455, 456, 457, 458, 459, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 460, 391, 308, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 0, 0,
+ 404, 405, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 406,
+ 0, 461, 0, 377, 0, 0, 0, 0, 0, 464,
+ 408, 409, 410, 411, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 310, 311, 312, 313, 314, 315, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 450, 451,
+ 452, 0, 453, 454, 455, 456, 457, 458, 459, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 460, 391, 308,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 0, 0, 404, 405, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 406, 0, 461, 0, 0, 0, 0,
+ 0, 0, 0, 464, 408, 409, 410, 411, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 310, 311, 312,
+ 313, 314, 315, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 0, 391, 308, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 402, 403, 0, 0, 404, 405,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 406, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 464, 408, 409,
+ 410, 411, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 310, 311, 312, 313, 314, 315, 1, 2, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 0, 391, 308, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
+ 0, 0, 404, 405, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 406, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 408, 409, 410, 411, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 310, 311, 312, 313, 314,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
@@ -2143,114 +1736,57 @@
250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, -1, -1, 288, 289,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 307, -1, 309,
- -1, 311, 312, -1, -1, -1, -1, 317, 318, 319,
- 320, 321, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, -1, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- -1, -1, 288, 289, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 307, -1, 309, -1, 311, 312, -1, -1, -1,
- -1, 317, 318, 319, 320, 321, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 336, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, -1, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, -1, -1, 288, 289, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 307, -1, 309, -1, 311,
- -1, -1, -1, -1, -1, 317, 318, 319, 320, 321,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 331,
- 332, 333, 334, 335, 336, 3, 4, 5, 6, 7,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 0, 358,
+ 308, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 359, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 310, 311,
+ 312, 313, 314, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, -1, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, -1, -1,
- 288, 289, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 307,
- -1, 309, -1, 311, -1, -1, -1, -1, -1, 317,
- 318, 319, 320, 321, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 336, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, -1, 20, 21, 22, 23,
+ 18, 19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 0, 0, 308, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 544, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 310, 311, 312, 313, 314, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
@@ -2277,14 +1813,520 @@
254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, -1, -1, 288, 289, -1, -1, -1, -1,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 0, 0, 308, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 613, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 310, 311, 312, 313, 314, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 0, 0, 308,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 634, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 310, 311, 312,
+ 313, 314, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 0, 0, 308, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 4, 5, 6,
+ 7, 0, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 0, 0, 0, 0, 0, 0, 0,
+ 310, 311, 312, 313, 314, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 0, 0, 0, 0, 0, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 0, 391, 308, 392, 393, 394, 395, 396,
+ 397, 398, 399, 400, 401, 402, 403, 0, 0, 404,
+ 405, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 406, 0,
+ 0, 0, 490, 653, 0, 0, 0, 0, 0, 408,
+ 409, 410, 411, 3, 4, 5, 6, 7, 0, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 0,
+ 0, 0, 0, 0, 103, 104, 105, 106, 107, 108,
+ 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 0,
+ 391, 308, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 0, 0, 404, 405, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 406, 0, 0, 407, 0,
+ 0, 0, 0, 0, 0, 0, 408, 409, 410, 411,
+ 3, 4, 5, 6, 7, 0, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 0, 0, 0, 0,
+ 0, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 0, 391, 308, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 0, 0, 404, 405, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 406, 0, 0, 0, 490, 0, 0, 0,
+ 0, 0, 0, 408, 409, 410, 411, 3, 4, 5,
+ 6, 7, 0, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 0, 0, 0, 0, 0, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 0, 391, 308, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 0, 0,
+ 404, 405, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 406,
+ 0, 0, 533, 0, 0, 0, 0, 0, 0, 0,
+ 408, 409, 410, 411, 3, 4, 5, 6, 7, 0,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 0, 0, 0, 0, 0, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 0, 391, 308, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 0, 0, 404, 405, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 406, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 552, 408, 409, 410,
+ 411, 3, 4, 5, 6, 7, 0, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 0, 0, 0,
+ 0, 0, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 0, 391, 308,
+ 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
+ 402, 403, 0, 0, 404, 405, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 406, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 408, 409, 410, 411, 3, 4,
+ 5, 6, 7, 0, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 0, 0, 0, 0, 0, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 508, 0, 391, 308, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 0,
+ 0, 404, 405, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 406, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 408, 409, 410, 411, 3, 4, 5, 6, 7,
+ 0, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 0, 0, 0, 0, 0, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 422, 0, 308, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 498, 499, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 511, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 422, 0, 0, 422,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 592, 593, 594, 422, 422, 422, 422, 422, 422,
+ 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 422
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 0, 0, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 0, 357, 359, 359, 519, 520, 521, 522, 357,
+ 366, 366, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ 329, 321, 323, 321, 24, 362, 26, 27, 385, 329,
+ 30, 81, 476, 344, 446, 560, 336, 336, 443, 322,
+ 624, 406, 322, 343, 353, 357, 357, 364, 662, 349,
+ 367, 349, 666, 353, 488, 345, 490, 336, 642, 493,
+ 674, 364, 359, 420, 367, 360, 367, 338, 339, 364,
+ 367, 382, 383, 373, 367, 373, 364, 377, 361, 367,
+ 381, 382, 383, 384, 385, 386, 357, 367, 359, 494,
+ 380, 456, 363, 458, 340, 341, 361, 358, 364, 364,
+ 437, 367, 367, 440, 548, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 359, 364, 364, 359, 359,
+ 367, 322, 358, 367, 366, 366, 366, 539, 364, 375,
+ 376, 488, 359, 490, 358, 444, 493, 359, 503, 364,
+ 364, 322, 367, 443, 444, 443, 446, 581, 446, 358,
+ 507, 358, 358, 678, 358, 364, 358, 364, 364, 369,
+ 364, 371, 364, 383, 384, 385, 361, 372, 373, 374,
+ 362, 361, 364, 585, 336, 337, 476, 342, 343, 364,
+ 365, 364, 365, 322, 628, 550, 515, 516, 322, 554,
+ 517, 518, 523, 524, 494, 366, 494, 367, 322, 633,
+ 358, 357, 379, 378, 377, 346, 344, 360, 322, 322,
+ 367, 357, 367, 357, 357, 572, 573, 367, 365, 359,
+ 357, 322, 357, 322, 581, 358, 362, 322, 360, 360,
+ 541, 321, 357, 361, 364, 357, 322, 358, 367, 539,
+ 360, 539, 358, 362, 688, 679, 611, 25, 548, 361,
+ 361, 366, 358, 362, 526, 525, 529, 367, 527, 624,
+ 560, 528, 530, 649, 353, 349, 353, 315, 442, 616,
+ 619, 661, 322, 674, 347, 675, 633, 642, 540, 619,
+ 642, 336, 651, 486, -1, 585, 486, 585, 486, -1,
+ -1, 656, -1, -1, -1, -1, -1, -1, 655, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 673, -1,
+ -1, -1, 649, -1, -1, -1, -1, -1, -1, 619,
+ -1, 321, 679, -1, 624, -1, 624, -1, 628, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 647, -1,
+ -1, -1, 642, -1, 642, -1, -1, 647, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 307, -1, 309, -1, -1, -1, -1,
- -1, -1, -1, 317, 318, 319, 320, 321, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 331, 332, 333,
- 334, 335, 336, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 27, 28, 29,
+ -1, -1, 662, -1, -1, -1, 666, -1, -1, -1,
+ -1, -1, -1, -1, 674, -1, -1, -1, 678, -1,
+ -1, -1, -1, -1, -1, -1, 0, -1, 688, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, -1, -1, 323,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 381, 382, 383,
+ 384, 385, 386, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, -1, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
@@ -2309,16 +2351,21 @@
240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, -1, -1, 288, 289,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, -1, -1, 338, 339,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 307, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 317, 318, 319,
- 320, 321, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 331, 332, 333, 334, 335, 336, 3, 4, 5,
+ -1, -1, -1, -1, -1, -1, -1, 357, -1, 359,
+ -1, 361, 362, -1, -1, -1, -1, 367, 368, 369,
+ 370, 371, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 381, 382, 383, 384, 385, 386, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
@@ -2342,47 +2389,59 @@
236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, 274, 275,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- -1, -1, 288, 289, -1, -1, -1, -1, -1, -1,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ -1, -1, 338, 339, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 307, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 318, 319, 320, 321, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 331, 332, 333, 334, 335,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- -1, 274, 275, -1, -1, -1, -1, -1, -1, -1,
+ -1, 357, -1, 359, -1, 361, 362, -1, -1, -1,
+ -1, 367, 368, 369, 370, 371, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 381, 382, 383, 384, 385,
+ 386, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, -1, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, -1, -1, 338, 339, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 317, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 331, 332,
- 333, 334, 335, -1, -1, -1, -1, -1, -1, 27,
+ -1, -1, -1, -1, -1, 357, -1, 359, -1, 361,
+ -1, -1, -1, -1, -1, 367, 368, 369, 370, 371,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 381,
+ 382, 383, 384, 385, 386, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, -1, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
@@ -2407,344 +2466,65 @@
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, 275, -1, -1,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, -1, -1,
+ 338, 339, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 357,
+ -1, 359, -1, 361, -1, -1, -1, -1, -1, 367,
+ 368, 369, 370, 371, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 381, 382, 383, 384, 385, 386, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, -1, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, -1, -1, 338, 339, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 312, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, -1, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, -1, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, 275, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 312, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, -1, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, -1, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, 275, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 312, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, -1, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, -1, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, 275, -1, -1,
- -1, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 331, 332, 333, 334, 335, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, -1, -1, -1, -1,
- -1, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, -1, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, -1, -1, 288, 289, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 307, -1, -1, -1, 311, 312, -1, -1,
- -1, -1, -1, 318, 319, 320, 321, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, -1, -1, -1, -1, -1, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, -1, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, -1, -1, 288,
- 289, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 307, -1,
- -1, 310, -1, -1, -1, -1, -1, -1, -1, 318,
- 319, 320, 321, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
- -1, -1, -1, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- -1, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, -1, -1, 288, 289, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 307, -1, -1, -1, 311, -1,
- -1, -1, -1, -1, -1, 318, 319, 320, 321, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, -1, -1, -1, -1, -1, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, -1, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, -1,
- -1, 288, 289, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 307, -1, -1, 310, -1, -1, -1, -1, -1, -1,
- -1, 318, 319, 320, 321, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- -1, -1, -1, -1, -1, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, -1, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, -1, -1, 288, 289, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 307, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 317, 318, 319, 320,
- 321, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, -1, -1, -1, -1,
- -1, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, -1, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, -1, -1, 288, 289, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 307, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 318, 319, 320, 321, -1, -1, -1,
- -1, -1, -1, -1, -1, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
- -1, -1, -1, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 314, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, -1, -1, 288, 289, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 307, -1, -1, -1, -1, -1,
- 354, 355, -1, -1, -1, 318, 319, 320, 321, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 373,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 387, -1, -1, 390, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 462, 463,
- 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
- 474, 475, 476, 477, 478, 479, 480, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 63, 64, 65, 66, 67, 68, 69,
+ -1, -1, -1, 357, -1, 359, -1, -1, -1, -1,
+ -1, -1, -1, 367, 368, 369, 370, 371, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 381, 382, 383,
+ 384, 385, 386, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, -1, -1, -1, -1, 599, 86, 87, 88, 89,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
@@ -2763,15 +2543,59 @@
240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, 275
-};
-
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
-static const yytype_uint16 yystos[] =
-{
- 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 27, 28, 29, 30, 31, 32,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, -1, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, -1, -1, 338, 339,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 357, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 367, 368, 369,
+ 370, 371, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 381, 382, 383, 384, 385, 386, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, -1, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ -1, -1, 338, 339, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 357, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 368, 369, 370, 371, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 381, 382, 383, 384, 385,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
@@ -2796,124 +2620,650 @@
243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 275, 317, 331, 332, 333, 334, 335, 336, 371, 372,
- 375, 376, 377, 378, 382, 383, 384, 385, 386, 387,
- 390, 391, 392, 393, 395, 397, 398, 399, 439, 440,
- 441, 307, 307, 274, 311, 398, 274, 317, 317, 442,
- 308, 314, 379, 380, 381, 391, 395, 314, 317, 274,
- 274, 317, 392, 395, 309, 396, 0, 440, 274, 394,
- 57, 274, 388, 389, 311, 401, 395, 317, 396, 311,
- 418, 380, 379, 381, 274, 274, 307, 316, 396, 311,
- 314, 317, 374, 274, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 288, 289, 307, 310, 318, 319,
- 320, 321, 341, 342, 343, 345, 346, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 395, 309, 308, 314,
- 316, 308, 314, 400, 391, 395, 402, 403, 317, 317,
- 16, 17, 18, 20, 21, 22, 23, 24, 25, 26,
- 273, 309, 311, 312, 317, 352, 365, 367, 369, 371,
- 375, 395, 408, 409, 410, 411, 419, 420, 421, 422,
- 425, 426, 429, 430, 431, 438, 443, 396, 316, 396,
- 311, 367, 406, 316, 373, 274, 314, 317, 352, 352,
- 369, 288, 289, 309, 313, 308, 308, 314, 272, 367,
- 307, 352, 322, 323, 324, 319, 321, 286, 287, 290,
- 291, 325, 326, 292, 293, 329, 328, 327, 294, 296,
- 295, 330, 310, 310, 365, 274, 365, 370, 389, 402,
- 395, 274, 404, 405, 312, 403, 317, 317, 433, 307,
- 307, 317, 317, 369, 307, 369, 315, 307, 309, 312,
- 412, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 316, 368, 314, 317, 312, 409, 422, 426, 431,
- 406, 316, 406, 407, 406, 402, 274, 308, 344, 369,
- 274, 367, 352, 352, 352, 354, 354, 355, 355, 356,
- 356, 356, 356, 357, 357, 358, 359, 360, 361, 362,
- 363, 366, 310, 312, 404, 396, 314, 317, 409, 434,
- 369, 317, 369, 315, 432, 274, 444, 445, 419, 367,
- 367, 406, 312, 314, 312, 310, 369, 317, 405, 273,
- 408, 420, 435, 308, 308, 369, 384, 391, 424, 307,
- 310, 314, 413, 312, 406, 315, 307, 424, 436, 437,
- 415, 416, 417, 423, 427, 274, 308, 370, 310, 445,
- 312, 367, 369, 317, 308, 19, 411, 410, 311, 316,
- 410, 414, 418, 308, 308, 369, 414, 415, 419, 428,
- 406, 317, 312
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, -1, 322,
+ 323, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 367, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 381, 382,
+ 383, 384, 385, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, -1, -1, 323, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 362, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 381, 382, 383, 384, 385, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, 320, -1, -1, 323, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 362, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 381, 382, 383, 384, 385, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, -1, -1, 323,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 362, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 381, 382, 383,
+ 384, 385, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ -1, -1, 323, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 5, 6, 7, 8,
+ 9, -1, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, -1, -1, -1, -1, -1, -1, -1,
+ 381, 382, 383, 384, 385, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 110, -1, -1, -1, -1, -1, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
+ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
+ 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
+ 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
+ 319, 320, -1, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 332, 333, 334, 335, -1, -1, 338,
+ 339, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 357, -1,
+ -1, -1, 361, 362, -1, -1, -1, -1, -1, 368,
+ 369, 370, 371, 5, 6, 7, 8, 9, -1, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, -1,
+ -1, -1, -1, -1, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, -1,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, -1, -1, 338, 339, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 357, -1, -1, 360, -1,
+ -1, -1, -1, -1, -1, -1, 368, 369, 370, 371,
+ 5, 6, 7, 8, 9, -1, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, -1, -1, -1, -1,
+ -1, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, -1, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, -1, -1, 338, 339, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 357, -1, -1, -1, 361, -1, -1, -1,
+ -1, -1, -1, 368, 369, 370, 371, 5, 6, 7,
+ 8, 9, -1, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, -1, -1, -1, -1, -1, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, -1, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, -1, -1,
+ 338, 339, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 357,
+ -1, -1, 360, -1, -1, -1, -1, -1, -1, -1,
+ 368, 369, 370, 371, 5, 6, 7, 8, 9, -1,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ -1, -1, -1, -1, -1, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
+ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
+ 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ -1, 322, 323, 324, 325, 326, 327, 328, 329, 330,
+ 331, 332, 333, 334, 335, -1, -1, 338, 339, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 357, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 367, 368, 369, 370,
+ 371, 5, 6, 7, 8, 9, -1, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, -1, -1, -1,
+ -1, -1, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, -1, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, -1, -1, 338, 339, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 357, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 368, 369, 370, 371, 5, 6,
+ 7, 8, 9, -1, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, -1, -1, -1, -1, -1, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, 320, -1, 322, 323, 324, 325, 326,
+ 327, 328, 329, 330, 331, 332, 333, 334, 335, -1,
+ -1, 338, 339, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 357, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 368, 369, 370, 371, 5, 6, 7, 8, 9,
+ -1, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, -1, -1, -1, -1, -1, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 362, -1, 323, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 404, 405, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 423, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 437, -1, -1, 440,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 649
+};
+
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint16 yystos[] =
+{
+ 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
+ 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, 323, 367,
+ 381, 382, 383, 384, 385, 386, 421, 422, 425, 426,
+ 427, 428, 432, 433, 434, 435, 436, 437, 440, 441,
+ 442, 443, 445, 447, 448, 449, 489, 490, 491, 357,
+ 357, 322, 361, 448, 322, 367, 367, 492, 358, 364,
+ 429, 430, 431, 441, 445, 364, 367, 322, 322, 367,
+ 442, 445, 359, 446, 0, 490, 322, 444, 81, 322,
+ 438, 439, 361, 451, 445, 367, 446, 361, 468, 430,
+ 429, 431, 322, 322, 357, 366, 446, 361, 364, 367,
+ 424, 322, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 338, 339, 357, 360, 368, 369,
+ 370, 371, 391, 392, 393, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 445, 359, 358, 364,
+ 366, 358, 364, 450, 441, 445, 452, 453, 367, 367,
+ 22, 23, 24, 26, 27, 28, 29, 30, 31, 32,
+ 321, 359, 361, 362, 367, 402, 415, 417, 419, 421,
+ 425, 445, 458, 459, 460, 461, 469, 470, 471, 472,
+ 475, 476, 479, 480, 481, 488, 493, 446, 366, 446,
+ 361, 417, 456, 366, 423, 322, 364, 367, 402, 402,
+ 419, 338, 339, 359, 363, 358, 358, 364, 320, 417,
+ 357, 402, 372, 373, 374, 369, 371, 336, 337, 340,
+ 341, 375, 376, 342, 343, 379, 378, 377, 344, 346,
+ 345, 380, 360, 360, 415, 322, 415, 420, 439, 452,
+ 445, 322, 454, 455, 362, 453, 367, 367, 483, 357,
+ 357, 367, 367, 419, 357, 419, 365, 357, 359, 362,
+ 462, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 366, 418, 364, 367, 362, 459, 472, 476, 481,
+ 456, 366, 456, 457, 456, 452, 322, 358, 394, 419,
+ 322, 417, 402, 402, 402, 404, 404, 405, 405, 406,
+ 406, 406, 406, 407, 407, 408, 409, 410, 411, 412,
+ 413, 416, 360, 362, 454, 446, 364, 367, 459, 484,
+ 419, 367, 419, 365, 482, 322, 494, 495, 469, 417,
+ 417, 456, 362, 364, 362, 360, 419, 367, 455, 321,
+ 458, 470, 485, 358, 358, 419, 434, 441, 474, 357,
+ 360, 364, 463, 362, 456, 365, 357, 474, 486, 487,
+ 465, 466, 467, 473, 477, 322, 358, 420, 360, 495,
+ 362, 417, 419, 367, 358, 25, 461, 460, 361, 366,
+ 460, 464, 468, 358, 358, 419, 464, 465, 469, 478,
+ 456, 367, 362
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint16 yyr1[] =
{
- 0, 340, 341, 342, 342, 342, 342, 342, 342, 342,
- 342, 342, 342, 342, 342, 343, 343, 343, 343, 343,
- 343, 344, 345, 346, 347, 347, 348, 348, 349, 349,
- 350, 351, 351, 352, 352, 352, 352, 353, 353, 353,
- 353, 354, 354, 354, 354, 355, 355, 355, 356, 356,
- 356, 357, 357, 357, 357, 357, 358, 358, 358, 359,
- 359, 360, 360, 361, 361, 362, 362, 363, 363, 364,
- 364, 365, 366, 365, 367, 367, 368, 368, 368, 368,
- 368, 368, 368, 368, 368, 368, 368, 369, 369, 370,
- 371, 371, 371, 371, 371, 371, 371, 371, 371, 373,
- 372, 374, 374, 375, 376, 376, 377, 377, 378, 379,
- 379, 380, 380, 380, 380, 381, 382, 382, 382, 382,
- 382, 383, 383, 383, 383, 383, 384, 384, 385, 386,
- 386, 386, 386, 387, 388, 388, 389, 389, 389, 390,
- 391, 391, 392, 392, 392, 392, 392, 392, 393, 393,
- 393, 393, 393, 393, 393, 393, 393, 393, 393, 393,
- 393, 393, 393, 393, 393, 393, 393, 394, 394, 395,
- 395, 396, 396, 396, 396, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
- 397, 397, 398, 398, 398, 400, 399, 401, 399, 402,
- 402, 403, 403, 404, 404, 405, 405, 406, 406, 406,
- 407, 407, 408, 409, 409, 410, 410, 410, 410, 410,
- 410, 410, 411, 412, 413, 411, 414, 414, 416, 415,
- 417, 415, 418, 418, 419, 419, 420, 420, 421, 421,
- 422, 423, 423, 424, 424, 425, 425, 427, 426, 428,
- 428, 429, 429, 430, 430, 432, 431, 433, 431, 434,
- 431, 435, 435, 436, 436, 437, 437, 438, 438, 438,
- 438, 438, 439, 439, 440, 440, 440, 442, 441, 443,
- 444, 444, 445, 445
+ 0, 390, 391, 392, 392, 392, 392, 392, 392, 392,
+ 392, 392, 392, 392, 392, 392, 392, 393, 393, 393,
+ 393, 393, 393, 394, 395, 396, 397, 397, 398, 398,
+ 399, 399, 400, 401, 401, 402, 402, 402, 402, 403,
+ 403, 403, 403, 404, 404, 404, 404, 405, 405, 405,
+ 406, 406, 406, 407, 407, 407, 407, 407, 408, 408,
+ 408, 409, 409, 410, 410, 411, 411, 412, 412, 413,
+ 413, 414, 414, 415, 416, 415, 417, 417, 418, 418,
+ 418, 418, 418, 418, 418, 418, 418, 418, 418, 419,
+ 419, 420, 421, 421, 421, 421, 421, 421, 421, 421,
+ 421, 423, 422, 424, 424, 425, 426, 426, 427, 427,
+ 428, 429, 429, 430, 430, 430, 430, 431, 432, 432,
+ 432, 432, 432, 433, 433, 433, 433, 433, 434, 434,
+ 435, 436, 436, 436, 436, 437, 438, 438, 439, 439,
+ 439, 440, 441, 441, 442, 442, 442, 442, 442, 442,
+ 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
+ 443, 443, 443, 443, 443, 443, 443, 443, 443, 444,
+ 444, 445, 445, 446, 446, 446, 446, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
+ 447, 447, 448, 448, 448, 450, 449, 451, 449, 452,
+ 452, 453, 453, 454, 454, 455, 455, 456, 456, 456,
+ 457, 457, 458, 459, 459, 460, 460, 460, 460, 460,
+ 460, 460, 461, 462, 463, 461, 464, 464, 466, 465,
+ 467, 465, 468, 468, 469, 469, 470, 470, 471, 471,
+ 472, 473, 473, 474, 474, 475, 475, 477, 476, 478,
+ 478, 479, 479, 480, 480, 482, 481, 483, 481, 484,
+ 481, 485, 485, 486, 486, 487, 487, 488, 488, 488,
+ 488, 488, 489, 489, 490, 490, 490, 492, 491, 493,
+ 494, 494, 495, 495
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 4, 1, 3, 2,
- 2, 1, 1, 1, 2, 2, 2, 1, 2, 3,
- 2, 1, 1, 1, 2, 2, 2, 1, 1, 1,
- 1, 1, 3, 3, 3, 1, 3, 3, 1, 3,
- 3, 1, 3, 3, 3, 3, 1, 3, 3, 1,
+ 1, 1, 1, 1, 1, 1, 3, 1, 4, 1,
+ 3, 2, 2, 1, 1, 1, 2, 2, 2, 1,
+ 2, 3, 2, 1, 1, 1, 2, 2, 2, 1,
+ 1, 1, 1, 1, 3, 3, 3, 1, 3, 3,
+ 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
- 3, 1, 0, 6, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
- 2, 2, 4, 2, 3, 4, 2, 3, 4, 0,
- 6, 2, 3, 2, 1, 1, 2, 3, 3, 2,
- 3, 2, 1, 2, 1, 1, 1, 3, 4, 6,
- 5, 1, 2, 3, 5, 4, 1, 2, 1, 1,
- 1, 1, 1, 4, 1, 3, 1, 3, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 1, 3, 1, 0, 6, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 4, 1, 3, 1,
- 2, 2, 3, 3, 4, 1, 1, 1, 1, 1,
+ 3, 1, 2, 2, 4, 2, 3, 4, 2, 3,
+ 4, 0, 6, 2, 3, 2, 1, 1, 2, 3,
+ 3, 2, 3, 2, 1, 2, 1, 1, 1, 3,
+ 4, 6, 5, 1, 2, 3, 5, 4, 1, 2,
+ 1, 1, 1, 1, 1, 4, 1, 3, 1, 3,
+ 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ 3, 1, 2, 2, 3, 3, 4, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -3231,11 +3581,11 @@
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
yytype_int16 *yyssp, int yytoken)
{
- YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
- const char *yyformat = YY_NULLPTR;
+ const char *yyformat = YY_NULL;
/* Arguments of yyformat. */
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
/* Number of reported tokens (one for the "unexpected", one per
@@ -3292,7 +3642,7 @@
}
yyarg[yycount++] = yytname[yyx];
{
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
if (! (yysize <= yysize1
&& yysize1 <= YYSTACK_ALLOC_MAXIMUM))
return 2;
@@ -3629,238 +3979,250 @@
switch (yyn)
{
case 2:
-#line 272 "glslang.y" /* yacc.c:1646 */
+#line 292 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
}
-#line 3637 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 3987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 3:
-#line 278 "glslang.y" /* yacc.c:1646 */
+#line 298 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 3645 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 3995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 4:
-#line 281 "glslang.y" /* yacc.c:1646 */
+#line 301 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 3653 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 5:
-#line 284 "glslang.y" /* yacc.c:1646 */
+#line 305 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
+ }
+#line 4013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 6:
+#line 309 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
+ }
+#line 4021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 7:
+#line 312 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 3662 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 6:
-#line 288 "glslang.y" /* yacc.c:1646 */
+ case 8:
+#line 316 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
}
-#line 3671 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 7:
-#line 292 "glslang.y" /* yacc.c:1646 */
+ case 9:
+#line 320 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
}
-#line 3680 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 8:
-#line 296 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
-#endif
- }
-#line 3691 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 9:
-#line 302 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
-#endif
- }
-#line 3702 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 10:
-#line 308 "glslang.y" /* yacc.c:1646 */
+#line 324 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 3710 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 11:
-#line 311 "glslang.y" /* yacc.c:1646 */
+#line 328 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
+ }
+#line 4066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 12:
+#line 332 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
+ }
+#line 4074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 13:
+#line 335 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
}
-#line 3719 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 12:
-#line 315 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
-#endif
- }
-#line 3730 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 13:
-#line 321 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
- }
-#line 3738 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 14:
-#line 324 "glslang.y" /* yacc.c:1646 */
+#line 339 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
+ }
+#line 4092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 15:
+#line 343 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
+ }
+#line 4100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 16:
+#line 346 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
-#line 3748 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 15:
-#line 332 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
- }
-#line 3756 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 16:
-#line 335 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
- }
-#line 3764 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 17:
-#line 338 "glslang.y" /* yacc.c:1646 */
+#line 354 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 3772 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 18:
-#line 341 "glslang.y" /* yacc.c:1646 */
+#line 357 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
+ (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
}
-#line 3780 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 19:
-#line 344 "glslang.y" /* yacc.c:1646 */
+#line 360 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
+ }
+#line 4134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 20:
+#line 363 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
+ }
+#line 4142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 21:
+#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
}
-#line 3790 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 20:
-#line 349 "glslang.y" /* yacc.c:1646 */
+ case 22:
+#line 371 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
}
-#line 3800 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 21:
-#line 357 "glslang.y" /* yacc.c:1646 */
+ case 23:
+#line 379 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 3809 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 22:
-#line 364 "glslang.y" /* yacc.c:1646 */
+ case 24:
+#line 386 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
delete (yyvsp[0].interm).function;
}
-#line 3818 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 23:
-#line 371 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[0].interm);
- }
-#line 3826 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 24:
-#line 377 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[-1].interm);
- (yyval.interm).loc = (yyvsp[0].lex).loc;
- }
-#line 3835 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 25:
-#line 381 "glslang.y" /* yacc.c:1646 */
+#line 393 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[0].interm);
+ }
+#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 26:
+#line 399 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 3844 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 26:
-#line 388 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm) = (yyvsp[-1].interm);
- }
-#line 3852 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 27:
-#line 391 "glslang.y" /* yacc.c:1646 */
+#line 403 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm) = (yyvsp[0].interm);
+ (yyval.interm) = (yyvsp[-1].interm);
+ (yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 3860 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 28:
-#line 397 "glslang.y" /* yacc.c:1646 */
+#line 410 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[-1].interm);
+ }
+#line 4214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 29:
+#line 413 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm) = (yyvsp[0].interm);
+ }
+#line 4222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 30:
+#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TParameter param = { 0, new TType };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -3868,11 +4230,11 @@
(yyval.interm).function = (yyvsp[-1].interm).function;
(yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
}
-#line 3872 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 29:
-#line 404 "glslang.y" /* yacc.c:1646 */
+ case 31:
+#line 426 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TParameter param = { 0, new TType };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -3880,29 +4242,29 @@
(yyval.interm).function = (yyvsp[-2].interm).function;
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
}
-#line 3884 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 30:
-#line 414 "glslang.y" /* yacc.c:1646 */
+ case 32:
+#line 436 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 3892 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 31:
-#line 422 "glslang.y" /* yacc.c:1646 */
+ case 33:
+#line 444 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 3902 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 32:
-#line 427 "glslang.y" /* yacc.c:1646 */
+ case 34:
+#line 449 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// Should be a method or subroutine call, but we haven't recognized the arguments yet.
@@ -3930,40 +4292,40 @@
(yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull);
}
}
-#line 3934 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 33:
-#line 457 "glslang.y" /* yacc.c:1646 */
+ case 35:
+#line 479 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.variableCheck((yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
}
-#line 3945 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 34:
-#line 463 "glslang.y" /* yacc.c:1646 */
+ case 36:
+#line 485 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
}
-#line 3954 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 35:
-#line 467 "glslang.y" /* yacc.c:1646 */
+ case 37:
+#line 489 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
}
-#line 3963 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 36:
-#line 471 "glslang.y" /* yacc.c:1646 */
+ case 38:
+#line 493 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm).op != EOpNull) {
char errorOp[2] = {0, 0};
@@ -3980,179 +4342,179 @@
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
}
-#line 3984 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 37:
-#line 491 "glslang.y" /* yacc.c:1646 */
- { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 3990 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 38:
-#line 492 "glslang.y" /* yacc.c:1646 */
- { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 3996 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 39:
-#line 493 "glslang.y" /* yacc.c:1646 */
- { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 4002 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 513 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
+#line 4352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 40:
-#line 494 "glslang.y" /* yacc.c:1646 */
- { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
- parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 4009 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 514 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
+#line 4358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 41:
-#line 500 "glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4015 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
+#line 4364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 42:
-#line 501 "glslang.y" /* yacc.c:1646 */
+#line 516 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
+#line 4371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 43:
+#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4377 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 44:
+#line 523 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4025 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 43:
-#line 506 "glslang.y" /* yacc.c:1646 */
+ case 45:
+#line 528 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4035 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 44:
-#line 511 "glslang.y" /* yacc.c:1646 */
+ case 46:
+#line 533 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4046 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 45:
-#line 520 "glslang.y" /* yacc.c:1646 */
+ case 47:
+#line 542 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4052 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 46:
-#line 521 "glslang.y" /* yacc.c:1646 */
+ case 48:
+#line 543 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4062 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 47:
-#line 526 "glslang.y" /* yacc.c:1646 */
+ case 49:
+#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4072 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 48:
-#line 534 "glslang.y" /* yacc.c:1646 */
+ case 50:
+#line 556 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4078 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 49:
-#line 535 "glslang.y" /* yacc.c:1646 */
+ case 51:
+#line 557 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4089 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 50:
-#line 541 "glslang.y" /* yacc.c:1646 */
+ case 52:
+#line 563 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4100 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 51:
-#line 550 "glslang.y" /* yacc.c:1646 */
+ case 53:
+#line 572 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4106 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 52:
-#line 551 "glslang.y" /* yacc.c:1646 */
+ case 54:
+#line 573 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4116 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 53:
-#line 556 "glslang.y" /* yacc.c:1646 */
+ case 55:
+#line 578 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4126 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 54:
-#line 561 "glslang.y" /* yacc.c:1646 */
+ case 56:
+#line 583 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4136 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 55:
-#line 566 "glslang.y" /* yacc.c:1646 */
+ case 57:
+#line 588 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4146 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 56:
-#line 574 "glslang.y" /* yacc.c:1646 */
+ case 58:
+#line 596 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4152 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 57:
-#line 575 "glslang.y" /* yacc.c:1646 */
+ case 59:
+#line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
@@ -4161,11 +4523,11 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4165 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 58:
-#line 583 "glslang.y" /* yacc.c:1646 */
+ case 60:
+#line 605 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
@@ -4174,124 +4536,124 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4178 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 59:
-#line 594 "glslang.y" /* yacc.c:1646 */
+ case 61:
+#line 616 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4184 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 60:
-#line 595 "glslang.y" /* yacc.c:1646 */
+ case 62:
+#line 617 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4195 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 61:
-#line 604 "glslang.y" /* yacc.c:1646 */
+ case 63:
+#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4201 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 62:
-#line 605 "glslang.y" /* yacc.c:1646 */
+ case 64:
+#line 627 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4212 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4574 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 63:
-#line 614 "glslang.y" /* yacc.c:1646 */
+ case 65:
+#line 636 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4218 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 64:
-#line 615 "glslang.y" /* yacc.c:1646 */
+ case 66:
+#line 637 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 4229 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 65:
-#line 624 "glslang.y" /* yacc.c:1646 */
+ case 67:
+#line 646 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4235 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 66:
-#line 625 "glslang.y" /* yacc.c:1646 */
+ case 68:
+#line 647 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4245 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 67:
-#line 633 "glslang.y" /* yacc.c:1646 */
+ case 69:
+#line 655 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4251 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 68:
-#line 634 "glslang.y" /* yacc.c:1646 */
+ case 70:
+#line 656 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4261 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 69:
-#line 642 "glslang.y" /* yacc.c:1646 */
+ case 71:
+#line 664 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4267 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 70:
-#line 643 "glslang.y" /* yacc.c:1646 */
+ case 72:
+#line 665 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4277 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 71:
-#line 651 "glslang.y" /* yacc.c:1646 */
- { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4283 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 72:
-#line 652 "glslang.y" /* yacc.c:1646 */
- {
- ++parseContext.controlFlowNestingLevel;
- }
-#line 4291 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 73:
-#line 655 "glslang.y" /* yacc.c:1646 */
+#line 673 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
+#line 4645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 74:
+#line 674 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ ++parseContext.controlFlowNestingLevel;
+ }
+#line 4653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 75:
+#line 677 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
--parseContext.controlFlowNestingLevel;
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
@@ -4304,17 +4666,17 @@
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 4308 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 74:
-#line 670 "glslang.y" /* yacc.c:1646 */
+ case 76:
+#line 692 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4314 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 75:
-#line 671 "glslang.y" /* yacc.c:1646 */
+ case 77:
+#line 693 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
@@ -4327,119 +4689,119 @@
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
}
-#line 4331 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 76:
-#line 686 "glslang.y" /* yacc.c:1646 */
+ case 78:
+#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAssign;
}
-#line 4340 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 77:
-#line 690 "glslang.y" /* yacc.c:1646 */
+ case 79:
+#line 712 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpMulAssign;
}
-#line 4349 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 78:
-#line 694 "glslang.y" /* yacc.c:1646 */
+ case 80:
+#line 716 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpDivAssign;
}
-#line 4358 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 79:
-#line 698 "glslang.y" /* yacc.c:1646 */
+ case 81:
+#line 720 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpModAssign;
}
-#line 4368 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 80:
-#line 703 "glslang.y" /* yacc.c:1646 */
+ case 82:
+#line 725 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAddAssign;
}
-#line 4377 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 81:
-#line 707 "glslang.y" /* yacc.c:1646 */
+ case 83:
+#line 729 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpSubAssign;
}
-#line 4386 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 82:
-#line 711 "glslang.y" /* yacc.c:1646 */
+ case 84:
+#line 733 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
}
-#line 4395 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 83:
-#line 715 "glslang.y" /* yacc.c:1646 */
+ case 85:
+#line 737 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
}
-#line 4404 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 84:
-#line 719 "glslang.y" /* yacc.c:1646 */
+ case 86:
+#line 741 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
}
-#line 4413 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 85:
-#line 723 "glslang.y" /* yacc.c:1646 */
+ case 87:
+#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
}
-#line 4422 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4784 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 86:
-#line 727 "glslang.y" /* yacc.c:1646 */
+ case 88:
+#line 749 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
}
-#line 4431 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 87:
-#line 734 "glslang.y" /* yacc.c:1646 */
+ case 89:
+#line 756 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4439 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 88:
-#line 737 "glslang.y" /* yacc.c:1646 */
+ case 90:
+#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
@@ -4448,40 +4810,40 @@
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 4452 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 89:
-#line 748 "glslang.y" /* yacc.c:1646 */
+ case 91:
+#line 770 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4461 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 90:
-#line 755 "glslang.y" /* yacc.c:1646 */
+ case 92:
+#line 777 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */);
(yyval.interm.intermNode) = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-#line 4471 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 91:
-#line 760 "glslang.y" /* yacc.c:1646 */
+ case 93:
+#line 782 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate())
(yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
}
-#line 4481 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 92:
-#line 765 "glslang.y" /* yacc.c:1646 */
+ case 94:
+#line 787 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
@@ -4490,75 +4852,75 @@
parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
(yyval.interm.intermNode) = 0;
}
-#line 4494 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 93:
-#line 773 "glslang.y" /* yacc.c:1646 */
+ case 95:
+#line 795 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
(yyval.interm.intermNode) = 0;
}
-#line 4503 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 94:
-#line 777 "glslang.y" /* yacc.c:1646 */
+ case 96:
+#line 799 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 4512 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 95:
-#line 781 "glslang.y" /* yacc.c:1646 */
+ case 97:
+#line 803 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
(yyval.interm.intermNode) = 0;
}
-#line 4521 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 96:
-#line 785 "glslang.y" /* yacc.c:1646 */
+ case 98:
+#line 807 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
(yyval.interm.intermNode) = 0;
}
-#line 4531 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 97:
-#line 790 "glslang.y" /* yacc.c:1646 */
+ case 99:
+#line 812 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers);
parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 4541 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4903 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 98:
-#line 795 "glslang.y" /* yacc.c:1646 */
+ case 100:
+#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
(yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string);
parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
(yyval.interm.intermNode) = 0;
}
-#line 4552 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 99:
-#line 804 "glslang.y" /* yacc.c:1646 */
+ case 101:
+#line 826 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 4558 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 100:
-#line 804 "glslang.y" /* yacc.c:1646 */
+ case 102:
+#line 826 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
--parseContext.structNestingLevel;
parseContext.blockName = (yyvsp[-4].lex).string;
@@ -4568,54 +4930,54 @@
(yyval.interm).loc = (yyvsp[-5].interm.type).loc;
(yyval.interm).typeList = (yyvsp[-1].interm.typeList);
}
-#line 4572 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 101:
-#line 815 "glslang.y" /* yacc.c:1646 */
+ case 103:
+#line 837 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.identifierList) = new TIdentifierList;
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 4581 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 102:
-#line 819 "glslang.y" /* yacc.c:1646 */
+ case 104:
+#line 841 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 4590 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 103:
-#line 826 "glslang.y" /* yacc.c:1646 */
+ case 105:
+#line 848 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).function = (yyvsp[-1].interm.function);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 4599 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 104:
-#line 833 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.function) = (yyvsp[0].interm.function);
- }
-#line 4607 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 105:
-#line 836 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.function) = (yyvsp[0].interm.function);
- }
-#line 4615 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 106:
-#line 843 "glslang.y" /* yacc.c:1646 */
+#line 855 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.function) = (yyvsp[0].interm.function);
+ }
+#line 4969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 107:
+#line 858 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.function) = (yyvsp[0].interm.function);
+ }
+#line 4977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 108:
+#line 865 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// Add the parameter
(yyval.interm.function) = (yyvsp[-1].interm.function);
@@ -4624,11 +4986,11 @@
else
delete (yyvsp[0].interm).param.type;
}
-#line 4628 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 107:
-#line 851 "glslang.y" /* yacc.c:1646 */
+ case 109:
+#line 873 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// Only first parameter of one-parameter functions can be void
@@ -4646,11 +5008,11 @@
(yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
}
}
-#line 4650 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 108:
-#line 871 "glslang.y" /* yacc.c:1646 */
+ case 110:
+#line 893 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) {
parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return",
@@ -4670,11 +5032,11 @@
function = new TFunction((yyvsp[-1].lex).string, type);
(yyval.interm.function) = function;
}
-#line 4674 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 109:
-#line 894 "glslang.y" /* yacc.c:1646 */
+ case 111:
+#line 916 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -4690,11 +5052,11 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).param = param;
}
-#line 4694 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 110:
-#line 909 "glslang.y" /* yacc.c:1646 */
+ case 112:
+#line 931 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -4712,11 +5074,11 @@
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).param = param;
}
-#line 4716 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 111:
-#line 932 "glslang.y" /* yacc.c:1646 */
+ case 113:
+#line 954 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -4728,11 +5090,11 @@
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 4732 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 112:
-#line 943 "glslang.y" /* yacc.c:1646 */
+ case 114:
+#line 965 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
@@ -4740,11 +5102,11 @@
parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
}
-#line 4744 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 113:
-#line 953 "glslang.y" /* yacc.c:1646 */
+ case 115:
+#line 975 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -4755,11 +5117,11 @@
parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 4759 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 114:
-#line 963 "glslang.y" /* yacc.c:1646 */
+ case 116:
+#line 985 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
@@ -4767,118 +5129,118 @@
parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
}
-#line 4771 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 115:
-#line 973 "glslang.y" /* yacc.c:1646 */
+ case 117:
+#line 995 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TParameter param = { 0, new TType((yyvsp[0].interm.type)) };
(yyval.interm).param = param;
if ((yyvsp[0].interm.type).arraySizes)
parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
}
-#line 4782 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 116:
-#line 982 "glslang.y" /* yacc.c:1646 */
+ case 118:
+#line 1004 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 4790 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 117:
-#line 985 "glslang.y" /* yacc.c:1646 */
+ case 119:
+#line 1007 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-2].interm);
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
}
-#line 4799 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 118:
-#line 989 "glslang.y" /* yacc.c:1646 */
+ case 120:
+#line 1011 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-3].interm);
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
}
-#line 4808 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 119:
-#line 993 "glslang.y" /* yacc.c:1646 */
+ case 121:
+#line 1015 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-5].interm).type;
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
-#line 4818 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 120:
-#line 998 "glslang.y" /* yacc.c:1646 */
+ case 122:
+#line 1020 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-4].interm).type;
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
-#line 4828 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 121:
-#line 1006 "glslang.y" /* yacc.c:1646 */
+ case 123:
+#line 1028 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[0].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
}
-#line 4838 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 122:
-#line 1011 "glslang.y" /* yacc.c:1646 */
+ case 124:
+#line 1033 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-1].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
}
-#line 4848 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 123:
-#line 1016 "glslang.y" /* yacc.c:1646 */
+ case 125:
+#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-2].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
}
-#line 4858 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 124:
-#line 1021 "glslang.y" /* yacc.c:1646 */
+ case 126:
+#line 1043 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-4].interm.type);
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
-#line 4868 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 125:
-#line 1026 "glslang.y" /* yacc.c:1646 */
+ case 127:
+#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[-3].interm.type);
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
-#line 4878 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 126:
-#line 1035 "glslang.y" /* yacc.c:1646 */
+ case 128:
+#line 1057 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
@@ -4890,11 +5252,11 @@
parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
}
-#line 4894 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 127:
-#line 1046 "glslang.y" /* yacc.c:1646 */
+ case 129:
+#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
@@ -4919,22 +5281,22 @@
(parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
(yyval.interm.type).qualifier.smooth = true;
}
-#line 4923 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 128:
-#line 1073 "glslang.y" /* yacc.c:1646 */
+ case 130:
+#line 1095 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "invariant");
parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.invariant = true;
}
-#line 4934 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 129:
-#line 1082 "glslang.y" /* yacc.c:1646 */
+ case 131:
+#line 1104 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
@@ -4942,11 +5304,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.smooth = true;
}
-#line 4946 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 130:
-#line 1089 "glslang.y" /* yacc.c:1646 */
+ case 132:
+#line 1111 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
@@ -4954,11 +5316,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.flat = true;
}
-#line 4958 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 131:
-#line 1096 "glslang.y" /* yacc.c:1646 */
+ case 133:
+#line 1118 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective");
@@ -4966,11 +5328,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nopersp = true;
}
-#line 4970 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 132:
-#line 1103 "glslang.y" /* yacc.c:1646 */
+ case 134:
+#line 1125 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD");
@@ -4980,84 +5342,84 @@
(yyval.interm.type).qualifier.explicitInterp = true;
#endif
}
-#line 4984 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 133:
-#line 1115 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[-1].interm.type);
- }
-#line 4992 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 134:
-#line 1121 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5000 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 135:
-#line 1124 "glslang.y" /* yacc.c:1646 */
+#line 1137 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[-1].interm.type);
+ }
+#line 5354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 136:
+#line 1143 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 137:
+#line 1146 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[-2].interm.type);
(yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
-#line 5010 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 136:
-#line 1131 "glslang.y" /* yacc.c:1646 */
+ case 138:
+#line 1153 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
}
-#line 5019 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 137:
-#line 1135 "glslang.y" /* yacc.c:1646 */
+ case 139:
+#line 1157 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[-2].lex).loc);
parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
}
-#line 5028 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 138:
-#line 1139 "glslang.y" /* yacc.c:1646 */
+ case 140:
+#line 1161 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ // because "shared" is both an identifier and a keyword
(yyval.interm.type).init((yyvsp[0].lex).loc);
TString strShared("shared");
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
}
-#line 5038 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 139:
-#line 1147 "glslang.y" /* yacc.c:1646 */
+ case 141:
+#line 1169 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.noContraction = true;
}
-#line 5049 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 140:
-#line 1156 "glslang.y" /* yacc.c:1646 */
+ case 142:
+#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5057 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 141:
-#line 1159 "glslang.y" /* yacc.c:1646 */
+ case 143:
+#line 1181 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
if ((yyval.interm.type).basicType == EbtVoid)
@@ -5066,72 +5428,72 @@
(yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
-#line 5070 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 142:
-#line 1170 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5078 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 143:
-#line 1173 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5086 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 144:
-#line 1176 "glslang.y" /* yacc.c:1646 */
+#line 1192 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 145:
+#line 1195 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 146:
+#line 1198 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5095 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 145:
-#line 1180 "glslang.y" /* yacc.c:1646 */
- {
- // allow inheritance of storage qualifier from block declaration
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5104 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 146:
-#line 1184 "glslang.y" /* yacc.c:1646 */
- {
- // allow inheritance of storage qualifier from block declaration
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5113 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 147:
-#line 1188 "glslang.y" /* yacc.c:1646 */
+#line 1202 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5122 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 148:
-#line 1195 "glslang.y" /* yacc.c:1646 */
+#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ // allow inheritance of storage qualifier from block declaration
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 149:
+#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ // allow inheritance of storage qualifier from block declaration
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 150:
+#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant
}
-#line 5131 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 149:
-#line 1199 "glslang.y" /* yacc.c:1646 */
+ case 151:
+#line 1221 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -5144,11 +5506,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 5148 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 150:
-#line 1211 "glslang.y" /* yacc.c:1646 */
+ case 152:
+#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -5163,43 +5525,43 @@
else
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 5167 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 151:
-#line 1225 "glslang.y" /* yacc.c:1646 */
+ case 153:
+#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqInOut;
}
-#line 5177 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 152:
-#line 1230 "glslang.y" /* yacc.c:1646 */
+ case 154:
+#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "in");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqIn;
}
-#line 5188 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 153:
-#line 1236 "glslang.y" /* yacc.c:1646 */
+ case 155:
+#line 1258 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "out");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqOut;
}
-#line 5199 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 154:
-#line 1242 "glslang.y" /* yacc.c:1646 */
+ case 156:
+#line 1264 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -5207,52 +5569,52 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.centroid = true;
}
-#line 5211 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 155:
-#line 1249 "glslang.y" /* yacc.c:1646 */
+ case 157:
+#line 1271 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.patch = true;
}
-#line 5222 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 156:
-#line 1255 "glslang.y" /* yacc.c:1646 */
+ case 158:
+#line 1277 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.sample = true;
}
-#line 5232 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 157:
-#line 1260 "glslang.y" /* yacc.c:1646 */
+ case 159:
+#line 1282 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
-#line 5242 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 158:
-#line 1265 "glslang.y" /* yacc.c:1646 */
+ case 160:
+#line 1287 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqBuffer;
}
-#line 5252 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 159:
-#line 1270 "glslang.y" /* yacc.c:1646 */
+ case 161:
+#line 1292 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
@@ -5261,126 +5623,126 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqShared;
}
-#line 5265 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 160:
-#line 1278 "glslang.y" /* yacc.c:1646 */
+ case 162:
+#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.coherent = true;
}
-#line 5274 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 161:
-#line 1282 "glslang.y" /* yacc.c:1646 */
+ case 163:
+#line 1304 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.volatil = true;
}
-#line 5283 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 162:
-#line 1286 "glslang.y" /* yacc.c:1646 */
+ case 164:
+#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.restrict = true;
}
-#line 5292 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 163:
-#line 1290 "glslang.y" /* yacc.c:1646 */
+ case 165:
+#line 1312 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.readonly = true;
}
-#line 5301 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 164:
-#line 1294 "glslang.y" /* yacc.c:1646 */
+ case 166:
+#line 1316 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.writeonly = true;
}
-#line 5310 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 165:
-#line 1298 "glslang.y" /* yacc.c:1646 */
+ case 167:
+#line 1320 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[0].lex).loc);
}
-#line 5321 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 166:
-#line 1304 "glslang.y" /* yacc.c:1646 */
+ case 168:
+#line 1326 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[-3].lex).loc);
}
-#line 5332 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 167:
-#line 1313 "glslang.y" /* yacc.c:1646 */
+ case 169:
+#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// TODO
}
-#line 5340 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 168:
-#line 1316 "glslang.y" /* yacc.c:1646 */
+ case 170:
+#line 1338 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// TODO: 4.0 semantics: subroutines
// 1) make sure each identifier is a type declared earlier with SUBROUTINE
// 2) save all of the identifiers for future comparison with the declared function
}
-#line 5350 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 169:
-#line 1324 "glslang.y" /* yacc.c:1646 */
+ case 171:
+#line 1346 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
}
-#line 5359 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 170:
-#line 1328 "glslang.y" /* yacc.c:1646 */
+ case 172:
+#line 1350 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayDimCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes, 0);
(yyval.interm.type) = (yyvsp[-1].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
(yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
}
-#line 5370 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 171:
-#line 1337 "glslang.y" /* yacc.c:1646 */
+ case 173:
+#line 1359 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
(yyval.interm).arraySizes->addInnerSize();
}
-#line 5380 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 172:
-#line 1342 "glslang.y" /* yacc.c:1646 */
+ case 174:
+#line 1364 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[-2].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
@@ -5389,20 +5751,20 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 5393 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 173:
-#line 1350 "glslang.y" /* yacc.c:1646 */
+ case 175:
+#line 1372 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-2].interm);
(yyval.interm).arraySizes->addInnerSize();
}
-#line 5402 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 174:
-#line 1354 "glslang.y" /* yacc.c:1646 */
+ case 176:
+#line 1376 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-3].interm);
@@ -5410,1010 +5772,1484 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 5414 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 175:
-#line 1364 "glslang.y" /* yacc.c:1646 */
+ case 177:
+#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtVoid;
}
-#line 5423 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 176:
-#line 1368 "glslang.y" /* yacc.c:1646 */
+ case 178:
+#line 1390 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 5432 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 177:
-#line 1372 "glslang.y" /* yacc.c:1646 */
+ case 179:
+#line 1394 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 5442 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 178:
-#line 1377 "glslang.y" /* yacc.c:1646 */
+ case 180:
+#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.float16Check((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
-#endif
}
-#line 5454 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 179:
-#line 1384 "glslang.y" /* yacc.c:1646 */
+ case 181:
+#line 1404 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ }
+#line 5824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 182:
+#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ }
+#line 5834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 183:
+#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 5463 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 180:
-#line 1388 "glslang.y" /* yacc.c:1646 */
+ case 184:
+#line 1418 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
-#line 5473 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 181:
-#line 1393 "glslang.y" /* yacc.c:1646 */
+ case 185:
+#line 1423 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt8Check((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt8;
+ }
+#line 5863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 186:
+#line 1428 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt8Check((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint8;
+ }
+#line 5873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 187:
+#line 1433 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ }
+#line 5883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 188:
+#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ }
+#line 5893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 189:
+#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ }
+#line 5903 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 190:
+#line 1448 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ }
+#line 5913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 191:
+#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
}
-#line 5483 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5923 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 182:
-#line 1398 "glslang.y" /* yacc.c:1646 */
+ case 192:
+#line 1458 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
}
-#line 5493 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 183:
-#line 1403 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt16;
-#endif
- }
-#line 5505 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 184:
-#line 1410 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint16;
-#endif
- }
-#line 5517 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 185:
-#line 1417 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- }
-#line 5526 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 186:
-#line 1421 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(2);
- }
-#line 5536 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 187:
-#line 1426 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(3);
- }
-#line 5546 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 188:
-#line 1431 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(4);
- }
-#line 5556 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 189:
-#line 1436 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(2);
- }
-#line 5567 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 190:
-#line 1442 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(3);
- }
-#line 5578 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 191:
-#line 1448 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setVector(4);
- }
-#line 5589 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 192:
-#line 1454 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setVector(2);
-#endif
- }
-#line 5602 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 193:
-#line 1462 "glslang.y" /* yacc.c:1646 */
+#line 1463 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setVector(3);
-#endif
+ (yyval.interm.type).basicType = EbtBool;
}
-#line 5615 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 5942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 194:
-#line 1470 "glslang.y" /* yacc.c:1646 */
+#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
-#ifdef AMD_EXTENSIONS
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(2);
+ }
+#line 5952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 195:
+#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(3);
+ }
+#line 5962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 196:
+#line 1477 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(4);
+ }
+#line 5972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 197:
+#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(2);
+ }
+#line 5983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 198:
+#line 1488 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(3);
+ }
+#line 5994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 199:
+#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 200:
+#line 1500 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 201:
+#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 202:
+#line 1512 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(4);
-#endif
}
-#line 5628 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 195:
-#line 1478 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(2);
- }
-#line 5638 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 196:
-#line 1483 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(3);
- }
-#line 5648 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 197:
-#line 1488 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(4);
- }
-#line 5658 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 198:
-#line 1493 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(2);
- }
-#line 5668 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 199:
-#line 1498 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(3);
- }
-#line 5678 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 200:
-#line 1503 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(4);
- }
-#line 5688 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 201:
-#line 1508 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt64;
- (yyval.interm.type).setVector(2);
- }
-#line 5699 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 202:
-#line 1514 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt64;
- (yyval.interm.type).setVector(3);
- }
-#line 5710 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 6038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 203:
-#line 1520 "glslang.y" /* yacc.c:1646 */
+#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 204:
+#line 1524 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 205:
+#line 1530 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 206:
+#line 1536 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 207:
+#line 1542 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 208:
+#line 1548 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 209:
+#line 1554 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 210:
+#line 1559 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 211:
+#line 1564 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 212:
+#line 1569 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 213:
+#line 1574 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 214:
+#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 215:
+#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt8Check((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt8;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 216:
+#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt8Check((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt8;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 217:
+#line 1596 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt8Check((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt8;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 218:
+#line 1602 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 219:
+#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 220:
+#line 1614 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt16;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 221:
+#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 222:
+#line 1626 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 223:
+#line 1632 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 224:
+#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt64;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 225:
+#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt64;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 226:
+#line 1650 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(4);
}
-#line 5721 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 204:
-#line 1526 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt16;
- (yyval.interm.type).setVector(2);
-#endif
- }
-#line 5734 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 205:
-#line 1534 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt16;
- (yyval.interm.type).setVector(3);
-#endif
- }
-#line 5747 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 206:
-#line 1542 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt16;
- (yyval.interm.type).setVector(4);
-#endif
- }
-#line 5760 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 207:
-#line 1550 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint;
- (yyval.interm.type).setVector(2);
- }
-#line 5771 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 208:
-#line 1556 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint;
- (yyval.interm.type).setVector(3);
- }
-#line 5782 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 209:
-#line 1562 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint;
- (yyval.interm.type).setVector(4);
- }
-#line 5793 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 210:
-#line 1568 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint64;
- (yyval.interm.type).setVector(2);
- }
-#line 5804 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 211:
-#line 1574 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint64;
- (yyval.interm.type).setVector(3);
- }
-#line 5815 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 212:
-#line 1580 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint64;
- (yyval.interm.type).setVector(4);
- }
-#line 5826 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 213:
-#line 1586 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint16;
- (yyval.interm.type).setVector(2);
-#endif
- }
-#line 5839 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 214:
-#line 1594 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint16;
- (yyval.interm.type).setVector(3);
-#endif
- }
-#line 5852 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 215:
-#line 1602 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtUint16;
- (yyval.interm.type).setVector(4);
-#endif
- }
-#line 5865 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 216:
-#line 1610 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(2, 2);
- }
-#line 5875 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 217:
-#line 1615 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(3, 3);
- }
-#line 5885 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 218:
-#line 1620 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(4, 4);
- }
-#line 5895 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 219:
-#line 1625 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(2, 2);
- }
-#line 5905 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 220:
-#line 1630 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(2, 3);
- }
-#line 5915 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 221:
-#line 1635 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(2, 4);
- }
-#line 5925 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 222:
-#line 1640 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(3, 2);
- }
-#line 5935 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 223:
-#line 1645 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(3, 3);
- }
-#line 5945 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 224:
-#line 1650 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(3, 4);
- }
-#line 5955 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 225:
-#line 1655 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(4, 2);
- }
-#line 5965 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 226:
-#line 1660 "glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setMatrix(4, 3);
- }
-#line 5975 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 6296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 227:
-#line 1665 "glslang.y" /* yacc.c:1646 */
+#line 1656 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 228:
+#line 1662 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 229:
+#line 1668 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 230:
+#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt8Check((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint8;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 231:
+#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt8Check((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt8;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 232:
+#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt8Check((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint8;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 233:
+#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 234:
+#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 235:
+#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint16;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 236:
+#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 237:
+#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 238:
+#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 239:
+#line 1728 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint64;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 240:
+#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint64;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 241:
+#line 1740 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtUint64;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 242:
+#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 6471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 243:
+#line 1751 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 6481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 244:
+#line 1756 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 5985 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 228:
-#line 1670 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(2, 2);
- }
-#line 5996 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 229:
-#line 1676 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(3, 3);
- }
-#line 6007 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 230:
-#line 1682 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(4, 4);
- }
-#line 6018 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 231:
-#line 1688 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(2, 2);
- }
-#line 6029 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 232:
-#line 1694 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(2, 3);
- }
-#line 6040 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 233:
-#line 1700 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(2, 4);
- }
-#line 6051 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 234:
-#line 1706 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(3, 2);
- }
-#line 6062 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 235:
-#line 1712 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(3, 3);
- }
-#line 6073 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 236:
-#line 1718 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(3, 4);
- }
-#line 6084 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 237:
-#line 1724 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(4, 2);
- }
-#line 6095 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 238:
-#line 1730 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(4, 3);
- }
-#line 6106 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 239:
-#line 1736 "glslang.y" /* yacc.c:1646 */
- {
- parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtDouble;
- (yyval.interm.type).setMatrix(4, 4);
- }
-#line 6117 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 240:
-#line 1742 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(2, 2);
-#endif
- }
-#line 6130 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 241:
-#line 1750 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(3, 3);
-#endif
- }
-#line 6143 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 242:
-#line 1758 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(4, 4);
-#endif
- }
-#line 6156 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 243:
-#line 1766 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(2, 2);
-#endif
- }
-#line 6169 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 244:
-#line 1774 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(2, 3);
-#endif
- }
-#line 6182 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 6491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 245:
-#line 1782 "glslang.y" /* yacc.c:1646 */
+#line 1761 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(2, 4);
-#endif
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 2);
}
-#line 6195 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 6501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 246:
-#line 1790 "glslang.y" /* yacc.c:1646 */
+#line 1766 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(3, 2);
-#endif
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 3);
}
-#line 6208 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 6511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 247:
-#line 1798 "glslang.y" /* yacc.c:1646 */
+#line 1771 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
-#ifdef AMD_EXTENSIONS
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 4);
+ }
+#line 6521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 248:
+#line 1776 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 2);
+ }
+#line 6531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 249:
+#line 1781 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 6541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 250:
+#line 1786 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 4);
+ }
+#line 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 251:
+#line 1791 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(4, 2);
+ }
+#line 6561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 252:
+#line 1796 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(4, 3);
+ }
+#line 6571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 253:
+#line 1801 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(4, 4);
+ }
+#line 6581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 254:
+#line 1806 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 6592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 255:
+#line 1812 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 6603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 256:
+#line 1818 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 4);
+ }
+#line 6614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 257:
+#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 6625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 258:
+#line 1830 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 3);
+ }
+#line 6636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 259:
+#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 4);
+ }
+#line 6647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 260:
+#line 1842 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 2);
+ }
+#line 6658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 261:
+#line 1848 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 6669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 262:
+#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 4);
+ }
+#line 6680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 263:
+#line 1860 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 2);
+ }
+#line 6691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 264:
+#line 1866 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 3);
+ }
+#line 6702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 265:
+#line 1872 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 4);
+ }
+#line 6713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 266:
+#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 6724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 267:
+#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 3);
-#endif
}
-#line 6221 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 6735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 248:
-#line 1806 "glslang.y" /* yacc.c:1646 */
+ case 268:
+#line 1890 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(3, 4);
-#endif
- }
-#line 6234 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 249:
-#line 1814 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(4, 2);
-#endif
- }
-#line 6247 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 250:
-#line 1822 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
- parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat16;
- (yyval.interm.type).setMatrix(4, 3);
-#endif
- }
-#line 6260 "glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 251:
-#line 1830 "glslang.y" /* yacc.c:1646 */
- {
-#ifdef AMD_EXTENSIONS
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 4);
-#endif
}
-#line 6273 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 6746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 252:
-#line 1838 "glslang.y" /* yacc.c:1646 */
+ case 269:
+#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 6757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 270:
+#line 1902 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(2, 3);
+ }
+#line 6768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 271:
+#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(2, 4);
+ }
+#line 6779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 272:
+#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(3, 2);
+ }
+#line 6790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 273:
+#line 1920 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 6801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 274:
+#line 1926 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(3, 4);
+ }
+#line 6812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 275:
+#line 1932 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(4, 2);
+ }
+#line 6823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 276:
+#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(4, 3);
+ }
+#line 6834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 277:
+#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat16;
+ (yyval.interm.type).setMatrix(4, 4);
+ }
+#line 6845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 278:
+#line 1950 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 6856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 279:
+#line 1956 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 6867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 280:
+#line 1962 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(4, 4);
+ }
+#line 6878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 281:
+#line 1968 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 6889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 282:
+#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 3);
+ }
+#line 6900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 283:
+#line 1980 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 4);
+ }
+#line 6911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 284:
+#line 1986 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 2);
+ }
+#line 6922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 285:
+#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 6933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 286:
+#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(3, 4);
+ }
+#line 6944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 287:
+#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(4, 2);
+ }
+#line 6955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 288:
+#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(4, 3);
+ }
+#line 6966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 289:
+#line 2016 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(4, 4);
+ }
+#line 6977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 290:
+#line 2022 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 6988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 291:
+#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 6999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 292:
+#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 4);
+ }
+#line 7010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 293:
+#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 2);
+ }
+#line 7021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 294:
+#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 3);
+ }
+#line 7032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 295:
+#line 2052 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(2, 4);
+ }
+#line 7043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 296:
+#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 2);
+ }
+#line 7054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 297:
+#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 3);
+ }
+#line 7065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 298:
+#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(3, 4);
+ }
+#line 7076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 299:
+#line 2076 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 2);
+ }
+#line 7087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 300:
+#line 2082 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 3);
+ }
+#line 7098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 301:
+#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtDouble;
+ (yyval.interm.type).setMatrix(4, 4);
+ }
+#line 7109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 302:
+#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAtomicUint;
}
-#line 6283 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 253:
-#line 1843 "glslang.y" /* yacc.c:1646 */
+ case 303:
+#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D);
}
-#line 6293 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 254:
-#line 1848 "glslang.y" /* yacc.c:1646 */
+ case 304:
+#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
}
-#line 6303 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 255:
-#line 1853 "glslang.y" /* yacc.c:1646 */
+ case 305:
+#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd3D);
}
-#line 6313 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 256:
-#line 1858 "glslang.y" /* yacc.c:1646 */
+ case 306:
+#line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube);
}
-#line 6323 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 257:
-#line 1863 "glslang.y" /* yacc.c:1646 */
+ case 307:
+#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
}
-#line 6333 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 258:
-#line 1868 "glslang.y" /* yacc.c:1646 */
+ case 308:
+#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
}
-#line 6343 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 259:
-#line 1873 "glslang.y" /* yacc.c:1646 */
+ case 309:
+#line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
}
-#line 6353 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 260:
-#line 1878 "glslang.y" /* yacc.c:1646 */
+ case 310:
+#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
}
-#line 6363 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 261:
-#line 1883 "glslang.y" /* yacc.c:1646 */
+ case 311:
+#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
}
-#line 6373 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 262:
-#line 1888 "glslang.y" /* yacc.c:1646 */
+ case 312:
+#line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
}
-#line 6383 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 263:
-#line 1893 "glslang.y" /* yacc.c:1646 */
+ case 313:
+#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
}
-#line 6393 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 264:
-#line 1898 "glslang.y" /* yacc.c:1646 */
+ case 314:
+#line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
}
-#line 6403 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 265:
-#line 1903 "glslang.y" /* yacc.c:1646 */
+ case 315:
+#line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
}
-#line 6413 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 266:
-#line 1908 "glslang.y" /* yacc.c:1646 */
+ case 316:
+#line 2164 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6422,11 +7258,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
#endif
}
-#line 6426 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 267:
-#line 1916 "glslang.y" /* yacc.c:1646 */
+ case 317:
+#line 2172 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6435,11 +7271,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
#endif
}
-#line 6439 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 268:
-#line 1924 "glslang.y" /* yacc.c:1646 */
+ case 318:
+#line 2180 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6448,11 +7284,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
#endif
}
-#line 6452 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 269:
-#line 1932 "glslang.y" /* yacc.c:1646 */
+ case 319:
+#line 2188 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6461,11 +7297,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
#endif
}
-#line 6465 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 270:
-#line 1940 "glslang.y" /* yacc.c:1646 */
+ case 320:
+#line 2196 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6474,11 +7310,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
#endif
}
-#line 6478 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 271:
-#line 1948 "glslang.y" /* yacc.c:1646 */
+ case 321:
+#line 2204 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6487,11 +7323,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
#endif
}
-#line 6491 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 272:
-#line 1956 "glslang.y" /* yacc.c:1646 */
+ case 322:
+#line 2212 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6500,11 +7336,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
#endif
}
-#line 6504 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 273:
-#line 1964 "glslang.y" /* yacc.c:1646 */
+ case 323:
+#line 2220 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6513,11 +7349,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
#endif
}
-#line 6517 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 274:
-#line 1972 "glslang.y" /* yacc.c:1646 */
+ case 324:
+#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6526,11 +7362,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
#endif
}
-#line 6530 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 275:
-#line 1980 "glslang.y" /* yacc.c:1646 */
+ case 325:
+#line 2236 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6539,11 +7375,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
#endif
}
-#line 6543 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 276:
-#line 1988 "glslang.y" /* yacc.c:1646 */
+ case 326:
+#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6552,11 +7388,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
#endif
}
-#line 6556 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 277:
-#line 1996 "glslang.y" /* yacc.c:1646 */
+ case 327:
+#line 2252 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6565,11 +7401,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
#endif
}
-#line 6569 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 278:
-#line 2004 "glslang.y" /* yacc.c:1646 */
+ case 328:
+#line 2260 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6578,171 +7414,171 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
#endif
}
-#line 6582 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 279:
-#line 2012 "glslang.y" /* yacc.c:1646 */
+ case 329:
+#line 2268 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D);
}
-#line 6592 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 280:
-#line 2017 "glslang.y" /* yacc.c:1646 */
+ case 330:
+#line 2273 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D);
}
-#line 6602 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 281:
-#line 2022 "glslang.y" /* yacc.c:1646 */
+ case 331:
+#line 2278 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd3D);
}
-#line 6612 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 282:
-#line 2027 "glslang.y" /* yacc.c:1646 */
+ case 332:
+#line 2283 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube);
}
-#line 6622 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 283:
-#line 2032 "glslang.y" /* yacc.c:1646 */
+ case 333:
+#line 2288 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
}
-#line 6632 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 284:
-#line 2037 "glslang.y" /* yacc.c:1646 */
+ case 334:
+#line 2293 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
}
-#line 6642 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 285:
-#line 2042 "glslang.y" /* yacc.c:1646 */
+ case 335:
+#line 2298 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
}
-#line 6652 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 286:
-#line 2047 "glslang.y" /* yacc.c:1646 */
+ case 336:
+#line 2303 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D);
}
-#line 6662 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 287:
-#line 2052 "glslang.y" /* yacc.c:1646 */
+ case 337:
+#line 2308 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D);
}
-#line 6672 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 288:
-#line 2057 "glslang.y" /* yacc.c:1646 */
+ case 338:
+#line 2313 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd3D);
}
-#line 6682 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 289:
-#line 2062 "glslang.y" /* yacc.c:1646 */
+ case 339:
+#line 2318 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube);
}
-#line 6692 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 290:
-#line 2067 "glslang.y" /* yacc.c:1646 */
+ case 340:
+#line 2323 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
}
-#line 6702 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 291:
-#line 2072 "glslang.y" /* yacc.c:1646 */
+ case 341:
+#line 2328 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
}
-#line 6712 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7548 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 292:
-#line 2077 "glslang.y" /* yacc.c:1646 */
+ case 342:
+#line 2333 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
}
-#line 6722 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 293:
-#line 2082 "glslang.y" /* yacc.c:1646 */
+ case 343:
+#line 2338 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect);
}
-#line 6732 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 294:
-#line 2087 "glslang.y" /* yacc.c:1646 */
+ case 344:
+#line 2343 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
}
-#line 6742 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 295:
-#line 2092 "glslang.y" /* yacc.c:1646 */
+ case 345:
+#line 2348 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6751,11 +7587,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect);
#endif
}
-#line 6755 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 296:
-#line 2100 "glslang.y" /* yacc.c:1646 */
+ case 346:
+#line 2356 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6764,41 +7600,41 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true);
#endif
}
-#line 6768 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 297:
-#line 2108 "glslang.y" /* yacc.c:1646 */
+ case 347:
+#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdRect);
}
-#line 6778 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 298:
-#line 2113 "glslang.y" /* yacc.c:1646 */
+ case 348:
+#line 2369 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdRect);
}
-#line 6788 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 299:
-#line 2118 "glslang.y" /* yacc.c:1646 */
+ case 349:
+#line 2374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
}
-#line 6798 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 300:
-#line 2123 "glslang.y" /* yacc.c:1646 */
+ case 350:
+#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6807,41 +7643,41 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer);
#endif
}
-#line 6811 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 301:
-#line 2131 "glslang.y" /* yacc.c:1646 */
+ case 351:
+#line 2387 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
}
-#line 6821 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 302:
-#line 2136 "glslang.y" /* yacc.c:1646 */
+ case 352:
+#line 2392 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
}
-#line 6831 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7667 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 303:
-#line 2141 "glslang.y" /* yacc.c:1646 */
+ case 353:
+#line 2397 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
}
-#line 6841 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 304:
-#line 2146 "glslang.y" /* yacc.c:1646 */
+ case 354:
+#line 2402 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6850,41 +7686,41 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true);
#endif
}
-#line 6854 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 305:
-#line 2154 "glslang.y" /* yacc.c:1646 */
+ case 355:
+#line 2410 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
}
-#line 6864 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 306:
-#line 2159 "glslang.y" /* yacc.c:1646 */
+ case 356:
+#line 2415 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
}
-#line 6874 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 307:
-#line 2164 "glslang.y" /* yacc.c:1646 */
+ case 357:
+#line 2420 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
}
-#line 6884 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 308:
-#line 2169 "glslang.y" /* yacc.c:1646 */
+ case 358:
+#line 2425 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -6893,61 +7729,61 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true);
#endif
}
-#line 6897 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 309:
-#line 2177 "glslang.y" /* yacc.c:1646 */
+ case 359:
+#line 2433 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
}
-#line 6907 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 310:
-#line 2182 "glslang.y" /* yacc.c:1646 */
+ case 360:
+#line 2438 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
}
-#line 6917 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 311:
-#line 2187 "glslang.y" /* yacc.c:1646 */
+ case 361:
+#line 2443 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(false);
}
-#line 6927 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 312:
-#line 2192 "glslang.y" /* yacc.c:1646 */
+ case 362:
+#line 2448 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(true);
}
-#line 6937 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7773 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 313:
-#line 2197 "glslang.y" /* yacc.c:1646 */
+ case 363:
+#line 2453 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
}
-#line 6947 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 314:
-#line 2202 "glslang.y" /* yacc.c:1646 */
+ case 364:
+#line 2458 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -6956,21 +7792,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D);
#endif
}
-#line 6960 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 315:
-#line 2210 "glslang.y" /* yacc.c:1646 */
+ case 365:
+#line 2466 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
}
-#line 6970 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 316:
-#line 2215 "glslang.y" /* yacc.c:1646 */
+ case 366:
+#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -6979,21 +7815,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D);
#endif
}
-#line 6983 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 317:
-#line 2223 "glslang.y" /* yacc.c:1646 */
+ case 367:
+#line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
}
-#line 6993 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 318:
-#line 2228 "glslang.y" /* yacc.c:1646 */
+ case 368:
+#line 2484 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7002,21 +7838,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D);
#endif
}
-#line 7006 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 319:
-#line 2236 "glslang.y" /* yacc.c:1646 */
+ case 369:
+#line 2492 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
}
-#line 7016 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 320:
-#line 2241 "glslang.y" /* yacc.c:1646 */
+ case 370:
+#line 2497 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7025,21 +7861,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube);
#endif
}
-#line 7029 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 321:
-#line 2249 "glslang.y" /* yacc.c:1646 */
+ case 371:
+#line 2505 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
}
-#line 7039 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 322:
-#line 2254 "glslang.y" /* yacc.c:1646 */
+ case 372:
+#line 2510 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7048,21 +7884,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true);
#endif
}
-#line 7052 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 323:
-#line 2262 "glslang.y" /* yacc.c:1646 */
+ case 373:
+#line 2518 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
}
-#line 7062 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 324:
-#line 2267 "glslang.y" /* yacc.c:1646 */
+ case 374:
+#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7071,21 +7907,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true);
#endif
}
-#line 7075 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 325:
-#line 2275 "glslang.y" /* yacc.c:1646 */
+ case 375:
+#line 2531 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
}
-#line 7085 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 326:
-#line 2280 "glslang.y" /* yacc.c:1646 */
+ case 376:
+#line 2536 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7094,161 +7930,161 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true);
#endif
}
-#line 7098 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 327:
-#line 2288 "glslang.y" /* yacc.c:1646 */
+ case 377:
+#line 2544 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
}
-#line 7108 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 328:
-#line 2293 "glslang.y" /* yacc.c:1646 */
+ case 378:
+#line 2549 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
}
-#line 7118 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 329:
-#line 2298 "glslang.y" /* yacc.c:1646 */
+ case 379:
+#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
}
-#line 7128 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 330:
-#line 2303 "glslang.y" /* yacc.c:1646 */
+ case 380:
+#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
}
-#line 7138 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 331:
-#line 2308 "glslang.y" /* yacc.c:1646 */
+ case 381:
+#line 2564 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
}
-#line 7148 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 332:
-#line 2313 "glslang.y" /* yacc.c:1646 */
+ case 382:
+#line 2569 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
}
-#line 7158 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 7994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 333:
-#line 2318 "glslang.y" /* yacc.c:1646 */
+ case 383:
+#line 2574 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
}
-#line 7168 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 334:
-#line 2323 "glslang.y" /* yacc.c:1646 */
+ case 384:
+#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
}
-#line 7178 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 335:
-#line 2328 "glslang.y" /* yacc.c:1646 */
+ case 385:
+#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
}
-#line 7188 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 336:
-#line 2333 "glslang.y" /* yacc.c:1646 */
+ case 386:
+#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
}
-#line 7198 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 337:
-#line 2338 "glslang.y" /* yacc.c:1646 */
+ case 387:
+#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
}
-#line 7208 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 338:
-#line 2343 "glslang.y" /* yacc.c:1646 */
+ case 388:
+#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
}
-#line 7218 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 339:
-#line 2348 "glslang.y" /* yacc.c:1646 */
+ case 389:
+#line 2604 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
}
-#line 7228 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8064 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 340:
-#line 2353 "glslang.y" /* yacc.c:1646 */
+ case 390:
+#line 2609 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
}
-#line 7238 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 341:
-#line 2358 "glslang.y" /* yacc.c:1646 */
+ case 391:
+#line 2614 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
}
-#line 7248 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 342:
-#line 2363 "glslang.y" /* yacc.c:1646 */
+ case 392:
+#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7257,41 +8093,41 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect);
#endif
}
-#line 7261 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 343:
-#line 2371 "glslang.y" /* yacc.c:1646 */
+ case 393:
+#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
}
-#line 7271 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 344:
-#line 2376 "glslang.y" /* yacc.c:1646 */
+ case 394:
+#line 2632 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
}
-#line 7281 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 345:
-#line 2381 "glslang.y" /* yacc.c:1646 */
+ case 395:
+#line 2637 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
}
-#line 7291 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 346:
-#line 2386 "glslang.y" /* yacc.c:1646 */
+ case 396:
+#line 2642 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7300,41 +8136,41 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer);
#endif
}
-#line 7304 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 347:
-#line 2394 "glslang.y" /* yacc.c:1646 */
+ case 397:
+#line 2650 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
}
-#line 7314 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 348:
-#line 2399 "glslang.y" /* yacc.c:1646 */
+ case 398:
+#line 2655 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
}
-#line 7324 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 349:
-#line 2404 "glslang.y" /* yacc.c:1646 */
+ case 399:
+#line 2660 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
}
-#line 7334 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 350:
-#line 2409 "glslang.y" /* yacc.c:1646 */
+ case 400:
+#line 2665 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7343,41 +8179,41 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true);
#endif
}
-#line 7347 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 351:
-#line 2417 "glslang.y" /* yacc.c:1646 */
+ case 401:
+#line 2673 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
}
-#line 7357 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 352:
-#line 2422 "glslang.y" /* yacc.c:1646 */
+ case 402:
+#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
}
-#line 7367 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 353:
-#line 2427 "glslang.y" /* yacc.c:1646 */
+ case 403:
+#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
}
-#line 7377 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 354:
-#line 2432 "glslang.y" /* yacc.c:1646 */
+ case 404:
+#line 2688 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -7386,41 +8222,41 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true);
#endif
}
-#line 7390 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 355:
-#line 2440 "glslang.y" /* yacc.c:1646 */
+ case 405:
+#line 2696 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
}
-#line 7400 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 356:
-#line 2445 "glslang.y" /* yacc.c:1646 */
+ case 406:
+#line 2701 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
}
-#line 7410 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 357:
-#line 2450 "glslang.y" /* yacc.c:1646 */
+ case 407:
+#line 2706 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
}
-#line 7420 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 358:
-#line 2455 "glslang.y" /* yacc.c:1646 */
+ case 408:
+#line 2711 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7429,41 +8265,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D);
#endif
}
-#line 7433 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 359:
-#line 2463 "glslang.y" /* yacc.c:1646 */
+ case 409:
+#line 2719 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
}
-#line 7443 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 360:
-#line 2468 "glslang.y" /* yacc.c:1646 */
+ case 410:
+#line 2724 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
}
-#line 7453 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 361:
-#line 2473 "glslang.y" /* yacc.c:1646 */
+ case 411:
+#line 2729 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
}
-#line 7463 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 362:
-#line 2478 "glslang.y" /* yacc.c:1646 */
+ case 412:
+#line 2734 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7472,41 +8308,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D);
#endif
}
-#line 7476 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 363:
-#line 2486 "glslang.y" /* yacc.c:1646 */
+ case 413:
+#line 2742 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
}
-#line 7486 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 364:
-#line 2491 "glslang.y" /* yacc.c:1646 */
+ case 414:
+#line 2747 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
}
-#line 7496 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 365:
-#line 2496 "glslang.y" /* yacc.c:1646 */
+ case 415:
+#line 2752 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
}
-#line 7506 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 366:
-#line 2501 "glslang.y" /* yacc.c:1646 */
+ case 416:
+#line 2757 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7515,41 +8351,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D);
#endif
}
-#line 7519 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 367:
-#line 2509 "glslang.y" /* yacc.c:1646 */
+ case 417:
+#line 2765 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
}
-#line 7529 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 368:
-#line 2514 "glslang.y" /* yacc.c:1646 */
+ case 418:
+#line 2770 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
}
-#line 7539 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 369:
-#line 2519 "glslang.y" /* yacc.c:1646 */
+ case 419:
+#line 2775 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
}
-#line 7549 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 370:
-#line 2524 "glslang.y" /* yacc.c:1646 */
+ case 420:
+#line 2780 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7558,41 +8394,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect);
#endif
}
-#line 7562 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 371:
-#line 2532 "glslang.y" /* yacc.c:1646 */
+ case 421:
+#line 2788 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
}
-#line 7572 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 372:
-#line 2537 "glslang.y" /* yacc.c:1646 */
+ case 422:
+#line 2793 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
}
-#line 7582 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 373:
-#line 2542 "glslang.y" /* yacc.c:1646 */
+ case 423:
+#line 2798 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
}
-#line 7592 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 374:
-#line 2547 "glslang.y" /* yacc.c:1646 */
+ case 424:
+#line 2803 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7601,41 +8437,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube);
#endif
}
-#line 7605 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 375:
-#line 2555 "glslang.y" /* yacc.c:1646 */
+ case 425:
+#line 2811 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
}
-#line 7615 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 376:
-#line 2560 "glslang.y" /* yacc.c:1646 */
+ case 426:
+#line 2816 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
}
-#line 7625 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 377:
-#line 2565 "glslang.y" /* yacc.c:1646 */
+ case 427:
+#line 2821 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
}
-#line 7635 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 378:
-#line 2570 "glslang.y" /* yacc.c:1646 */
+ case 428:
+#line 2826 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7644,41 +8480,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer);
#endif
}
-#line 7648 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 379:
-#line 2578 "glslang.y" /* yacc.c:1646 */
+ case 429:
+#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
}
-#line 7658 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 380:
-#line 2583 "glslang.y" /* yacc.c:1646 */
+ case 430:
+#line 2839 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
}
-#line 7668 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 381:
-#line 2588 "glslang.y" /* yacc.c:1646 */
+ case 431:
+#line 2844 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
}
-#line 7678 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 382:
-#line 2593 "glslang.y" /* yacc.c:1646 */
+ case 432:
+#line 2849 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7687,41 +8523,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true);
#endif
}
-#line 7691 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 383:
-#line 2601 "glslang.y" /* yacc.c:1646 */
+ case 433:
+#line 2857 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
}
-#line 7701 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 384:
-#line 2606 "glslang.y" /* yacc.c:1646 */
+ case 434:
+#line 2862 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
}
-#line 7711 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 385:
-#line 2611 "glslang.y" /* yacc.c:1646 */
+ case 435:
+#line 2867 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
}
-#line 7721 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 386:
-#line 2616 "glslang.y" /* yacc.c:1646 */
+ case 436:
+#line 2872 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7730,41 +8566,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true);
#endif
}
-#line 7734 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 387:
-#line 2624 "glslang.y" /* yacc.c:1646 */
+ case 437:
+#line 2880 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
}
-#line 7744 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 388:
-#line 2629 "glslang.y" /* yacc.c:1646 */
+ case 438:
+#line 2885 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
}
-#line 7754 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 389:
-#line 2634 "glslang.y" /* yacc.c:1646 */
+ case 439:
+#line 2890 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
}
-#line 7764 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 390:
-#line 2639 "glslang.y" /* yacc.c:1646 */
+ case 440:
+#line 2895 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7773,41 +8609,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true);
#endif
}
-#line 7777 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 391:
-#line 2647 "glslang.y" /* yacc.c:1646 */
+ case 441:
+#line 2903 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
}
-#line 7787 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 392:
-#line 2652 "glslang.y" /* yacc.c:1646 */
+ case 442:
+#line 2908 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
}
-#line 7797 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 393:
-#line 2657 "glslang.y" /* yacc.c:1646 */
+ case 443:
+#line 2913 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
}
-#line 7807 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 394:
-#line 2662 "glslang.y" /* yacc.c:1646 */
+ case 444:
+#line 2918 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7816,41 +8652,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true);
#endif
}
-#line 7820 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 395:
-#line 2670 "glslang.y" /* yacc.c:1646 */
+ case 445:
+#line 2926 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
}
-#line 7830 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 396:
-#line 2675 "glslang.y" /* yacc.c:1646 */
+ case 446:
+#line 2931 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
}
-#line 7840 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 397:
-#line 2680 "glslang.y" /* yacc.c:1646 */
+ case 447:
+#line 2936 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
}
-#line 7850 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 398:
-#line 2685 "glslang.y" /* yacc.c:1646 */
+ case 448:
+#line 2941 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -7859,64 +8695,64 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true);
#endif
}
-#line 7863 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 399:
-#line 2693 "glslang.y" /* yacc.c:1646 */
+ case 449:
+#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
}
-#line 7873 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 400:
-#line 2698 "glslang.y" /* yacc.c:1646 */
+ case 450:
+#line 2954 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
}
-#line 7883 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 401:
-#line 2703 "glslang.y" /* yacc.c:1646 */
+ case 451:
+#line 2959 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ // GL_OES_EGL_image_external
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.external = true;
}
-#line 7894 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 402:
-#line 2709 "glslang.y" /* yacc.c:1646 */
+ case 452:
+#line 2965 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat);
}
-#line 7905 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 403:
-#line 2715 "glslang.y" /* yacc.c:1646 */
+ case 453:
+#line 2971 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat, true);
}
-#line 7916 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 404:
-#line 2721 "glslang.y" /* yacc.c:1646 */
+ case 454:
+#line 2977 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
@@ -7926,11 +8762,11 @@
(yyval.interm.type).sampler.setSubpass(EbtFloat16);
#endif
}
-#line 7930 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 405:
-#line 2730 "glslang.y" /* yacc.c:1646 */
+ case 455:
+#line 2986 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
@@ -7940,65 +8776,65 @@
(yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
#endif
}
-#line 7944 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 406:
-#line 2739 "glslang.y" /* yacc.c:1646 */
+ case 456:
+#line 2995 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt);
}
-#line 7955 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 407:
-#line 2745 "glslang.y" /* yacc.c:1646 */
+ case 457:
+#line 3001 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt, true);
}
-#line 7966 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 408:
-#line 2751 "glslang.y" /* yacc.c:1646 */
+ case 458:
+#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint);
}
-#line 7977 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 409:
-#line 2757 "glslang.y" /* yacc.c:1646 */
+ case 459:
+#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint, true);
}
-#line 7988 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 410:
-#line 2763 "glslang.y" /* yacc.c:1646 */
+ case 460:
+#line 3019 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
}
-#line 7998 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 411:
-#line 2768 "glslang.y" /* yacc.c:1646 */
+ case 461:
+#line 3024 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// This is for user defined type names. The lexical phase looked up the
@@ -8012,47 +8848,47 @@
} else
parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
}
-#line 8016 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 412:
-#line 2784 "glslang.y" /* yacc.c:1646 */
+ case 462:
+#line 3040 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
}
-#line 8026 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 413:
-#line 2789 "glslang.y" /* yacc.c:1646 */
+ case 463:
+#line 3045 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
}
-#line 8036 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 414:
-#line 2794 "glslang.y" /* yacc.c:1646 */
+ case 464:
+#line 3050 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
}
-#line 8046 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 415:
-#line 2802 "glslang.y" /* yacc.c:1646 */
+ case 465:
+#line 3058 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 8052 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 416:
-#line 2802 "glslang.y" /* yacc.c:1646 */
+ case 466:
+#line 3058 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -8064,17 +8900,17 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 8068 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 417:
-#line 2813 "glslang.y" /* yacc.c:1646 */
+ case 467:
+#line 3069 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 8074 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 418:
-#line 2813 "glslang.y" /* yacc.c:1646 */
+ case 468:
+#line 3069 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
(yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -8082,19 +8918,19 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 8086 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 419:
-#line 2823 "glslang.y" /* yacc.c:1646 */
+ case 469:
+#line 3079 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = (yyvsp[0].interm.typeList);
}
-#line 8094 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 420:
-#line 2826 "glslang.y" /* yacc.c:1646 */
+ case 470:
+#line 3082 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -8105,11 +8941,11 @@
(yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
}
}
-#line 8109 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 421:
-#line 2839 "glslang.y" /* yacc.c:1646 */
+ case 471:
+#line 3095 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -8128,11 +8964,11 @@
(*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
}
}
-#line 8132 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 422:
-#line 2857 "glslang.y" /* yacc.c:1646 */
+ case 472:
+#line 3113 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier);
if ((yyvsp[-2].interm.type).arraySizes) {
@@ -8154,38 +8990,38 @@
(*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
}
}
-#line 8158 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 8994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 423:
-#line 2881 "glslang.y" /* yacc.c:1646 */
+ case 473:
+#line 3137 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = new TTypeList;
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 8167 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 424:
-#line 2885 "glslang.y" /* yacc.c:1646 */
+ case 474:
+#line 3141 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 8175 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 425:
-#line 2891 "glslang.y" /* yacc.c:1646 */
+ case 475:
+#line 3147 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeLine).type = new TType(EbtVoid);
(yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
}
-#line 8185 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 426:
-#line 2896 "glslang.y" /* yacc.c:1646 */
+ case 476:
+#line 3152 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0);
@@ -8194,219 +9030,219 @@
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
(yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes);
}
-#line 8198 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 427:
-#line 2907 "glslang.y" /* yacc.c:1646 */
+ case 477:
+#line 3163 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 8206 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 428:
-#line 2910 "glslang.y" /* yacc.c:1646 */
+ case 478:
+#line 3166 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
}
-#line 8217 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 429:
-#line 2916 "glslang.y" /* yacc.c:1646 */
+ case 479:
+#line 3172 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 8228 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9064 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 430:
-#line 2925 "glslang.y" /* yacc.c:1646 */
+ case 480:
+#line 3181 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
}
-#line 8236 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 431:
-#line 2928 "glslang.y" /* yacc.c:1646 */
+ case 481:
+#line 3184 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 8244 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 432:
-#line 2934 "glslang.y" /* yacc.c:1646 */
+ case 482:
+#line 3190 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8250 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 433:
-#line 2938 "glslang.y" /* yacc.c:1646 */
+ case 483:
+#line 3194 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8256 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 434:
-#line 2939 "glslang.y" /* yacc.c:1646 */
+ case 484:
+#line 3195 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8262 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 435:
-#line 2945 "glslang.y" /* yacc.c:1646 */
+ case 485:
+#line 3201 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8268 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 436:
-#line 2946 "glslang.y" /* yacc.c:1646 */
+ case 486:
+#line 3202 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8274 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 437:
-#line 2947 "glslang.y" /* yacc.c:1646 */
+ case 487:
+#line 3203 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8280 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 438:
-#line 2948 "glslang.y" /* yacc.c:1646 */
+ case 488:
+#line 3204 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8286 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 439:
-#line 2949 "glslang.y" /* yacc.c:1646 */
+ case 489:
+#line 3205 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8292 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 440:
-#line 2950 "glslang.y" /* yacc.c:1646 */
+ case 490:
+#line 3206 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8298 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 441:
-#line 2951 "glslang.y" /* yacc.c:1646 */
+ case 491:
+#line 3207 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8304 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 442:
-#line 2955 "glslang.y" /* yacc.c:1646 */
+ case 492:
+#line 3211 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
-#line 8310 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 443:
-#line 2956 "glslang.y" /* yacc.c:1646 */
+ case 493:
+#line 3212 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
}
-#line 8319 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 444:
-#line 2960 "glslang.y" /* yacc.c:1646 */
+ case 494:
+#line 3216 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
}
-#line 8328 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 445:
-#line 2964 "glslang.y" /* yacc.c:1646 */
+ case 495:
+#line 3220 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
}
-#line 8338 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 446:
-#line 2972 "glslang.y" /* yacc.c:1646 */
+ case 496:
+#line 3228 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8344 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 447:
-#line 2973 "glslang.y" /* yacc.c:1646 */
+ case 497:
+#line 3229 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 8350 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 448:
-#line 2977 "glslang.y" /* yacc.c:1646 */
+ case 498:
+#line 3233 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.controlFlowNestingLevel;
}
-#line 8358 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 449:
-#line 2980 "glslang.y" /* yacc.c:1646 */
+ case 499:
+#line 3236 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8367 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 450:
-#line 2984 "glslang.y" /* yacc.c:1646 */
+ case 500:
+#line 3240 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 8377 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 451:
-#line 2989 "glslang.y" /* yacc.c:1646 */
+ case 501:
+#line 3245 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8388 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 452:
-#line 2998 "glslang.y" /* yacc.c:1646 */
+ case 502:
+#line 3254 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
-#line 8396 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 453:
-#line 3001 "glslang.y" /* yacc.c:1646 */
+ case 503:
+#line 3257 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
(yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
}
-#line 8406 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 454:
-#line 3009 "glslang.y" /* yacc.c:1646 */
+ case 504:
+#line 3265 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -8415,11 +9251,11 @@
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
}
}
-#line 8419 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 455:
-#line 3017 "glslang.y" /* yacc.c:1646 */
+ case 505:
+#line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
(yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -8428,76 +9264,76 @@
} else
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 8432 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 456:
-#line 3028 "glslang.y" /* yacc.c:1646 */
+ case 506:
+#line 3284 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
-#line 8438 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 457:
-#line 3029 "glslang.y" /* yacc.c:1646 */
+ case 507:
+#line 3285 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 8444 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 458:
-#line 3033 "glslang.y" /* yacc.c:1646 */
+ case 508:
+#line 3289 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8452 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 459:
-#line 3036 "glslang.y" /* yacc.c:1646 */
+ case 509:
+#line 3292 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8461 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 460:
-#line 3042 "glslang.y" /* yacc.c:1646 */
+ case 510:
+#line 3298 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
(yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
}
-#line 8470 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 461:
-#line 3049 "glslang.y" /* yacc.c:1646 */
+ case 511:
+#line 3305 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
}
-#line 8479 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 462:
-#line 3053 "glslang.y" /* yacc.c:1646 */
+ case 512:
+#line 3309 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 8488 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 463:
-#line 3061 "glslang.y" /* yacc.c:1646 */
+ case 513:
+#line 3317 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
}
-#line 8497 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 464:
-#line 3065 "glslang.y" /* yacc.c:1646 */
+ case 514:
+#line 3321 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
@@ -8508,28 +9344,28 @@
else
(yyval.interm.intermTypedNode) = 0;
}
-#line 8512 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 465:
-#line 3078 "glslang.y" /* yacc.c:1646 */
+ case 515:
+#line 3334 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8520 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 466:
-#line 3081 "glslang.y" /* yacc.c:1646 */
+ case 516:
+#line 3337 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8529 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 467:
-#line 3087 "glslang.y" /* yacc.c:1646 */
+ case 517:
+#line 3343 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel;
@@ -8538,11 +9374,11 @@
parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push();
}
-#line 8542 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 468:
-#line 3095 "glslang.y" /* yacc.c:1646 */
+ case 518:
+#line 3351 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
delete parseContext.switchSequenceStack.back();
@@ -8552,27 +9388,27 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 8556 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 469:
-#line 3107 "glslang.y" /* yacc.c:1646 */
+ case 519:
+#line 3363 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
-#line 8564 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 470:
-#line 3110 "glslang.y" /* yacc.c:1646 */
+ case 520:
+#line 3366 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8572 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 471:
-#line 3116 "glslang.y" /* yacc.c:1646 */
+ case 521:
+#line 3372 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -8585,11 +9421,11 @@
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
}
}
-#line 8589 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 472:
-#line 3128 "glslang.y" /* yacc.c:1646 */
+ case 522:
+#line 3384 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -8599,28 +9435,28 @@
else
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
}
-#line 8603 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 473:
-#line 3140 "glslang.y" /* yacc.c:1646 */
+ case 523:
+#line 3396 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8611 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 474:
-#line 3143 "glslang.y" /* yacc.c:1646 */
+ case 524:
+#line 3399 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8620 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 475:
-#line 3149 "glslang.y" /* yacc.c:1646 */
+ case 525:
+#line 3405 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -8629,11 +9465,11 @@
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 8633 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 476:
-#line 3157 "glslang.y" /* yacc.c:1646 */
+ case 526:
+#line 3413 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -8641,21 +9477,21 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 8645 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 477:
-#line 3164 "glslang.y" /* yacc.c:1646 */
+ case 527:
+#line 3420 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 8655 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 478:
-#line 3169 "glslang.y" /* yacc.c:1646 */
+ case 528:
+#line 3425 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -8667,22 +9503,22 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 8671 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 479:
-#line 3180 "glslang.y" /* yacc.c:1646 */
+ case 529:
+#line 3436 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 8682 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 480:
-#line 3186 "glslang.y" /* yacc.c:1646 */
+ case 530:
+#line 3442 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -8695,81 +9531,81 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 8699 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 481:
-#line 3201 "glslang.y" /* yacc.c:1646 */
+ case 531:
+#line 3457 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8707 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 482:
-#line 3204 "glslang.y" /* yacc.c:1646 */
+ case 532:
+#line 3460 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8715 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 483:
-#line 3210 "glslang.y" /* yacc.c:1646 */
+ case 533:
+#line 3466 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 8723 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 484:
-#line 3213 "glslang.y" /* yacc.c:1646 */
+ case 534:
+#line 3469 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = 0;
}
-#line 8731 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 485:
-#line 3219 "glslang.y" /* yacc.c:1646 */
+ case 535:
+#line 3475 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 8740 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 486:
-#line 3223 "glslang.y" /* yacc.c:1646 */
+ case 536:
+#line 3479 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
}
-#line 8749 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 487:
-#line 3230 "glslang.y" /* yacc.c:1646 */
+ case 537:
+#line 3486 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (parseContext.loopNestingLevel <= 0)
parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
}
-#line 8759 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 488:
-#line 3235 "glslang.y" /* yacc.c:1646 */
+ case 538:
+#line 3491 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
}
-#line 8769 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 489:
-#line 3240 "glslang.y" /* yacc.c:1646 */
+ case 539:
+#line 3496 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -8777,83 +9613,83 @@
if (parseContext.inMain)
parseContext.postEntryPointReturn = true;
}
-#line 8781 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 490:
-#line 3247 "glslang.y" /* yacc.c:1646 */
+ case 540:
+#line 3503 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
}
-#line 8789 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 491:
-#line 3250 "glslang.y" /* yacc.c:1646 */
+ case 541:
+#line 3506 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
}
-#line 8798 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 492:
-#line 3259 "glslang.y" /* yacc.c:1646 */
+ case 542:
+#line 3515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
-#line 8807 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 493:
-#line 3263 "glslang.y" /* yacc.c:1646 */
+ case 543:
+#line 3519 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[0].interm.intermNode) != nullptr) {
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
}
-#line 8818 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 494:
-#line 3272 "glslang.y" /* yacc.c:1646 */
+ case 544:
+#line 3528 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8826 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 495:
-#line 3275 "glslang.y" /* yacc.c:1646 */
+ case 545:
+#line 3531 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 8834 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 496:
-#line 3278 "glslang.y" /* yacc.c:1646 */
+ case 546:
+#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
(yyval.interm.intermNode) = nullptr;
}
-#line 8844 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 497:
-#line 3286 "glslang.y" /* yacc.c:1646 */
+ case 547:
+#line 3542 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
(yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
}
-#line 8853 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 498:
-#line 3290 "glslang.y" /* yacc.c:1646 */
+ case 548:
+#line 3546 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -8869,52 +9705,52 @@
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
(yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
}
-#line 8873 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 499:
-#line 3308 "glslang.y" /* yacc.c:1646 */
+ case 549:
+#line 3564 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
}
-#line 8882 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 500:
-#line 3314 "glslang.y" /* yacc.c:1646 */
+ case 550:
+#line 3570 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = (yyvsp[0].interm.attributes);
}
-#line 8890 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 501:
-#line 3317 "glslang.y" /* yacc.c:1646 */
+ case 551:
+#line 3573 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
}
-#line 8898 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 502:
-#line 3322 "glslang.y" /* yacc.c:1646 */
+ case 552:
+#line 3578 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
}
-#line 8906 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 503:
-#line 3325 "glslang.y" /* yacc.c:1646 */
+ case 553:
+#line 3581 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
}
-#line 8914 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
-#line 8918 "glslang_tab.cpp" /* yacc.c:1646 */
+#line 9754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -9142,5 +9978,5 @@
#endif
return yyresult;
}
-#line 3329 "glslang.y" /* yacc.c:1906 */
+#line 3585 "MachineIndependent/glslang.y" /* yacc.c:1906 */
diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h
index ac6db78..6b07aed 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.4. */
+/* A Bison parser, made by GNU Bison 3.0. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,8 +30,8 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
-#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
-# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED
+#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
+# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 1
@@ -47,350 +47,400 @@
{
ATTRIBUTE = 258,
VARYING = 259,
- CONST = 260,
- BOOL = 261,
- FLOAT = 262,
+ FLOAT16_T = 260,
+ FLOAT = 261,
+ FLOAT32_T = 262,
DOUBLE = 263,
- INT = 264,
- UINT = 265,
- INT64_T = 266,
- UINT64_T = 267,
- INT16_T = 268,
- UINT16_T = 269,
- FLOAT16_T = 270,
- BREAK = 271,
- CONTINUE = 272,
- DO = 273,
- ELSE = 274,
- FOR = 275,
- IF = 276,
- DISCARD = 277,
- RETURN = 278,
- SWITCH = 279,
- CASE = 280,
- DEFAULT = 281,
- SUBROUTINE = 282,
- BVEC2 = 283,
- BVEC3 = 284,
- BVEC4 = 285,
- IVEC2 = 286,
- IVEC3 = 287,
- IVEC4 = 288,
- I64VEC2 = 289,
- I64VEC3 = 290,
- I64VEC4 = 291,
- UVEC2 = 292,
- UVEC3 = 293,
- UVEC4 = 294,
- U64VEC2 = 295,
- U64VEC3 = 296,
- U64VEC4 = 297,
- VEC2 = 298,
- VEC3 = 299,
- VEC4 = 300,
- MAT2 = 301,
- MAT3 = 302,
- MAT4 = 303,
- CENTROID = 304,
- IN = 305,
- OUT = 306,
- INOUT = 307,
- UNIFORM = 308,
- PATCH = 309,
- SAMPLE = 310,
- BUFFER = 311,
- SHARED = 312,
- COHERENT = 313,
- VOLATILE = 314,
- RESTRICT = 315,
- READONLY = 316,
- WRITEONLY = 317,
- DVEC2 = 318,
- DVEC3 = 319,
- DVEC4 = 320,
- DMAT2 = 321,
- DMAT3 = 322,
- DMAT4 = 323,
- F16VEC2 = 324,
- F16VEC3 = 325,
- F16VEC4 = 326,
- F16MAT2 = 327,
- F16MAT3 = 328,
- F16MAT4 = 329,
- I16VEC2 = 330,
- I16VEC3 = 331,
- I16VEC4 = 332,
- U16VEC2 = 333,
- U16VEC3 = 334,
- U16VEC4 = 335,
- NOPERSPECTIVE = 336,
- FLAT = 337,
- SMOOTH = 338,
- LAYOUT = 339,
- __EXPLICITINTERPAMD = 340,
- MAT2X2 = 341,
- MAT2X3 = 342,
- MAT2X4 = 343,
- MAT3X2 = 344,
- MAT3X3 = 345,
- MAT3X4 = 346,
- MAT4X2 = 347,
- MAT4X3 = 348,
- MAT4X4 = 349,
- DMAT2X2 = 350,
- DMAT2X3 = 351,
- DMAT2X4 = 352,
- DMAT3X2 = 353,
- DMAT3X3 = 354,
- DMAT3X4 = 355,
- DMAT4X2 = 356,
- DMAT4X3 = 357,
- DMAT4X4 = 358,
- F16MAT2X2 = 359,
- F16MAT2X3 = 360,
- F16MAT2X4 = 361,
- F16MAT3X2 = 362,
- F16MAT3X3 = 363,
- F16MAT3X4 = 364,
- F16MAT4X2 = 365,
- F16MAT4X3 = 366,
- F16MAT4X4 = 367,
- ATOMIC_UINT = 368,
- SAMPLER1D = 369,
- SAMPLER2D = 370,
- SAMPLER3D = 371,
- SAMPLERCUBE = 372,
- SAMPLER1DSHADOW = 373,
- SAMPLER2DSHADOW = 374,
- SAMPLERCUBESHADOW = 375,
- SAMPLER1DARRAY = 376,
- SAMPLER2DARRAY = 377,
- SAMPLER1DARRAYSHADOW = 378,
- SAMPLER2DARRAYSHADOW = 379,
- ISAMPLER1D = 380,
- ISAMPLER2D = 381,
- ISAMPLER3D = 382,
- ISAMPLERCUBE = 383,
- ISAMPLER1DARRAY = 384,
- ISAMPLER2DARRAY = 385,
- USAMPLER1D = 386,
- USAMPLER2D = 387,
- USAMPLER3D = 388,
- USAMPLERCUBE = 389,
- USAMPLER1DARRAY = 390,
- USAMPLER2DARRAY = 391,
- SAMPLER2DRECT = 392,
- SAMPLER2DRECTSHADOW = 393,
- ISAMPLER2DRECT = 394,
- USAMPLER2DRECT = 395,
- SAMPLERBUFFER = 396,
- ISAMPLERBUFFER = 397,
- USAMPLERBUFFER = 398,
- SAMPLERCUBEARRAY = 399,
- SAMPLERCUBEARRAYSHADOW = 400,
- ISAMPLERCUBEARRAY = 401,
- USAMPLERCUBEARRAY = 402,
- SAMPLER2DMS = 403,
- ISAMPLER2DMS = 404,
- USAMPLER2DMS = 405,
- SAMPLER2DMSARRAY = 406,
- ISAMPLER2DMSARRAY = 407,
- USAMPLER2DMSARRAY = 408,
- SAMPLEREXTERNALOES = 409,
- F16SAMPLER1D = 410,
- F16SAMPLER2D = 411,
- F16SAMPLER3D = 412,
- F16SAMPLER2DRECT = 413,
- F16SAMPLERCUBE = 414,
- F16SAMPLER1DARRAY = 415,
- F16SAMPLER2DARRAY = 416,
- F16SAMPLERCUBEARRAY = 417,
- F16SAMPLERBUFFER = 418,
- F16SAMPLER2DMS = 419,
- F16SAMPLER2DMSARRAY = 420,
- F16SAMPLER1DSHADOW = 421,
- F16SAMPLER2DSHADOW = 422,
- F16SAMPLER1DARRAYSHADOW = 423,
- F16SAMPLER2DARRAYSHADOW = 424,
- F16SAMPLER2DRECTSHADOW = 425,
- F16SAMPLERCUBESHADOW = 426,
- F16SAMPLERCUBEARRAYSHADOW = 427,
- SAMPLER = 428,
- SAMPLERSHADOW = 429,
- TEXTURE1D = 430,
- TEXTURE2D = 431,
- TEXTURE3D = 432,
- TEXTURECUBE = 433,
- TEXTURE1DARRAY = 434,
- TEXTURE2DARRAY = 435,
- ITEXTURE1D = 436,
- ITEXTURE2D = 437,
- ITEXTURE3D = 438,
- ITEXTURECUBE = 439,
- ITEXTURE1DARRAY = 440,
- ITEXTURE2DARRAY = 441,
- UTEXTURE1D = 442,
- UTEXTURE2D = 443,
- UTEXTURE3D = 444,
- UTEXTURECUBE = 445,
- UTEXTURE1DARRAY = 446,
- UTEXTURE2DARRAY = 447,
- TEXTURE2DRECT = 448,
- ITEXTURE2DRECT = 449,
- UTEXTURE2DRECT = 450,
- TEXTUREBUFFER = 451,
- ITEXTUREBUFFER = 452,
- UTEXTUREBUFFER = 453,
- TEXTURECUBEARRAY = 454,
- ITEXTURECUBEARRAY = 455,
- UTEXTURECUBEARRAY = 456,
- TEXTURE2DMS = 457,
- ITEXTURE2DMS = 458,
- UTEXTURE2DMS = 459,
- TEXTURE2DMSARRAY = 460,
- ITEXTURE2DMSARRAY = 461,
- UTEXTURE2DMSARRAY = 462,
- F16TEXTURE1D = 463,
- F16TEXTURE2D = 464,
- F16TEXTURE3D = 465,
- F16TEXTURE2DRECT = 466,
- F16TEXTURECUBE = 467,
- F16TEXTURE1DARRAY = 468,
- F16TEXTURE2DARRAY = 469,
- F16TEXTURECUBEARRAY = 470,
- F16TEXTUREBUFFER = 471,
- F16TEXTURE2DMS = 472,
- F16TEXTURE2DMSARRAY = 473,
- SUBPASSINPUT = 474,
- SUBPASSINPUTMS = 475,
- ISUBPASSINPUT = 476,
- ISUBPASSINPUTMS = 477,
- USUBPASSINPUT = 478,
- USUBPASSINPUTMS = 479,
- F16SUBPASSINPUT = 480,
- F16SUBPASSINPUTMS = 481,
- IMAGE1D = 482,
- IIMAGE1D = 483,
- UIMAGE1D = 484,
- IMAGE2D = 485,
- IIMAGE2D = 486,
- UIMAGE2D = 487,
- IMAGE3D = 488,
- IIMAGE3D = 489,
- UIMAGE3D = 490,
- IMAGE2DRECT = 491,
- IIMAGE2DRECT = 492,
- UIMAGE2DRECT = 493,
- IMAGECUBE = 494,
- IIMAGECUBE = 495,
- UIMAGECUBE = 496,
- IMAGEBUFFER = 497,
- IIMAGEBUFFER = 498,
- UIMAGEBUFFER = 499,
- IMAGE1DARRAY = 500,
- IIMAGE1DARRAY = 501,
- UIMAGE1DARRAY = 502,
- IMAGE2DARRAY = 503,
- IIMAGE2DARRAY = 504,
- UIMAGE2DARRAY = 505,
- IMAGECUBEARRAY = 506,
- IIMAGECUBEARRAY = 507,
- UIMAGECUBEARRAY = 508,
- IMAGE2DMS = 509,
- IIMAGE2DMS = 510,
- UIMAGE2DMS = 511,
- IMAGE2DMSARRAY = 512,
- IIMAGE2DMSARRAY = 513,
- UIMAGE2DMSARRAY = 514,
- F16IMAGE1D = 515,
- F16IMAGE2D = 516,
- F16IMAGE3D = 517,
- F16IMAGE2DRECT = 518,
- F16IMAGECUBE = 519,
- F16IMAGE1DARRAY = 520,
- F16IMAGE2DARRAY = 521,
- F16IMAGECUBEARRAY = 522,
- F16IMAGEBUFFER = 523,
- F16IMAGE2DMS = 524,
- F16IMAGE2DMSARRAY = 525,
- STRUCT = 526,
- VOID = 527,
- WHILE = 528,
- IDENTIFIER = 529,
- TYPE_NAME = 530,
- FLOATCONSTANT = 531,
- DOUBLECONSTANT = 532,
- INTCONSTANT = 533,
- UINTCONSTANT = 534,
- INT64CONSTANT = 535,
- UINT64CONSTANT = 536,
- INT16CONSTANT = 537,
- UINT16CONSTANT = 538,
- BOOLCONSTANT = 539,
- FLOAT16CONSTANT = 540,
- LEFT_OP = 541,
- RIGHT_OP = 542,
- INC_OP = 543,
- DEC_OP = 544,
- LE_OP = 545,
- GE_OP = 546,
- EQ_OP = 547,
- NE_OP = 548,
- AND_OP = 549,
- OR_OP = 550,
- XOR_OP = 551,
- MUL_ASSIGN = 552,
- DIV_ASSIGN = 553,
- ADD_ASSIGN = 554,
- MOD_ASSIGN = 555,
- LEFT_ASSIGN = 556,
- RIGHT_ASSIGN = 557,
- AND_ASSIGN = 558,
- XOR_ASSIGN = 559,
- OR_ASSIGN = 560,
- SUB_ASSIGN = 561,
- LEFT_PAREN = 562,
- RIGHT_PAREN = 563,
- LEFT_BRACKET = 564,
- RIGHT_BRACKET = 565,
- LEFT_BRACE = 566,
- RIGHT_BRACE = 567,
- DOT = 568,
- COMMA = 569,
- COLON = 570,
- EQUAL = 571,
- SEMICOLON = 572,
- BANG = 573,
- DASH = 574,
- TILDE = 575,
- PLUS = 576,
- STAR = 577,
- SLASH = 578,
- PERCENT = 579,
- LEFT_ANGLE = 580,
- RIGHT_ANGLE = 581,
- VERTICAL_BAR = 582,
- CARET = 583,
- AMPERSAND = 584,
- QUESTION = 585,
- INVARIANT = 586,
- PRECISE = 587,
- HIGH_PRECISION = 588,
- MEDIUM_PRECISION = 589,
- LOW_PRECISION = 590,
- PRECISION = 591,
- PACKED = 592,
- RESOURCE = 593,
- SUPERP = 594
+ FLOAT64_T = 264,
+ CONST = 265,
+ BOOL = 266,
+ INT = 267,
+ UINT = 268,
+ INT64_T = 269,
+ UINT64_T = 270,
+ INT32_T = 271,
+ UINT32_T = 272,
+ INT16_T = 273,
+ UINT16_T = 274,
+ INT8_T = 275,
+ UINT8_T = 276,
+ BREAK = 277,
+ CONTINUE = 278,
+ DO = 279,
+ ELSE = 280,
+ FOR = 281,
+ IF = 282,
+ DISCARD = 283,
+ RETURN = 284,
+ SWITCH = 285,
+ CASE = 286,
+ DEFAULT = 287,
+ SUBROUTINE = 288,
+ BVEC2 = 289,
+ BVEC3 = 290,
+ BVEC4 = 291,
+ IVEC2 = 292,
+ IVEC3 = 293,
+ IVEC4 = 294,
+ UVEC2 = 295,
+ UVEC3 = 296,
+ UVEC4 = 297,
+ I64VEC2 = 298,
+ I64VEC3 = 299,
+ I64VEC4 = 300,
+ U64VEC2 = 301,
+ U64VEC3 = 302,
+ U64VEC4 = 303,
+ I32VEC2 = 304,
+ I32VEC3 = 305,
+ I32VEC4 = 306,
+ U32VEC2 = 307,
+ U32VEC3 = 308,
+ U32VEC4 = 309,
+ I16VEC2 = 310,
+ I16VEC3 = 311,
+ I16VEC4 = 312,
+ U16VEC2 = 313,
+ U16VEC3 = 314,
+ U16VEC4 = 315,
+ I8VEC2 = 316,
+ I8VEC3 = 317,
+ I8VEC4 = 318,
+ U8VEC2 = 319,
+ U8VEC3 = 320,
+ U8VEC4 = 321,
+ VEC2 = 322,
+ VEC3 = 323,
+ VEC4 = 324,
+ MAT2 = 325,
+ MAT3 = 326,
+ MAT4 = 327,
+ CENTROID = 328,
+ IN = 329,
+ OUT = 330,
+ INOUT = 331,
+ UNIFORM = 332,
+ PATCH = 333,
+ SAMPLE = 334,
+ BUFFER = 335,
+ SHARED = 336,
+ COHERENT = 337,
+ VOLATILE = 338,
+ RESTRICT = 339,
+ READONLY = 340,
+ WRITEONLY = 341,
+ DVEC2 = 342,
+ DVEC3 = 343,
+ DVEC4 = 344,
+ DMAT2 = 345,
+ DMAT3 = 346,
+ DMAT4 = 347,
+ F16VEC2 = 348,
+ F16VEC3 = 349,
+ F16VEC4 = 350,
+ F16MAT2 = 351,
+ F16MAT3 = 352,
+ F16MAT4 = 353,
+ F32VEC2 = 354,
+ F32VEC3 = 355,
+ F32VEC4 = 356,
+ F32MAT2 = 357,
+ F32MAT3 = 358,
+ F32MAT4 = 359,
+ F64VEC2 = 360,
+ F64VEC3 = 361,
+ F64VEC4 = 362,
+ F64MAT2 = 363,
+ F64MAT3 = 364,
+ F64MAT4 = 365,
+ NOPERSPECTIVE = 366,
+ FLAT = 367,
+ SMOOTH = 368,
+ LAYOUT = 369,
+ __EXPLICITINTERPAMD = 370,
+ MAT2X2 = 371,
+ MAT2X3 = 372,
+ MAT2X4 = 373,
+ MAT3X2 = 374,
+ MAT3X3 = 375,
+ MAT3X4 = 376,
+ MAT4X2 = 377,
+ MAT4X3 = 378,
+ MAT4X4 = 379,
+ DMAT2X2 = 380,
+ DMAT2X3 = 381,
+ DMAT2X4 = 382,
+ DMAT3X2 = 383,
+ DMAT3X3 = 384,
+ DMAT3X4 = 385,
+ DMAT4X2 = 386,
+ DMAT4X3 = 387,
+ DMAT4X4 = 388,
+ F16MAT2X2 = 389,
+ F16MAT2X3 = 390,
+ F16MAT2X4 = 391,
+ F16MAT3X2 = 392,
+ F16MAT3X3 = 393,
+ F16MAT3X4 = 394,
+ F16MAT4X2 = 395,
+ F16MAT4X3 = 396,
+ F16MAT4X4 = 397,
+ F32MAT2X2 = 398,
+ F32MAT2X3 = 399,
+ F32MAT2X4 = 400,
+ F32MAT3X2 = 401,
+ F32MAT3X3 = 402,
+ F32MAT3X4 = 403,
+ F32MAT4X2 = 404,
+ F32MAT4X3 = 405,
+ F32MAT4X4 = 406,
+ F64MAT2X2 = 407,
+ F64MAT2X3 = 408,
+ F64MAT2X4 = 409,
+ F64MAT3X2 = 410,
+ F64MAT3X3 = 411,
+ F64MAT3X4 = 412,
+ F64MAT4X2 = 413,
+ F64MAT4X3 = 414,
+ F64MAT4X4 = 415,
+ ATOMIC_UINT = 416,
+ SAMPLER1D = 417,
+ SAMPLER2D = 418,
+ SAMPLER3D = 419,
+ SAMPLERCUBE = 420,
+ SAMPLER1DSHADOW = 421,
+ SAMPLER2DSHADOW = 422,
+ SAMPLERCUBESHADOW = 423,
+ SAMPLER1DARRAY = 424,
+ SAMPLER2DARRAY = 425,
+ SAMPLER1DARRAYSHADOW = 426,
+ SAMPLER2DARRAYSHADOW = 427,
+ ISAMPLER1D = 428,
+ ISAMPLER2D = 429,
+ ISAMPLER3D = 430,
+ ISAMPLERCUBE = 431,
+ ISAMPLER1DARRAY = 432,
+ ISAMPLER2DARRAY = 433,
+ USAMPLER1D = 434,
+ USAMPLER2D = 435,
+ USAMPLER3D = 436,
+ USAMPLERCUBE = 437,
+ USAMPLER1DARRAY = 438,
+ USAMPLER2DARRAY = 439,
+ SAMPLER2DRECT = 440,
+ SAMPLER2DRECTSHADOW = 441,
+ ISAMPLER2DRECT = 442,
+ USAMPLER2DRECT = 443,
+ SAMPLERBUFFER = 444,
+ ISAMPLERBUFFER = 445,
+ USAMPLERBUFFER = 446,
+ SAMPLERCUBEARRAY = 447,
+ SAMPLERCUBEARRAYSHADOW = 448,
+ ISAMPLERCUBEARRAY = 449,
+ USAMPLERCUBEARRAY = 450,
+ SAMPLER2DMS = 451,
+ ISAMPLER2DMS = 452,
+ USAMPLER2DMS = 453,
+ SAMPLER2DMSARRAY = 454,
+ ISAMPLER2DMSARRAY = 455,
+ USAMPLER2DMSARRAY = 456,
+ SAMPLEREXTERNALOES = 457,
+ F16SAMPLER1D = 458,
+ F16SAMPLER2D = 459,
+ F16SAMPLER3D = 460,
+ F16SAMPLER2DRECT = 461,
+ F16SAMPLERCUBE = 462,
+ F16SAMPLER1DARRAY = 463,
+ F16SAMPLER2DARRAY = 464,
+ F16SAMPLERCUBEARRAY = 465,
+ F16SAMPLERBUFFER = 466,
+ F16SAMPLER2DMS = 467,
+ F16SAMPLER2DMSARRAY = 468,
+ F16SAMPLER1DSHADOW = 469,
+ F16SAMPLER2DSHADOW = 470,
+ F16SAMPLER1DARRAYSHADOW = 471,
+ F16SAMPLER2DARRAYSHADOW = 472,
+ F16SAMPLER2DRECTSHADOW = 473,
+ F16SAMPLERCUBESHADOW = 474,
+ F16SAMPLERCUBEARRAYSHADOW = 475,
+ SAMPLER = 476,
+ SAMPLERSHADOW = 477,
+ TEXTURE1D = 478,
+ TEXTURE2D = 479,
+ TEXTURE3D = 480,
+ TEXTURECUBE = 481,
+ TEXTURE1DARRAY = 482,
+ TEXTURE2DARRAY = 483,
+ ITEXTURE1D = 484,
+ ITEXTURE2D = 485,
+ ITEXTURE3D = 486,
+ ITEXTURECUBE = 487,
+ ITEXTURE1DARRAY = 488,
+ ITEXTURE2DARRAY = 489,
+ UTEXTURE1D = 490,
+ UTEXTURE2D = 491,
+ UTEXTURE3D = 492,
+ UTEXTURECUBE = 493,
+ UTEXTURE1DARRAY = 494,
+ UTEXTURE2DARRAY = 495,
+ TEXTURE2DRECT = 496,
+ ITEXTURE2DRECT = 497,
+ UTEXTURE2DRECT = 498,
+ TEXTUREBUFFER = 499,
+ ITEXTUREBUFFER = 500,
+ UTEXTUREBUFFER = 501,
+ TEXTURECUBEARRAY = 502,
+ ITEXTURECUBEARRAY = 503,
+ UTEXTURECUBEARRAY = 504,
+ TEXTURE2DMS = 505,
+ ITEXTURE2DMS = 506,
+ UTEXTURE2DMS = 507,
+ TEXTURE2DMSARRAY = 508,
+ ITEXTURE2DMSARRAY = 509,
+ UTEXTURE2DMSARRAY = 510,
+ F16TEXTURE1D = 511,
+ F16TEXTURE2D = 512,
+ F16TEXTURE3D = 513,
+ F16TEXTURE2DRECT = 514,
+ F16TEXTURECUBE = 515,
+ F16TEXTURE1DARRAY = 516,
+ F16TEXTURE2DARRAY = 517,
+ F16TEXTURECUBEARRAY = 518,
+ F16TEXTUREBUFFER = 519,
+ F16TEXTURE2DMS = 520,
+ F16TEXTURE2DMSARRAY = 521,
+ SUBPASSINPUT = 522,
+ SUBPASSINPUTMS = 523,
+ ISUBPASSINPUT = 524,
+ ISUBPASSINPUTMS = 525,
+ USUBPASSINPUT = 526,
+ USUBPASSINPUTMS = 527,
+ F16SUBPASSINPUT = 528,
+ F16SUBPASSINPUTMS = 529,
+ IMAGE1D = 530,
+ IIMAGE1D = 531,
+ UIMAGE1D = 532,
+ IMAGE2D = 533,
+ IIMAGE2D = 534,
+ UIMAGE2D = 535,
+ IMAGE3D = 536,
+ IIMAGE3D = 537,
+ UIMAGE3D = 538,
+ IMAGE2DRECT = 539,
+ IIMAGE2DRECT = 540,
+ UIMAGE2DRECT = 541,
+ IMAGECUBE = 542,
+ IIMAGECUBE = 543,
+ UIMAGECUBE = 544,
+ IMAGEBUFFER = 545,
+ IIMAGEBUFFER = 546,
+ UIMAGEBUFFER = 547,
+ IMAGE1DARRAY = 548,
+ IIMAGE1DARRAY = 549,
+ UIMAGE1DARRAY = 550,
+ IMAGE2DARRAY = 551,
+ IIMAGE2DARRAY = 552,
+ UIMAGE2DARRAY = 553,
+ IMAGECUBEARRAY = 554,
+ IIMAGECUBEARRAY = 555,
+ UIMAGECUBEARRAY = 556,
+ IMAGE2DMS = 557,
+ IIMAGE2DMS = 558,
+ UIMAGE2DMS = 559,
+ IMAGE2DMSARRAY = 560,
+ IIMAGE2DMSARRAY = 561,
+ UIMAGE2DMSARRAY = 562,
+ F16IMAGE1D = 563,
+ F16IMAGE2D = 564,
+ F16IMAGE3D = 565,
+ F16IMAGE2DRECT = 566,
+ F16IMAGECUBE = 567,
+ F16IMAGE1DARRAY = 568,
+ F16IMAGE2DARRAY = 569,
+ F16IMAGECUBEARRAY = 570,
+ F16IMAGEBUFFER = 571,
+ F16IMAGE2DMS = 572,
+ F16IMAGE2DMSARRAY = 573,
+ STRUCT = 574,
+ VOID = 575,
+ WHILE = 576,
+ IDENTIFIER = 577,
+ TYPE_NAME = 578,
+ FLOATCONSTANT = 579,
+ DOUBLECONSTANT = 580,
+ INT16CONSTANT = 581,
+ UINT16CONSTANT = 582,
+ INT32CONSTANT = 583,
+ UINT32CONSTANT = 584,
+ INTCONSTANT = 585,
+ UINTCONSTANT = 586,
+ INT64CONSTANT = 587,
+ UINT64CONSTANT = 588,
+ BOOLCONSTANT = 589,
+ FLOAT16CONSTANT = 590,
+ LEFT_OP = 591,
+ RIGHT_OP = 592,
+ INC_OP = 593,
+ DEC_OP = 594,
+ LE_OP = 595,
+ GE_OP = 596,
+ EQ_OP = 597,
+ NE_OP = 598,
+ AND_OP = 599,
+ OR_OP = 600,
+ XOR_OP = 601,
+ MUL_ASSIGN = 602,
+ DIV_ASSIGN = 603,
+ ADD_ASSIGN = 604,
+ MOD_ASSIGN = 605,
+ LEFT_ASSIGN = 606,
+ RIGHT_ASSIGN = 607,
+ AND_ASSIGN = 608,
+ XOR_ASSIGN = 609,
+ OR_ASSIGN = 610,
+ SUB_ASSIGN = 611,
+ LEFT_PAREN = 612,
+ RIGHT_PAREN = 613,
+ LEFT_BRACKET = 614,
+ RIGHT_BRACKET = 615,
+ LEFT_BRACE = 616,
+ RIGHT_BRACE = 617,
+ DOT = 618,
+ COMMA = 619,
+ COLON = 620,
+ EQUAL = 621,
+ SEMICOLON = 622,
+ BANG = 623,
+ DASH = 624,
+ TILDE = 625,
+ PLUS = 626,
+ STAR = 627,
+ SLASH = 628,
+ PERCENT = 629,
+ LEFT_ANGLE = 630,
+ RIGHT_ANGLE = 631,
+ VERTICAL_BAR = 632,
+ CARET = 633,
+ AMPERSAND = 634,
+ QUESTION = 635,
+ INVARIANT = 636,
+ PRECISE = 637,
+ HIGH_PRECISION = 638,
+ MEDIUM_PRECISION = 639,
+ LOW_PRECISION = 640,
+ PRECISION = 641,
+ PACKED = 642,
+ RESOURCE = 643,
+ SUPERP = 644
};
#endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
+typedef union YYSTYPE YYSTYPE;
union YYSTYPE
{
-#line 69 "glslang.y" /* yacc.c:1909 */
+#line 70 "MachineIndependent/glslang.y" /* yacc.c:1909 */
struct {
glslang::TSourceLoc loc;
@@ -425,10 +475,8 @@
};
} interm;
-#line 429 "glslang_tab.cpp.h" /* yacc.c:1909 */
+#line 479 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */
};
-
-typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
@@ -437,4 +485,4 @@
int yyparse (glslang::TParseContext* pParseContext);
-#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */
+#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index bb8067c..1775e1d 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2012-2016 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -224,48 +225,192 @@
case EOpPreIncrement: out.debug << "Pre-Increment"; break;
case EOpPreDecrement: out.debug << "Pre-Decrement"; break;
+ // * -> bool
+ case EOpConvInt8ToBool: out.debug << "Convert int8_t to bool"; break;
+ case EOpConvUint8ToBool: out.debug << "Convert uint8_t to bool"; break;
+ case EOpConvInt16ToBool: out.debug << "Convert int16_t to bool"; break;
+ case EOpConvUint16ToBool: out.debug << "Convert uint16_t to bool";break;
case EOpConvIntToBool: out.debug << "Convert int to bool"; break;
case EOpConvUintToBool: out.debug << "Convert uint to bool"; break;
- case EOpConvFloatToBool: out.debug << "Convert float to bool"; break;
- case EOpConvDoubleToBool: out.debug << "Convert double to bool"; break;
case EOpConvInt64ToBool: out.debug << "Convert int64 to bool"; break;
case EOpConvUint64ToBool: out.debug << "Convert uint64 to bool"; break;
- case EOpConvIntToFloat: out.debug << "Convert int to float"; break;
- case EOpConvUintToFloat: out.debug << "Convert uint to float"; break;
- case EOpConvDoubleToFloat: out.debug << "Convert double to float"; break;
- case EOpConvInt64ToFloat: out.debug << "Convert int64 to float"; break;
- case EOpConvUint64ToFloat: out.debug << "Convert uint64 to float"; break;
- case EOpConvBoolToFloat: out.debug << "Convert bool to float"; break;
- case EOpConvUintToInt: out.debug << "Convert uint to int"; break;
- case EOpConvFloatToInt: out.debug << "Convert float to int"; break;
- case EOpConvDoubleToInt: out.debug << "Convert double to int"; break;
- case EOpConvBoolToInt: out.debug << "Convert bool to int"; break;
- case EOpConvInt64ToInt: out.debug << "Convert int64 to int"; break;
- case EOpConvUint64ToInt: out.debug << "Convert uint64 to int"; break;
- case EOpConvIntToUint: out.debug << "Convert int to uint"; break;
- case EOpConvFloatToUint: out.debug << "Convert float to uint"; break;
- case EOpConvDoubleToUint: out.debug << "Convert double to uint"; break;
+ case EOpConvFloat16ToBool: out.debug << "Convert float16_t to bool"; break;
+ case EOpConvFloatToBool: out.debug << "Convert float to bool"; break;
+ case EOpConvDoubleToBool: out.debug << "Convert double to bool"; break;
+
+ // bool -> *
+ case EOpConvBoolToInt8: out.debug << "Convert bool to int8_t"; break;
+ case EOpConvBoolToUint8: out.debug << "Convert bool to uint8_t"; break;
+ case EOpConvBoolToInt16: out.debug << "Convert bool to in16t_t"; break;
+ case EOpConvBoolToUint16: out.debug << "Convert bool to uint16_t";break;
+ case EOpConvBoolToInt: out.debug << "Convert bool to int" ; break;
case EOpConvBoolToUint: out.debug << "Convert bool to uint"; break;
- case EOpConvInt64ToUint: out.debug << "Convert int64 to uint"; break;
- case EOpConvUint64ToUint: out.debug << "Convert uint64 to uint"; break;
+ case EOpConvBoolToInt64: out.debug << "Convert bool to int64"; break;
+ case EOpConvBoolToUint64: out.debug << "Convert bool to uint64";break;
+ case EOpConvBoolToFloat16: out.debug << "Convert bool to float16_t"; break;
+ case EOpConvBoolToFloat: out.debug << "Convert bool to float"; break;
+ case EOpConvBoolToDouble: out.debug << "Convert bool to double"; break;
+
+ // int8_t -> (u)int*
+ case EOpConvInt8ToInt16: out.debug << "Convert int8_t to int16_t";break;
+ case EOpConvInt8ToInt: out.debug << "Convert int8_t to int"; break;
+ case EOpConvInt8ToInt64: out.debug << "Convert int8_t to int64"; break;
+ case EOpConvInt8ToUint8: out.debug << "Convert int8_t to uint8_t";break;
+ case EOpConvInt8ToUint16: out.debug << "Convert int8_t to uint16_t";break;
+ case EOpConvInt8ToUint: out.debug << "Convert int8_t to uint"; break;
+ case EOpConvInt8ToUint64: out.debug << "Convert int8_t to uint64"; break;
+
+ // uint8_t -> (u)int*
+ case EOpConvUint8ToInt8: out.debug << "Convert uint8_t to int8_t";break;
+ case EOpConvUint8ToInt16: out.debug << "Convert uint8_t to int16_t";break;
+ case EOpConvUint8ToInt: out.debug << "Convert uint8_t to int"; break;
+ case EOpConvUint8ToInt64: out.debug << "Convert uint8_t to int64"; break;
+ case EOpConvUint8ToUint16: out.debug << "Convert uint8_t to uint16_t";break;
+ case EOpConvUint8ToUint: out.debug << "Convert uint8_t to uint"; break;
+ case EOpConvUint8ToUint64: out.debug << "Convert uint8_t to uint64"; break;
+
+ // int8_t -> float*
+ case EOpConvInt8ToFloat16: out.debug << "Convert int8_t to float16_t";break;
+ case EOpConvInt8ToFloat: out.debug << "Convert int8_t to float"; break;
+ case EOpConvInt8ToDouble: out.debug << "Convert int8_t to double"; break;
+
+ // uint8_t -> float*
+ case EOpConvUint8ToFloat16: out.debug << "Convert uint8_t to float16_t";break;
+ case EOpConvUint8ToFloat: out.debug << "Convert uint8_t to float"; break;
+ case EOpConvUint8ToDouble: out.debug << "Convert uint8_t to double"; break;
+
+ // int16_t -> (u)int*
+ case EOpConvInt16ToInt8: out.debug << "Convert int16_t to int8_t";break;
+ case EOpConvInt16ToInt: out.debug << "Convert int16_t to int"; break;
+ case EOpConvInt16ToInt64: out.debug << "Convert int16_t to int64"; break;
+ case EOpConvInt16ToUint8: out.debug << "Convert int16_t to uint8_t";break;
+ case EOpConvInt16ToUint16: out.debug << "Convert int16_t to uint16_t";break;
+ case EOpConvInt16ToUint: out.debug << "Convert int16_t to uint"; break;
+ case EOpConvInt16ToUint64: out.debug << "Convert int16_t to uint64"; break;
+
+ // int16_t -> float*
+ case EOpConvInt16ToFloat16: out.debug << "Convert int16_t to float16_t";break;
+ case EOpConvInt16ToFloat: out.debug << "Convert int16_t to float"; break;
+ case EOpConvInt16ToDouble: out.debug << "Convert int16_t to double"; break;
+
+ // uint16_t -> (u)int*
+ case EOpConvUint16ToInt8: out.debug << "Convert uint16_t to int8_t";break;
+ case EOpConvUint16ToInt16: out.debug << "Convert uint16_t to int16_t";break;
+ case EOpConvUint16ToInt: out.debug << "Convert uint16_t to int"; break;
+ case EOpConvUint16ToInt64: out.debug << "Convert uint16_t to int64"; break;
+ case EOpConvUint16ToUint8: out.debug << "Convert uint16_t to uint8_t";break;
+ case EOpConvUint16ToUint: out.debug << "Convert uint16_t to uint"; break;
+ case EOpConvUint16ToUint64: out.debug << "Convert uint16_t to uint64"; break;
+
+ // uint16_t -> float*
+ case EOpConvUint16ToFloat16: out.debug << "Convert uint16_t to float16_t";break;
+ case EOpConvUint16ToFloat: out.debug << "Convert uint16_t to float"; break;
+ case EOpConvUint16ToDouble: out.debug << "Convert uint16_t to double"; break;
+
+ // int32_t -> (u)int*
+ case EOpConvIntToInt8: out.debug << "Convert int to int8_t";break;
+ case EOpConvIntToInt16: out.debug << "Convert int to int16_t";break;
+ case EOpConvIntToInt64: out.debug << "Convert int to int64"; break;
+ case EOpConvIntToUint8: out.debug << "Convert int to uint8_t";break;
+ case EOpConvIntToUint16: out.debug << "Convert int to uint16_t";break;
+ case EOpConvIntToUint: out.debug << "Convert int to uint"; break;
+ case EOpConvIntToUint64: out.debug << "Convert int to uint64"; break;
+
+ // int32_t -> float*
+ case EOpConvIntToFloat16: out.debug << "Convert int to float16_t";break;
+ case EOpConvIntToFloat: out.debug << "Convert int to float"; break;
case EOpConvIntToDouble: out.debug << "Convert int to double"; break;
- case EOpConvUintToDouble: out.debug << "Convert uint to double"; break;
- case EOpConvFloatToDouble: out.debug << "Convert float to double"; break;
- case EOpConvBoolToDouble: out.debug << "Convert bool to double"; break;
- case EOpConvInt64ToDouble: out.debug << "Convert int64 to double"; break;
- case EOpConvUint64ToDouble: out.debug << "Convert uint64 to double"; break;
- case EOpConvBoolToInt64: out.debug << "Convert bool to int64"; break;
- case EOpConvIntToInt64: out.debug << "Convert int to int64"; break;
+
+ // uint32_t -> (u)int*
+ case EOpConvUintToInt8: out.debug << "Convert uint to int8_t";break;
+ case EOpConvUintToInt16: out.debug << "Convert uint to int16_t";break;
+ case EOpConvUintToInt: out.debug << "Convert uint to int";break;
case EOpConvUintToInt64: out.debug << "Convert uint to int64"; break;
- case EOpConvFloatToInt64: out.debug << "Convert float to int64"; break;
- case EOpConvDoubleToInt64: out.debug << "Convert double to int64"; break;
- case EOpConvUint64ToInt64: out.debug << "Convert uint64 to int64"; break;
- case EOpConvBoolToUint64: out.debug << "Convert bool to uint64"; break;
- case EOpConvIntToUint64: out.debug << "Convert int to uint64"; break;
- case EOpConvUintToUint64: out.debug << "Convert uint to uint64"; break;
+ case EOpConvUintToUint8: out.debug << "Convert uint to uint8_t";break;
+ case EOpConvUintToUint16: out.debug << "Convert uint to uint16_t";break;
+ case EOpConvUintToUint64: out.debug << "Convert uint to uint64"; break;
+
+ // uint32_t -> float*
+ case EOpConvUintToFloat16: out.debug << "Convert uint to float16_t";break;
+ case EOpConvUintToFloat: out.debug << "Convert uint to float"; break;
+ case EOpConvUintToDouble: out.debug << "Convert uint to double"; break;
+
+ // int64 -> (u)int*
+ case EOpConvInt64ToInt8: out.debug << "Convert int64 to int8_t"; break;
+ case EOpConvInt64ToInt16: out.debug << "Convert int64 to int16_t"; break;
+ case EOpConvInt64ToInt: out.debug << "Convert int64 to int"; break;
+ case EOpConvInt64ToUint8: out.debug << "Convert int64 to uint8_t";break;
+ case EOpConvInt64ToUint16: out.debug << "Convert int64 to uint16_t";break;
+ case EOpConvInt64ToUint: out.debug << "Convert int64 to uint"; break;
+ case EOpConvInt64ToUint64: out.debug << "Convert int64 to uint64"; break;
+
+ // int64 -> float*
+ case EOpConvInt64ToFloat16: out.debug << "Convert int64 to float16_t";break;
+ case EOpConvInt64ToFloat: out.debug << "Convert int64 to float"; break;
+ case EOpConvInt64ToDouble: out.debug << "Convert int64 to double"; break;
+
+ // uint64 -> (u)int*
+ case EOpConvUint64ToInt8: out.debug << "Convert uint64 to int8_t";break;
+ case EOpConvUint64ToInt16: out.debug << "Convert uint64 to int16_t";break;
+ case EOpConvUint64ToInt: out.debug << "Convert uint64 to int"; break;
+ case EOpConvUint64ToInt64: out.debug << "Convert uint64 to int64"; break;
+ case EOpConvUint64ToUint8: out.debug << "Convert uint64 to uint8_t";break;
+ case EOpConvUint64ToUint16: out.debug << "Convert uint64 to uint16"; break;
+ case EOpConvUint64ToUint: out.debug << "Convert uint64 to uint"; break;
+
+ // uint64 -> float*
+ case EOpConvUint64ToFloat16: out.debug << "Convert uint64 to float16_t";break;
+ case EOpConvUint64ToFloat: out.debug << "Convert uint64 to float"; break;
+ case EOpConvUint64ToDouble: out.debug << "Convert uint64 to double"; break;
+
+ // float16_t -> int*
+ case EOpConvFloat16ToInt8: out.debug << "Convert float16_t to int8_t"; break;
+ case EOpConvFloat16ToInt16: out.debug << "Convert float16_t to int16_t"; break;
+ case EOpConvFloat16ToInt: out.debug << "Convert float16_t to int"; break;
+ case EOpConvFloat16ToInt64: out.debug << "Convert float16_t to int64"; break;
+
+ // float16_t -> uint*
+ case EOpConvFloat16ToUint8: out.debug << "Convert float16_t to uint8_t"; break;
+ case EOpConvFloat16ToUint16: out.debug << "Convert float16_t to uint16_t"; break;
+ case EOpConvFloat16ToUint: out.debug << "Convert float16_t to uint"; break;
+ case EOpConvFloat16ToUint64: out.debug << "Convert float16_t to uint64"; break;
+
+ // float16_t -> float*
+ case EOpConvFloat16ToFloat: out.debug << "Convert float16_t to float"; break;
+ case EOpConvFloat16ToDouble: out.debug << "Convert float16_t to double"; break;
+
+ // float32 -> float*
+ case EOpConvFloatToFloat16: out.debug << "Convert float to float16_t"; break;
+ case EOpConvFloatToDouble: out.debug << "Convert float to double"; break;
+
+ // float32_t -> int*
+ case EOpConvFloatToInt8: out.debug << "Convert float to int8_t"; break;
+ case EOpConvFloatToInt16: out.debug << "Convert float to int16_t"; break;
+ case EOpConvFloatToInt: out.debug << "Convert float to int"; break;
+ case EOpConvFloatToInt64: out.debug << "Convert float to int64"; break;
+
+ // float32_t -> uint*
+ case EOpConvFloatToUint8: out.debug << "Convert float to uint8_t"; break;
+ case EOpConvFloatToUint16: out.debug << "Convert float to uint16_t"; break;
+ case EOpConvFloatToUint: out.debug << "Convert float to uint"; break;
case EOpConvFloatToUint64: out.debug << "Convert float to uint64"; break;
+
+ // double -> float*
+ case EOpConvDoubleToFloat16: out.debug << "Convert double to float16_t"; break;
+ case EOpConvDoubleToFloat: out.debug << "Convert double to float"; break;
+
+ // double -> int*
+ case EOpConvDoubleToInt8: out.debug << "Convert double to int8_t"; break;
+ case EOpConvDoubleToInt16: out.debug << "Convert double to int16_t"; break;
+ case EOpConvDoubleToInt: out.debug << "Convert double to int"; break;
+ case EOpConvDoubleToInt64: out.debug << "Convert double to int64"; break;
+
+ // float32_t -> uint*
+ case EOpConvDoubleToUint8: out.debug << "Convert double to uint8_t"; break;
+ case EOpConvDoubleToUint16: out.debug << "Convert double to uint16_t"; break;
+ case EOpConvDoubleToUint: out.debug << "Convert double to uint"; break;
case EOpConvDoubleToUint64: out.debug << "Convert double to uint64"; break;
- case EOpConvInt64ToUint64: out.debug << "Convert uint64 to uint64"; break;
+
case EOpRadians: out.debug << "radians"; break;
case EOpDegrees: out.debug << "degrees"; break;
@@ -309,12 +454,10 @@
case EOpDoubleBitsToUint64: out.debug << "doubleBitsToUint64"; break;
case EOpInt64BitsToDouble: out.debug << "int64BitsToDouble"; break;
case EOpUint64BitsToDouble: out.debug << "uint64BitsToDouble"; break;
-#ifdef AMD_EXTENSIONS
case EOpFloat16BitsToInt16: out.debug << "float16BitsToInt16"; break;
case EOpFloat16BitsToUint16: out.debug << "float16BitsToUint16"; break;
case EOpInt16BitsToFloat16: out.debug << "int16BitsToFloat16"; break;
case EOpUint16BitsToFloat16: out.debug << "uint16BitsToFloat16"; break;
-#endif
case EOpPackSnorm2x16: out.debug << "packSnorm2x16"; break;
case EOpUnpackSnorm2x16:out.debug << "unpackSnorm2x16"; break;
@@ -322,6 +465,12 @@
case EOpUnpackUnorm2x16:out.debug << "unpackUnorm2x16"; break;
case EOpPackHalf2x16: out.debug << "packHalf2x16"; break;
case EOpUnpackHalf2x16: out.debug << "unpackHalf2x16"; break;
+ case EOpPack16: out.debug << "pack16"; break;
+ case EOpPack32: out.debug << "pack32"; break;
+ case EOpPack64: out.debug << "pack64"; break;
+ case EOpUnpack32: out.debug << "unpack32"; break;
+ case EOpUnpack16: out.debug << "unpack16"; break;
+ case EOpUnpack8: out.debug << "unpack8"; break;
case EOpPackSnorm4x8: out.debug << "PackSnorm4x8"; break;
case EOpUnpackSnorm4x8: out.debug << "UnpackSnorm4x8"; break;
@@ -335,7 +484,6 @@
case EOpPackUint2x32: out.debug << "packUint2x32"; break;
case EOpUnpackUint2x32: out.debug << "unpackUint2x32"; break;
-#ifdef AMD_EXTENSIONS
case EOpPackInt2x16: out.debug << "packInt2x16"; break;
case EOpUnpackInt2x16: out.debug << "unpackInt2x16"; break;
case EOpPackUint2x16: out.debug << "packUint2x16"; break;
@@ -345,10 +493,8 @@
case EOpUnpackInt4x16: out.debug << "unpackInt4x16"; break;
case EOpPackUint4x16: out.debug << "packUint4x16"; break;
case EOpUnpackUint4x16: out.debug << "unpackUint4x16"; break;
-
case EOpPackFloat2x16: out.debug << "packFloat2x16"; break;
case EOpUnpackFloat2x16: out.debug << "unpackFloat2x16"; break;
-#endif
case EOpLength: out.debug << "length"; break;
case EOpNormalize: out.debug << "normalize"; break;
@@ -402,6 +548,57 @@
case EOpAllInvocations: out.debug << "allInvocations"; break;
case EOpAllInvocationsEqual: out.debug << "allInvocationsEqual"; break;
+ case EOpSubgroupElect: out.debug << "subgroupElect"; break;
+ case EOpSubgroupAll: out.debug << "subgroupAll"; break;
+ case EOpSubgroupAny: out.debug << "subgroupAny"; break;
+ case EOpSubgroupAllEqual: out.debug << "subgroupAllEqual"; break;
+ case EOpSubgroupBroadcast: out.debug << "subgroupBroadcast"; break;
+ case EOpSubgroupBroadcastFirst: out.debug << "subgroupBroadcastFirst"; break;
+ case EOpSubgroupBallot: out.debug << "subgroupBallot"; break;
+ case EOpSubgroupInverseBallot: out.debug << "subgroupInverseBallot"; break;
+ case EOpSubgroupBallotBitExtract: out.debug << "subgroupBallotBitExtract"; break;
+ case EOpSubgroupBallotBitCount: out.debug << "subgroupBallotBitCount"; break;
+ case EOpSubgroupBallotInclusiveBitCount: out.debug << "subgroupBallotInclusiveBitCount"; break;
+ case EOpSubgroupBallotExclusiveBitCount: out.debug << "subgroupBallotExclusiveBitCount"; break;
+ case EOpSubgroupBallotFindLSB: out.debug << "subgroupBallotFindLSB"; break;
+ case EOpSubgroupBallotFindMSB: out.debug << "subgroupBallotFindMSB"; break;
+ case EOpSubgroupShuffle: out.debug << "subgroupShuffle"; break;
+ case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break;
+ case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break;
+ case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break;
+ case EOpSubgroupAdd: out.debug << "subgroupAdd"; break;
+ case EOpSubgroupMul: out.debug << "subgroupMul"; break;
+ case EOpSubgroupMin: out.debug << "subgroupMin"; break;
+ case EOpSubgroupMax: out.debug << "subgroupMax"; break;
+ case EOpSubgroupAnd: out.debug << "subgroupAnd"; break;
+ case EOpSubgroupOr: out.debug << "subgroupOr"; break;
+ case EOpSubgroupXor: out.debug << "subgroupXor"; break;
+ case EOpSubgroupInclusiveAdd: out.debug << "subgroupInclusiveAdd"; break;
+ case EOpSubgroupInclusiveMul: out.debug << "subgroupInclusiveMul"; break;
+ case EOpSubgroupInclusiveMin: out.debug << "subgroupInclusiveMin"; break;
+ case EOpSubgroupInclusiveMax: out.debug << "subgroupInclusiveMax"; break;
+ case EOpSubgroupInclusiveAnd: out.debug << "subgroupInclusiveAnd"; break;
+ case EOpSubgroupInclusiveOr: out.debug << "subgroupInclusiveOr"; break;
+ case EOpSubgroupInclusiveXor: out.debug << "subgroupInclusiveXor"; break;
+ case EOpSubgroupExclusiveAdd: out.debug << "subgroupExclusiveAdd"; break;
+ case EOpSubgroupExclusiveMul: out.debug << "subgroupExclusiveMul"; break;
+ case EOpSubgroupExclusiveMin: out.debug << "subgroupExclusiveMin"; break;
+ case EOpSubgroupExclusiveMax: out.debug << "subgroupExclusiveMax"; break;
+ case EOpSubgroupExclusiveAnd: out.debug << "subgroupExclusiveAnd"; break;
+ case EOpSubgroupExclusiveOr: out.debug << "subgroupExclusiveOr"; break;
+ case EOpSubgroupExclusiveXor: out.debug << "subgroupExclusiveXor"; break;
+ case EOpSubgroupClusteredAdd: out.debug << "subgroupClusteredAdd"; break;
+ case EOpSubgroupClusteredMul: out.debug << "subgroupClusteredMul"; break;
+ case EOpSubgroupClusteredMin: out.debug << "subgroupClusteredMin"; break;
+ case EOpSubgroupClusteredMax: out.debug << "subgroupClusteredMax"; break;
+ case EOpSubgroupClusteredAnd: out.debug << "subgroupClusteredAnd"; break;
+ case EOpSubgroupClusteredOr: out.debug << "subgroupClusteredOr"; break;
+ case EOpSubgroupClusteredXor: out.debug << "subgroupClusteredXor"; break;
+ case EOpSubgroupQuadBroadcast: out.debug << "subgroupQuadBroadcast"; break;
+ case EOpSubgroupQuadSwapHorizontal: out.debug << "subgroupQuadSwapHorizontal"; break;
+ case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break;
+ case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break;
+
case EOpClip: out.debug << "clip"; break;
case EOpIsFinite: out.debug << "isfinite"; break;
case EOpLog10: out.debug << "log10"; break;
@@ -434,62 +631,11 @@
case EOpMbcnt: out.debug << "mbcnt"; break;
- case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break;
- case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break;
-
case EOpFragmentMaskFetch: out.debug << "fragmentMaskFetchAMD"; break;
case EOpFragmentFetch: out.debug << "fragmentFetchAMD"; break;
- case EOpConvBoolToFloat16: out.debug << "Convert bool to float16"; break;
- case EOpConvIntToFloat16: out.debug << "Convert int to float16"; break;
- case EOpConvUintToFloat16: out.debug << "Convert uint to float16"; break;
- case EOpConvFloatToFloat16: out.debug << "Convert float to float16"; break;
- case EOpConvDoubleToFloat16: out.debug << "Convert double to float16"; break;
- case EOpConvInt64ToFloat16: out.debug << "Convert int64 to float16"; break;
- case EOpConvUint64ToFloat16: out.debug << "Convert uint64 to float16"; break;
- case EOpConvFloat16ToBool: out.debug << "Convert float16 to bool"; break;
- case EOpConvFloat16ToInt: out.debug << "Convert float16 to int"; break;
- case EOpConvFloat16ToUint: out.debug << "Convert float16 to uint"; break;
- case EOpConvFloat16ToFloat: out.debug << "Convert float16 to float"; break;
- case EOpConvFloat16ToDouble: out.debug << "Convert float16 to double"; break;
- case EOpConvFloat16ToInt64: out.debug << "Convert float16 to int64"; break;
- case EOpConvFloat16ToUint64: out.debug << "Convert float16 to uint64"; break;
-
- case EOpConvBoolToInt16: out.debug << "Convert bool to int16"; break;
- case EOpConvIntToInt16: out.debug << "Convert int to int16"; break;
- case EOpConvUintToInt16: out.debug << "Convert uint to int16"; break;
- case EOpConvFloatToInt16: out.debug << "Convert float to int16"; break;
- case EOpConvDoubleToInt16: out.debug << "Convert double to int16"; break;
- case EOpConvFloat16ToInt16: out.debug << "Convert float16 to int16"; break;
- case EOpConvInt64ToInt16: out.debug << "Convert int64 to int16"; break;
- case EOpConvUint64ToInt16: out.debug << "Convert uint64 to int16"; break;
- case EOpConvUint16ToInt16: out.debug << "Convert uint16 to int16"; break;
- case EOpConvInt16ToBool: out.debug << "Convert int16 to bool"; break;
- case EOpConvInt16ToInt: out.debug << "Convert int16 to int"; break;
- case EOpConvInt16ToUint: out.debug << "Convert int16 to uint"; break;
- case EOpConvInt16ToFloat: out.debug << "Convert int16 to float"; break;
- case EOpConvInt16ToDouble: out.debug << "Convert int16 to double"; break;
- case EOpConvInt16ToFloat16: out.debug << "Convert int16 to float16"; break;
- case EOpConvInt16ToInt64: out.debug << "Convert int16 to int64"; break;
- case EOpConvInt16ToUint64: out.debug << "Convert int16 to uint64"; break;
-
- case EOpConvBoolToUint16: out.debug << "Convert bool to uint16"; break;
- case EOpConvIntToUint16: out.debug << "Convert int to uint16"; break;
- case EOpConvUintToUint16: out.debug << "Convert uint to uint16"; break;
- case EOpConvFloatToUint16: out.debug << "Convert float to uint16"; break;
- case EOpConvDoubleToUint16: out.debug << "Convert double to uint16"; break;
- case EOpConvFloat16ToUint16: out.debug << "Convert float16 to uint16"; break;
- case EOpConvInt64ToUint16: out.debug << "Convert int64 to uint16"; break;
- case EOpConvUint64ToUint16: out.debug << "Convert uint64 to uint16"; break;
- case EOpConvInt16ToUint16: out.debug << "Convert int16 to uint16"; break;
- case EOpConvUint16ToBool: out.debug << "Convert uint16 to bool"; break;
- case EOpConvUint16ToInt: out.debug << "Convert uint16 to int"; break;
- case EOpConvUint16ToUint: out.debug << "Convert uint16 to uint"; break;
- case EOpConvUint16ToFloat: out.debug << "Convert uint16 to float"; break;
- case EOpConvUint16ToDouble: out.debug << "Convert uint16 to double"; break;
- case EOpConvUint16ToFloat16: out.debug << "Convert uint16 to float16"; break;
- case EOpConvUint16ToInt64: out.debug << "Convert uint16 to int64"; break;
- case EOpConvUint16ToUint64: out.debug << "Convert uint16 to uint64"; break;
+ case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break;
+ case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break;
#endif
case EOpSubpassLoad: out.debug << "subpassLoad"; break;
@@ -537,23 +683,30 @@
case EOpConstructBVec2: out.debug << "Construct bvec2"; break;
case EOpConstructBVec3: out.debug << "Construct bvec3"; break;
case EOpConstructBVec4: out.debug << "Construct bvec4"; break;
+ case EOpConstructInt8: out.debug << "Construct int8_t"; break;
+ case EOpConstructI8Vec2: out.debug << "Construct i8vec2"; break;
+ case EOpConstructI8Vec3: out.debug << "Construct i8vec3"; break;
+ case EOpConstructI8Vec4: out.debug << "Construct i8vec4"; break;
case EOpConstructInt: out.debug << "Construct int"; break;
case EOpConstructIVec2: out.debug << "Construct ivec2"; break;
case EOpConstructIVec3: out.debug << "Construct ivec3"; break;
case EOpConstructIVec4: out.debug << "Construct ivec4"; break;
+ case EOpConstructUint8: out.debug << "Construct uint8_t"; break;
+ case EOpConstructU8Vec2: out.debug << "Construct u8vec2"; break;
+ case EOpConstructU8Vec3: out.debug << "Construct u8vec3"; break;
+ case EOpConstructU8Vec4: out.debug << "Construct u8vec4"; break;
case EOpConstructUint: out.debug << "Construct uint"; break;
case EOpConstructUVec2: out.debug << "Construct uvec2"; break;
case EOpConstructUVec3: out.debug << "Construct uvec3"; break;
case EOpConstructUVec4: out.debug << "Construct uvec4"; break;
- case EOpConstructInt64: out.debug << "Construct int64_t"; break;
+ case EOpConstructInt64: out.debug << "Construct int64"; break;
case EOpConstructI64Vec2: out.debug << "Construct i64vec2"; break;
case EOpConstructI64Vec3: out.debug << "Construct i64vec3"; break;
case EOpConstructI64Vec4: out.debug << "Construct i64vec4"; break;
- case EOpConstructUint64: out.debug << "Construct uint64_t"; break;
+ case EOpConstructUint64: out.debug << "Construct uint64"; break;
case EOpConstructU64Vec2: out.debug << "Construct u64vec2"; break;
case EOpConstructU64Vec3: out.debug << "Construct u64vec3"; break;
case EOpConstructU64Vec4: out.debug << "Construct u64vec4"; break;
-#ifdef AMD_EXTENSIONS
case EOpConstructInt16: out.debug << "Construct int16_t"; break;
case EOpConstructI16Vec2: out.debug << "Construct i16vec2"; break;
case EOpConstructI16Vec3: out.debug << "Construct i16vec3"; break;
@@ -562,7 +715,6 @@
case EOpConstructU16Vec2: out.debug << "Construct u16vec2"; break;
case EOpConstructU16Vec3: out.debug << "Construct u16vec3"; break;
case EOpConstructU16Vec4: out.debug << "Construct u16vec4"; break;
-#endif
case EOpConstructMat2x2: out.debug << "Construct mat2"; break;
case EOpConstructMat2x3: out.debug << "Construct mat2x3"; break;
case EOpConstructMat2x4: out.debug << "Construct mat2x4"; break;
@@ -608,7 +760,6 @@
case EOpConstructBMat4x2: out.debug << "Construct bmat4x2"; break;
case EOpConstructBMat4x3: out.debug << "Construct bmat4x3"; break;
case EOpConstructBMat4x4: out.debug << "Construct bmat4"; break;
-#ifdef AMD_EXTENSIONS
case EOpConstructFloat16: out.debug << "Construct float16_t"; break;
case EOpConstructF16Vec2: out.debug << "Construct f16vec2"; break;
case EOpConstructF16Vec3: out.debug << "Construct f16vec3"; break;
@@ -622,7 +773,6 @@
case EOpConstructF16Mat4x2: out.debug << "Construct f16mat4x2"; break;
case EOpConstructF16Mat4x3: out.debug << "Construct f16mat4x3"; break;
case EOpConstructF16Mat4x4: out.debug << "Construct f16mat4"; break;
-#endif
case EOpConstructStruct: out.debug << "Construct structure"; break;
case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break;
@@ -796,6 +946,62 @@
case EOpWorkgroupMemoryBarrier: out.debug << "WorkgroupMemoryBarrier"; break;
case EOpWorkgroupMemoryBarrierWithGroupSync: out.debug << "WorkgroupMemoryBarrierWithGroupSync"; break;
+ case EOpSubgroupBarrier: out.debug << "subgroupBarrier"; break;
+ case EOpSubgroupMemoryBarrier: out.debug << "subgroupMemoryBarrier"; break;
+ case EOpSubgroupMemoryBarrierBuffer: out.debug << "subgroupMemoryBarrierBuffer"; break;
+ case EOpSubgroupMemoryBarrierImage: out.debug << "subgroupMemoryBarrierImage"; break;
+ case EOpSubgroupMemoryBarrierShared: out.debug << "subgroupMemoryBarrierShared"; break;
+ case EOpSubgroupElect: out.debug << "subgroupElect"; break;
+ case EOpSubgroupAll: out.debug << "subgroupAll"; break;
+ case EOpSubgroupAny: out.debug << "subgroupAny"; break;
+ case EOpSubgroupAllEqual: out.debug << "subgroupAllEqual"; break;
+ case EOpSubgroupBroadcast: out.debug << "subgroupBroadcast"; break;
+ case EOpSubgroupBroadcastFirst: out.debug << "subgroupBroadcastFirst"; break;
+ case EOpSubgroupBallot: out.debug << "subgroupBallot"; break;
+ case EOpSubgroupInverseBallot: out.debug << "subgroupInverseBallot"; break;
+ case EOpSubgroupBallotBitExtract: out.debug << "subgroupBallotBitExtract"; break;
+ case EOpSubgroupBallotBitCount: out.debug << "subgroupBallotBitCount"; break;
+ case EOpSubgroupBallotInclusiveBitCount: out.debug << "subgroupBallotInclusiveBitCount"; break;
+ case EOpSubgroupBallotExclusiveBitCount: out.debug << "subgroupBallotExclusiveBitCount"; break;
+ case EOpSubgroupBallotFindLSB: out.debug << "subgroupBallotFindLSB"; break;
+ case EOpSubgroupBallotFindMSB: out.debug << "subgroupBallotFindMSB"; break;
+ case EOpSubgroupShuffle: out.debug << "subgroupShuffle"; break;
+ case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break;
+ case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break;
+ case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break;
+ case EOpSubgroupAdd: out.debug << "subgroupAdd"; break;
+ case EOpSubgroupMul: out.debug << "subgroupMul"; break;
+ case EOpSubgroupMin: out.debug << "subgroupMin"; break;
+ case EOpSubgroupMax: out.debug << "subgroupMax"; break;
+ case EOpSubgroupAnd: out.debug << "subgroupAnd"; break;
+ case EOpSubgroupOr: out.debug << "subgroupOr"; break;
+ case EOpSubgroupXor: out.debug << "subgroupXor"; break;
+ case EOpSubgroupInclusiveAdd: out.debug << "subgroupInclusiveAdd"; break;
+ case EOpSubgroupInclusiveMul: out.debug << "subgroupInclusiveMul"; break;
+ case EOpSubgroupInclusiveMin: out.debug << "subgroupInclusiveMin"; break;
+ case EOpSubgroupInclusiveMax: out.debug << "subgroupInclusiveMax"; break;
+ case EOpSubgroupInclusiveAnd: out.debug << "subgroupInclusiveAnd"; break;
+ case EOpSubgroupInclusiveOr: out.debug << "subgroupInclusiveOr"; break;
+ case EOpSubgroupInclusiveXor: out.debug << "subgroupInclusiveXor"; break;
+ case EOpSubgroupExclusiveAdd: out.debug << "subgroupExclusiveAdd"; break;
+ case EOpSubgroupExclusiveMul: out.debug << "subgroupExclusiveMul"; break;
+ case EOpSubgroupExclusiveMin: out.debug << "subgroupExclusiveMin"; break;
+ case EOpSubgroupExclusiveMax: out.debug << "subgroupExclusiveMax"; break;
+ case EOpSubgroupExclusiveAnd: out.debug << "subgroupExclusiveAnd"; break;
+ case EOpSubgroupExclusiveOr: out.debug << "subgroupExclusiveOr"; break;
+ case EOpSubgroupExclusiveXor: out.debug << "subgroupExclusiveXor"; break;
+ case EOpSubgroupClusteredAdd: out.debug << "subgroupClusteredAdd"; break;
+ case EOpSubgroupClusteredMul: out.debug << "subgroupClusteredMul"; break;
+ case EOpSubgroupClusteredMin: out.debug << "subgroupClusteredMin"; break;
+ case EOpSubgroupClusteredMax: out.debug << "subgroupClusteredMax"; break;
+ case EOpSubgroupClusteredAnd: out.debug << "subgroupClusteredAnd"; break;
+ case EOpSubgroupClusteredOr: out.debug << "subgroupClusteredOr"; break;
+ case EOpSubgroupClusteredXor: out.debug << "subgroupClusteredXor"; break;
+ case EOpSubgroupQuadBroadcast: out.debug << "subgroupQuadBroadcast"; break;
+ case EOpSubgroupQuadSwapHorizontal: out.debug << "subgroupQuadSwapHorizontal"; break;
+ case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break;
+ case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break;
+
case EOpSubpassLoad: out.debug << "subpassLoad"; break;
case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
@@ -870,9 +1076,7 @@
break;
case EbtFloat:
case EbtDouble:
-#ifdef AMD_EXTENSIONS
case EbtFloat16:
-#endif
{
const double value = constUnion[i].getDConst();
// Print infinities and NaNs in a portable way.
@@ -892,6 +1096,42 @@
}
}
break;
+ case EbtInt8:
+ {
+ const int maxSize = 300;
+ char buf[maxSize];
+ snprintf(buf, maxSize, "%d (%s)", constUnion[i].getI8Const(), "const int8_t");
+
+ out.debug << buf << "\n";
+ }
+ break;
+ case EbtUint8:
+ {
+ const int maxSize = 300;
+ char buf[maxSize];
+ snprintf(buf, maxSize, "%u (%s)", constUnion[i].getU8Const(), "const uint8_t");
+
+ out.debug << buf << "\n";
+ }
+ break;
+ case EbtInt16:
+ {
+ const int maxSize = 300;
+ char buf[maxSize];
+ snprintf(buf, maxSize, "%d (%s)", constUnion[i].getI16Const(), "const int16_t");
+
+ out.debug << buf << "\n";
+ }
+ break;
+ case EbtUint16:
+ {
+ const int maxSize = 300;
+ char buf[maxSize];
+ snprintf(buf, maxSize, "%u (%s)", constUnion[i].getU16Const(), "const uint16_t");
+
+ out.debug << buf << "\n";
+ }
+ break;
case EbtInt:
{
const int maxSize = 300;
@@ -928,26 +1168,6 @@
out.debug << buf << "\n";
}
break;
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- {
- const int maxSize = 300;
- char buf[maxSize];
- snprintf(buf, maxSize, "%d (%s)", constUnion[i].getIConst(), "const int16_t");
-
- out.debug << buf << "\n";
- }
- break;
- case EbtUint16:
- {
- const int maxSize = 300;
- char buf[maxSize];
- snprintf(buf, maxSize, "%u (%s)", constUnion[i].getUConst(), "const uint16_t");
-
- out.debug << buf << "\n";
- }
- break;
-#endif
default:
out.info.message(EPrefixInternalError, "Unknown constant", node->getLoc());
break;
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 87f08e3..9aba279 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -1,5 +1,6 @@
//
// Copyright (C) 2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -1064,11 +1065,11 @@
case EbtInt64:
case EbtUint64:
case EbtDouble: size = 8; return 8;
-#ifdef AMD_EXTENSIONS
- case EbtInt16:
- case EbtUint16:
case EbtFloat16: size = 2; return 2;
-#endif
+ case EbtInt8:
+ case EbtUint8: size = 1; return 1;
+ case EbtInt16:
+ case EbtUint16: size = 2; return 2;
default: size = 4; return 4;
}
}
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index b84b110..8458e99 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2016 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
@@ -78,7 +79,7 @@
assert(i < MaxSwizzleSelectors);
return components[i];
}
-
+
private:
int size_;
selectorType components[MaxSwizzleSelectors];
@@ -403,6 +404,7 @@
TIntermSymbol* addSymbol(const TType&, const TSourceLoc&);
TIntermSymbol* addSymbol(const TIntermSymbol&);
TIntermTyped* addConversion(TOperator, const TType&, TIntermTyped*) const;
+ std::tuple<TIntermTyped*, TIntermTyped*> addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* node1) const;
TIntermTyped* addUniShapeConversion(TOperator, const TType&, TIntermTyped*);
void addBiShapeConversion(TOperator, TIntermTyped*& lhsNode, TIntermTyped*& rhsNode);
TIntermTyped* addShapeConversion(const TType&, TIntermTyped*);
@@ -412,6 +414,11 @@
TIntermTyped* addUnaryMath(TOperator, TIntermTyped* child, TSourceLoc);
TIntermTyped* addBuiltInFunctionCall(const TSourceLoc& line, TOperator, bool unary, TIntermNode*, const TType& returnType);
bool canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op = EOpNull) const;
+ bool isIntegralPromotion(TBasicType from, TBasicType to) const;
+ bool isFPPromotion(TBasicType from, TBasicType to) const;
+ bool isIntegralConversion(TBasicType from, TBasicType to) const;
+ bool isFPConversion(TBasicType from, TBasicType to) const;
+ bool isFPIntegralConversion(TBasicType from, TBasicType to) const;
TOperator mapTypeToConstructorOp(const TType&) const;
TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right);
TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&);
@@ -425,15 +432,14 @@
TIntermTyped* addComma(TIntermTyped* left, TIntermTyped* right, const TSourceLoc&);
TIntermTyped* addMethod(TIntermTyped*, const TType&, const TString*, const TSourceLoc&);
TIntermConstantUnion* addConstantUnion(const TConstUnionArray&, const TType&, const TSourceLoc&, bool literal = false) const;
+ TIntermConstantUnion* addConstantUnion(signed char, const TSourceLoc&, bool literal = false) const;
+ TIntermConstantUnion* addConstantUnion(unsigned char, const TSourceLoc&, bool literal = false) const;
+ TIntermConstantUnion* addConstantUnion(signed short, const TSourceLoc&, bool literal = false) const;
+ TIntermConstantUnion* addConstantUnion(unsigned short, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(int, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(unsigned int, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(long long, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(unsigned long long, const TSourceLoc&, bool literal = false) const;
-#ifdef AMD_EXTENSIONS
- TIntermConstantUnion* addConstantUnion(short, const TSourceLoc&, bool literal = false) const;
- TIntermConstantUnion* addConstantUnion(unsigned short, const TSourceLoc&, bool literal = false) const;
-
-#endif
TIntermConstantUnion* addConstantUnion(bool, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(double, TBasicType, const TSourceLoc&, bool literal = false) const;
TIntermConstantUnion* addConstantUnion(const TString*, const TSourceLoc&, bool literal = false) const;
@@ -643,6 +649,10 @@
void pushSelector(TIntermSequence&, const TMatrixSelector&, const TSourceLoc&);
bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&);
void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root);
+ bool isConversionAllowed(TOperator op, TIntermTyped* node) const;
+ TIntermUnary* createConversion(TBasicType convertTo, TIntermTyped* node) const;
+ std::tuple<TBasicType, TBasicType> getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const;
+ bool extensionRequested(const char *extension) const {return requestedExtensions.find(extension) != requestedExtensions.end();}
static const char* getResourceName(TResourceType);
const EShLanguage language; // stage, known at construction time
@@ -650,8 +660,8 @@
std::string entryPointName;
std::string entryPointMangledName;
- EProfile profile;
- int version;
+ EProfile profile; // source profile
+ int version; // source version
SpvVersion spvVersion;
TIntermNode* treeRoot;
std::set<std::string> requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them
diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h
index 23f4cd8..df65f6c 100755
--- a/glslang/MachineIndependent/parseVersions.h
+++ b/glslang/MachineIndependent/parseVersions.h
@@ -1,5 +1,6 @@
//
// Copyright (C) 2016 Google, Inc.
+// Copyright (C) 2017 ARM Limited.
//
// All rights reserved.
//
@@ -77,12 +78,16 @@
virtual void updateExtensionBehavior(int line, const char* const extension, const char* behavior);
virtual void fullIntegerCheck(const TSourceLoc&, const char* op);
virtual void doubleCheck(const TSourceLoc&, const char* op);
-#ifdef AMD_EXTENSIONS
- virtual void int16Check(const TSourceLoc& loc, const char* op, bool builtIn = false);
virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false);
+#ifdef AMD_EXTENSIONS
virtual void float16OpaqueCheck(const TSourceLoc&, const char* op, bool builtIn = false);
#endif
virtual void int64Check(const TSourceLoc&, const char* op, bool builtIn = false);
+ virtual void explicitInt8Check(const TSourceLoc&, const char* op, bool builtIn = false);
+ virtual void explicitInt16Check(const TSourceLoc&, const char* op, bool builtIn = false);
+ virtual void explicitInt32Check(const TSourceLoc&, const char* op, bool builtIn = false);
+ virtual void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false);
+ virtual void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false);
virtual void spvRemoved(const TSourceLoc&, const char* op);
virtual void vulkanRemoved(const TSourceLoc&, const char* op);
virtual void requireVulkan(const TSourceLoc&, const char* op);
diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp
index 3ae711c..8048fa5 100644
--- a/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -731,12 +731,10 @@
TSourceLoc loc = ppToken->loc;
while (token != '\n' && token != EndOfInput) {
- if (token == PpAtomConstInt || token == PpAtomConstUint ||
+ if (token == PpAtomConstInt16 || token == PpAtomConstUint16 ||
+ token == PpAtomConstInt || token == PpAtomConstUint ||
token == PpAtomConstInt64 || token == PpAtomConstUint64 ||
-#ifdef AMD_EXTENSIONS
- token == PpAtomConstInt16 || token == PpAtomConstUint16 ||
token == PpAtomConstFloat16 ||
-#endif
token == PpAtomConstFloat || token == PpAtomConstDouble) {
message.append(ppToken->name);
} else if (token == PpAtomIdentifier || token == PpAtomConstString) {
@@ -775,9 +773,7 @@
#endif
case PpAtomConstFloat:
case PpAtomConstDouble:
-#ifdef AMD_EXTENSIONS
case PpAtomConstFloat16:
-#endif
tokens.push_back(ppToken->name);
break;
default:
diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
index ccb3930..13e9c1d 100644
--- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -1,6 +1,7 @@
//
// Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
// Copyright (C) 2013 LunarG, Inc.
+// Copyright (C) 2017 ARM Limited.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
@@ -186,10 +187,8 @@
isDouble = 1;
}
} else if (ch == 'h' || ch == 'H') {
-#ifdef AMD_EXTENSIONS
if (parseContext.intermediate.getSource() == EShSourceGlsl)
parseContext.float16Check(ppToken->loc, "half floating-point suffix");
-#endif
if (!HasDecimalOrExponent)
parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", "");
if (parseContext.intermediate.getSource() == EShSourceGlsl) {
@@ -322,11 +321,24 @@
int ch = 0;
int ii = 0;
unsigned long long ival = 0;
-
const auto floatingPointChar = [&](int ch) { return ch == '.' || ch == 'e' || ch == 'E' ||
ch == 'f' || ch == 'F' ||
ch == 'h' || ch == 'H'; };
+ static const char* const Int64_Extensions[] = {
+ E_GL_ARB_gpu_shader_int64,
+ E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_int64 };
+ static const int Num_Int64_Extensions = sizeof(Int64_Extensions) / sizeof(Int64_Extensions[0]);
+
+ static const char* const Int16_Extensions[] = {
+#ifdef AMD_EXTENSIONS
+ E_GL_AMD_gpu_shader_int16,
+#endif
+ E_GL_KHX_shader_explicit_arithmetic_types,
+ E_GL_KHX_shader_explicit_arithmetic_types_int16 };
+ static const int Num_Int16_Extensions = sizeof(Int16_Extensions) / sizeof(Int16_Extensions[0]);
+
ppToken->ival = 0;
ppToken->i64val = 0;
ppToken->space = false;
@@ -389,9 +401,7 @@
bool isUnsigned = false;
bool isInt64 = false;
-#ifdef AMD_EXTENSIONS
bool isInt16 = false;
-#endif
ppToken->name[len++] = (char)ch;
ch = getch();
if ((ch >= '0' && ch <= '9') ||
@@ -469,21 +479,19 @@
if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
"64-bit hexadecimal literal");
- pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, E_GL_ARB_gpu_shader_int64,
- "64-bit hexadecimal literal");
+ pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0,
+ Num_Int64_Extensions, Int64_Extensions, "64-bit hexadecimal literal");
ppToken->i64val = ival;
return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64;
-#ifdef AMD_EXTENSIONS
} else if (isInt16) {
if (pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
"16-bit hexadecimal literal");
- pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, E_GL_AMD_gpu_shader_int16,
- "16-bit hexadecimal literal");
+ pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0,
+ Num_Int16_Extensions, Int16_Extensions, "16-bit hexadecimal literal");
}
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
-#endif
} else {
if (ival > 0xffffffffu && !AlreadyComplained)
pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too big", "", "");
@@ -495,9 +503,7 @@
bool isUnsigned = false;
bool isInt64 = false;
-#ifdef AMD_EXTENSIONS
bool isInt16 = false;
-#endif
bool octalOverflow = false;
bool nonOctal = false;
ival = 0;
@@ -585,21 +591,19 @@
if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
"64-bit octal literal");
- pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, E_GL_ARB_gpu_shader_int64,
- "64-bit octal literal");
+ pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0,
+ Num_Int64_Extensions, Int64_Extensions, "64-bit octal literal");
ppToken->i64val = ival;
return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64;
-#ifdef AMD_EXTENSIONS
} else if (isInt16) {
if (pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
"16-bit octal literal");
- pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, E_GL_AMD_gpu_shader_int16,
- "16-bit octal literal");
+ pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0,
+ Num_Int16_Extensions, Int16_Extensions, "16-bit octal literal");
}
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
-#endif
} else {
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint : PpAtomConstInt;
@@ -626,9 +630,7 @@
int numericLen = len;
bool isUnsigned = false;
bool isInt64 = false;
-#ifdef AMD_EXTENSIONS
bool isInt16 = false;
-#endif
if (ch == 'u' || ch == 'U') {
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
@@ -672,19 +674,15 @@
const unsigned remainderMaxInt = 0xFFFFFFFFu - 10 * oneTenthMaxInt;
const unsigned long long oneTenthMaxInt64 = 0xFFFFFFFFFFFFFFFFull / 10;
const unsigned long long remainderMaxInt64 = 0xFFFFFFFFFFFFFFFFull - 10 * oneTenthMaxInt64;
-#ifdef AMD_EXTENSIONS
const unsigned short oneTenthMaxInt16 = 0xFFFFu / 10;
const unsigned short remainderMaxInt16 = 0xFFFFu - 10 * oneTenthMaxInt16;
-#endif
for (int i = 0; i < numericLen; i++) {
ch = ppToken->name[i] - '0';
bool overflow = false;
if (isInt64)
overflow = (ival > oneTenthMaxInt64 || (ival == oneTenthMaxInt64 && (unsigned long long)ch > remainderMaxInt64));
-#ifdef AMD_EXTENSIONS
else if (isInt16)
overflow = (ival > oneTenthMaxInt16 || (ival == oneTenthMaxInt16 && (unsigned short)ch > remainderMaxInt16));
-#endif
else
overflow = (ival > oneTenthMaxInt || (ival == oneTenthMaxInt && (unsigned)ch > remainderMaxInt));
if (overflow) {
@@ -698,21 +696,19 @@
if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
"64-bit literal");
- pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, E_GL_ARB_gpu_shader_int64,
- "64-bit literal");
+ pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0,
+ Num_Int64_Extensions, Int64_Extensions, "64-bit literal");
ppToken->i64val = ival;
return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64;
-#ifdef AMD_EXTENSIONS
} else if (isInt16) {
if (pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
"16-bit literal");
- pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, E_GL_AMD_gpu_shader_int16,
- "16-bit literal");
+ pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0,
+ Num_Int16_Extensions, Int16_Extensions, "16-bit literal");
}
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
-#endif
} else {
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint : PpAtomConstInt;
@@ -962,14 +958,10 @@
case PpAtomConstFloat:
case PpAtomConstInt64:
case PpAtomConstUint64:
-#ifdef AMD_EXTENSIONS
case PpAtomConstInt16:
case PpAtomConstUint16:
-#endif
case PpAtomConstDouble:
-#ifdef AMD_EXTENSIONS
case PpAtomConstFloat16:
-#endif
if (ppToken.name[0] == '\0')
continue;
break;
diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
index bc145e2..31e0d1f 100644
--- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
@@ -147,9 +147,7 @@
#endif
case PpAtomConstFloat:
case PpAtomConstDouble:
-#ifdef AMD_EXTENSIONS
case PpAtomConstFloat16:
-#endif
str = ppToken->name;
while (*str) {
putSubtoken(*str);
@@ -187,9 +185,7 @@
case PpAtomIdentifier:
case PpAtomConstFloat:
case PpAtomConstDouble:
-#ifdef AMD_EXTENSIONS
case PpAtomConstFloat16:
-#endif
case PpAtomConstInt:
case PpAtomConstUint:
case PpAtomConstInt64:
@@ -219,9 +215,7 @@
break;
case PpAtomConstFloat:
case PpAtomConstDouble:
-#ifdef AMD_EXTENSIONS
case PpAtomConstFloat16:
-#endif
ppToken->dval = atof(ppToken->name);
break;
case PpAtomConstInt:
diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.h b/glslang/MachineIndependent/preprocessor/PpTokens.h
index d56df57..7b0f815 100644
--- a/glslang/MachineIndependent/preprocessor/PpTokens.h
+++ b/glslang/MachineIndependent/preprocessor/PpTokens.h
@@ -127,10 +127,8 @@
PpAtomConstUint,
PpAtomConstInt64,
PpAtomConstUint64,
-#ifdef AMD_EXTENSIONS
PpAtomConstInt16,
PpAtomConstUint16,
-#endif
PpAtomConstFloat,
PpAtomConstDouble,
PpAtomConstFloat16,
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index 7415851..6f0bc54 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -70,7 +70,7 @@
// This should always increase, as some paths to do not consume
// a more major number.
// It should increment by one when new functionality is added.
-#define GLSLANG_MINOR_VERSION 1
+#define GLSLANG_MINOR_VERSION 2
//
// Call before doing any other compiler/linker operations.
@@ -128,6 +128,17 @@
EshTargetSpv = EShTargetSpv, // legacy spelling
} EShTargetLanguage;
+typedef enum {
+ EShTargetVulkan_1_0 = (1 << 22),
+ EShTargetVulkan_1_1 = (1 << 22) | (1 << 12),
+ EShTargetOpenGL_450 = 450,
+} EshTargetClientVersion;
+
+typedef enum {
+ EShTargetSpv_1_0 = (1 << 16),
+ EShTargetSpv_1_3 = (1 << 16) | (3 << 8),
+} EShTargetLanguageVersion;
+
struct TInputLanguage {
EShSource languageFamily; // redundant information with other input, this one overrides when not EShSourceNone
EShLanguage stage; // redundant information with other input, this one overrides when not EShSourceNone
@@ -137,12 +148,12 @@
struct TClient {
EShClient client;
- int version; // version of client itself (not the client's input dialect)
+ EshTargetClientVersion version; // version of client itself (not the client's input dialect)
};
struct TTarget {
EShTargetLanguage language;
- unsigned int version; // the version to target, if SPIR-V, defined by "word 1" of the SPIR-V binary header
+ EShTargetLanguageVersion version; // version to target, if SPIR-V, defined by "word 1" of the SPIR-V header
};
// All source/client/target versions and settings.
@@ -398,12 +409,12 @@
environment.input.dialect = client;
environment.input.dialectVersion = version;
}
- void setEnvClient(EShClient client, int version)
+ void setEnvClient(EShClient client, EshTargetClientVersion version)
{
environment.client.client = client;
environment.client.version = version;
}
- void setEnvTarget(EShTargetLanguage lang, unsigned int version)
+ void setEnvTarget(EShTargetLanguage lang, EShTargetLanguageVersion version)
{
environment.target.language = lang;
environment.target.version = version;
diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp
index 5f6de4f..825e4dd 100644
--- a/gtests/AST.FromFile.cpp
+++ b/gtests/AST.FromFile.cpp
@@ -44,7 +44,7 @@
TEST_P(CompileToAstTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::OpenGL,
+ Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0,
Target::AST);
}
@@ -210,6 +210,7 @@
"precise.tesc",
"precise_struct_block.vert",
"maxClipDistances.vert",
+ "findFunction.frag",
})),
FileNameAsCustomTestSuffix
);
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index 2c92bdb..068338a 100644
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -58,6 +58,7 @@
}
using HlslCompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
+using HlslVulkan1_1CompileTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
using HlslLegalizeTest = GlslangTest<::testing::TestWithParam<FileNameEntryPointPair>>;
@@ -66,7 +67,14 @@
TEST_P(HlslCompileTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
- Source::HLSL, Semantics::Vulkan,
+ Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0,
+ Target::BothASTAndSpv, true, GetParam().entryPoint);
+}
+
+TEST_P(HlslVulkan1_1CompileTest, FromFile)
+{
+ loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
+ Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1,
Target::BothASTAndSpv, true, GetParam().entryPoint);
}
@@ -82,7 +90,7 @@
TEST_P(HlslLegalizeTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName,
- Source::HLSL, Semantics::Vulkan,
+ Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0,
Target::Spv, true, GetParam().entryPoint,
"/baseLegalResults/", false);
}
@@ -377,6 +385,22 @@
// clang-format off
INSTANTIATE_TEST_CASE_P(
+ ToSpirv, HlslVulkan1_1CompileTest,
+ ::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
+ {"hlsl.wavebroadcast.comp", "CSMain"},
+ {"hlsl.waveprefix.comp", "CSMain"},
+ {"hlsl.wavequad.comp", "CSMain"},
+ {"hlsl.wavequery.comp", "CSMain"},
+ {"hlsl.wavequery.frag", "PixelShaderFunction"},
+ {"hlsl.wavereduction.comp", "CSMain"},
+ {"hlsl.wavevote.comp", "CSMain"},
+ }),
+ FileNameAsCustomTestSuffix
+);
+// clang-format on
+
+// clang-format off
+INSTANTIATE_TEST_CASE_P(
ToSpirv, HlslCompileAndFlattenTest,
::testing::ValuesIn(std::vector<FileNameEntryPointPair>{
{"hlsl.array.flatten.frag", "main"},
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 7340cae..20ef2d7 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -63,6 +63,7 @@
}
using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
+using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
using VulkanSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
using OpenGLSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
@@ -82,7 +83,14 @@
TEST_P(CompileVulkanToSpirvTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::Vulkan,
+ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0,
+ Target::Spv);
+}
+
+TEST_P(CompileVulkan1_1ToSpirvTest, FromFile)
+{
+ loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
+ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1,
Target::Spv);
}
@@ -91,7 +99,7 @@
TEST_P(CompileOpenGLToSpirvTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::OpenGL,
+ Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0,
Target::Spv);
}
@@ -100,7 +108,7 @@
TEST_P(VulkanSemantics, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::Vulkan,
+ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0,
Target::Spv, false);
}
@@ -109,7 +117,7 @@
TEST_P(OpenGLSemantics, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::OpenGL,
+ Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0,
Target::Spv, false);
}
@@ -117,7 +125,7 @@
TEST_P(VulkanAstSemantics, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::Vulkan,
+ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0,
Target::AST);
}
@@ -157,7 +165,7 @@
TEST_P(CompileVulkanToSpirvTestAMD, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::Vulkan,
+ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0,
Target::Spv);
}
#endif
@@ -168,7 +176,7 @@
TEST_P(CompileVulkanToSpirvTestNV, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
- Source::GLSL, Semantics::Vulkan,
+ Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0,
Target::Spv);
}
#endif
@@ -243,9 +251,7 @@
"spv.dataOutIndirect.vert",
"spv.deepRvalue.frag",
"spv.depthOut.frag",
- "spv.deviceGroup.frag",
"spv.discard-dce.frag",
- "spv.drawParams.vert",
"spv.doWhileLoop.frag",
"spv.earlyReturnDiscard.frag",
"spv.extPostDepthCoverage.frag",
@@ -273,7 +279,6 @@
"spv.merge-unreachable.frag",
"spv.multiStruct.comp",
"spv.multiStructFuncall.frag",
- "spv.multiView.frag",
"spv.newTexture.frag",
"spv.noDeadDecorations.vert",
"spv.nonSquare.vert",
@@ -332,6 +337,7 @@
"spv.storageBuffer.vert",
"spv.precise.tese",
"spv.precise.tesc",
+ "spv.vulkan100.subgroupArithmetic.comp",
"spv.xfb.vert",
"spv.xfb2.vert",
"spv.xfb3.vert",
@@ -341,6 +347,38 @@
// clang-format off
INSTANTIATE_TEST_CASE_P(
+ Glsl, CompileVulkan1_1ToSpirvTest,
+ ::testing::ValuesIn(std::vector<std::string>({
+ "spv.deviceGroup.frag",
+ "spv.drawParams.vert",
+ "spv.int8.frag",
+ "spv.vulkan110.int16.frag",
+ "spv.int32.frag",
+ "spv.explicittypes.frag",
+ "spv.float32.frag",
+ "spv.float64.frag",
+ "spv.multiView.frag",
+ "spv.subgroup.frag",
+ "spv.subgroup.geom",
+ "spv.subgroup.tesc",
+ "spv.subgroup.tese",
+ "spv.subgroup.vert",
+ "spv.subgroupArithmetic.comp",
+ "spv.subgroupBasic.comp",
+ "spv.subgroupBallot.comp",
+ "spv.subgroupClustered.comp",
+ "spv.subgroupClusteredNeg.comp",
+ "spv.subgroupShuffle.comp",
+ "spv.subgroupShuffleRelative.comp",
+ "spv.subgroupQuad.comp",
+ "spv.subgroupVote.comp",
+ "spv.vulkan110.storageBuffer.vert",
+ })),
+ FileNameAsCustomTestSuffix
+);
+
+// clang-format off
+INSTANTIATE_TEST_CASE_P(
Hlsl, HlslIoMap,
::testing::ValuesIn(std::vector<IoMapData>{
{ "spv.register.autoassign.frag", "main_ep", 5, 10, 0, 20, 30, true, false },
@@ -422,6 +460,7 @@
"spv.float16Fetch.frag",
"spv.imageLoadStoreLod.frag",
"spv.int16.frag",
+ "spv.int16.amd.frag",
"spv.shaderBallotAMD.comp",
"spv.shaderFragMaskAMD.frag",
"spv.textureGatherBiasLod.frag",
diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h
index 9e77df8..5af96d9 100644
--- a/gtests/TestFixture.h
+++ b/gtests/TestFixture.h
@@ -70,7 +70,7 @@
// Enum for shader compilation semantics.
enum class Semantics {
OpenGL,
- Vulkan,
+ Vulkan
};
// Enum for compilation target.
@@ -197,14 +197,15 @@
GlslangResult compileAndLink(
const std::string shaderName, const std::string& code,
const std::string& entryPointName, EShMessages controls,
+ glslang::EshTargetClientVersion clientTargetVersion,
bool flattenUniformArrays = false,
EShTextureSamplerTransformMode texSampTransMode = EShTexSampTransKeep,
bool disableOptimizer = true,
bool automap = true)
{
- const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
+ const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
- glslang::TShader shader(kind);
+ glslang::TShader shader(stage);
if (automap) {
shader.setAutoMapLocations(true);
shader.setAutoMapBindings(true);
@@ -212,6 +213,24 @@
shader.setTextureSamplerTransformMode(texSampTransMode);
shader.setFlattenUniformArrays(flattenUniformArrays);
+ if (controls & EShMsgSpvRules) {
+ if (controls & EShMsgVulkanRules) {
+ shader.setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl
+ : glslang::EShSourceGlsl,
+ stage, glslang::EShClientVulkan, 100);
+ shader.setEnvClient(glslang::EShClientVulkan, clientTargetVersion);
+ shader.setEnvTarget(glslang::EShTargetSpv,
+ clientTargetVersion == glslang::EShTargetVulkan_1_1 ? glslang::EShTargetSpv_1_3
+ : glslang::EShTargetSpv_1_0);
+ } else {
+ shader.setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl
+ : glslang::EShSourceGlsl,
+ stage, glslang::EShClientOpenGL, 100);
+ shader.setEnvClient(glslang::EShClientOpenGL, clientTargetVersion);
+ shader.setEnvTarget(glslang::EshTargetSpv, glslang::EShTargetSpv_1_0);
+ }
+ }
+
bool success = compile(&shader, code, entryPointName, controls);
glslang::TProgram program;
@@ -224,7 +243,7 @@
std::vector<uint32_t> spirv_binary;
glslang::SpvOptions options;
options.disableOptimizer = disableOptimizer;
- glslang::GlslangToSpv(*program.getIntermediate(kind),
+ glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger, &options);
std::ostringstream disassembly_stream;
@@ -255,9 +274,9 @@
bool autoMapBindings,
bool flattenUniformArrays)
{
- const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
+ const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
- glslang::TShader shader(kind);
+ glslang::TShader shader(stage);
shader.setShiftSamplerBinding(baseSamplerBinding);
shader.setShiftTextureBinding(baseTextureBinding);
shader.setShiftImageBinding(baseImageBinding);
@@ -279,7 +298,7 @@
if (success && (controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary;
- glslang::GlslangToSpv(*program.getIntermediate(kind),
+ glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger);
std::ostringstream disassembly_stream;
@@ -303,9 +322,9 @@
const std::string& entryPointName, EShMessages controls,
const unsigned int remapOptions = spv::spirvbin_t::NONE)
{
- const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
+ const EShLanguage stage = GetShaderStage(GetSuffix(shaderName));
- glslang::TShader shader(kind);
+ glslang::TShader shader(stage);
shader.setAutoMapBindings(true);
shader.setAutoMapLocations(true);
@@ -319,7 +338,7 @@
if (success && (controls & EShMsgSpvRules)) {
std::vector<uint32_t> spirv_binary;
- glslang::GlslangToSpv(*program.getIntermediate(kind),
+ glslang::GlslangToSpv(*program.getIntermediate(stage),
spirv_binary, &logger);
spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
@@ -388,6 +407,7 @@
const std::string& testName,
Source source,
Semantics semantics,
+ glslang::EshTargetClientVersion clientTargetVersion,
Target target,
bool automap = true,
const std::string& entryPointName="",
@@ -403,8 +423,8 @@
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
const EShMessages controls = DeriveOptions(source, semantics, target);
- GlslangResult result = compileAndLink(testName, input, entryPointName, controls, false, EShTexSampTransKeep,
- disableOptimizer, automap);
+ GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion, false,
+ EShTexSampTransKeep, disableOptimizer, automap);
// Generate the hybrid output in the way of glslangValidator.
std::ostringstream stream;
@@ -430,7 +450,8 @@
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
const EShMessages controls = DeriveOptions(source, semantics, target);
- GlslangResult result = compileAndLink(testName, input, entryPointName, controls, true);
+ GlslangResult result = compileAndLink(testName, input, entryPointName, controls,
+ glslang::EShTargetVulkan_1_0, true);
// Generate the hybrid output in the way of glslangValidator.
std::ostringstream stream;
@@ -599,7 +620,8 @@
tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
const EShMessages controls = DeriveOptions(source, semantics, target);
- GlslangResult result = compileAndLink(testName, input, entryPointName, controls, false,
+ GlslangResult result = compileAndLink(testName, input, entryPointName, controls,
+ glslang::EShTargetVulkan_1_0, false,
EShTexSampTransUpgradeTextureRemoveSampler);
// Generate the hybrid output in the way of glslangValidator.
diff --git a/gtests/main.cpp b/gtests/main.cpp
index 35f30db..9cd06d1 100644
--- a/gtests/main.cpp
+++ b/gtests/main.cpp
@@ -54,7 +54,7 @@
glslangtest::GlobalTestSettings.updateMode = true;
}
if (std::string("--test-root") == argv[i]) {
- // Allow the user set the tets root directory. This is useful
+ // Allow the user set the test root directory. This is useful
// for testing with files from another source tree.
if (i + 1 < argc) {
glslangtest::GlobalTestSettings.testRoot = argv[i + 1];
@@ -64,6 +64,11 @@
return 1;
}
}
+ if (std::string("--help") == argv[i]) {
+ printf("\nExtra options:\n\n");
+ printf(" --update-mode\n Update the golden results for the tests.\n");
+ printf(" --test-root <arg>\n Specify the test root directory (useful for testing with\n files from another source tree).\n");
+ }
}
const int result = RUN_ALL_TESTS();
diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
index 57e34d1..8bcee50 100755
--- a/hlsl/hlslGrammar.cpp
+++ b/hlsl/hlslGrammar.cpp
@@ -1590,6 +1590,10 @@
new(&type) TType(EbtUint, EvqTemporary, 4);
break;
+ case EHTokUint64:
+ new(&type) TType(EbtUint64);
+ break;
+
case EHTokBool:
new(&type) TType(EbtBool);
break;
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index 2395daf..d719b04 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -4559,6 +4559,22 @@
return imageAggregate != nullptr && imageAggregate->getOp() == EOpImageLoad;
};
+ const auto lookupBuiltinVariable = [&](const char* name, TBuiltInVariable builtin, TType& type) -> TIntermTyped* {
+ TSymbol* symbol = symbolTable.find(name);
+ if (nullptr == symbol) {
+ type.getQualifier().builtIn = builtin;
+
+ TVariable* variable = new TVariable(new TString(name), type);
+
+ symbolTable.insert(*variable);
+
+ symbol = symbolTable.find(name);
+ assert(symbol && "Inserted symbol could not be found!");
+ }
+
+ return intermediate.addSymbol(*(symbol->getAsVariable()), loc);
+ };
+
// HLSL intrinsics can be pass through to native AST opcodes, or decomposed here to existing AST
// opcodes for compatibility with existing software stacks.
static const bool decomposeHlslIntrinsics = true;
@@ -5115,7 +5131,65 @@
break;
}
-
+ case EOpWaveGetLaneCount:
+ {
+ // Mapped to gl_SubgroupSize builtin (We preprend @ to the symbol
+ // so that it inhabits the symbol table, but has a user-invalid name
+ // in-case some source HLSL defined the symbol also).
+ TType type(EbtUint, EvqVaryingIn);
+ node = lookupBuiltinVariable("@gl_SubgroupSize", EbvSubgroupSize2, type);
+ break;
+ }
+ case EOpWaveGetLaneIndex:
+ {
+ // Mapped to gl_SubgroupInvocationID builtin (We preprend @ to the
+ // symbol so that it inhabits the symbol table, but has a
+ // user-invalid name in-case some source HLSL defined the symbol
+ // also).
+ TType type(EbtUint, EvqVaryingIn);
+ node = lookupBuiltinVariable("@gl_SubgroupInvocationID", EbvSubgroupInvocation2, type);
+ break;
+ }
+ case EOpWaveActiveCountBits:
+ {
+ // Mapped to subgroupBallotBitCount(subgroupBallot()) builtin
+
+ // uvec4 type.
+ TType uvec4Type(EbtUint, EvqTemporary, 4);
+
+ // Get the uvec4 return from subgroupBallot().
+ TIntermTyped* res = intermediate.addBuiltInFunctionCall(loc,
+ EOpSubgroupBallot, true, arguments, uvec4Type);
+
+ // uint type.
+ TType uintType(EbtUint, EvqTemporary);
+
+ node = intermediate.addBuiltInFunctionCall(loc,
+ EOpSubgroupBallotBitCount, true, res, uintType);
+
+ break;
+ }
+ case EOpWavePrefixCountBits:
+ {
+ // Mapped to subgroupBallotInclusiveBitCount(subgroupBallot())
+ // builtin
+
+ // uvec4 type.
+ TType uvec4Type(EbtUint, EvqTemporary, 4);
+
+ // Get the uvec4 return from subgroupBallot().
+ TIntermTyped* res = intermediate.addBuiltInFunctionCall(loc,
+ EOpSubgroupBallot, true, arguments, uvec4Type);
+
+ // uint type.
+ TType uintType(EbtUint, EvqTemporary);
+
+ node = intermediate.addBuiltInFunctionCall(loc,
+ EOpSubgroupBallotInclusiveBitCount, true, res, uintType);
+
+ break;
+ }
+
default:
break; // most pass through unchanged
}
diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp
index a049391..5022fcb 100755
--- a/hlsl/hlslParseables.cpp
+++ b/hlsl/hlslParseables.cpp
@@ -259,6 +259,8 @@
case 'D': s += "double"; break;
case 'I': s += "int"; break;
case 'U': s += "uint"; break;
+ case 'L': s += "int64_t"; break;
+ case 'M': s += "uint64_t"; break;
case 'B': s += "bool"; break;
case 'S': s += "sampler"; break;
case 's': s += "SamplerComparisonState"; break;
@@ -544,7 +546,7 @@
// orderKey can be:
// S = scalar, V = vector, M = matrix, - = void
// typekey can be:
- // D = double, F = float, U = uint, I = int, B = bool, S = sampler, s = shadowSampler
+ // D = double, F = float, U = uint, I = int, B = bool, S = sampler, s = shadowSampler, M = uint64_t, L = int64_t
// An empty order or type key repeats the first one. E.g: SVM,, means 3 args each of SVM.
// '>' as first letter of order creates an output parameter
// '<' as first letter of order creates an input parameter
@@ -902,6 +904,35 @@
{ "DecrementCounter", nullptr, nullptr, "-", "-", EShLangAll, true },
{ "Consume", nullptr, nullptr, "-", "-", EShLangAll, true },
+ // SM 6.0
+
+ { "WaveIsFirstLane", "S", "B", "-", "-", EShLangPSCS, false},
+ { "WaveGetLaneCount", "S", "U", "-", "-", EShLangPSCS, false},
+ { "WaveGetLaneIndex", "S", "U", "-", "-", EShLangPSCS, false},
+ { "WaveActiveAnyTrue", "S", "B", "S", "B", EShLangPSCS, false},
+ { "WaveActiveAllTrue", "S", "B", "S", "B", EShLangPSCS, false},
+ { "WaveActiveBallot", "V4", "U", "S", "B", EShLangPSCS, false},
+ { "WaveReadLaneAt", nullptr, nullptr, "SV,S", "DFUI,U", EShLangPSCS, false},
+ { "WaveReadFirstLane", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WaveActiveAllEqual", "S", "B", "SV", "DFUI", EShLangPSCS, false},
+ { "WaveActiveAllEqualBool", "S", "B", "S", "B", EShLangPSCS, false},
+ { "WaveActiveCountBits", "S", "U", "S", "B", EShLangPSCS, false},
+
+ { "WaveActiveSum", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WaveActiveProduct", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WaveActiveBitAnd", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WaveActiveBitOr", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WaveActiveBitXor", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WaveActiveMin", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WaveActiveMax", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WavePrefixSum", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WavePrefixProduct", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "WavePrefixCountBits", "S", "U", "S", "B", EShLangPSCS, false},
+ { "QuadReadAcrossX", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "QuadReadAcrossY", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "QuadReadAcrossDiagonal", nullptr, nullptr, "SV", "DFUI", EShLangPSCS, false},
+ { "QuadReadLaneAt", nullptr, nullptr, "SV,S", "DFUI,U", EShLangPSCS, false},
+
// Methods for subpass input objects
{ "SubpassLoad", "V4", nullptr, "[", "FIU", EShLangPS, true },
{ "SubpassLoad", "V4", nullptr, "],S", "FIU,I", EShLangPS, true },
@@ -1244,6 +1275,33 @@
symbolTable.relateToOperator(BUILTIN_PREFIX "Append", EOpMethodAppend);
symbolTable.relateToOperator(BUILTIN_PREFIX "RestartStrip", EOpMethodRestartStrip);
+ // Wave ops
+ symbolTable.relateToOperator("WaveIsFirstLane", EOpSubgroupElect);
+ symbolTable.relateToOperator("WaveGetLaneCount", EOpWaveGetLaneCount);
+ symbolTable.relateToOperator("WaveGetLaneIndex", EOpWaveGetLaneIndex);
+ symbolTable.relateToOperator("WaveActiveAnyTrue", EOpSubgroupAny);
+ symbolTable.relateToOperator("WaveActiveAllTrue", EOpSubgroupAll);
+ symbolTable.relateToOperator("WaveActiveBallot", EOpSubgroupBallot);
+ symbolTable.relateToOperator("WaveReadFirstLane", EOpSubgroupBroadcastFirst);
+ symbolTable.relateToOperator("WaveReadLaneAt", EOpSubgroupShuffle);
+ symbolTable.relateToOperator("WaveActiveAllEqual", EOpSubgroupAllEqual);
+ symbolTable.relateToOperator("WaveActiveAllEqualBool", EOpSubgroupAllEqual);
+ symbolTable.relateToOperator("WaveActiveCountBits", EOpWaveActiveCountBits);
+ symbolTable.relateToOperator("WaveActiveSum", EOpSubgroupAdd);
+ symbolTable.relateToOperator("WaveActiveProduct", EOpSubgroupMul);
+ symbolTable.relateToOperator("WaveActiveBitAnd", EOpSubgroupAnd);
+ symbolTable.relateToOperator("WaveActiveBitOr", EOpSubgroupOr);
+ symbolTable.relateToOperator("WaveActiveBitXor", EOpSubgroupXor);
+ symbolTable.relateToOperator("WaveActiveMin", EOpSubgroupMin);
+ symbolTable.relateToOperator("WaveActiveMax", EOpSubgroupMax);
+ symbolTable.relateToOperator("WavePrefixSum", EOpSubgroupInclusiveAdd);
+ symbolTable.relateToOperator("WavePrefixProduct", EOpSubgroupInclusiveMul);
+ symbolTable.relateToOperator("WavePrefixCountBits", EOpWavePrefixCountBits);
+ symbolTable.relateToOperator("QuadReadAcrossX", EOpSubgroupQuadSwapHorizontal);
+ symbolTable.relateToOperator("QuadReadAcrossY", EOpSubgroupQuadSwapVertical);
+ symbolTable.relateToOperator("QuadReadAcrossDiagonal", EOpSubgroupQuadSwapDiagonal);
+ symbolTable.relateToOperator("QuadReadLaneAt", EOpSubgroupQuadBroadcast);
+
// Subpass input methods
symbolTable.relateToOperator(BUILTIN_PREFIX "SubpassLoad", EOpSubpassLoad);
symbolTable.relateToOperator(BUILTIN_PREFIX "SubpassLoadMS", EOpSubpassLoadMS);
diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp
index 650918b..06f7675 100755
--- a/hlsl/hlslScanContext.cpp
+++ b/hlsl/hlslScanContext.cpp
@@ -143,6 +143,7 @@
(*KeywordMap)["bool"] = EHTokBool;
(*KeywordMap)["int"] = EHTokInt;
(*KeywordMap)["uint"] = EHTokUint;
+ (*KeywordMap)["uint64_t"] = EHTokUint64;
(*KeywordMap)["dword"] = EHTokDword;
(*KeywordMap)["half"] = EHTokHalf;
(*KeywordMap)["float"] = EHTokFloat;
@@ -650,6 +651,7 @@
case EHTokBool:
case EHTokInt:
case EHTokUint:
+ case EHTokUint64:
case EHTokDword:
case EHTokHalf:
case EHTokFloat:
diff --git a/hlsl/hlslTokens.h b/hlsl/hlslTokens.h
index 98450c9..9354ad9 100755
--- a/hlsl/hlslTokens.h
+++ b/hlsl/hlslTokens.h
@@ -95,6 +95,7 @@
EHTokBool,
EHTokInt,
EHTokUint,
+ EHTokUint64,
EHTokDword,
EHTokHalf,
EHTokFloat,