diff --git a/BUILD.gn b/BUILD.gn index 860247cb..e38e78a4 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -148,6 +148,7 @@ source_set("glslang_sources") { "-Wno-inconsistent-missing-override", "-Wno-sign-compare", "-Wno-unused-variable", + "-Wno-missing-field-initializers", ] } if (is_win && !is_clang) { @@ -186,3 +187,13 @@ executable("glslang_validator") { ":glslang_sources", ] } + +executable("spirv-remap") { + sources = [ + "StandAlone/spirv-remap.cpp", + ] + defines = [ "ENABLE_OPT=1" ] + deps = [ + ":glslang_sources", + ] +} diff --git a/CMakeLists.txt b/CMakeLists.txt index acbd266b..5638fabe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,6 +105,8 @@ else() set(CMAKE_CXX_EXTENSIONS OFF) endif() +add_compile_options(-fno-rtti) + function(glslang_set_link_args TARGET) # For MinGW compiles, statically link against the GCC and C++ runtimes. # This avoids the need to ship those runtimes as DLLs. diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h index e29c055b..40164b61 100644 --- a/SPIRV/GLSL.ext.EXT.h +++ b/SPIRV/GLSL.ext.EXT.h @@ -34,5 +34,6 @@ static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shade static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer"; static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fully_covered"; static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density"; +static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation"; #endif // #ifndef GLSLextEXT_H diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index bcc6087d..1140bef5 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -42,5 +42,6 @@ static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_ static const char* const E_SPV_KHR_vulkan_memory_model = "SPV_KHR_vulkan_memory_model"; static const char* const E_SPV_EXT_physical_storage_buffer = "SPV_EXT_physical_storage_buffer"; static const char* const E_SPV_EXT_fragment_shader_interlock = "SPV_EXT_fragment_shader_interlock"; +static const char* const E_SPV_KHR_shader_clock = "SPV_KHR_shader_clock"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GLSL.ext.NV.h b/SPIRV/GLSL.ext.NV.h index ede2c570..50146da1 100644 --- a/SPIRV/GLSL.ext.NV.h +++ b/SPIRV/GLSL.ext.NV.h @@ -75,4 +75,7 @@ const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate"; //SPV_NV_cooperative_matrix const char* const E_SPV_NV_cooperative_matrix = "SPV_NV_cooperative_matrix"; +//SPV_NV_shader_sm_builtins +const char* const E_SPV_NV_shader_sm_builtins = "SPV_NV_shader_sm_builtins"; + #endif // #ifndef GLSLextNV_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 7eba1b6a..24c7232b 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -138,7 +138,7 @@ protected: spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, std::vector& operands) const; spv::StorageClass TranslateStorageClass(const glslang::TType&); void addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType); - spv::Id createSpvVariable(const glslang::TIntermSymbol*); + spv::Id createSpvVariable(const glslang::TIntermSymbol*, spv::Id forcedType); spv::Id getSampledType(const glslang::TSampler&); spv::Id getInvertedSwizzleType(const glslang::TIntermTyped&); spv::Id createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped&, spv::Id parentResult); @@ -169,7 +169,7 @@ protected: void makeGlobalInitializers(const glslang::TIntermSequence&); void visitFunctions(const glslang::TIntermSequence&); void handleFunctionEntry(const glslang::TIntermAggregate* node); - void translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments); + void translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); void translateArguments(glslang::TIntermUnary& node, std::vector& arguments); spv::Id createImageTextureFunctionCall(glslang::TIntermOperator* node); spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*); @@ -178,14 +178,14 @@ protected: glslang::TBasicType typeProxy, bool reduceComparison = true); spv::Id createBinaryMatrixOperation(spv::Op, OpDecorations&, spv::Id typeId, spv::Id left, spv::Id right); spv::Id createUnaryOperation(glslang::TOperator op, OpDecorations&, spv::Id typeId, spv::Id operand, - glslang::TBasicType typeProxy); + glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); spv::Id createUnaryMatrixOperation(spv::Op op, OpDecorations&, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy); spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand, glslang::TBasicType typeProxy); spv::Id createIntWidthConversion(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& operands, glslang::TBasicType typeProxy); + spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector& operands); spv::Id createSubgroupOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); @@ -208,6 +208,8 @@ protected: if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3) builder.addExtension(ext); } + std::pair getForcedType(spv::BuiltIn, const glslang::TType&); + spv::Id translateForcedType(spv::Id object); glslang::SpvOptions& options; spv::Function* shaderEntry; @@ -224,6 +226,7 @@ protected: bool linkageOnly; // true when visiting the set of objects in the AST present only for establishing interface, whether or not they were statically used std::set iOSet; // all input/output variables from either static use or declaration of interface const glslang::TIntermediate* glslangIntermediate; + bool nanMinMaxClamp; // true if use NMin/NMax/NClamp instead of FMin/FMax/FClamp spv::Id stdBuiltins; std::unordered_map extBuiltinMap; @@ -237,6 +240,10 @@ protected: std::unordered_map counterOriginator; // Map pointee types for EbtReference to their forward pointers std::map forwardPointers; + // Type forcing, for when SPIR-V wants a different type than the AST, + // requiring local translation to and from SPIR-V type on every access. + // Maps AST-required-type-id> + std::unordered_map forceType; }; // @@ -732,27 +739,27 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvSubGroupEqMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::CapabilitySubgroupBallotKHR); - return spv::BuiltInSubgroupEqMaskKHR; + return spv::BuiltInSubgroupEqMask; case glslang::EbvSubGroupGeMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::CapabilitySubgroupBallotKHR); - return spv::BuiltInSubgroupGeMaskKHR; + return spv::BuiltInSubgroupGeMask; case glslang::EbvSubGroupGtMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::CapabilitySubgroupBallotKHR); - return spv::BuiltInSubgroupGtMaskKHR; + return spv::BuiltInSubgroupGtMask; case glslang::EbvSubGroupLeMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::CapabilitySubgroupBallotKHR); - return spv::BuiltInSubgroupLeMaskKHR; + return spv::BuiltInSubgroupLeMask; case glslang::EbvSubGroupLtMask: builder.addExtension(spv::E_SPV_KHR_shader_ballot); builder.addCapability(spv::CapabilitySubgroupBallotKHR); - return spv::BuiltInSubgroupLtMaskKHR; + return spv::BuiltInSubgroupLtMask; case glslang::EbvNumSubgroups: builder.addCapability(spv::CapabilityGroupNonUniform); @@ -794,6 +801,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI 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); @@ -946,6 +954,24 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvMeshViewIndicesNV: return spv::BuiltInMeshViewIndicesNV; #endif + + // sm builtins + case glslang::EbvWarpsPerSM: + builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); + builder.addCapability(spv::CapabilityShaderSMBuiltinsNV); + return spv::BuiltInWarpsPerSMNV; + case glslang::EbvSMCount: + builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); + builder.addCapability(spv::CapabilityShaderSMBuiltinsNV); + return spv::BuiltInSMCountNV; + case glslang::EbvWarpID: + builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); + builder.addCapability(spv::CapabilityShaderSMBuiltinsNV); + return spv::BuiltInWarpIDNV; + case glslang::EbvSMID: + builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); + builder.addCapability(spv::CapabilityShaderSMBuiltinsNV); + return spv::BuiltInSMIDNV; default: return spv::BuiltInMax; } @@ -1295,7 +1321,8 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl sequenceDepth(0), logger(buildLogger), builder(spvVersion, (glslang::GetKhronosToolId() << 16) | glslang::GetSpirvGeneratorVersion(), logger), inEntryPoint(false), entryPointTerminated(false), linkageOnly(false), - glslangIntermediate(glslangIntermediate) + glslangIntermediate(glslangIntermediate), + nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp()) { spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage()); @@ -1600,8 +1627,8 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) // Formal function parameters were mapped during makeFunctions(). spv::Id id = getSymbolId(symbol); - // Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction if (builder.isPointer(id)) { + // Include all "static use" and "linkage only" interface variables on the OpEntryPoint instruction // Consider adding to the OpEntryPoint interface list. // Only looking at structures if they have at least one member. if (!symbol->getType().isStruct() || symbol->getType().getStruct()->size() > 0) { @@ -1613,6 +1640,14 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) iOSet.insert(id); } } + + // If the SPIR-V type is required to be different than the AST type, + // translate now from the SPIR-V type to the AST type, for the consuming + // operation. + // Note this turns it from an l-value to an r-value. + // Currently, all symbols needing this are inputs; avoid the map lookup when non-input. + if (symbol->getType().getQualifier().storage == glslang::EvqVaryingIn) + id = translateForcedType(id); } // Only process non-linkage-only nodes for generating actual static uses @@ -1630,8 +1665,10 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) // See comments in handleUserFunctionCall(). // B) Specialization constants (normal constants don't even come in as a variable), // These are also pure R-values. + // C) R-Values from type translation, see above call to translateForcedType() glslang::TQualifier qualifier = symbol->getQualifier(); - if (qualifier.isSpecConstant() || rValueParameters.find(symbol->getId()) != rValueParameters.end()) + if (qualifier.isSpecConstant() || rValueParameters.find(symbol->getId()) != rValueParameters.end() || + !builder.isPointerType(builder.getTypeId(id))) builder.setAccessChainRValue(id); else builder.setAccessChainLValue(id); @@ -1888,6 +1925,71 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T } } +// Figure out what, if any, type changes are needed when accessing a specific built-in. +// Returns . +// Also see comment for 'forceType', regarding tracking SPIR-V-required types. +std::pair TGlslangToSpvTraverser::getForcedType(spv::BuiltIn builtIn, + const glslang::TType& glslangType) +{ + switch(builtIn) + { + case spv::BuiltInSubgroupEqMask: + case spv::BuiltInSubgroupGeMask: + case spv::BuiltInSubgroupGtMask: + case spv::BuiltInSubgroupLeMask: + case spv::BuiltInSubgroupLtMask: { + // these require changing a 64-bit scaler -> a vector of 32-bit components + if (glslangType.isVector()) + break; + std::pair ret(builder.makeVectorType(builder.makeUintType(32), 4), + builder.makeUintType(64)); + return ret; + } + default: + break; + } + + std::pair ret(spv::NoType, spv::NoType); + return ret; +} + +// For an object previously identified (see getForcedType() and forceType) +// as needing type translations, do the translation needed for a load, turning +// an L-value into in R-value. +spv::Id TGlslangToSpvTraverser::translateForcedType(spv::Id object) +{ + const auto forceIt = forceType.find(object); + if (forceIt == forceType.end()) + return object; + + spv::Id desiredTypeId = forceIt->second; + spv::Id objectTypeId = builder.getTypeId(object); + assert(builder.isPointerType(objectTypeId)); + objectTypeId = builder.getContainedTypeId(objectTypeId); + if (builder.isVectorType(objectTypeId) && + builder.getScalarTypeWidth(builder.getContainedTypeId(objectTypeId)) == 32) { + if (builder.getScalarTypeWidth(desiredTypeId) == 64) { + // handle 32-bit v.xy* -> 64-bit + builder.clearAccessChain(); + builder.setAccessChainLValue(object); + object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, objectTypeId); + std::vector components; + components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 0)); + components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 1)); + + spv::Id vecType = builder.makeVectorType(builder.getContainedTypeId(objectTypeId), 2); + return builder.createUnaryOp(spv::OpBitcast, desiredTypeId, + builder.createCompositeConstruct(vecType, components)); + } else { + logger->missingFunctionality("forcing 32-bit vector type to non 64-bit scalar"); + } + } else { + logger->missingFunctionality("forcing non 32-bit vector type"); + } + + return object; +} + bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node) { builder.setLine(node->getLoc().line, node->getLoc().getFilename()); @@ -1963,19 +2065,26 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI invertedType = getInvertedSwizzleType(*node->getOperand()); builder.clearAccessChain(); + TIntermNode *operandNode; if (invertedType != spv::NoType) - node->getOperand()->getAsBinaryNode()->getLeft()->traverse(this); + operandNode = node->getOperand()->getAsBinaryNode()->getLeft(); else - node->getOperand()->traverse(this); + operandNode = node->getOperand(); + + operandNode->traverse(this); spv::Id operand = spv::NoResult; + spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags; + if (node->getOp() == glslang::EOpAtomicCounterIncrement || node->getOp() == glslang::EOpAtomicCounterDecrement || node->getOp() == glslang::EOpAtomicCounter || - node->getOp() == glslang::EOpInterpolateAtCentroid) + node->getOp() == glslang::EOpInterpolateAtCentroid) { operand = builder.accessChainGetLValue(); // Special case l-value operands - else + lvalueCoherentFlags = builder.getAccessChain().coherentFlags; + lvalueCoherentFlags |= TranslateCoherent(operandNode->getAsTyped()->getType()); + } else operand = accessChainLoad(node->getOperand()->getType()); OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), @@ -1988,7 +2097,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // if not, then possibly an operation if (! result) - result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType()); + result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType(), lvalueCoherentFlags); if (result) { if (invertedType) { @@ -2095,6 +2204,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt bool noReturnValue = false; bool atomic = false; + spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags; + assert(node->getOp()); spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); @@ -2292,7 +2403,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt { builder.setLine(node->getLoc().line, node->getLoc().getFilename()); std::vector arguments; - translateArguments(*node, arguments); + translateArguments(*node, arguments, lvalueCoherentFlags); spv::Id constructed; if (node->getOp() == glslang::EOpConstructTextureSampler) constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments); @@ -2584,9 +2695,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } } - if (lvalue) + if (lvalue) { operands.push_back(builder.accessChainGetLValue()); - else { + lvalueCoherentFlags = builder.getAccessChain().coherentFlags; + lvalueCoherentFlags |= TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()); + } else { builder.setLine(node->getLoc().line, node->getLoc().getFilename()); operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType())); } @@ -2621,7 +2734,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt result = 0; } else if (atomic) { // Handle all atomics - result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); + result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); } else { // Pass through to generic operations. switch (glslangOperands.size()) { @@ -2636,7 +2749,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt result = createUnaryOperation( node->getOp(), decorations, resultType(), operands.front(), - glslangOperands[0]->getAsTyped()->getBasicType()); + glslangOperands[0]->getAsTyped()->getBasicType(), lvalueCoherentFlags); } break; default: @@ -2998,6 +3111,12 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T builder.clearAccessChain(); break; + case glslang::EOpDemote: + builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT); + builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation); + builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT); + break; + default: assert(0); break; @@ -3006,7 +3125,7 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T return false; } -spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* node) +spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* node, spv::Id forcedType) { // First, steer off constants, which are not SPIR-V variables, but // can still have a mapping to a SPIR-V Id. @@ -3019,7 +3138,8 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* // Now, handle actual variables spv::StorageClass storageClass = TranslateStorageClass(node->getType()); - spv::Id spvType = convertGlslangToSpvType(node->getType()); + spv::Id spvType = forcedType == spv::NoType ? convertGlslangToSpvType(node->getType()) + : forcedType; const bool contains16BitType = node->getType().containsBasicType(glslang::EbtFloat16) || node->getType().containsBasicType(glslang::EbtInt16) || @@ -3048,6 +3168,11 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* builder.addCapability(spv::CapabilityStorageUniformBufferBlock16); break; default: + if (node->getType().containsBasicType(glslang::EbtFloat16)) + builder.addCapability(spv::CapabilityFloat16); + if (node->getType().containsBasicType(glslang::EbtInt16) || + node->getType().containsBasicType(glslang::EbtUint16)) + builder.addCapability(spv::CapabilityInt16); break; } } @@ -3064,6 +3189,8 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* } else if (storageClass == spv::StorageClassStorageBuffer) { builder.addExtension(spv::E_SPV_KHR_8bit_storage); builder.addCapability(spv::CapabilityStorageBuffer8BitAccess); + } else { + builder.addCapability(spv::CapabilityInt8); } } @@ -3376,9 +3503,12 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy memberRemapper[glslangMembers][i] = -1; } else { if (type.getBasicType() == glslang::EbtBlock) { - memberRemapper[glslangMembers][i] = i - memberDelta; - if (filterMember(glslangMember)) + if (filterMember(glslangMember)) { + memberDelta++; + memberRemapper[glslangMembers][i] = -1; continue; + } + memberRemapper[glslangMembers][i] = i - memberDelta; } // modify just this child's view of the qualifier glslang::TQualifier memberQualifier = glslangMember.getQualifier(); @@ -3996,6 +4126,16 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF symbolValues[parameters[p]->getAsSymbolNode()->getId()] = function->getParamId(p); // give a name too builder.addName(function->getParamId(p), parameters[p]->getAsSymbolNode()->getName().c_str()); + + const glslang::TType& paramType = parameters[p]->getAsTyped()->getType(); + if (paramType.containsBasicType(glslang::EbtInt8) || + paramType.containsBasicType(glslang::EbtUint8)) + builder.addCapability(spv::CapabilityInt8); + if (paramType.containsBasicType(glslang::EbtInt16) || + paramType.containsBasicType(glslang::EbtUint16)) + builder.addCapability(spv::CapabilityInt16); + if (paramType.containsBasicType(glslang::EbtFloat16)) + builder.addCapability(spv::CapabilityFloat16); } } } @@ -4034,7 +4174,7 @@ void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate builder.setBuildPoint(functionBlock); } -void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments) +void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) { const glslang::TIntermSequence& glslangArguments = node.getSequence(); @@ -4192,9 +4332,11 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& break; } - if (lvalue) + if (lvalue) { arguments.push_back(builder.accessChainGetLValue()); - else + lvalueCoherentFlags = builder.getAccessChain().coherentFlags; + lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType()); + } else arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType())); } } @@ -4235,9 +4377,11 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO return spv::ImageOperandsMaskNone; }; + spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags; + std::vector arguments; if (node->getAsAggregate()) - translateArguments(*node->getAsAggregate(), arguments); + translateArguments(*node->getAsAggregate(), arguments, lvalueCoherentFlags); else translateArguments(*node->getAsUnaryNode(), arguments); spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); @@ -4518,7 +4662,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO for (; opIt != arguments.end(); ++opIt) operands.push_back(*opIt); - return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); + return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); } } @@ -5274,7 +5418,7 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, OpDecora } spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDecorations& decorations, spv::Id typeId, - spv::Id operand, glslang::TBasicType typeProxy) + spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) { spv::Op unaryOp = spv::OpNop; int extBuiltins = -1; @@ -5545,7 +5689,7 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe // Handle all of the atomics in one place, in createAtomicOperation() std::vector operands; operands.push_back(operand); - return createAtomicOperation(op, decorations.precision, typeId, operands, typeProxy); + return createAtomicOperation(op, decorations.precision, typeId, operands, typeProxy, lvalueCoherentFlags); } case glslang::EOpBitFieldReverse: @@ -6153,7 +6297,7 @@ spv::Id TGlslangToSpvTraverser::makeSmearedConstant(spv::Id constant, int vector } // For glslang ops that map to SPV atomic opCodes -spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) +spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) { spv::Op opCode = spv::OpNop; @@ -6239,7 +6383,7 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv scopeId = builder.makeUintConstant(spv::ScopeDevice); } // semantics default to relaxed - spv::Id semanticsId = builder.makeUintConstant(spv::MemorySemanticsMaskNone); + spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.volatil ? spv::MemorySemanticsVolatileMask : spv::MemorySemanticsMaskNone); spv::Id semanticsId2 = semanticsId; pointerId = operands[0]; @@ -6269,7 +6413,10 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv // Check for capabilities unsigned semanticsImmediate = builder.getConstantScalar(semanticsId) | builder.getConstantScalar(semanticsId2); - if (semanticsImmediate & (spv::MemorySemanticsMakeAvailableKHRMask | spv::MemorySemanticsMakeVisibleKHRMask | spv::MemorySemanticsOutputMemoryKHRMask)) { + if (semanticsImmediate & (spv::MemorySemanticsMakeAvailableKHRMask | + spv::MemorySemanticsMakeVisibleKHRMask | + spv::MemorySemanticsOutputMemoryKHRMask | + spv::MemorySemanticsVolatileMask)) { builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } @@ -6961,7 +7108,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: switch (op) { case glslang::EOpMin: if (isFloat) - libCall = spv::GLSLstd450FMin; + libCall = nanMinMaxClamp ? spv::GLSLstd450NMin : spv::GLSLstd450FMin; else if (isUnsigned) libCall = spv::GLSLstd450UMin; else @@ -6973,7 +7120,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: break; case glslang::EOpMax: if (isFloat) - libCall = spv::GLSLstd450FMax; + libCall = nanMinMaxClamp ? spv::GLSLstd450NMax : spv::GLSLstd450FMax; else if (isUnsigned) libCall = spv::GLSLstd450UMax; else @@ -6992,7 +7139,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpClamp: if (isFloat) - libCall = spv::GLSLstd450FClamp; + libCall = nanMinMaxClamp ? spv::GLSLstd450NClamp : spv::GLSLstd450FClamp; else if (isUnsigned) libCall = spv::GLSLstd450UClamp; else @@ -7211,7 +7358,10 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: unsigned int memoryScope = builder.getConstantScalar(operands[1]); unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]); builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); - if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | spv::MemorySemanticsMakeVisibleKHRMask | spv::MemorySemanticsOutputMemoryKHRMask)) { + if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | + spv::MemorySemanticsMakeVisibleKHRMask | + spv::MemorySemanticsOutputMemoryKHRMask | + spv::MemorySemanticsVolatileMask)) { builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) { @@ -7228,7 +7378,10 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: unsigned int memoryScope = builder.getConstantScalar(operands[0]); unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]); builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); - if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | spv::MemorySemanticsMakeVisibleKHRMask | spv::MemorySemanticsOutputMemoryKHRMask)) { + if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | + spv::MemorySemanticsMakeVisibleKHRMask | + spv::MemorySemanticsOutputMemoryKHRMask | + spv::MemorySemanticsVolatileMask)) { builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) { @@ -7466,6 +7619,30 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createNoResultOp(spv::OpEndInvocationInterlockEXT); return 0; + case glslang::EOpIsHelperInvocation: + { + std::vector args; // Dummy arguments + builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation); + builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT); + return builder.createOp(spv::OpIsHelperInvocationEXT, typeId, args); + } + + case glslang::EOpReadClockSubgroupKHR: { + std::vector args; + args.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); + builder.addExtension(spv::E_SPV_KHR_shader_clock); + builder.addCapability(spv::CapabilityShaderClockKHR); + return builder.createOp(spv::OpReadClockKHR, typeId, args); + } + + case glslang::EOpReadClockDeviceKHR: { + std::vector args; + args.push_back(builder.makeUintConstant(spv::ScopeDevice)); + builder.addExtension(spv::E_SPV_KHR_shader_clock); + builder.addCapability(spv::CapabilityShaderClockKHR); + return builder.createOp(spv::OpReadClockKHR, typeId, args); + } + default: logger->missingFunctionality("unknown operation with no arguments"); return 0; @@ -7482,8 +7659,12 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol } // it was not found, create it - id = createSpvVariable(symbol); + spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false); + auto forcedType = getForcedType(builtIn, symbol->getType()); + id = createSpvVariable(symbol, forcedType.first); symbolValues[symbol->getId()] = id; + if (forcedType.second != spv::NoType) + forceType[id] = forcedType.second; if (symbol->getBasicType() != glslang::EbtBlock) { builder.addDecoration(id, TranslatePrecisionDecoration(symbol->getType())); @@ -7543,10 +7724,10 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, memory[i]); } - // built-in variable decorations - spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false); - if (builtIn != spv::BuiltInMax) + // add built-in variable decoration + if (builtIn != spv::BuiltInMax) { builder.addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); + } // nonuniform builder.addDecoration(id, TranslateNonUniformDecoration(symbol->getType().getQualifier())); @@ -7561,6 +7742,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol decoration = (spv::Decoration)spv::DecorationMax; builder.addDecoration(id, decoration); if (decoration != spv::DecorationMax) { + builder.addCapability(spv::CapabilitySampleMaskOverrideCoverageNV); builder.addExtension(spv::E_SPV_NV_sample_mask_override_coverage); } } @@ -8090,11 +8272,14 @@ void GlslangToSpv(const TIntermediate& intermediate, std::vector& #if ENABLE_OPT // If from HLSL, run spirv-opt to "legalize" the SPIR-V for Vulkan // eg. forward and remove memory writes of opaque types. - if ((intermediate.getSource() == EShSourceHlsl || options->optimizeSize) && !options->disableOptimizer) + bool prelegalization = intermediate.getSource() == EShSourceHlsl; + if ((intermediate.getSource() == EShSourceHlsl || options->optimizeSize) && !options->disableOptimizer) { SpirvToolsLegalize(intermediate, spirv, logger, options); + prelegalization = false; + } if (options->validate) - SpirvToolsValidate(intermediate, spirv, logger); + SpirvToolsValidate(intermediate, spirv, logger, prelegalization); if (options->disassemble) SpirvToolsDisassemble(std::cout, spirv); diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index fa61bb94..d6b9c346 100644 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -195,7 +195,7 @@ private: // Header access & set methods spirword_t magic() const { return spv[0]; } // return magic number spirword_t bound() const { return spv[3]; } // return Id bound from header - spirword_t bound(spirword_t b) { return spv[3] = b; }; + spirword_t bound(spirword_t b) { return spv[3] = b; } spirword_t genmagic() const { return spv[2]; } // generator magic spirword_t genmagic(spirword_t m) { return spv[2] = m; } spirword_t schemaNum() const { return spv[4]; } // schema number from header diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index db26d590..698f154a 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -103,7 +103,7 @@ void SpirvToolsDisassemble(std::ostream& out, const std::vector& s // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, - spv::SpvBuildLogger* logger) + spv::SpvBuildLogger* logger, bool prelegalization) { // validate spv_context context = spvContextCreate(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); @@ -111,6 +111,7 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector< spv_diagnostic diagnostic = nullptr; spv_validator_options options = spvValidatorOptionsCreate(); spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets()); + spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization); spvValidateWithOptions(context, options, &binary, &diagnostic); // report diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 7e49ae0b..cf8fc859 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -66,7 +66,7 @@ void SpirvToolsDisassemble(std::ostream& out, const std::vector& s // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, - spv::SpvBuildLogger*); + spv::SpvBuildLogger*, bool prelegalization); // Apply the SPIRV-Tools optimizer to generated SPIR-V, for the purpose of // legalizing HLSL SPIR-V. diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 302f2124..80ebac4a 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -648,6 +648,9 @@ static void GLSLstd450GetDebugNames(const char** names) names[GLSLstd450InterpolateAtCentroid] = "InterpolateAtCentroid"; names[GLSLstd450InterpolateAtSample] = "InterpolateAtSample"; names[GLSLstd450InterpolateAtOffset] = "InterpolateAtOffset"; + names[GLSLstd450NMin] = "NMin"; + names[GLSLstd450NMax] = "NMax"; + names[GLSLstd450NClamp] = "NClamp"; } #ifdef AMD_EXTENSIONS @@ -731,6 +734,7 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint) case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV"; case CapabilityMeshShadingNV: return "MeshShadingNV"; case CapabilityImageFootprintNV: return "ImageFootprintNV"; + case CapabilitySampleMaskOverrideCoverageNV:return "SampleMaskOverrideCoverageNV"; // NV Decorations case DecorationOverrideCoverageNV: return "OverrideCoverageNV"; diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index da9494d4..ffa2af83 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -423,6 +423,10 @@ const char* BuiltInString(int builtIn) case BuiltInMeshViewCountNV: return "MeshViewCountNV"; case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV"; #endif + case BuiltInWarpsPerSMNV: return "WarpsPerSMNV"; + case BuiltInSMCountNV: return "SMCountNV"; + case BuiltInWarpIDNV: return "WarpIDNV"; + case BuiltInSMIDNV: return "SMIDNV"; default: return "Bad"; } @@ -922,6 +926,7 @@ const char* CapabilityString(int info) case CapabilityMeshShadingNV: return "MeshShadingNV"; case CapabilityImageFootprintNV: return "ImageFootprintNV"; // case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT + case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; #endif case CapabilityFragmentDensityEXT: return "FragmentDensityEXT"; @@ -948,11 +953,15 @@ const char* CapabilityString(int info) case CapabilityVariablePointers: return "VariablePointers"; case CapabilityCooperativeMatrixNV: return "CooperativeMatrixNV"; + case CapabilityShaderSMBuiltinsNV: return "ShaderSMBuiltinsNV"; case CapabilityFragmentShaderSampleInterlockEXT: return "CapabilityFragmentShaderSampleInterlockEXT"; case CapabilityFragmentShaderPixelInterlockEXT: return "CapabilityFragmentShaderPixelInterlockEXT"; case CapabilityFragmentShaderShadingRateInterlockEXT: return "CapabilityFragmentShaderShadingRateInterlockEXT"; + case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; + case CapabilityShaderClockKHR: return "ShaderClockKHR"; + default: return "Bad"; } } @@ -1342,6 +1351,8 @@ const char* OpcodeString(int op) case 5012: return "OpFragmentFetchAMD"; #endif + case OpReadClockKHR: return "OpReadClockKHR"; + case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; @@ -1362,6 +1373,8 @@ const char* OpcodeString(int op) case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV"; case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV"; + case OpDemoteToHelperInvocationEXT: return "OpDemoteToHelperInvocationEXT"; + case OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT"; case OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT"; case OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT"; @@ -2779,6 +2792,10 @@ void Parameterize() InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'"); InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'"); + + InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false); + + InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'"); } }; // end spv namespace diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 03ba767c..59fdecee 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -455,6 +455,7 @@ enum Decoration { DecorationHlslCounterBufferGOOGLE = 5634, DecorationHlslSemanticGOOGLE = 5635, DecorationUserSemantic = 5635, + DecorationUserTypeGOOGLE = 5636, DecorationMax = 0x7fffffff, }; @@ -632,6 +633,7 @@ enum MemorySemanticsShift { MemorySemanticsOutputMemoryKHRShift = 12, MemorySemanticsMakeAvailableKHRShift = 13, MemorySemanticsMakeVisibleKHRShift = 14, + MemorySemanticsVolatileShift = 15, MemorySemanticsMax = 0x7fffffff, }; @@ -650,6 +652,7 @@ enum MemorySemanticsMask { MemorySemanticsOutputMemoryKHRMask = 0x00001000, MemorySemanticsMakeAvailableKHRMask = 0x00002000, MemorySemanticsMakeVisibleKHRMask = 0x00004000, + MemorySemanticsVolatileMask = 0x00008000, }; enum MemoryAccessShift { @@ -806,6 +809,7 @@ enum Capability { CapabilityFragmentMaskAMD = 5010, CapabilityStencilExportEXT = 5013, CapabilityImageReadWriteLodAMD = 5015, + CapabilityShaderClockKHR = 5055, CapabilitySampleMaskOverrideCoverageNV = 5249, CapabilityGeometryShaderPassthroughNV = 5251, CapabilityShaderViewportIndexLayerEXT = 5254, @@ -843,6 +847,7 @@ enum Capability { CapabilityFragmentShaderShadingRateInterlockEXT = 5372, CapabilityShaderSMBuiltinsNV = 5373, CapabilityFragmentShaderPixelInterlockEXT = 5378, + CapabilityDemoteToHelperInvocationEXT = 5379, CapabilitySubgroupShuffleINTEL = 5568, CapabilitySubgroupBufferBlockIOINTEL = 5569, CapabilitySubgroupImageBlockIOINTEL = 5570, @@ -1215,6 +1220,7 @@ enum Op { OpGroupSMaxNonUniformAMD = 5007, OpFragmentMaskFetchAMD = 5011, OpFragmentFetchAMD = 5012, + OpReadClockKHR = 5056, OpImageSampleFootprintNV = 5283, OpGroupNonUniformPartitionNV = 5296, OpWritePackedPrimitiveIndices4x8NV = 5299, @@ -1231,6 +1237,8 @@ enum Op { OpCooperativeMatrixLengthNV = 5362, OpBeginInvocationInterlockEXT = 5364, OpEndInvocationInterlockEXT = 5365, + OpDemoteToHelperInvocationEXT = 5380, + OpIsHelperInvocationEXT = 5381, OpSubgroupShuffleINTEL = 5571, OpSubgroupShuffleDownINTEL = 5572, OpSubgroupShuffleUpINTEL = 5573, @@ -1745,6 +1753,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; + case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; @@ -1759,6 +1768,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; + case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; + case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; + case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break; + case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; @@ -1903,8 +1916,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; - case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; - case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; } } #endif /* SPV_ENABLE_UTILITY_CODE */ diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index b3cd0b06..7e2d4bc1 100755 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -436,6 +436,6 @@ __inline void Block::addInstruction(std::unique_ptr inst) parent.getParent().mapInstruction(raw_instruction); } -}; // end spv namespace +} // end spv namespace #endif // spvIR_H diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index b7c43877..3bb3af39 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -104,6 +104,7 @@ enum TOptions { bool targetHlslFunctionality1 = false; bool SpvToolsDisassembler = false; bool SpvToolsValidate = false; +bool NaNClamp = false; // // Return codes from main/exit(). @@ -522,6 +523,8 @@ void ProcessArguments(std::vector>& workItem } else if (lowerword == "keep-uncalled" || // synonyms lowerword == "ku") { Options |= EOptionKeepUncalled; + } else if (lowerword == "nan-clamp") { + NaNClamp = true; } else if (lowerword == "no-storage-format" || // synonyms lowerword == "nsf") { Options |= EOptionNoStorageFormat; @@ -769,8 +772,17 @@ void ProcessArguments(std::vector>& workItem Error("must provide -S when --stdin is given"); // Make sure that -E is not specified alongside linking (which includes SPV generation) - if ((Options & EOptionOutputPreprocessed) && (Options & EOptionLinkProgram)) - Error("can't use -E when linking is selected"); + // Or things that require linking + if (Options & EOptionOutputPreprocessed) { + if (Options & EOptionLinkProgram) + Error("can't use -E when linking is selected"); + if (Options & EOptionDumpReflection) + Error("reflection requires linking, which can't be used when -E when is selected"); + } + + // reflection requires linking + if ((Options & EOptionDumpReflection) && !(Options & EOptionLinkProgram)) + Error("reflection requires -l for linking"); // -o or -x makes no sense if there is no target binary if (binaryFileName && (Options & EOptionSpv) == 0) @@ -981,6 +993,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0); + shader->setNanMinMaxClamp(NaNClamp); shader->setResourceSetBinding(baseResourceSetBinding[compUnit.stage]); if (Options & EOptionHlslIoMapping) @@ -1508,7 +1521,7 @@ void usage() " -l link all input files together to form a single module\n" " -m memory leak mode\n" " -o save binary to , requires a binary option (e.g., -V)\n" - " -q dump reflection query database\n" + " -q dump reflection query database; requires -l for linking\n" " -r | --relaxed-errors" " relaxed GLSL semantic error-checking mode\n" " -s silence syntax and semantic error reporting\n" @@ -1533,9 +1546,11 @@ void usage() " works independently of source language\n" " --hlsl-iomap perform IO mapping in HLSL register space\n" " --hlsl-enable-16bit-types allow 16-bit types in SPIR-V for HLSL\n" - " --hlsl-dx9-compatible interprets sampler declarations as a texture/sampler combo like DirectX9 would." + " --hlsl-dx9-compatible interprets sampler declarations as a\n" + " texture/sampler combo like DirectX9 would.\n" " --invert-y | --iy invert position.Y output in vertex shader\n" " --keep-uncalled | --ku don't eliminate uncalled functions\n" + " --nan-clamp favor non-NaN operand in min, max, and clamp\n" " --no-storage-format | --nsf use Unknown image format\n" " --reflect-strict-array-suffix use strict array suffix rules when\n" " reflecting\n" diff --git a/StandAlone/spirv-remap.cpp b/StandAlone/spirv-remap.cpp index 998f7428..5e2ed0ae 100644 --- a/StandAlone/spirv-remap.cpp +++ b/StandAlone/spirv-remap.cpp @@ -227,7 +227,7 @@ namespace { } } else if (arg == "--version" || arg == "-V") { - std::cout << basename(argv[0]) << " version 0.97 " << __DATE__ << " " << __TIME__ << std::endl; + std::cout << basename(argv[0]) << " version 0.97" << std::endl; exit(0); } else if (arg == "--input" || arg == "-i") { // Collect input files diff --git a/Test/310.frag b/Test/310.frag old mode 100644 new mode 100755 index a0525ea9..8a11f67a --- a/Test/310.frag +++ b/Test/310.frag @@ -58,8 +58,8 @@ void foo23() b1 = mix(b2, b3, b); uvec3 um3 = mix(uvec3(i), uvec3(i), bvec3(b)); ivec4 im4 = mix(ivec4(i), ivec4(i), bvec4(b)); + 1 << mix(1u, 1u, false); // does not require folding } - layout(binding=3) uniform sampler2D s1; layout(binding=3) uniform sampler2D s2; // ERROR: overlapping bindings? Don't see that in the 310 spec. highp layout(binding=2) uniform writeonly image2D i2D; diff --git a/Test/320.comp b/Test/320.comp index c31b047f..5b389959 100644 --- a/Test/320.comp +++ b/Test/320.comp @@ -1,5 +1,17 @@ #version 320 es + +float fX; +float fY; void main() { + dFdx(fX); + dFdy(fY); + fwidth(fX); + dFdxCoarse(fX); + dFdyCoarse(fY); + fwidthCoarse(fX); + dFdxFine(fX); + dFdyFine(fY); + fwidthFine(fX); } diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out index 4b65ea11..b4136b0a 100644 --- a/Test/baseResults/310.comp.out +++ b/Test/baseResults/310.comp.out @@ -29,7 +29,6 @@ ERROR: 0:94: 'writeonly' : argument cannot drop memory qualifier when passed to ERROR: 0:97: '' : memory qualifiers cannot be used on this type ERROR: 0:98: '' : memory qualifiers cannot be used on this type ERROR: 0:109: 'format' : image formats must match -ERROR: 0:110: 'restrict' : argument cannot drop memory qualifier when passed to formal parameter ERROR: 0:110: 'format' : image formats must match ERROR: 0:111: 'format' : image formats must match ERROR: 0:114: 'image load-store format' : not supported with this profile: es @@ -87,7 +86,7 @@ WARNING: 0:238: '#define' : names containing consecutive underscores are reserve ERROR: 0:244: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:245: 'gl_ViewIndex' : undeclared identifier ERROR: 0:255: 'gl_ViewIndex' : undeclared identifier -ERROR: 86 compilation errors. No code generated. +ERROR: 85 compilation errors. No code generated. Shader version: 310 diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out index 6763c0a1..fab3d461 100644 --- a/Test/baseResults/310.frag.out +++ b/Test/baseResults/310.frag.out @@ -337,6 +337,16 @@ ERROR: node is still EOpNull! 0:60 'i' ( uniform mediump int) 0:60 Construct bvec4 ( temp 4-component vector of bool) 0:60 'b' ( temp bool) +0:61 left-shift ( temp int) +0:61 Constant: +0:61 1 (const int) +0:61 mix ( global uint) +0:61 Constant: +0:61 1 (const uint) +0:61 Constant: +0:61 1 (const uint) +0:61 Constant: +0:61 false (const bool) 0:98 Function Definition: foots( ( global void) 0:98 Function Parameters: 0:100 Sequence diff --git a/Test/baseResults/310.tesc.out b/Test/baseResults/310.tesc.out index ef78bf38..25ce6ee9 100644 --- a/Test/baseResults/310.tesc.out +++ b/Test/baseResults/310.tesc.out @@ -72,8 +72,8 @@ ERROR: node is still EOpNull! 0:25 move second child to first child ( temp highp 4-component vector of float) 0:25 'p' ( temp highp 4-component vector of float) 0:25 gl_Position: direct index for structure ( in highp 4-component vector of float Position) -0:25 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:25 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:25 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:25 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: @@ -82,8 +82,8 @@ ERROR: node is still EOpNull! 0:26 move second child to first child ( temp highp float) 0:26 'ps' ( temp highp float) 0:26 gl_PointSize: direct index for structure ( in highp float PointSize) -0:26 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:26 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:26 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:26 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: @@ -211,8 +211,8 @@ ERROR: node is still EOpNull! 0:114 move second child to first child ( temp highp float) 0:114 'ps' ( temp highp float) 0:114 gl_PointSize: direct index for structure ( in highp float PointSize) -0:114 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:114 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:114 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:114 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:114 Constant: 0:114 1 (const int) 0:114 Constant: @@ -442,8 +442,8 @@ ERROR: node is still EOpNull! 0:25 move second child to first child ( temp highp 4-component vector of float) 0:25 'p' ( temp highp 4-component vector of float) 0:25 gl_Position: direct index for structure ( in highp 4-component vector of float Position) -0:25 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:25 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:25 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:25 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:25 Constant: 0:25 1 (const int) 0:25 Constant: @@ -452,8 +452,8 @@ ERROR: node is still EOpNull! 0:26 move second child to first child ( temp highp float) 0:26 'ps' ( temp highp float) 0:26 gl_PointSize: direct index for structure ( in highp float PointSize) -0:26 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:26 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:26 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:26 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:26 Constant: 0:26 1 (const int) 0:26 Constant: diff --git a/Test/baseResults/310.tese.out b/Test/baseResults/310.tese.out index 9c7c679d..2f23d9ba 100644 --- a/Test/baseResults/310.tese.out +++ b/Test/baseResults/310.tese.out @@ -76,8 +76,8 @@ ERROR: node is still EOpNull! 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 'p' ( temp highp 4-component vector of float) 0:36 gl_Position: direct index for structure ( in highp 4-component vector of float Position) -0:36 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:36 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:36 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:36 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: @@ -86,8 +86,8 @@ ERROR: node is still EOpNull! 0:37 move second child to first child ( temp highp float) 0:37 'ps' ( temp highp float) 0:37 gl_PointSize: direct index for structure ( in highp float PointSize) -0:37 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:37 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:37 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:37 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: @@ -209,8 +209,8 @@ ERROR: node is still EOpNull! 0:36 move second child to first child ( temp highp 4-component vector of float) 0:36 'p' ( temp highp 4-component vector of float) 0:36 gl_Position: direct index for structure ( in highp 4-component vector of float Position) -0:36 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:36 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:36 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:36 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:36 Constant: 0:36 1 (const int) 0:36 Constant: @@ -219,8 +219,8 @@ ERROR: node is still EOpNull! 0:37 move second child to first child ( temp highp float) 0:37 'ps' ( temp highp float) 0:37 gl_PointSize: direct index for structure ( in highp float PointSize) -0:37 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:37 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:37 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:37 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:37 Constant: 0:37 1 (const int) 0:37 Constant: diff --git a/Test/baseResults/320.comp.out b/Test/baseResults/320.comp.out index 09cedd0a..00865be4 100644 --- a/Test/baseResults/320.comp.out +++ b/Test/baseResults/320.comp.out @@ -1,10 +1,43 @@ 320.comp +ERROR: 0:8: 'dFdx' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 0:9: 'dFdy' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 0:10: 'fwidth' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 0:11: 'dFdxCoarse' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 0:12: 'dFdyCoarse' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 0:13: 'fwidthCoarse' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 0:14: 'dFdxFine' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 0:15: 'dFdyFine' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 0:16: 'fwidthFine' : required extension not requested: GL_NV_compute_shader_derivatives +ERROR: 9 compilation errors. No code generated. + + Shader version: 320 local_size = (1, 1, 1) -0:? Sequence -0:3 Function Definition: main( ( global void) -0:3 Function Parameters: +ERROR: node is still EOpNull! +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:8 Sequence +0:8 dPdx ( global highp float) +0:8 'fX' ( global highp float) +0:9 dPdy ( global highp float) +0:9 'fY' ( global highp float) +0:10 fwidth ( global highp float) +0:10 'fX' ( global highp float) +0:11 dPdxCoarse ( global highp float) +0:11 'fX' ( global highp float) +0:12 dPdyCoarse ( global highp float) +0:12 'fY' ( global highp float) +0:13 fwidthCoarse ( global highp float) +0:13 'fX' ( global highp float) +0:14 dPdxFine ( global highp float) +0:14 'fX' ( global highp float) +0:15 dPdyFine ( global highp float) +0:15 'fY' ( global highp float) +0:16 fwidthFine ( global highp float) +0:16 'fX' ( global highp float) 0:? Linker Objects +0:? 'fX' ( global highp float) +0:? 'fY' ( global highp float) Linked compute stage: @@ -12,8 +45,29 @@ Linked compute stage: Shader version: 320 local_size = (1, 1, 1) -0:? Sequence -0:3 Function Definition: main( ( global void) -0:3 Function Parameters: +ERROR: node is still EOpNull! +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:8 Sequence +0:8 dPdx ( global highp float) +0:8 'fX' ( global highp float) +0:9 dPdy ( global highp float) +0:9 'fY' ( global highp float) +0:10 fwidth ( global highp float) +0:10 'fX' ( global highp float) +0:11 dPdxCoarse ( global highp float) +0:11 'fX' ( global highp float) +0:12 dPdyCoarse ( global highp float) +0:12 'fY' ( global highp float) +0:13 fwidthCoarse ( global highp float) +0:13 'fX' ( global highp float) +0:14 dPdxFine ( global highp float) +0:14 'fX' ( global highp float) +0:15 dPdyFine ( global highp float) +0:15 'fY' ( global highp float) +0:16 fwidthFine ( global highp float) +0:16 'fX' ( global highp float) 0:? Linker Objects +0:? 'fX' ( global highp float) +0:? 'fY' ( global highp float) diff --git a/Test/baseResults/320.tesc.out b/Test/baseResults/320.tesc.out index 4bb6fc28..6bb52b30 100644 --- a/Test/baseResults/320.tesc.out +++ b/Test/baseResults/320.tesc.out @@ -66,8 +66,8 @@ ERROR: node is still EOpNull! 0:23 move second child to first child ( temp highp 4-component vector of float) 0:23 'p' ( temp highp 4-component vector of float) 0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position) -0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: @@ -76,8 +76,8 @@ ERROR: node is still EOpNull! 0:24 move second child to first child ( temp highp float) 0:24 'ps' ( temp highp float) 0:24 gl_PointSize: direct index for structure ( in highp float PointSize) -0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: @@ -196,8 +196,8 @@ ERROR: node is still EOpNull! 0:104 move second child to first child ( temp highp float) 0:104 'ps' ( temp highp float) 0:104 gl_PointSize: direct index for structure ( in highp float PointSize) -0:104 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:104 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:104 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:104 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:104 Constant: 0:104 1 (const int) 0:104 Constant: @@ -424,8 +424,8 @@ ERROR: node is still EOpNull! 0:23 move second child to first child ( temp highp 4-component vector of float) 0:23 'p' ( temp highp 4-component vector of float) 0:23 gl_Position: direct index for structure ( in highp 4-component vector of float Position) -0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:23 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:23 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:23 Constant: 0:23 1 (const int) 0:23 Constant: @@ -434,8 +434,8 @@ ERROR: node is still EOpNull! 0:24 move second child to first child ( temp highp float) 0:24 'ps' ( temp highp float) 0:24 gl_PointSize: direct index for structure ( in highp float PointSize) -0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:24 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:24 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:24 Constant: 0:24 1 (const int) 0:24 Constant: diff --git a/Test/baseResults/320.tese.out b/Test/baseResults/320.tese.out index 93165ae1..014eeb0a 100644 --- a/Test/baseResults/320.tese.out +++ b/Test/baseResults/320.tese.out @@ -66,8 +66,8 @@ ERROR: node is still EOpNull! 0:32 move second child to first child ( temp highp 4-component vector of float) 0:32 'p' ( temp highp 4-component vector of float) 0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position) -0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: @@ -76,8 +76,8 @@ ERROR: node is still EOpNull! 0:33 move second child to first child ( temp highp float) 0:33 'ps' ( temp highp float) 0:33 gl_PointSize: direct index for structure ( in highp float PointSize) -0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: @@ -184,8 +184,8 @@ ERROR: node is still EOpNull! 0:32 move second child to first child ( temp highp 4-component vector of float) 0:32 'p' ( temp highp 4-component vector of float) 0:32 gl_Position: direct index for structure ( in highp 4-component vector of float Position) -0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:32 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:32 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:32 Constant: 0:32 1 (const int) 0:32 Constant: @@ -194,8 +194,8 @@ ERROR: node is still EOpNull! 0:33 move second child to first child ( temp highp float) 0:33 'ps' ( temp highp float) 0:33 gl_PointSize: direct index for structure ( in highp float PointSize) -0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) -0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float gl_PositionPerViewNV}) +0:33 direct index ( temp block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:33 'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position, in highp float PointSize gl_PointSize, in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) 0:33 Constant: 0:33 1 (const int) 0:33 Constant: diff --git a/Test/baseResults/constantUnaryConversion.comp.out b/Test/baseResults/constantUnaryConversion.comp.out index 4117e93f..fcaf6f22 100644 --- a/Test/baseResults/constantUnaryConversion.comp.out +++ b/Test/baseResults/constantUnaryConversion.comp.out @@ -9,17 +9,17 @@ local_size = (1, 1, 1) 0:? 'bool_init' ( const bool) 0:? true (const bool) 0:? 'int8_t_init' ( const int8_t) -0:? -1 (const int) +0:? -1 (const int8_t) 0:? 'int16_t_init' ( const int16_t) -0:? -2 (const int) +0:? -2 (const int16_t) 0:? 'int32_t_init' ( const int) 0:? -3 (const int) 0:? 'int64_t_init' ( const int64_t) 0:? -4 (const int64_t) 0:? 'uint8_t_init' ( const uint8_t) -0:? 1 (const int) +0:? 1 (const uint8_t) 0:? 'uint16_t_init' ( const uint16_t) -0:? 2 (const int) +0:? 2 (const uint16_t) 0:? 'uint32_t_init' ( const uint) 0:? 3 (const uint) 0:? 'uint64_t_init' ( const uint64_t) @@ -33,17 +33,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_bool' ( const bool) 0:? true (const bool) 0:? 'int8_t_to_bool' ( const bool) -0:? -1 (const int) +0:? true (const bool) 0:? 'int16_t_to_bool' ( const bool) -0:? -2 (const int) +0:? true (const bool) 0:? 'int32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'int64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint8_t_to_bool' ( const bool) -0:? 1 (const int) +0:? true (const bool) 0:? 'uint16_t_to_bool' ( const bool) -0:? 2 (const int) +0:? true (const bool) 0:? 'uint32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint64_t_to_bool' ( const bool) @@ -55,53 +55,53 @@ local_size = (1, 1, 1) 0:? 'float64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'bool_to_int8_t' ( const int8_t) -0:? true (const bool) +0:? 1 (const int8_t) 0:? 'int8_t_to_int8_t' ( const int8_t) -0:? -1 (const int) +0:? -1 (const int8_t) 0:? 'int16_t_to_int8_t' ( const int8_t) -0:? -2 (const int) +0:? -2 (const int8_t) 0:? 'int32_t_to_int8_t' ( const int8_t) -0:? -3 (const int) +0:? -3 (const int8_t) 0:? 'int64_t_to_int8_t' ( const int8_t) -0:? -4 (const int64_t) +0:? -4 (const int8_t) 0:? 'uint8_t_to_int8_t' ( const int8_t) -0:? 1 (const int) +0:? 1 (const int8_t) 0:? 'uint16_t_to_int8_t' ( const int8_t) -0:? 2 (const int) +0:? 2 (const int8_t) 0:? 'uint32_t_to_int8_t' ( const int8_t) -0:? 3 (const uint) +0:? 3 (const int8_t) 0:? 'uint64_t_to_int8_t' ( const int8_t) -0:? 4 (const uint64_t) +0:? 4 (const int8_t) 0:? 'float16_t_to_int8_t' ( const int8_t) -0:? 42.000000 +0:? 42 (const int8_t) 0:? 'float32_t_to_int8_t' ( const int8_t) -0:? 13.000000 +0:? 13 (const int8_t) 0:? 'float64_t_to_int8_t' ( const int8_t) -0:? -4.000000 +0:? -4 (const int8_t) 0:? 'bool_to_int16_t' ( const int16_t) -0:? true (const bool) +0:? 1 (const int16_t) 0:? 'int8_t_to_int16_t' ( const int16_t) -0:? -1 (const int) +0:? -1 (const int16_t) 0:? 'int16_t_to_int16_t' ( const int16_t) -0:? -2 (const int) +0:? -2 (const int16_t) 0:? 'int32_t_to_int16_t' ( const int16_t) -0:? -3 (const int) +0:? -3 (const int16_t) 0:? 'int64_t_to_int16_t' ( const int16_t) -0:? -4 (const int64_t) +0:? -4 (const int16_t) 0:? 'uint8_t_to_int16_t' ( const int16_t) -0:? 1 (const int) +0:? 1 (const int16_t) 0:? 'uint16_t_to_int16_t' ( const int16_t) -0:? 2 (const int) +0:? 2 (const int16_t) 0:? 'uint32_t_to_int16_t' ( const int16_t) -0:? 3 (const uint) +0:? 3 (const int16_t) 0:? 'uint64_t_to_int16_t' ( const int16_t) -0:? 4 (const uint64_t) +0:? 4 (const int16_t) 0:? 'float16_t_to_int16_t' ( const int16_t) -0:? 42.000000 +0:? 42 (const int16_t) 0:? 'float32_t_to_int16_t' ( const int16_t) -0:? 13.000000 +0:? 13 (const int16_t) 0:? 'float64_t_to_int16_t' ( const int16_t) -0:? -4.000000 +0:? -4 (const int16_t) 0:? 'bool_to_int32_t' ( const int) 0:? 1 (const int) 0:? 'int8_t_to_int32_t' ( const int) @@ -129,17 +129,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_int64_t' ( const int64_t) 0:? 1 (const int64_t) 0:? 'int8_t_to_int64_t' ( const int64_t) -0:? -1 (const int) +0:? -1 (const int64_t) 0:? 'int16_t_to_int64_t' ( const int64_t) -0:? -2 (const int) +0:? -2 (const int64_t) 0:? 'int32_t_to_int64_t' ( const int64_t) 0:? -3 (const int64_t) 0:? 'int64_t_to_int64_t' ( const int64_t) 0:? -4 (const int64_t) 0:? 'uint8_t_to_int64_t' ( const int64_t) -0:? 1 (const int) +0:? 1 (const int64_t) 0:? 'uint16_t_to_int64_t' ( const int64_t) -0:? 2 (const int) +0:? 2 (const int64_t) 0:? 'uint32_t_to_int64_t' ( const int64_t) 0:? 3 (const int64_t) 0:? 'uint64_t_to_int64_t' ( const int64_t) @@ -151,67 +151,67 @@ local_size = (1, 1, 1) 0:? 'float64_t_to_int64_t' ( const int64_t) 0:? -4 (const int64_t) 0:? 'bool_to_uint8_t' ( const uint8_t) -0:? true (const bool) +0:? 1 (const uint8_t) 0:? 'int8_t_to_uint8_t' ( const uint8_t) -0:? -1 (const int) +0:? 255 (const uint8_t) 0:? 'int16_t_to_uint8_t' ( const uint8_t) -0:? -2 (const int) +0:? 254 (const uint8_t) 0:? 'int32_t_to_uint8_t' ( const uint8_t) -0:? -3 (const int) +0:? 253 (const uint8_t) 0:? 'int64_t_to_uint8_t' ( const uint8_t) -0:? -4 (const int64_t) +0:? 252 (const uint8_t) 0:? 'uint8_t_to_uint8_t' ( const uint8_t) -0:? 1 (const int) +0:? 1 (const uint8_t) 0:? 'uint16_t_to_uint8_t' ( const uint8_t) -0:? 2 (const int) +0:? 2 (const uint8_t) 0:? 'uint32_t_to_uint8_t' ( const uint8_t) -0:? 3 (const uint) +0:? 3 (const uint8_t) 0:? 'uint64_t_to_uint8_t' ( const uint8_t) -0:? 4 (const uint64_t) +0:? 4 (const uint8_t) 0:? 'float16_t_to_uint8_t' ( const uint8_t) -0:? 42.000000 +0:? 42 (const uint8_t) 0:? 'float32_t_to_uint8_t' ( const uint8_t) -0:? 13.000000 +0:? 13 (const uint8_t) 0:? 'float64_t_to_uint8_t' ( const uint8_t) -0:? -4.000000 +0:? 252 (const uint8_t) 0:? 'bool_to_uint16_t' ( const uint16_t) -0:? true (const bool) +0:? 1 (const uint16_t) 0:? 'int8_t_to_uint16_t' ( const uint16_t) -0:? -1 (const int) +0:? 65535 (const uint16_t) 0:? 'int16_t_to_uint16_t' ( const uint16_t) -0:? -2 (const int) +0:? 65534 (const uint16_t) 0:? 'int32_t_to_uint16_t' ( const uint16_t) -0:? -3 (const int) +0:? 65533 (const uint16_t) 0:? 'int64_t_to_uint16_t' ( const uint16_t) -0:? -4 (const int64_t) +0:? 65532 (const uint16_t) 0:? 'uint8_t_to_uint16_t' ( const uint16_t) -0:? 1 (const int) +0:? 1 (const uint16_t) 0:? 'uint16_t_to_uint16_t' ( const uint16_t) -0:? 2 (const int) +0:? 2 (const uint16_t) 0:? 'uint32_t_to_uint16_t' ( const uint16_t) -0:? 3 (const uint) +0:? 3 (const uint16_t) 0:? 'uint64_t_to_uint16_t' ( const uint16_t) -0:? 4 (const uint64_t) +0:? 4 (const uint16_t) 0:? 'float16_t_to_uint16_t' ( const uint16_t) -0:? 42.000000 +0:? 42 (const uint16_t) 0:? 'float32_t_to_uint16_t' ( const uint16_t) -0:? 13.000000 +0:? 13 (const uint16_t) 0:? 'float64_t_to_uint16_t' ( const uint16_t) -0:? -4.000000 +0:? 65532 (const uint16_t) 0:? 'bool_to_uint32_t' ( const uint) 0:? 1 (const uint) 0:? 'int8_t_to_uint32_t' ( const uint) -0:? -1 (const int) +0:? 4294967295 (const uint) 0:? 'int16_t_to_uint32_t' ( const uint) -0:? -2 (const int) +0:? 4294967294 (const uint) 0:? 'int32_t_to_uint32_t' ( const uint) 0:? 4294967293 (const uint) 0:? 'int64_t_to_uint32_t' ( const uint) 0:? 4294967292 (const uint) 0:? 'uint8_t_to_uint32_t' ( const uint) -0:? 1 (const int) +0:? 1 (const uint) 0:? 'uint16_t_to_uint32_t' ( const uint) -0:? 2 (const int) +0:? 2 (const uint) 0:? 'uint32_t_to_uint32_t' ( const uint) 0:? 3 (const uint) 0:? 'uint64_t_to_uint32_t' ( const uint) @@ -225,17 +225,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_uint64_t' ( const uint64_t) 0:? 1 (const uint64_t) 0:? 'int8_t_to_uint64_t' ( const uint64_t) -0:? -1 (const int) +0:? 18446744073709551615 (const uint64_t) 0:? 'int16_t_to_uint64_t' ( const uint64_t) -0:? -2 (const int) +0:? 18446744073709551614 (const uint64_t) 0:? 'int32_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551613 (const uint64_t) 0:? 'int64_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551612 (const uint64_t) 0:? 'uint8_t_to_uint64_t' ( const uint64_t) -0:? 1 (const int) +0:? 1 (const uint64_t) 0:? 'uint16_t_to_uint64_t' ( const uint64_t) -0:? 2 (const int) +0:? 2 (const uint64_t) 0:? 'uint32_t_to_uint64_t' ( const uint64_t) 0:? 3 (const uint64_t) 0:? 'uint64_t_to_uint64_t' ( const uint64_t) @@ -249,17 +249,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_float16_t' ( const float16_t) 0:? 1.000000 0:? 'int8_t_to_float16_t' ( const float16_t) -0:? -1 (const int) +0:? -1.000000 0:? 'int16_t_to_float16_t' ( const float16_t) -0:? -2 (const int) +0:? -2.000000 0:? 'int32_t_to_float16_t' ( const float16_t) 0:? -3.000000 0:? 'int64_t_to_float16_t' ( const float16_t) 0:? -4.000000 0:? 'uint8_t_to_float16_t' ( const float16_t) -0:? 1 (const int) +0:? 1.000000 0:? 'uint16_t_to_float16_t' ( const float16_t) -0:? 2 (const int) +0:? 2.000000 0:? 'uint32_t_to_float16_t' ( const float16_t) 0:? 3.000000 0:? 'uint64_t_to_float16_t' ( const float16_t) @@ -273,17 +273,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_float32_t' ( const float) 0:? 1.000000 0:? 'int8_t_to_float32_t' ( const float) -0:? -1 (const int) +0:? -1.000000 0:? 'int16_t_to_float32_t' ( const float) -0:? -2 (const int) +0:? -2.000000 0:? 'int32_t_to_float32_t' ( const float) 0:? -3.000000 0:? 'int64_t_to_float32_t' ( const float) 0:? -4.000000 0:? 'uint8_t_to_float32_t' ( const float) -0:? 1 (const int) +0:? 1.000000 0:? 'uint16_t_to_float32_t' ( const float) -0:? 2 (const int) +0:? 2.000000 0:? 'uint32_t_to_float32_t' ( const float) 0:? 3.000000 0:? 'uint64_t_to_float32_t' ( const float) @@ -297,17 +297,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_float64_t' ( const double) 0:? 1.000000 0:? 'int8_t_to_float64_t' ( const double) -0:? -1 (const int) +0:? -1.000000 0:? 'int16_t_to_float64_t' ( const double) -0:? -2 (const int) +0:? -2.000000 0:? 'int32_t_to_float64_t' ( const double) 0:? -3.000000 0:? 'int64_t_to_float64_t' ( const double) 0:? -4.000000 0:? 'uint8_t_to_float64_t' ( const double) -0:? 1 (const int) +0:? 1.000000 0:? 'uint16_t_to_float64_t' ( const double) -0:? 2 (const int) +0:? 2.000000 0:? 'uint32_t_to_float64_t' ( const double) 0:? 3.000000 0:? 'uint64_t_to_float64_t' ( const double) @@ -333,17 +333,17 @@ local_size = (1, 1, 1) 0:? 'bool_init' ( const bool) 0:? true (const bool) 0:? 'int8_t_init' ( const int8_t) -0:? -1 (const int) +0:? -1 (const int8_t) 0:? 'int16_t_init' ( const int16_t) -0:? -2 (const int) +0:? -2 (const int16_t) 0:? 'int32_t_init' ( const int) 0:? -3 (const int) 0:? 'int64_t_init' ( const int64_t) 0:? -4 (const int64_t) 0:? 'uint8_t_init' ( const uint8_t) -0:? 1 (const int) +0:? 1 (const uint8_t) 0:? 'uint16_t_init' ( const uint16_t) -0:? 2 (const int) +0:? 2 (const uint16_t) 0:? 'uint32_t_init' ( const uint) 0:? 3 (const uint) 0:? 'uint64_t_init' ( const uint64_t) @@ -357,17 +357,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_bool' ( const bool) 0:? true (const bool) 0:? 'int8_t_to_bool' ( const bool) -0:? -1 (const int) +0:? true (const bool) 0:? 'int16_t_to_bool' ( const bool) -0:? -2 (const int) +0:? true (const bool) 0:? 'int32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'int64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint8_t_to_bool' ( const bool) -0:? 1 (const int) +0:? true (const bool) 0:? 'uint16_t_to_bool' ( const bool) -0:? 2 (const int) +0:? true (const bool) 0:? 'uint32_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'uint64_t_to_bool' ( const bool) @@ -379,53 +379,53 @@ local_size = (1, 1, 1) 0:? 'float64_t_to_bool' ( const bool) 0:? true (const bool) 0:? 'bool_to_int8_t' ( const int8_t) -0:? true (const bool) +0:? 1 (const int8_t) 0:? 'int8_t_to_int8_t' ( const int8_t) -0:? -1 (const int) +0:? -1 (const int8_t) 0:? 'int16_t_to_int8_t' ( const int8_t) -0:? -2 (const int) +0:? -2 (const int8_t) 0:? 'int32_t_to_int8_t' ( const int8_t) -0:? -3 (const int) +0:? -3 (const int8_t) 0:? 'int64_t_to_int8_t' ( const int8_t) -0:? -4 (const int64_t) +0:? -4 (const int8_t) 0:? 'uint8_t_to_int8_t' ( const int8_t) -0:? 1 (const int) +0:? 1 (const int8_t) 0:? 'uint16_t_to_int8_t' ( const int8_t) -0:? 2 (const int) +0:? 2 (const int8_t) 0:? 'uint32_t_to_int8_t' ( const int8_t) -0:? 3 (const uint) +0:? 3 (const int8_t) 0:? 'uint64_t_to_int8_t' ( const int8_t) -0:? 4 (const uint64_t) +0:? 4 (const int8_t) 0:? 'float16_t_to_int8_t' ( const int8_t) -0:? 42.000000 +0:? 42 (const int8_t) 0:? 'float32_t_to_int8_t' ( const int8_t) -0:? 13.000000 +0:? 13 (const int8_t) 0:? 'float64_t_to_int8_t' ( const int8_t) -0:? -4.000000 +0:? -4 (const int8_t) 0:? 'bool_to_int16_t' ( const int16_t) -0:? true (const bool) +0:? 1 (const int16_t) 0:? 'int8_t_to_int16_t' ( const int16_t) -0:? -1 (const int) +0:? -1 (const int16_t) 0:? 'int16_t_to_int16_t' ( const int16_t) -0:? -2 (const int) +0:? -2 (const int16_t) 0:? 'int32_t_to_int16_t' ( const int16_t) -0:? -3 (const int) +0:? -3 (const int16_t) 0:? 'int64_t_to_int16_t' ( const int16_t) -0:? -4 (const int64_t) +0:? -4 (const int16_t) 0:? 'uint8_t_to_int16_t' ( const int16_t) -0:? 1 (const int) +0:? 1 (const int16_t) 0:? 'uint16_t_to_int16_t' ( const int16_t) -0:? 2 (const int) +0:? 2 (const int16_t) 0:? 'uint32_t_to_int16_t' ( const int16_t) -0:? 3 (const uint) +0:? 3 (const int16_t) 0:? 'uint64_t_to_int16_t' ( const int16_t) -0:? 4 (const uint64_t) +0:? 4 (const int16_t) 0:? 'float16_t_to_int16_t' ( const int16_t) -0:? 42.000000 +0:? 42 (const int16_t) 0:? 'float32_t_to_int16_t' ( const int16_t) -0:? 13.000000 +0:? 13 (const int16_t) 0:? 'float64_t_to_int16_t' ( const int16_t) -0:? -4.000000 +0:? -4 (const int16_t) 0:? 'bool_to_int32_t' ( const int) 0:? 1 (const int) 0:? 'int8_t_to_int32_t' ( const int) @@ -453,17 +453,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_int64_t' ( const int64_t) 0:? 1 (const int64_t) 0:? 'int8_t_to_int64_t' ( const int64_t) -0:? -1 (const int) +0:? -1 (const int64_t) 0:? 'int16_t_to_int64_t' ( const int64_t) -0:? -2 (const int) +0:? -2 (const int64_t) 0:? 'int32_t_to_int64_t' ( const int64_t) 0:? -3 (const int64_t) 0:? 'int64_t_to_int64_t' ( const int64_t) 0:? -4 (const int64_t) 0:? 'uint8_t_to_int64_t' ( const int64_t) -0:? 1 (const int) +0:? 1 (const int64_t) 0:? 'uint16_t_to_int64_t' ( const int64_t) -0:? 2 (const int) +0:? 2 (const int64_t) 0:? 'uint32_t_to_int64_t' ( const int64_t) 0:? 3 (const int64_t) 0:? 'uint64_t_to_int64_t' ( const int64_t) @@ -475,67 +475,67 @@ local_size = (1, 1, 1) 0:? 'float64_t_to_int64_t' ( const int64_t) 0:? -4 (const int64_t) 0:? 'bool_to_uint8_t' ( const uint8_t) -0:? true (const bool) +0:? 1 (const uint8_t) 0:? 'int8_t_to_uint8_t' ( const uint8_t) -0:? -1 (const int) +0:? 255 (const uint8_t) 0:? 'int16_t_to_uint8_t' ( const uint8_t) -0:? -2 (const int) +0:? 254 (const uint8_t) 0:? 'int32_t_to_uint8_t' ( const uint8_t) -0:? -3 (const int) +0:? 253 (const uint8_t) 0:? 'int64_t_to_uint8_t' ( const uint8_t) -0:? -4 (const int64_t) +0:? 252 (const uint8_t) 0:? 'uint8_t_to_uint8_t' ( const uint8_t) -0:? 1 (const int) +0:? 1 (const uint8_t) 0:? 'uint16_t_to_uint8_t' ( const uint8_t) -0:? 2 (const int) +0:? 2 (const uint8_t) 0:? 'uint32_t_to_uint8_t' ( const uint8_t) -0:? 3 (const uint) +0:? 3 (const uint8_t) 0:? 'uint64_t_to_uint8_t' ( const uint8_t) -0:? 4 (const uint64_t) +0:? 4 (const uint8_t) 0:? 'float16_t_to_uint8_t' ( const uint8_t) -0:? 42.000000 +0:? 42 (const uint8_t) 0:? 'float32_t_to_uint8_t' ( const uint8_t) -0:? 13.000000 +0:? 13 (const uint8_t) 0:? 'float64_t_to_uint8_t' ( const uint8_t) -0:? -4.000000 +0:? 252 (const uint8_t) 0:? 'bool_to_uint16_t' ( const uint16_t) -0:? true (const bool) +0:? 1 (const uint16_t) 0:? 'int8_t_to_uint16_t' ( const uint16_t) -0:? -1 (const int) +0:? 65535 (const uint16_t) 0:? 'int16_t_to_uint16_t' ( const uint16_t) -0:? -2 (const int) +0:? 65534 (const uint16_t) 0:? 'int32_t_to_uint16_t' ( const uint16_t) -0:? -3 (const int) +0:? 65533 (const uint16_t) 0:? 'int64_t_to_uint16_t' ( const uint16_t) -0:? -4 (const int64_t) +0:? 65532 (const uint16_t) 0:? 'uint8_t_to_uint16_t' ( const uint16_t) -0:? 1 (const int) +0:? 1 (const uint16_t) 0:? 'uint16_t_to_uint16_t' ( const uint16_t) -0:? 2 (const int) +0:? 2 (const uint16_t) 0:? 'uint32_t_to_uint16_t' ( const uint16_t) -0:? 3 (const uint) +0:? 3 (const uint16_t) 0:? 'uint64_t_to_uint16_t' ( const uint16_t) -0:? 4 (const uint64_t) +0:? 4 (const uint16_t) 0:? 'float16_t_to_uint16_t' ( const uint16_t) -0:? 42.000000 +0:? 42 (const uint16_t) 0:? 'float32_t_to_uint16_t' ( const uint16_t) -0:? 13.000000 +0:? 13 (const uint16_t) 0:? 'float64_t_to_uint16_t' ( const uint16_t) -0:? -4.000000 +0:? 65532 (const uint16_t) 0:? 'bool_to_uint32_t' ( const uint) 0:? 1 (const uint) 0:? 'int8_t_to_uint32_t' ( const uint) -0:? -1 (const int) +0:? 4294967295 (const uint) 0:? 'int16_t_to_uint32_t' ( const uint) -0:? -2 (const int) +0:? 4294967294 (const uint) 0:? 'int32_t_to_uint32_t' ( const uint) 0:? 4294967293 (const uint) 0:? 'int64_t_to_uint32_t' ( const uint) 0:? 4294967292 (const uint) 0:? 'uint8_t_to_uint32_t' ( const uint) -0:? 1 (const int) +0:? 1 (const uint) 0:? 'uint16_t_to_uint32_t' ( const uint) -0:? 2 (const int) +0:? 2 (const uint) 0:? 'uint32_t_to_uint32_t' ( const uint) 0:? 3 (const uint) 0:? 'uint64_t_to_uint32_t' ( const uint) @@ -549,17 +549,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_uint64_t' ( const uint64_t) 0:? 1 (const uint64_t) 0:? 'int8_t_to_uint64_t' ( const uint64_t) -0:? -1 (const int) +0:? 18446744073709551615 (const uint64_t) 0:? 'int16_t_to_uint64_t' ( const uint64_t) -0:? -2 (const int) +0:? 18446744073709551614 (const uint64_t) 0:? 'int32_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551613 (const uint64_t) 0:? 'int64_t_to_uint64_t' ( const uint64_t) 0:? 18446744073709551612 (const uint64_t) 0:? 'uint8_t_to_uint64_t' ( const uint64_t) -0:? 1 (const int) +0:? 1 (const uint64_t) 0:? 'uint16_t_to_uint64_t' ( const uint64_t) -0:? 2 (const int) +0:? 2 (const uint64_t) 0:? 'uint32_t_to_uint64_t' ( const uint64_t) 0:? 3 (const uint64_t) 0:? 'uint64_t_to_uint64_t' ( const uint64_t) @@ -573,17 +573,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_float16_t' ( const float16_t) 0:? 1.000000 0:? 'int8_t_to_float16_t' ( const float16_t) -0:? -1 (const int) +0:? -1.000000 0:? 'int16_t_to_float16_t' ( const float16_t) -0:? -2 (const int) +0:? -2.000000 0:? 'int32_t_to_float16_t' ( const float16_t) 0:? -3.000000 0:? 'int64_t_to_float16_t' ( const float16_t) 0:? -4.000000 0:? 'uint8_t_to_float16_t' ( const float16_t) -0:? 1 (const int) +0:? 1.000000 0:? 'uint16_t_to_float16_t' ( const float16_t) -0:? 2 (const int) +0:? 2.000000 0:? 'uint32_t_to_float16_t' ( const float16_t) 0:? 3.000000 0:? 'uint64_t_to_float16_t' ( const float16_t) @@ -597,17 +597,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_float32_t' ( const float) 0:? 1.000000 0:? 'int8_t_to_float32_t' ( const float) -0:? -1 (const int) +0:? -1.000000 0:? 'int16_t_to_float32_t' ( const float) -0:? -2 (const int) +0:? -2.000000 0:? 'int32_t_to_float32_t' ( const float) 0:? -3.000000 0:? 'int64_t_to_float32_t' ( const float) 0:? -4.000000 0:? 'uint8_t_to_float32_t' ( const float) -0:? 1 (const int) +0:? 1.000000 0:? 'uint16_t_to_float32_t' ( const float) -0:? 2 (const int) +0:? 2.000000 0:? 'uint32_t_to_float32_t' ( const float) 0:? 3.000000 0:? 'uint64_t_to_float32_t' ( const float) @@ -621,17 +621,17 @@ local_size = (1, 1, 1) 0:? 'bool_to_float64_t' ( const double) 0:? 1.000000 0:? 'int8_t_to_float64_t' ( const double) -0:? -1 (const int) +0:? -1.000000 0:? 'int16_t_to_float64_t' ( const double) -0:? -2 (const int) +0:? -2.000000 0:? 'int32_t_to_float64_t' ( const double) 0:? -3.000000 0:? 'int64_t_to_float64_t' ( const double) 0:? -4.000000 0:? 'uint8_t_to_float64_t' ( const double) -0:? 1 (const int) +0:? 1.000000 0:? 'uint16_t_to_float64_t' ( const double) -0:? 2 (const int) +0:? 2.000000 0:? 'uint32_t_to_float64_t' ( const double) 0:? 3.000000 0:? 'uint64_t_to_float64_t' ( const double) diff --git a/Test/baseResults/glsl.450.subgroup.frag.out b/Test/baseResults/glsl.450.subgroup.frag.out index dd16c1fc..e61523e9 100644 --- a/Test/baseResults/glsl.450.subgroup.frag.out +++ b/Test/baseResults/glsl.450.subgroup.frag.out @@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:232: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:233: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:234: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:235: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 450 @@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) @@ -597,6 +602,20 @@ ERROR: node is still EOpNull! 0:226 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:226 'ballot' ( temp 4-component vector of uint) 0:226 'parti' ( temp 4-component vector of uint) +0:230 Function Definition: sm_builtins_err( ( global void) +0:230 Function Parameters: +0:232 Sequence +0:232 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV) +0:233 'gl_SMCountNV' ( flat in uint SMCountNV) +0:234 'gl_WarpIDNV' ( flat in uint WarpIDNV) +0:235 'gl_SMIDNV' ( flat in uint SMIDNV) +0:242 Function Definition: sm_builtins( ( global void) +0:242 Function Parameters: +0:244 Sequence +0:244 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV) +0:245 'gl_SMCountNV' ( flat in uint SMCountNV) +0:246 'gl_WarpIDNV' ( flat in uint WarpIDNV) +0:247 'gl_SMIDNV' ( flat in uint SMIDNV) 0:? Linker Objects 0:? 'data' (layout( location=0) out 4-component vector of uint) @@ -613,6 +632,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:105 Function Definition: main( ( global void) diff --git a/Test/baseResults/glsl.450.subgroup.geom.out b/Test/baseResults/glsl.450.subgroup.geom.out index 998f6c22..baf82dc4 100644 --- a/Test/baseResults/glsl.450.subgroup.geom.out +++ b/Test/baseResults/glsl.450.subgroup.geom.out @@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:238: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:239: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:240: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:241: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 450 @@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned invocations = -1 max_vertices = 1 @@ -606,6 +611,20 @@ ERROR: node is still EOpNull! 0:232 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:232 'ballot' ( temp 4-component vector of uint) 0:232 'parti' ( temp 4-component vector of uint) +0:236 Function Definition: sm_builtins_err( ( global void) +0:236 Function Parameters: +0:238 Sequence +0:238 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:239 'gl_SMCountNV' ( in uint SMCountNV) +0:240 'gl_WarpIDNV' ( in uint WarpIDNV) +0:241 'gl_SMIDNV' ( in uint SMIDNV) +0:248 Function Definition: sm_builtins( ( global void) +0:248 Function Parameters: +0:250 Sequence +0:250 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:251 'gl_SMCountNV' ( in uint SMCountNV) +0:252 'gl_WarpIDNV' ( in uint WarpIDNV) +0:253 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) @@ -622,6 +641,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned invocations = 1 max_vertices = 1 diff --git a/Test/baseResults/glsl.450.subgroup.tesc.out b/Test/baseResults/glsl.450.subgroup.tesc.out index fef9a044..eeee3877 100644 --- a/Test/baseResults/glsl.450.subgroup.tesc.out +++ b/Test/baseResults/glsl.450.subgroup.tesc.out @@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:237: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:238: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:239: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:240: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 450 @@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned vertices = 1 ERROR: node is still EOpNull! @@ -603,6 +608,20 @@ ERROR: node is still EOpNull! 0:231 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint) +0:235 Function Definition: sm_builtins_err( ( global void) +0:235 Function Parameters: +0:237 Sequence +0:237 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:238 'gl_SMCountNV' ( in uint SMCountNV) +0:239 'gl_WarpIDNV' ( in uint WarpIDNV) +0:240 'gl_SMIDNV' ( in uint SMIDNV) +0:247 Function Definition: sm_builtins( ( global void) +0:247 Function Parameters: +0:249 Sequence +0:249 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:250 'gl_SMCountNV' ( in uint SMCountNV) +0:251 'gl_WarpIDNV' ( in uint WarpIDNV) +0:252 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) @@ -619,6 +638,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned vertices = 1 ERROR: node is still EOpNull! diff --git a/Test/baseResults/glsl.450.subgroup.tese.out b/Test/baseResults/glsl.450.subgroup.tese.out index de44d555..3f05d77c 100644 --- a/Test/baseResults/glsl.450.subgroup.tese.out +++ b/Test/baseResults/glsl.450.subgroup.tese.out @@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:237: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:238: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:239: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:240: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 450 @@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned input primitive = isolines vertex spacing = none @@ -605,6 +610,20 @@ ERROR: node is still EOpNull! 0:231 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:231 'ballot' ( temp 4-component vector of uint) 0:231 'parti' ( temp 4-component vector of uint) +0:235 Function Definition: sm_builtins_err( ( global void) +0:235 Function Parameters: +0:237 Sequence +0:237 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:238 'gl_SMCountNV' ( in uint SMCountNV) +0:239 'gl_WarpIDNV' ( in uint WarpIDNV) +0:240 'gl_SMIDNV' ( in uint SMIDNV) +0:247 Function Definition: sm_builtins( ( global void) +0:247 Function Parameters: +0:249 Sequence +0:249 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:250 'gl_SMCountNV' ( in uint SMCountNV) +0:251 'gl_WarpIDNV' ( in uint WarpIDNV) +0:252 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) @@ -621,6 +640,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned input primitive = isolines vertex spacing = equal_spacing diff --git a/Test/baseResults/glsl.450.subgroup.vert.out b/Test/baseResults/glsl.450.subgroup.vert.out index 8fad6134..8850bf4f 100644 --- a/Test/baseResults/glsl.450.subgroup.vert.out +++ b/Test/baseResults/glsl.450.subgroup.vert.out @@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:236: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:237: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:238: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:239: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 450 @@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) @@ -602,6 +607,20 @@ ERROR: node is still EOpNull! 0:230 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:230 'ballot' ( temp 4-component vector of uint) 0:230 'parti' ( temp 4-component vector of uint) +0:234 Function Definition: sm_builtins_err( ( global void) +0:234 Function Parameters: +0:236 Sequence +0:236 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:237 'gl_SMCountNV' ( in uint SMCountNV) +0:238 'gl_WarpIDNV' ( in uint WarpIDNV) +0:239 'gl_SMIDNV' ( in uint SMIDNV) +0:246 Function Definition: sm_builtins( ( global void) +0:246 Function Parameters: +0:248 Sequence +0:248 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:249 'gl_SMCountNV' ( in uint SMCountNV) +0:250 'gl_WarpIDNV' ( in uint WarpIDNV) +0:251 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'anon@0' (layout( set=0 binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer runtime-sized array of 4-component vector of uint result}) 0:? 'gl_VertexID' ( gl_VertexId int VertexId) @@ -620,6 +639,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:109 Function Definition: main( ( global void) diff --git a/Test/baseResults/glsl.450.subgroupBasic.comp.out b/Test/baseResults/glsl.450.subgroupBasic.comp.out index 168d80df..654138b4 100644 --- a/Test/baseResults/glsl.450.subgroupBasic.comp.out +++ b/Test/baseResults/glsl.450.subgroupBasic.comp.out @@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:242: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:243: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:244: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:245: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 450 @@ -97,6 +101,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned local_size = (8, 8, 1) ERROR: node is still EOpNull! @@ -631,6 +636,20 @@ ERROR: node is still EOpNull! 0:236 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:236 'ballot' ( temp 4-component vector of uint) 0:236 'parti' ( temp 4-component vector of uint) +0:240 Function Definition: sm_builtins_err( ( global void) +0:240 Function Parameters: +0:242 Sequence +0:242 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:243 'gl_SMCountNV' ( in uint SMCountNV) +0:244 'gl_WarpIDNV' ( in uint WarpIDNV) +0:245 'gl_SMIDNV' ( in uint SMIDNV) +0:252 Function Definition: sm_builtins( ( global void) +0:252 Function Parameters: +0:254 Sequence +0:254 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:255 'gl_SMCountNV' ( in uint SMCountNV) +0:256 'gl_WarpIDNV' ( in uint WarpIDNV) +0:257 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 8 (const uint) @@ -651,6 +670,7 @@ Requested GL_KHR_shader_subgroup_quad Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned local_size = (8, 8, 1) ERROR: node is still EOpNull! diff --git a/Test/baseResults/glsl.460.subgroup.mesh.out b/Test/baseResults/glsl.460.subgroup.mesh.out index c8198817..bb0e4eb8 100644 --- a/Test/baseResults/glsl.460.subgroup.mesh.out +++ b/Test/baseResults/glsl.460.subgroup.mesh.out @@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:298: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:299: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:300: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:301: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 460 @@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_mesh_shader +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned max_vertices = 81 max_primitives = 32 @@ -887,6 +892,20 @@ ERROR: node is still EOpNull! 0:292 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:292 'ballot' ( temp 4-component vector of uint) 0:292 'parti' ( temp 4-component vector of uint) +0:296 Function Definition: sm_builtins_err( ( global void) +0:296 Function Parameters: +0:298 Sequence +0:298 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:299 'gl_SMCountNV' ( in uint SMCountNV) +0:300 'gl_WarpIDNV' ( in uint WarpIDNV) +0:301 'gl_SMIDNV' ( in uint SMIDNV) +0:308 Function Definition: sm_builtins( ( global void) +0:308 Function Parameters: +0:310 Sequence +0:310 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:311 'gl_SMCountNV' ( in uint SMCountNV) +0:312 'gl_WarpIDNV' ( in uint WarpIDNV) +0:313 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 32 (const uint) @@ -910,6 +929,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_mesh_shader +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned max_vertices = 81 max_primitives = 32 diff --git a/Test/baseResults/glsl.460.subgroup.rahit.out b/Test/baseResults/glsl.460.subgroup.rahit.out index aba573aa..0a1e4f4a 100644 --- a/Test/baseResults/glsl.460.subgroup.rahit.out +++ b/Test/baseResults/glsl.460.subgroup.rahit.out @@ -85,7 +85,11 @@ ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:259: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:260: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:261: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:262: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 460 @@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) @@ -671,6 +676,20 @@ ERROR: node is still EOpNull! 0:253 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:253 'ballot' ( temp 4-component vector of uint) 0:253 'parti' ( temp 4-component vector of uint) +0:257 Function Definition: sm_builtins_err( ( global void) +0:257 Function Parameters: +0:259 Sequence +0:259 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:260 'gl_SMCountNV' ( in uint SMCountNV) +0:261 'gl_WarpIDNV' ( in uint WarpIDNV) +0:262 'gl_SMIDNV' ( in uint SMIDNV) +0:269 Function Definition: sm_builtins( ( global void) +0:269 Function Parameters: +0:271 Sequence +0:271 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:272 'gl_SMCountNV' ( in uint SMCountNV) +0:273 'gl_WarpIDNV' ( in uint WarpIDNV) +0:274 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'incomingPayload' (layout( location=1) rayPayloadInNV 4-component vector of float) @@ -688,6 +707,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:106 Function Definition: main( ( global void) diff --git a/Test/baseResults/glsl.460.subgroup.rcall.out b/Test/baseResults/glsl.460.subgroup.rcall.out index d6b4895d..6bffdc9c 100644 --- a/Test/baseResults/glsl.460.subgroup.rcall.out +++ b/Test/baseResults/glsl.460.subgroup.rcall.out @@ -85,7 +85,11 @@ ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:247: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:248: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:249: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:250: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 460 @@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) @@ -614,6 +619,20 @@ ERROR: node is still EOpNull! 0:241 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:241 'ballot' ( temp 4-component vector of uint) 0:241 'parti' ( temp 4-component vector of uint) +0:245 Function Definition: sm_builtins_err( ( global void) +0:245 Function Parameters: +0:247 Sequence +0:247 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:248 'gl_SMCountNV' ( in uint SMCountNV) +0:249 'gl_WarpIDNV' ( in uint WarpIDNV) +0:250 'gl_SMIDNV' ( in uint SMIDNV) +0:257 Function Definition: sm_builtins( ( global void) +0:257 Function Parameters: +0:259 Sequence +0:259 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:260 'gl_SMCountNV' ( in uint SMCountNV) +0:261 'gl_WarpIDNV' ( in uint WarpIDNV) +0:262 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float) 0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) @@ -632,6 +651,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:109 Function Definition: main( ( global void) diff --git a/Test/baseResults/glsl.460.subgroup.rchit.out b/Test/baseResults/glsl.460.subgroup.rchit.out index 14a8d84b..1ea9e69d 100644 --- a/Test/baseResults/glsl.460.subgroup.rchit.out +++ b/Test/baseResults/glsl.460.subgroup.rchit.out @@ -85,7 +85,11 @@ ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:257: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:258: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:259: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:260: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 460 @@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) @@ -680,6 +685,20 @@ ERROR: node is still EOpNull! 0:251 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:251 'ballot' ( temp 4-component vector of uint) 0:251 'parti' ( temp 4-component vector of uint) +0:255 Function Definition: sm_builtins_err( ( global void) +0:255 Function Parameters: +0:257 Sequence +0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:258 'gl_SMCountNV' ( in uint SMCountNV) +0:259 'gl_WarpIDNV' ( in uint WarpIDNV) +0:260 'gl_SMIDNV' ( in uint SMIDNV) +0:267 Function Definition: sm_builtins( ( global void) +0:267 Function Parameters: +0:269 Sequence +0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:270 'gl_SMCountNV' ( in uint SMCountNV) +0:271 'gl_WarpIDNV' ( in uint WarpIDNV) +0:272 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) @@ -699,6 +718,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:108 Function Definition: main( ( global void) diff --git a/Test/baseResults/glsl.460.subgroup.rgen.out b/Test/baseResults/glsl.460.subgroup.rgen.out index a3c5bbb5..dfe1e2bb 100644 --- a/Test/baseResults/glsl.460.subgroup.rgen.out +++ b/Test/baseResults/glsl.460.subgroup.rgen.out @@ -85,7 +85,11 @@ ERROR: 0:96: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:97: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:251: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:252: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:253: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:254: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 460 @@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:4 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) @@ -644,6 +649,20 @@ ERROR: node is still EOpNull! 0:245 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:245 'ballot' ( temp 4-component vector of uint) 0:245 'parti' ( temp 4-component vector of uint) +0:249 Function Definition: sm_builtins_err( ( global void) +0:249 Function Parameters: +0:251 Sequence +0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:252 'gl_SMCountNV' ( in uint SMCountNV) +0:253 'gl_WarpIDNV' ( in uint WarpIDNV) +0:254 'gl_SMIDNV' ( in uint SMIDNV) +0:261 Function Definition: sm_builtins( ( global void) +0:261 Function Parameters: +0:263 Sequence +0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:264 'gl_SMCountNV' ( in uint SMCountNV) +0:265 'gl_WarpIDNV' ( in uint WarpIDNV) +0:266 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV) @@ -664,6 +683,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:113 Function Definition: main( ( global void) diff --git a/Test/baseResults/glsl.460.subgroup.rint.out b/Test/baseResults/glsl.460.subgroup.rint.out index 31a8a59c..9915ecf7 100644 --- a/Test/baseResults/glsl.460.subgroup.rint.out +++ b/Test/baseResults/glsl.460.subgroup.rint.out @@ -85,7 +85,11 @@ ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:257: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:258: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:259: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:260: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 460 @@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) @@ -658,6 +663,20 @@ ERROR: node is still EOpNull! 0:251 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:251 'ballot' ( temp 4-component vector of uint) 0:251 'parti' ( temp 4-component vector of uint) +0:255 Function Definition: sm_builtins_err( ( global void) +0:255 Function Parameters: +0:257 Sequence +0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:258 'gl_SMCountNV' ( in uint SMCountNV) +0:259 'gl_WarpIDNV' ( in uint WarpIDNV) +0:260 'gl_SMIDNV' ( in uint SMIDNV) +0:267 Function Definition: sm_builtins( ( global void) +0:267 Function Parameters: +0:269 Sequence +0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:270 'gl_SMCountNV' ( in uint SMCountNV) +0:271 'gl_WarpIDNV' ( in uint WarpIDNV) +0:272 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'iAttr' ( hitAttributeNV 4-component vector of float) @@ -675,6 +694,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:108 Function Definition: main( ( global void) diff --git a/Test/baseResults/glsl.460.subgroup.rmiss.out b/Test/baseResults/glsl.460.subgroup.rmiss.out index 2ca136d0..ddf7d1b3 100644 --- a/Test/baseResults/glsl.460.subgroup.rmiss.out +++ b/Test/baseResults/glsl.460.subgroup.rmiss.out @@ -85,7 +85,11 @@ ERROR: 0:97: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:98: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:99: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:100: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:251: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:252: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:253: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:254: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 460 @@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:5 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) @@ -652,6 +657,20 @@ ERROR: node is still EOpNull! 0:245 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:245 'ballot' ( temp 4-component vector of uint) 0:245 'parti' ( temp 4-component vector of uint) +0:249 Function Definition: sm_builtins_err( ( global void) +0:249 Function Parameters: +0:251 Sequence +0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:252 'gl_SMCountNV' ( in uint SMCountNV) +0:253 'gl_WarpIDNV' ( in uint WarpIDNV) +0:254 'gl_SMIDNV' ( in uint SMIDNV) +0:261 Function Definition: sm_builtins( ( global void) +0:261 Function Parameters: +0:263 Sequence +0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:264 'gl_SMCountNV' ( in uint SMCountNV) +0:265 'gl_WarpIDNV' ( in uint WarpIDNV) +0:266 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) @@ -671,6 +690,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_ray_tracing +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned ERROR: node is still EOpNull! 0:109 Function Definition: main( ( global void) diff --git a/Test/baseResults/glsl.460.subgroup.task.out b/Test/baseResults/glsl.460.subgroup.task.out index d953646a..8d2a1d39 100644 --- a/Test/baseResults/glsl.460.subgroup.task.out +++ b/Test/baseResults/glsl.460.subgroup.task.out @@ -85,7 +85,11 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 86 compilation errors. No code generated. +ERROR: 0:288: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:289: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:290: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:291: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 90 compilation errors. No code generated. Shader version: 460 @@ -98,6 +102,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_mesh_shader +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned local_size = (32, 1, 1) ERROR: node is still EOpNull! @@ -729,6 +734,20 @@ ERROR: node is still EOpNull! 0:282 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) 0:282 'ballot' ( temp 4-component vector of uint) 0:282 'parti' ( temp 4-component vector of uint) +0:286 Function Definition: sm_builtins_err( ( global void) +0:286 Function Parameters: +0:288 Sequence +0:288 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:289 'gl_SMCountNV' ( in uint SMCountNV) +0:290 'gl_WarpIDNV' ( in uint WarpIDNV) +0:291 'gl_SMIDNV' ( in uint SMIDNV) +0:298 Function Definition: sm_builtins( ( global void) +0:298 Function Parameters: +0:300 Sequence +0:300 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) +0:301 'gl_SMCountNV' ( in uint SMCountNV) +0:302 'gl_WarpIDNV' ( in uint WarpIDNV) +0:303 'gl_SMIDNV' ( in uint SMIDNV) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 32 (const uint) @@ -753,6 +772,7 @@ Requested GL_KHR_shader_subgroup_shuffle Requested GL_KHR_shader_subgroup_shuffle_relative Requested GL_KHR_shader_subgroup_vote Requested GL_NV_mesh_shader +Requested GL_NV_shader_sm_builtins Requested GL_NV_shader_subgroup_partitioned local_size = (32, 1, 1) ERROR: node is still EOpNull! diff --git a/Test/baseResults/hlsl.specConstant.frag.out b/Test/baseResults/hlsl.specConstant.frag.out new file mode 100755 index 00000000..c2942e34 --- /dev/null +++ b/Test/baseResults/hlsl.specConstant.frag.out @@ -0,0 +1,230 @@ +hlsl.specConstant.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:6 Function Definition: @main( ( temp 4-component vector of float) +0:6 Function Parameters: +0:? Sequence +0:8 Sequence +0:8 move second child to first child ( temp uint) +0:8 'i' ( temp uint) +0:8 Constant: +0:8 0 (const uint) +0:8 Loop with condition tested first +0:8 Loop Condition +0:8 Compare Less Than ( temp bool) +0:8 'i' ( temp uint) +0:8 indirect index ( const uint) +0:8 Constant: +0:8 10 (const uint) +0:8 20 (const uint) +0:8 30 (const uint) +0:8 40 (const uint) +0:8 'index' ( specialization-constant const uint) +0:8 2 (const uint) +0:8 Loop Body +0:9 move second child to first child ( temp 4-component vector of float) +0:9 'r' ( temp 4-component vector of float) +0:9 Construct vec4 ( temp 4-component vector of float) +0:9 Convert uint to float ( temp float) +0:9 'i' ( temp uint) +0:8 Loop Terminal Expression +0:8 Post-Increment ( temp uint) +0:8 'i' ( temp uint) +0:11 add second child into first child ( temp 4-component vector of float) +0:11 'r' ( temp 4-component vector of float) +0:11 Convert uint to float ( temp float) +0:11 add ( specialization-constant const uint) +0:11 'index' ( specialization-constant const uint) +0:11 2 (const uint) +0:11 'index' ( specialization-constant const uint) +0:11 2 (const uint) +0:12 add second child into first child ( temp 4-component vector of float) +0:12 'r' ( temp 4-component vector of float) +0:12 Convert uint to float ( temp float) +0:12 component-wise multiply ( specialization-constant const uint) +0:12 Constant: +0:12 2 (const uint) +0:12 'index' ( specialization-constant const uint) +0:12 2 (const uint) +0:14 Branch: Return with expression +0:14 'r' ( temp 4-component vector of float) +0:6 Function Definition: main( ( temp void) +0:6 Function Parameters: +0:? Sequence +0:6 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:6 Function Call: @main( ( temp 4-component vector of float) +0:? Linker Objects +0:? 'index' ( specialization-constant const uint) +0:? 2 (const uint) +0:? 'array' ( const 4-element array of uint) +0:? 10 (const uint) +0:? 20 (const uint) +0:? 30 (const uint) +0:? 40 (const uint) +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:6 Function Definition: @main( ( temp 4-component vector of float) +0:6 Function Parameters: +0:? Sequence +0:8 Sequence +0:8 move second child to first child ( temp uint) +0:8 'i' ( temp uint) +0:8 Constant: +0:8 0 (const uint) +0:8 Loop with condition tested first +0:8 Loop Condition +0:8 Compare Less Than ( temp bool) +0:8 'i' ( temp uint) +0:8 indirect index ( const uint) +0:8 Constant: +0:8 10 (const uint) +0:8 20 (const uint) +0:8 30 (const uint) +0:8 40 (const uint) +0:8 'index' ( specialization-constant const uint) +0:8 2 (const uint) +0:8 Loop Body +0:9 move second child to first child ( temp 4-component vector of float) +0:9 'r' ( temp 4-component vector of float) +0:9 Construct vec4 ( temp 4-component vector of float) +0:9 Convert uint to float ( temp float) +0:9 'i' ( temp uint) +0:8 Loop Terminal Expression +0:8 Post-Increment ( temp uint) +0:8 'i' ( temp uint) +0:11 add second child into first child ( temp 4-component vector of float) +0:11 'r' ( temp 4-component vector of float) +0:11 Convert uint to float ( temp float) +0:11 add ( specialization-constant const uint) +0:11 'index' ( specialization-constant const uint) +0:11 2 (const uint) +0:11 'index' ( specialization-constant const uint) +0:11 2 (const uint) +0:12 add second child into first child ( temp 4-component vector of float) +0:12 'r' ( temp 4-component vector of float) +0:12 Convert uint to float ( temp float) +0:12 component-wise multiply ( specialization-constant const uint) +0:12 Constant: +0:12 2 (const uint) +0:12 'index' ( specialization-constant const uint) +0:12 2 (const uint) +0:14 Branch: Return with expression +0:14 'r' ( temp 4-component vector of float) +0:6 Function Definition: main( ( temp void) +0:6 Function Parameters: +0:? Sequence +0:6 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:6 Function Call: @main( ( temp 4-component vector of float) +0:? Linker Objects +0:? 'index' ( specialization-constant const uint) +0:? 2 (const uint) +0:? 'array' ( const 4-element array of uint) +0:? 10 (const uint) +0:? 20 (const uint) +0:? 30 (const uint) +0:? 40 (const uint) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 61 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 59 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 9 "@main(" + Name 13 "i" + Name 28 "index" + Name 30 "indexable" + Name 36 "r" + Name 59 "@entryPointOutput" + Decorate 28(index) SpecId 0 + Decorate 59(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 11: TypeInt 32 0 + 12: TypePointer Function 11(int) + 14: 11(int) Constant 0 + 21: 11(int) Constant 4 + 22: TypeArray 11(int) 21 + 23: 11(int) Constant 10 + 24: 11(int) Constant 20 + 25: 11(int) Constant 30 + 26: 11(int) Constant 40 + 27: 22 ConstantComposite 23 24 25 26 + 28(index): 11(int) SpecConstant 2 + 29: TypePointer Function 22 + 33: TypeBool + 35: TypePointer Function 7(fvec4) + 41: TypeInt 32 1 + 42: 41(int) Constant 1 + 44: 11(int) SpecConstantOp 128 28(index) 28(index) + 49: 11(int) Constant 2 + 50: 11(int) SpecConstantOp 132 49 28(index) + 58: TypePointer Output 7(fvec4) +59(@entryPointOutput): 58(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 60: 7(fvec4) FunctionCall 9(@main() + Store 59(@entryPointOutput) 60 + Return + FunctionEnd + 9(@main(): 7(fvec4) Function None 8 + 10: Label + 13(i): 12(ptr) Variable Function + 30(indexable): 29(ptr) Variable Function + 36(r): 35(ptr) Variable Function + Store 13(i) 14 + Branch 15 + 15: Label + LoopMerge 17 18 None + Branch 19 + 19: Label + 20: 11(int) Load 13(i) + Store 30(indexable) 27 + 31: 12(ptr) AccessChain 30(indexable) 28(index) + 32: 11(int) Load 31 + 34: 33(bool) ULessThan 20 32 + BranchConditional 34 16 17 + 16: Label + 37: 11(int) Load 13(i) + 38: 6(float) ConvertUToF 37 + 39: 7(fvec4) CompositeConstruct 38 38 38 38 + Store 36(r) 39 + Branch 18 + 18: Label + 40: 11(int) Load 13(i) + 43: 11(int) IAdd 40 42 + Store 13(i) 43 + Branch 15 + 17: Label + 45: 6(float) ConvertUToF 44 + 46: 7(fvec4) Load 36(r) + 47: 7(fvec4) CompositeConstruct 45 45 45 45 + 48: 7(fvec4) FAdd 46 47 + Store 36(r) 48 + 51: 6(float) ConvertUToF 50 + 52: 7(fvec4) Load 36(r) + 53: 7(fvec4) CompositeConstruct 51 51 51 51 + 54: 7(fvec4) FAdd 52 53 + Store 36(r) 54 + 55: 7(fvec4) Load 36(r) + ReturnValue 55 + FunctionEnd diff --git a/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/Test/baseResults/hlsl.structbuffer.fn2.comp.out index c9633cd6..517b48c8 100644 --- a/Test/baseResults/hlsl.structbuffer.fn2.comp.out +++ b/Test/baseResults/hlsl.structbuffer.fn2.comp.out @@ -135,7 +135,6 @@ local_size = (256, 1, 1) 0:? 'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer) 0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID) -Validation failed // Module Version 10000 // Generated by (magic number): 80007 // Id's are bound by 63 diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out index a09cd879..c1aacb8e 100644 --- a/Test/baseResults/spv.16bitstorage-int.frag.out +++ b/Test/baseResults/spv.16bitstorage-int.frag.out @@ -1,7 +1,7 @@ spv.16bitstorage-int.frag // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 172 +// Id's are bound by 171 Capability Shader Capability StorageUniformBufferBlock16 @@ -209,10 +209,7 @@ spv.16bitstorage-int.frag 114: 20(int) Constant 7 115: 20(int) Constant 6 116: TypePointer Uniform 20(int) - 166: 6(int16_t) Constant 1 - 167: 6(int16_t) Constant 2 - 168: 7(i16vec2) ConstantComposite 166 167 - 170: 6(int16_t) Constant 3 + 166: 39(ivec2) ConstantComposite 32 33 4(main): 2 Function None 3 5: Label 69(x0): 68(ptr) Variable Function @@ -332,9 +329,11 @@ spv.16bitstorage-int.frag 164: 6(int16_t) Load 163 165: 28(ptr) AccessChain 19(b2) 21 Store 165 164 - 169: 42(ptr) AccessChain 19(b2) 32 - Store 169 168 - 171: 28(ptr) AccessChain 19(b2) 21 - Store 171 170 + 167: 7(i16vec2) SConvert 166 + 168: 42(ptr) AccessChain 19(b2) 32 + Store 168 167 + 169: 6(int16_t) SConvert 58 + 170: 28(ptr) AccessChain 19(b2) 21 + Store 170 169 Return FunctionEnd diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out index 915dfcbd..ba2e0c6e 100644 --- a/Test/baseResults/spv.16bitstorage-uint.frag.out +++ b/Test/baseResults/spv.16bitstorage-uint.frag.out @@ -210,10 +210,8 @@ spv.16bitstorage-uint.frag 115: 20(int) Constant 7 116: 20(int) Constant 6 117: TypePointer Uniform 9(int) - 167: 6(int16_t) Constant 1 - 168: 6(int16_t) Constant 2 - 169: 7(i16vec2) ConstantComposite 167 168 - 171: 6(int16_t) Constant 3 + 167: 39(ivec2) ConstantComposite 82 10 + 170: 9(int) Constant 3 4(main): 2 Function None 3 5: Label 69(x0): 68(ptr) Variable Function @@ -333,8 +331,10 @@ spv.16bitstorage-uint.frag 165: 6(int16_t) Load 164 166: 28(ptr) AccessChain 19(b2) 21 Store 166 165 - 170: 42(ptr) AccessChain 19(b2) 32 - Store 170 169 + 168: 7(i16vec2) UConvert 167 + 169: 42(ptr) AccessChain 19(b2) 32 + Store 169 168 + 171: 6(int16_t) UConvert 170 172: 28(ptr) AccessChain 19(b2) 21 Store 172 171 Return diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out index 3fb08a39..5530cf46 100644 --- a/Test/baseResults/spv.16bitstorage.frag.out +++ b/Test/baseResults/spv.16bitstorage.frag.out @@ -1,7 +1,7 @@ spv.16bitstorage.frag // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 172 +// Id's are bound by 173 Capability Shader Capability StorageUniformBufferBlock16 @@ -209,10 +209,9 @@ spv.16bitstorage.frag 114: 20(int) Constant 7 115: 20(int) Constant 6 116: TypePointer Uniform 20(int) - 166:6(float16_t) Constant 15360 - 167:6(float16_t) Constant 16384 - 168: 7(f16vec2) ConstantComposite 166 167 - 170:6(float16_t) Constant 16896 + 166: 37(float) Constant 1073741824 + 167: 40(fvec2) ConstantComposite 83 166 + 170: 37(float) Constant 1077936128 4(main): 2 Function None 3 5: Label 70(x0): 69(ptr) Variable Function @@ -332,9 +331,11 @@ spv.16bitstorage.frag 164:6(float16_t) Load 163 165: 28(ptr) AccessChain 19(b2) 21 Store 165 164 + 168: 7(f16vec2) FConvert 167 169: 43(ptr) AccessChain 19(b2) 32 Store 169 168 - 171: 28(ptr) AccessChain 19(b2) 21 - Store 171 170 + 171:6(float16_t) FConvert 170 + 172: 28(ptr) AccessChain 19(b2) 21 + Store 172 171 Return FunctionEnd diff --git a/Test/baseResults/spv.400.frag.nanclamp.out b/Test/baseResults/spv.400.frag.nanclamp.out new file mode 100644 index 00000000..5305ee4c --- /dev/null +++ b/Test/baseResults/spv.400.frag.nanclamp.out @@ -0,0 +1,1402 @@ +spv.400.frag +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 1118 + + Capability Shader + Capability Geometry + Capability Float64 + Capability ImageGatherExtended + Capability ClipDistance + Capability SampledRect + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 1116 + ExecutionMode 4 OriginUpperLeft + Source GLSL 400 + SourceExtension "GL_ARB_separate_shader_objects" + Name 4 "main" + Name 6 "foo23(" + Name 8 "doubles(" + Name 13 "outp" + Name 17 "u2drs" + Name 41 "doublev" + Name 45 "dvec2v" + Name 50 "dvec3v" + Name 55 "dvec4v" + Name 430 "boolv" + Name 439 "bvec2v" + Name 448 "bvec3v" + Name 457 "bvec4v" + Name 739 "dmat2v" + Name 745 "dmat3v" + Name 751 "dmat4v" + Name 757 "dmat2x3v" + Name 763 "dmat3x2v" + Name 769 "dmat2x4v" + Name 775 "dmat4x2v" + Name 781 "dmat3x4v" + Name 787 "dmat4x3v" + Name 1019 "v" + Name 1025 "arrayedSampler" + Name 1027 "i" + Name 1033 "c2D" + Name 1038 "gl_ClipDistance" + Name 1050 "uoutp" + Name 1054 "samp2dr" + Name 1076 "ioutp" + Name 1080 "isamp2DA" + Name 1097 "gl_FragCoord" + Name 1099 "vl2" + Name 1105 "uo" + Name 1107 "u" + Name 1115 "id" + Name 1116 "gl_PrimitiveID" + Decorate 13(outp) Location 1 + Decorate 17(u2drs) DescriptorSet 0 + Decorate 17(u2drs) Binding 3 + Decorate 1025(arrayedSampler) DescriptorSet 0 + Decorate 1025(arrayedSampler) Binding 0 + Decorate 1027(i) Flat + Decorate 1027(i) Location 1 + Decorate 1033(c2D) Location 0 + Decorate 1038(gl_ClipDistance) BuiltIn ClipDistance + Decorate 1050(uoutp) Location 3 + Decorate 1054(samp2dr) DescriptorSet 0 + Decorate 1054(samp2dr) Binding 1 + Decorate 1076(ioutp) Location 2 + Decorate 1080(isamp2DA) DescriptorSet 0 + Decorate 1080(isamp2DA) Binding 2 + Decorate 1097(gl_FragCoord) BuiltIn FragCoord + Decorate 1099(vl2) Location 6 + Decorate 1105(uo) Location 0 + Decorate 1107(u) Flat + Decorate 1107(u) Location 2 + Decorate 1116(gl_PrimitiveID) Flat + Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId + 2: TypeVoid + 3: TypeFunction 2 + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypePointer Output 11(fvec4) + 13(outp): 12(ptr) Variable Output + 14: TypeImage 10(float) Rect depth sampled format:Unknown + 15: TypeSampledImage 14 + 16: TypePointer UniformConstant 15 + 17(u2drs): 16(ptr) Variable UniformConstant + 20: TypeVector 10(float) 2 + 21: 10(float) Constant 0 + 22: 20(fvec2) ConstantComposite 21 21 + 23: TypeInt 32 1 + 24: TypeVector 23(int) 2 + 25: 23(int) Constant 3 + 26: 23(int) Constant 4 + 27: 24(ivec2) ConstantComposite 25 26 + 32: TypeInt 32 0 + 33: 32(int) Constant 0 + 34: TypePointer Output 10(float) + 39: TypeFloat 64 + 40: TypePointer Function 39(float64_t) + 42:39(float64_t) Constant 2507418074 1073430332 + 43: TypeVector 39(float64_t) 2 + 44: TypePointer Function 43(f64vec2) + 46:39(float64_t) Constant 796182188 1073367658 + 47: 43(f64vec2) ConstantComposite 46 46 + 48: TypeVector 39(float64_t) 3 + 49: TypePointer Function 48(f64vec3) + 51:39(float64_t) Constant 1719614413 1073127582 + 52: 48(f64vec3) ConstantComposite 51 51 51 + 53: TypeVector 39(float64_t) 4 + 54: TypePointer Function 53(f64vec4) + 428: TypeBool + 429: TypePointer Function 428(bool) + 437: TypeVector 428(bool) 2 + 438: TypePointer Function 437(bvec2) + 446: TypeVector 428(bool) 3 + 447: TypePointer Function 446(bvec3) + 455: TypeVector 428(bool) 4 + 456: TypePointer Function 455(bvec4) + 563: 428(bool) ConstantFalse + 572: 437(bvec2) ConstantComposite 563 563 + 581: 446(bvec3) ConstantComposite 563 563 563 + 590: 455(bvec4) ConstantComposite 563 563 563 563 + 737: TypeMatrix 43(f64vec2) 2 + 738: TypePointer Function 737 + 743: TypeMatrix 48(f64vec3) 3 + 744: TypePointer Function 743 + 749: TypeMatrix 53(f64vec4) 4 + 750: TypePointer Function 749 + 755: TypeMatrix 48(f64vec3) 2 + 756: TypePointer Function 755 + 761: TypeMatrix 43(f64vec2) 3 + 762: TypePointer Function 761 + 767: TypeMatrix 53(f64vec4) 2 + 768: TypePointer Function 767 + 773: TypeMatrix 43(f64vec2) 4 + 774: TypePointer Function 773 + 779: TypeMatrix 53(f64vec4) 3 + 780: TypePointer Function 779 + 785: TypeMatrix 48(f64vec3) 4 + 786: TypePointer Function 785 + 954: 32(int) Constant 1 + 958: 32(int) Constant 2 + 962: 32(int) Constant 3 + 966: 23(int) Constant 1 + 970: 23(int) Constant 2 + 996: 10(float) Constant 1065353216 + 1018: TypePointer Function 11(fvec4) + 1020: TypeImage 10(float) 2D sampled format:Unknown + 1021: TypeSampledImage 1020 + 1022: 32(int) Constant 5 + 1023: TypeArray 1021 1022 + 1024: TypePointer UniformConstant 1023 +1025(arrayedSampler): 1024(ptr) Variable UniformConstant + 1026: TypePointer Input 23(int) + 1027(i): 1026(ptr) Variable Input + 1029: TypePointer UniformConstant 1021 + 1032: TypePointer Input 20(fvec2) + 1033(c2D): 1032(ptr) Variable Input + 1036: TypeArray 10(float) 958 + 1037: TypePointer Input 1036 +1038(gl_ClipDistance): 1037(ptr) Variable Input + 1039: TypePointer Input 10(float) + 1043: TypeVector 10(float) 3 + 1048: TypeVector 32(int) 4 + 1049: TypePointer Output 1048(ivec4) + 1050(uoutp): 1049(ptr) Variable Output + 1051: TypeImage 32(int) Rect sampled format:Unknown + 1052: TypeSampledImage 1051 + 1053: TypePointer UniformConstant 1052 + 1054(samp2dr): 1053(ptr) Variable UniformConstant + 1057: 32(int) Constant 4 + 1058: TypeArray 24(ivec2) 1057 + 1059: 24(ivec2) ConstantComposite 966 970 + 1060: 23(int) Constant 15 + 1061: 23(int) Constant 16 + 1062: 24(ivec2) ConstantComposite 1060 1061 + 1063: 23(int) Constant 4294967294 + 1064: 23(int) Constant 0 + 1065: 24(ivec2) ConstantComposite 1063 1064 + 1066: 1058 ConstantComposite 1059 27 1062 1065 + 1074: TypeVector 23(int) 4 + 1075: TypePointer Output 1074(ivec4) + 1076(ioutp): 1075(ptr) Variable Output + 1077: TypeImage 23(int) 2D array sampled format:Unknown + 1078: TypeSampledImage 1077 + 1079: TypePointer UniformConstant 1078 + 1080(isamp2DA): 1079(ptr) Variable UniformConstant + 1082: 10(float) Constant 1036831949 + 1083: 1043(fvec3) ConstantComposite 1082 1082 1082 + 1084: 24(ivec2) ConstantComposite 966 966 + 1096: TypePointer Input 11(fvec4) +1097(gl_FragCoord): 1096(ptr) Variable Input + 1099(vl2): 1096(ptr) Variable Input + 1104: TypePointer Output 32(int) + 1105(uo): 1104(ptr) Variable Output + 1106: TypePointer Input 32(int) + 1107(u): 1106(ptr) Variable Input + 1114: TypePointer Function 23(int) +1116(gl_PrimitiveID): 1026(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 1019(v): 1018(ptr) Variable Function + 1115(id): 1114(ptr) Variable Function + 1028: 23(int) Load 1027(i) + 1030: 1029(ptr) AccessChain 1025(arrayedSampler) 1028 + 1031: 1021 Load 1030 + 1034: 20(fvec2) Load 1033(c2D) + 1035: 11(fvec4) ImageSampleImplicitLod 1031 1034 + Store 1019(v) 1035 + 1040: 1039(ptr) AccessChain 1038(gl_ClipDistance) 966 + 1041: 10(float) Load 1040 + 1042: 34(ptr) AccessChain 13(outp) 33 + Store 1042 1041 + 1044: 11(fvec4) Load 1019(v) + 1045: 1043(fvec3) VectorShuffle 1044 1044 1 2 3 + 1046: 11(fvec4) Load 13(outp) + 1047: 11(fvec4) VectorShuffle 1046 1045 0 4 5 6 + Store 13(outp) 1047 + 1055: 1052 Load 1054(samp2dr) + 1056: 20(fvec2) Load 1033(c2D) + 1067: 1048(ivec4) ImageGather 1055 1056 970 ConstOffsets 1066 + Store 1050(uoutp) 1067 + 1068: 1029(ptr) AccessChain 1025(arrayedSampler) 1064 + 1069: 1021 Load 1068 + 1070: 20(fvec2) Load 1033(c2D) + 1071: 11(fvec4) ImageGather 1069 1070 1064 + 1072: 11(fvec4) Load 13(outp) + 1073: 11(fvec4) FAdd 1072 1071 + Store 13(outp) 1073 + 1081: 1078 Load 1080(isamp2DA) + 1085: 1074(ivec4) ImageGather 1081 1083 25 ConstOffset 1084 + Store 1076(ioutp) 1085 + 1086: 1078 Load 1080(isamp2DA) + 1087: 1074(ivec4) ImageGather 1086 1083 25 ConstOffset 1084 + 1088: 1074(ivec4) Load 1076(ioutp) + 1089: 1074(ivec4) IAdd 1088 1087 + Store 1076(ioutp) 1089 + 1090: 1078 Load 1080(isamp2DA) + 1091: 23(int) Load 1027(i) + 1092: 24(ivec2) CompositeConstruct 1091 1091 + 1093: 1074(ivec4) ImageGather 1090 1083 1064 Offset 1092 + 1094: 1074(ivec4) Load 1076(ioutp) + 1095: 1074(ivec4) IAdd 1094 1093 + Store 1076(ioutp) 1095 + 1098: 11(fvec4) Load 1097(gl_FragCoord) + 1100: 11(fvec4) Load 1099(vl2) + 1101: 11(fvec4) FAdd 1098 1100 + 1102: 11(fvec4) Load 13(outp) + 1103: 11(fvec4) FAdd 1102 1101 + Store 13(outp) 1103 + 1108: 32(int) Load 1107(u) + 1109: 23(int) Load 1027(i) + 1110: 32(int) Bitcast 1109 + 1111: 32(int) UMod 1108 1110 + Store 1105(uo) 1111 + 1112: 2 FunctionCall 6(foo23() + 1113: 2 FunctionCall 8(doubles() + 1117: 23(int) Load 1116(gl_PrimitiveID) + Store 1115(id) 1117 + Return + FunctionEnd + 6(foo23(): 2 Function None 3 + 7: Label + 18: 15 Load 17(u2drs) + 19: 11(fvec4) Load 13(outp) + 28: 10(float) CompositeExtract 19 2 + 29: 10(float) CompositeExtract 19 3 + 30: 11(fvec4) CompositeInsert 29 19 2 + 31: 10(float) ImageSampleProjDrefExplicitLod 18 30 28 Grad ConstOffset 22 22 27 + 35: 34(ptr) AccessChain 13(outp) 33 + 36: 10(float) Load 35 + 37: 10(float) FAdd 36 31 + 38: 34(ptr) AccessChain 13(outp) 33 + Store 38 37 + Return + FunctionEnd + 8(doubles(): 2 Function None 3 + 9: Label + 41(doublev): 40(ptr) Variable Function + 45(dvec2v): 44(ptr) Variable Function + 50(dvec3v): 49(ptr) Variable Function + 55(dvec4v): 54(ptr) Variable Function + 430(boolv): 429(ptr) Variable Function + 439(bvec2v): 438(ptr) Variable Function + 448(bvec3v): 447(ptr) Variable Function + 457(bvec4v): 456(ptr) Variable Function + 557: 429(ptr) Variable Function + 566: 438(ptr) Variable Function + 575: 447(ptr) Variable Function + 584: 456(ptr) Variable Function + 739(dmat2v): 738(ptr) Variable Function + 745(dmat3v): 744(ptr) Variable Function + 751(dmat4v): 750(ptr) Variable Function + 757(dmat2x3v): 756(ptr) Variable Function + 763(dmat3x2v): 762(ptr) Variable Function + 769(dmat2x4v): 768(ptr) Variable Function + 775(dmat4x2v): 774(ptr) Variable Function + 781(dmat3x4v): 780(ptr) Variable Function + 787(dmat4x3v): 786(ptr) Variable Function + Store 41(doublev) 42 + Store 45(dvec2v) 47 + Store 50(dvec3v) 52 + 56:39(float64_t) Load 41(doublev) + 57: 53(f64vec4) CompositeConstruct 56 56 56 56 + 58: 53(f64vec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 57 + Store 55(dvec4v) 58 + 59:39(float64_t) Load 41(doublev) + 60:39(float64_t) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 59 + 61:39(float64_t) Load 41(doublev) + 62:39(float64_t) FAdd 61 60 + Store 41(doublev) 62 + 63: 43(f64vec2) Load 45(dvec2v) + 64: 43(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 63 + 65: 43(f64vec2) Load 45(dvec2v) + 66: 43(f64vec2) FAdd 65 64 + Store 45(dvec2v) 66 + 67: 48(f64vec3) Load 50(dvec3v) + 68: 48(f64vec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 67 + 69: 48(f64vec3) Load 50(dvec3v) + 70: 48(f64vec3) FAdd 69 68 + Store 50(dvec3v) 70 + 71: 53(f64vec4) Load 55(dvec4v) + 72: 53(f64vec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 71 + 73: 53(f64vec4) Load 55(dvec4v) + 74: 53(f64vec4) FAdd 73 72 + Store 55(dvec4v) 74 + 75:39(float64_t) Load 41(doublev) + 76:39(float64_t) ExtInst 1(GLSL.std.450) 4(FAbs) 75 + 77:39(float64_t) Load 41(doublev) + 78:39(float64_t) FAdd 77 76 + Store 41(doublev) 78 + 79: 43(f64vec2) Load 45(dvec2v) + 80: 43(f64vec2) ExtInst 1(GLSL.std.450) 4(FAbs) 79 + 81: 43(f64vec2) Load 45(dvec2v) + 82: 43(f64vec2) FAdd 81 80 + Store 45(dvec2v) 82 + 83: 48(f64vec3) Load 50(dvec3v) + 84: 48(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 83 + 85: 48(f64vec3) Load 50(dvec3v) + 86: 48(f64vec3) FAdd 85 84 + Store 50(dvec3v) 86 + 87: 53(f64vec4) Load 55(dvec4v) + 88: 53(f64vec4) ExtInst 1(GLSL.std.450) 4(FAbs) 87 + 89: 53(f64vec4) Load 55(dvec4v) + 90: 53(f64vec4) FAdd 89 88 + Store 55(dvec4v) 90 + 91:39(float64_t) Load 41(doublev) + 92:39(float64_t) ExtInst 1(GLSL.std.450) 6(FSign) 91 + 93:39(float64_t) Load 41(doublev) + 94:39(float64_t) FAdd 93 92 + Store 41(doublev) 94 + 95: 43(f64vec2) Load 45(dvec2v) + 96: 43(f64vec2) ExtInst 1(GLSL.std.450) 6(FSign) 95 + 97: 43(f64vec2) Load 45(dvec2v) + 98: 43(f64vec2) FAdd 97 96 + Store 45(dvec2v) 98 + 99: 48(f64vec3) Load 50(dvec3v) + 100: 48(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 99 + 101: 48(f64vec3) Load 50(dvec3v) + 102: 48(f64vec3) FAdd 101 100 + Store 50(dvec3v) 102 + 103: 53(f64vec4) Load 55(dvec4v) + 104: 53(f64vec4) ExtInst 1(GLSL.std.450) 6(FSign) 103 + 105: 53(f64vec4) Load 55(dvec4v) + 106: 53(f64vec4) FAdd 105 104 + Store 55(dvec4v) 106 + 107:39(float64_t) Load 41(doublev) + 108:39(float64_t) ExtInst 1(GLSL.std.450) 8(Floor) 107 + 109:39(float64_t) Load 41(doublev) + 110:39(float64_t) FAdd 109 108 + Store 41(doublev) 110 + 111: 43(f64vec2) Load 45(dvec2v) + 112: 43(f64vec2) ExtInst 1(GLSL.std.450) 8(Floor) 111 + 113: 43(f64vec2) Load 45(dvec2v) + 114: 43(f64vec2) FAdd 113 112 + Store 45(dvec2v) 114 + 115: 48(f64vec3) Load 50(dvec3v) + 116: 48(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 115 + 117: 48(f64vec3) Load 50(dvec3v) + 118: 48(f64vec3) FAdd 117 116 + Store 50(dvec3v) 118 + 119: 53(f64vec4) Load 55(dvec4v) + 120: 53(f64vec4) ExtInst 1(GLSL.std.450) 8(Floor) 119 + 121: 53(f64vec4) Load 55(dvec4v) + 122: 53(f64vec4) FAdd 121 120 + Store 55(dvec4v) 122 + 123:39(float64_t) Load 41(doublev) + 124:39(float64_t) ExtInst 1(GLSL.std.450) 3(Trunc) 123 + 125:39(float64_t) Load 41(doublev) + 126:39(float64_t) FAdd 125 124 + Store 41(doublev) 126 + 127: 43(f64vec2) Load 45(dvec2v) + 128: 43(f64vec2) ExtInst 1(GLSL.std.450) 3(Trunc) 127 + 129: 43(f64vec2) Load 45(dvec2v) + 130: 43(f64vec2) FAdd 129 128 + Store 45(dvec2v) 130 + 131: 48(f64vec3) Load 50(dvec3v) + 132: 48(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 131 + 133: 48(f64vec3) Load 50(dvec3v) + 134: 48(f64vec3) FAdd 133 132 + Store 50(dvec3v) 134 + 135: 53(f64vec4) Load 55(dvec4v) + 136: 53(f64vec4) ExtInst 1(GLSL.std.450) 3(Trunc) 135 + 137: 53(f64vec4) Load 55(dvec4v) + 138: 53(f64vec4) FAdd 137 136 + Store 55(dvec4v) 138 + 139:39(float64_t) Load 41(doublev) + 140:39(float64_t) ExtInst 1(GLSL.std.450) 1(Round) 139 + 141:39(float64_t) Load 41(doublev) + 142:39(float64_t) FAdd 141 140 + Store 41(doublev) 142 + 143: 43(f64vec2) Load 45(dvec2v) + 144: 43(f64vec2) ExtInst 1(GLSL.std.450) 1(Round) 143 + 145: 43(f64vec2) Load 45(dvec2v) + 146: 43(f64vec2) FAdd 145 144 + Store 45(dvec2v) 146 + 147: 48(f64vec3) Load 50(dvec3v) + 148: 48(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 147 + 149: 48(f64vec3) Load 50(dvec3v) + 150: 48(f64vec3) FAdd 149 148 + Store 50(dvec3v) 150 + 151: 53(f64vec4) Load 55(dvec4v) + 152: 53(f64vec4) ExtInst 1(GLSL.std.450) 1(Round) 151 + 153: 53(f64vec4) Load 55(dvec4v) + 154: 53(f64vec4) FAdd 153 152 + Store 55(dvec4v) 154 + 155:39(float64_t) Load 41(doublev) + 156:39(float64_t) ExtInst 1(GLSL.std.450) 2(RoundEven) 155 + 157:39(float64_t) Load 41(doublev) + 158:39(float64_t) FAdd 157 156 + Store 41(doublev) 158 + 159: 43(f64vec2) Load 45(dvec2v) + 160: 43(f64vec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 159 + 161: 43(f64vec2) Load 45(dvec2v) + 162: 43(f64vec2) FAdd 161 160 + Store 45(dvec2v) 162 + 163: 48(f64vec3) Load 50(dvec3v) + 164: 48(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 163 + 165: 48(f64vec3) Load 50(dvec3v) + 166: 48(f64vec3) FAdd 165 164 + Store 50(dvec3v) 166 + 167: 53(f64vec4) Load 55(dvec4v) + 168: 53(f64vec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 167 + 169: 53(f64vec4) Load 55(dvec4v) + 170: 53(f64vec4) FAdd 169 168 + Store 55(dvec4v) 170 + 171:39(float64_t) Load 41(doublev) + 172:39(float64_t) ExtInst 1(GLSL.std.450) 9(Ceil) 171 + 173:39(float64_t) Load 41(doublev) + 174:39(float64_t) FAdd 173 172 + Store 41(doublev) 174 + 175: 43(f64vec2) Load 45(dvec2v) + 176: 43(f64vec2) ExtInst 1(GLSL.std.450) 9(Ceil) 175 + 177: 43(f64vec2) Load 45(dvec2v) + 178: 43(f64vec2) FAdd 177 176 + Store 45(dvec2v) 178 + 179: 48(f64vec3) Load 50(dvec3v) + 180: 48(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 179 + 181: 48(f64vec3) Load 50(dvec3v) + 182: 48(f64vec3) FAdd 181 180 + Store 50(dvec3v) 182 + 183: 53(f64vec4) Load 55(dvec4v) + 184: 53(f64vec4) ExtInst 1(GLSL.std.450) 9(Ceil) 183 + 185: 53(f64vec4) Load 55(dvec4v) + 186: 53(f64vec4) FAdd 185 184 + Store 55(dvec4v) 186 + 187:39(float64_t) Load 41(doublev) + 188:39(float64_t) ExtInst 1(GLSL.std.450) 10(Fract) 187 + 189:39(float64_t) Load 41(doublev) + 190:39(float64_t) FAdd 189 188 + Store 41(doublev) 190 + 191: 43(f64vec2) Load 45(dvec2v) + 192: 43(f64vec2) ExtInst 1(GLSL.std.450) 10(Fract) 191 + 193: 43(f64vec2) Load 45(dvec2v) + 194: 43(f64vec2) FAdd 193 192 + Store 45(dvec2v) 194 + 195: 48(f64vec3) Load 50(dvec3v) + 196: 48(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 195 + 197: 48(f64vec3) Load 50(dvec3v) + 198: 48(f64vec3) FAdd 197 196 + Store 50(dvec3v) 198 + 199: 53(f64vec4) Load 55(dvec4v) + 200: 53(f64vec4) ExtInst 1(GLSL.std.450) 10(Fract) 199 + 201: 53(f64vec4) Load 55(dvec4v) + 202: 53(f64vec4) FAdd 201 200 + Store 55(dvec4v) 202 + 203:39(float64_t) Load 41(doublev) + 204:39(float64_t) Load 41(doublev) + 205:39(float64_t) FMod 203 204 + 206:39(float64_t) Load 41(doublev) + 207:39(float64_t) FAdd 206 205 + Store 41(doublev) 207 + 208: 43(f64vec2) Load 45(dvec2v) + 209:39(float64_t) Load 41(doublev) + 210: 43(f64vec2) CompositeConstruct 209 209 + 211: 43(f64vec2) FMod 208 210 + 212: 43(f64vec2) Load 45(dvec2v) + 213: 43(f64vec2) FAdd 212 211 + Store 45(dvec2v) 213 + 214: 48(f64vec3) Load 50(dvec3v) + 215:39(float64_t) Load 41(doublev) + 216: 48(f64vec3) CompositeConstruct 215 215 215 + 217: 48(f64vec3) FMod 214 216 + 218: 48(f64vec3) Load 50(dvec3v) + 219: 48(f64vec3) FAdd 218 217 + Store 50(dvec3v) 219 + 220: 53(f64vec4) Load 55(dvec4v) + 221:39(float64_t) Load 41(doublev) + 222: 53(f64vec4) CompositeConstruct 221 221 221 221 + 223: 53(f64vec4) FMod 220 222 + 224: 53(f64vec4) Load 55(dvec4v) + 225: 53(f64vec4) FAdd 224 223 + Store 55(dvec4v) 225 + 226: 43(f64vec2) Load 45(dvec2v) + 227: 43(f64vec2) Load 45(dvec2v) + 228: 43(f64vec2) FMod 226 227 + 229: 43(f64vec2) Load 45(dvec2v) + 230: 43(f64vec2) FAdd 229 228 + Store 45(dvec2v) 230 + 231: 48(f64vec3) Load 50(dvec3v) + 232: 48(f64vec3) Load 50(dvec3v) + 233: 48(f64vec3) FMod 231 232 + 234: 48(f64vec3) Load 50(dvec3v) + 235: 48(f64vec3) FAdd 234 233 + Store 50(dvec3v) 235 + 236: 53(f64vec4) Load 55(dvec4v) + 237: 53(f64vec4) Load 55(dvec4v) + 238: 53(f64vec4) FMod 236 237 + 239: 53(f64vec4) Load 55(dvec4v) + 240: 53(f64vec4) FAdd 239 238 + Store 55(dvec4v) 240 + 241:39(float64_t) Load 41(doublev) + 242:39(float64_t) ExtInst 1(GLSL.std.450) 35(Modf) 241 41(doublev) + 243:39(float64_t) Load 41(doublev) + 244:39(float64_t) FAdd 243 242 + Store 41(doublev) 244 + 245: 43(f64vec2) Load 45(dvec2v) + 246: 43(f64vec2) ExtInst 1(GLSL.std.450) 35(Modf) 245 45(dvec2v) + 247: 43(f64vec2) Load 45(dvec2v) + 248: 43(f64vec2) FAdd 247 246 + Store 45(dvec2v) 248 + 249: 48(f64vec3) Load 50(dvec3v) + 250: 48(f64vec3) ExtInst 1(GLSL.std.450) 35(Modf) 249 50(dvec3v) + 251: 48(f64vec3) Load 50(dvec3v) + 252: 48(f64vec3) FAdd 251 250 + Store 50(dvec3v) 252 + 253: 53(f64vec4) Load 55(dvec4v) + 254: 53(f64vec4) ExtInst 1(GLSL.std.450) 35(Modf) 253 55(dvec4v) + 255: 53(f64vec4) Load 55(dvec4v) + 256: 53(f64vec4) FAdd 255 254 + Store 55(dvec4v) 256 + 257:39(float64_t) Load 41(doublev) + 258:39(float64_t) Load 41(doublev) + 259:39(float64_t) ExtInst 1(GLSL.std.450) 79(NMin) 257 258 + 260:39(float64_t) Load 41(doublev) + 261:39(float64_t) FAdd 260 259 + Store 41(doublev) 261 + 262: 43(f64vec2) Load 45(dvec2v) + 263:39(float64_t) Load 41(doublev) + 264: 43(f64vec2) CompositeConstruct 263 263 + 265: 43(f64vec2) ExtInst 1(GLSL.std.450) 79(NMin) 262 264 + 266: 43(f64vec2) Load 45(dvec2v) + 267: 43(f64vec2) FAdd 266 265 + Store 45(dvec2v) 267 + 268: 48(f64vec3) Load 50(dvec3v) + 269:39(float64_t) Load 41(doublev) + 270: 48(f64vec3) CompositeConstruct 269 269 269 + 271: 48(f64vec3) ExtInst 1(GLSL.std.450) 79(NMin) 268 270 + 272: 48(f64vec3) Load 50(dvec3v) + 273: 48(f64vec3) FAdd 272 271 + Store 50(dvec3v) 273 + 274: 53(f64vec4) Load 55(dvec4v) + 275:39(float64_t) Load 41(doublev) + 276: 53(f64vec4) CompositeConstruct 275 275 275 275 + 277: 53(f64vec4) ExtInst 1(GLSL.std.450) 79(NMin) 274 276 + 278: 53(f64vec4) Load 55(dvec4v) + 279: 53(f64vec4) FAdd 278 277 + Store 55(dvec4v) 279 + 280: 43(f64vec2) Load 45(dvec2v) + 281: 43(f64vec2) Load 45(dvec2v) + 282: 43(f64vec2) ExtInst 1(GLSL.std.450) 79(NMin) 280 281 + 283: 43(f64vec2) Load 45(dvec2v) + 284: 43(f64vec2) FAdd 283 282 + Store 45(dvec2v) 284 + 285: 48(f64vec3) Load 50(dvec3v) + 286: 48(f64vec3) Load 50(dvec3v) + 287: 48(f64vec3) ExtInst 1(GLSL.std.450) 79(NMin) 285 286 + 288: 48(f64vec3) Load 50(dvec3v) + 289: 48(f64vec3) FAdd 288 287 + Store 50(dvec3v) 289 + 290: 53(f64vec4) Load 55(dvec4v) + 291: 53(f64vec4) Load 55(dvec4v) + 292: 53(f64vec4) ExtInst 1(GLSL.std.450) 79(NMin) 290 291 + 293: 53(f64vec4) Load 55(dvec4v) + 294: 53(f64vec4) FAdd 293 292 + Store 55(dvec4v) 294 + 295:39(float64_t) Load 41(doublev) + 296:39(float64_t) Load 41(doublev) + 297:39(float64_t) ExtInst 1(GLSL.std.450) 80(NMax) 295 296 + 298:39(float64_t) Load 41(doublev) + 299:39(float64_t) FAdd 298 297 + Store 41(doublev) 299 + 300: 43(f64vec2) Load 45(dvec2v) + 301:39(float64_t) Load 41(doublev) + 302: 43(f64vec2) CompositeConstruct 301 301 + 303: 43(f64vec2) ExtInst 1(GLSL.std.450) 80(NMax) 300 302 + 304: 43(f64vec2) Load 45(dvec2v) + 305: 43(f64vec2) FAdd 304 303 + Store 45(dvec2v) 305 + 306: 48(f64vec3) Load 50(dvec3v) + 307:39(float64_t) Load 41(doublev) + 308: 48(f64vec3) CompositeConstruct 307 307 307 + 309: 48(f64vec3) ExtInst 1(GLSL.std.450) 80(NMax) 306 308 + 310: 48(f64vec3) Load 50(dvec3v) + 311: 48(f64vec3) FAdd 310 309 + Store 50(dvec3v) 311 + 312: 53(f64vec4) Load 55(dvec4v) + 313:39(float64_t) Load 41(doublev) + 314: 53(f64vec4) CompositeConstruct 313 313 313 313 + 315: 53(f64vec4) ExtInst 1(GLSL.std.450) 80(NMax) 312 314 + 316: 53(f64vec4) Load 55(dvec4v) + 317: 53(f64vec4) FAdd 316 315 + Store 55(dvec4v) 317 + 318: 43(f64vec2) Load 45(dvec2v) + 319: 43(f64vec2) Load 45(dvec2v) + 320: 43(f64vec2) ExtInst 1(GLSL.std.450) 80(NMax) 318 319 + 321: 43(f64vec2) Load 45(dvec2v) + 322: 43(f64vec2) FAdd 321 320 + Store 45(dvec2v) 322 + 323: 48(f64vec3) Load 50(dvec3v) + 324: 48(f64vec3) Load 50(dvec3v) + 325: 48(f64vec3) ExtInst 1(GLSL.std.450) 80(NMax) 323 324 + 326: 48(f64vec3) Load 50(dvec3v) + 327: 48(f64vec3) FAdd 326 325 + Store 50(dvec3v) 327 + 328: 53(f64vec4) Load 55(dvec4v) + 329: 53(f64vec4) Load 55(dvec4v) + 330: 53(f64vec4) ExtInst 1(GLSL.std.450) 80(NMax) 328 329 + 331: 53(f64vec4) Load 55(dvec4v) + 332: 53(f64vec4) FAdd 331 330 + Store 55(dvec4v) 332 + 333:39(float64_t) Load 41(doublev) + 334:39(float64_t) Load 41(doublev) + 335:39(float64_t) Load 41(doublev) + 336:39(float64_t) ExtInst 1(GLSL.std.450) 81(NClamp) 333 334 335 + 337:39(float64_t) Load 41(doublev) + 338:39(float64_t) FAdd 337 336 + Store 41(doublev) 338 + 339: 43(f64vec2) Load 45(dvec2v) + 340:39(float64_t) Load 41(doublev) + 341:39(float64_t) Load 41(doublev) + 342: 43(f64vec2) CompositeConstruct 340 340 + 343: 43(f64vec2) CompositeConstruct 341 341 + 344: 43(f64vec2) ExtInst 1(GLSL.std.450) 81(NClamp) 339 342 343 + 345: 43(f64vec2) Load 45(dvec2v) + 346: 43(f64vec2) FAdd 345 344 + Store 45(dvec2v) 346 + 347: 48(f64vec3) Load 50(dvec3v) + 348:39(float64_t) Load 41(doublev) + 349:39(float64_t) Load 41(doublev) + 350: 48(f64vec3) CompositeConstruct 348 348 348 + 351: 48(f64vec3) CompositeConstruct 349 349 349 + 352: 48(f64vec3) ExtInst 1(GLSL.std.450) 81(NClamp) 347 350 351 + 353: 48(f64vec3) Load 50(dvec3v) + 354: 48(f64vec3) FAdd 353 352 + Store 50(dvec3v) 354 + 355: 53(f64vec4) Load 55(dvec4v) + 356:39(float64_t) Load 41(doublev) + 357:39(float64_t) Load 41(doublev) + 358: 53(f64vec4) CompositeConstruct 356 356 356 356 + 359: 53(f64vec4) CompositeConstruct 357 357 357 357 + 360: 53(f64vec4) ExtInst 1(GLSL.std.450) 81(NClamp) 355 358 359 + 361: 53(f64vec4) Load 55(dvec4v) + 362: 53(f64vec4) FAdd 361 360 + Store 55(dvec4v) 362 + 363: 43(f64vec2) Load 45(dvec2v) + 364: 43(f64vec2) Load 45(dvec2v) + 365: 43(f64vec2) Load 45(dvec2v) + 366: 43(f64vec2) ExtInst 1(GLSL.std.450) 81(NClamp) 363 364 365 + 367: 43(f64vec2) Load 45(dvec2v) + 368: 43(f64vec2) FAdd 367 366 + Store 45(dvec2v) 368 + 369: 48(f64vec3) Load 50(dvec3v) + 370: 48(f64vec3) Load 50(dvec3v) + 371: 48(f64vec3) Load 50(dvec3v) + 372: 48(f64vec3) ExtInst 1(GLSL.std.450) 81(NClamp) 369 370 371 + 373: 48(f64vec3) Load 50(dvec3v) + 374: 48(f64vec3) FAdd 373 372 + Store 50(dvec3v) 374 + 375: 53(f64vec4) Load 55(dvec4v) + 376: 53(f64vec4) Load 55(dvec4v) + 377: 53(f64vec4) Load 55(dvec4v) + 378: 53(f64vec4) ExtInst 1(GLSL.std.450) 81(NClamp) 375 376 377 + 379: 53(f64vec4) Load 55(dvec4v) + 380: 53(f64vec4) FAdd 379 378 + Store 55(dvec4v) 380 + 381:39(float64_t) Load 41(doublev) + 382:39(float64_t) Load 41(doublev) + 383:39(float64_t) Load 41(doublev) + 384:39(float64_t) ExtInst 1(GLSL.std.450) 46(FMix) 381 382 383 + 385:39(float64_t) Load 41(doublev) + 386:39(float64_t) FAdd 385 384 + Store 41(doublev) 386 + 387: 43(f64vec2) Load 45(dvec2v) + 388: 43(f64vec2) Load 45(dvec2v) + 389:39(float64_t) Load 41(doublev) + 390: 43(f64vec2) CompositeConstruct 389 389 + 391: 43(f64vec2) ExtInst 1(GLSL.std.450) 46(FMix) 387 388 390 + 392: 43(f64vec2) Load 45(dvec2v) + 393: 43(f64vec2) FAdd 392 391 + Store 45(dvec2v) 393 + 394: 48(f64vec3) Load 50(dvec3v) + 395: 48(f64vec3) Load 50(dvec3v) + 396:39(float64_t) Load 41(doublev) + 397: 48(f64vec3) CompositeConstruct 396 396 396 + 398: 48(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 394 395 397 + 399: 48(f64vec3) Load 50(dvec3v) + 400: 48(f64vec3) FAdd 399 398 + Store 50(dvec3v) 400 + 401: 53(f64vec4) Load 55(dvec4v) + 402: 53(f64vec4) Load 55(dvec4v) + 403:39(float64_t) Load 41(doublev) + 404: 53(f64vec4) CompositeConstruct 403 403 403 403 + 405: 53(f64vec4) ExtInst 1(GLSL.std.450) 46(FMix) 401 402 404 + 406: 53(f64vec4) Load 55(dvec4v) + 407: 53(f64vec4) FAdd 406 405 + Store 55(dvec4v) 407 + 408: 43(f64vec2) Load 45(dvec2v) + 409: 43(f64vec2) Load 45(dvec2v) + 410: 43(f64vec2) Load 45(dvec2v) + 411: 43(f64vec2) ExtInst 1(GLSL.std.450) 46(FMix) 408 409 410 + 412: 43(f64vec2) Load 45(dvec2v) + 413: 43(f64vec2) FAdd 412 411 + Store 45(dvec2v) 413 + 414: 48(f64vec3) Load 50(dvec3v) + 415: 48(f64vec3) Load 50(dvec3v) + 416: 48(f64vec3) Load 50(dvec3v) + 417: 48(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 414 415 416 + 418: 48(f64vec3) Load 50(dvec3v) + 419: 48(f64vec3) FAdd 418 417 + Store 50(dvec3v) 419 + 420: 53(f64vec4) Load 55(dvec4v) + 421: 53(f64vec4) Load 55(dvec4v) + 422: 53(f64vec4) Load 55(dvec4v) + 423: 53(f64vec4) ExtInst 1(GLSL.std.450) 46(FMix) 420 421 422 + 424: 53(f64vec4) Load 55(dvec4v) + 425: 53(f64vec4) FAdd 424 423 + Store 55(dvec4v) 425 + 426:39(float64_t) Load 41(doublev) + 427:39(float64_t) Load 41(doublev) + 431: 428(bool) Load 430(boolv) + 432:39(float64_t) Select 431 427 426 + 433:39(float64_t) Load 41(doublev) + 434:39(float64_t) FAdd 433 432 + Store 41(doublev) 434 + 435: 43(f64vec2) Load 45(dvec2v) + 436: 43(f64vec2) Load 45(dvec2v) + 440: 437(bvec2) Load 439(bvec2v) + 441: 43(f64vec2) Select 440 436 435 + 442: 43(f64vec2) Load 45(dvec2v) + 443: 43(f64vec2) FAdd 442 441 + Store 45(dvec2v) 443 + 444: 48(f64vec3) Load 50(dvec3v) + 445: 48(f64vec3) Load 50(dvec3v) + 449: 446(bvec3) Load 448(bvec3v) + 450: 48(f64vec3) Select 449 445 444 + 451: 48(f64vec3) Load 50(dvec3v) + 452: 48(f64vec3) FAdd 451 450 + Store 50(dvec3v) 452 + 453: 53(f64vec4) Load 55(dvec4v) + 454: 53(f64vec4) Load 55(dvec4v) + 458: 455(bvec4) Load 457(bvec4v) + 459: 53(f64vec4) Select 458 454 453 + 460: 53(f64vec4) Load 55(dvec4v) + 461: 53(f64vec4) FAdd 460 459 + Store 55(dvec4v) 461 + 462:39(float64_t) Load 41(doublev) + 463:39(float64_t) Load 41(doublev) + 464:39(float64_t) ExtInst 1(GLSL.std.450) 48(Step) 462 463 + 465:39(float64_t) Load 41(doublev) + 466:39(float64_t) FAdd 465 464 + Store 41(doublev) 466 + 467: 43(f64vec2) Load 45(dvec2v) + 468: 43(f64vec2) Load 45(dvec2v) + 469: 43(f64vec2) ExtInst 1(GLSL.std.450) 48(Step) 467 468 + 470: 43(f64vec2) Load 45(dvec2v) + 471: 43(f64vec2) FAdd 470 469 + Store 45(dvec2v) 471 + 472: 48(f64vec3) Load 50(dvec3v) + 473: 48(f64vec3) Load 50(dvec3v) + 474: 48(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 472 473 + 475: 48(f64vec3) Load 50(dvec3v) + 476: 48(f64vec3) FAdd 475 474 + Store 50(dvec3v) 476 + 477: 53(f64vec4) Load 55(dvec4v) + 478: 53(f64vec4) Load 55(dvec4v) + 479: 53(f64vec4) ExtInst 1(GLSL.std.450) 48(Step) 477 478 + 480: 53(f64vec4) Load 55(dvec4v) + 481: 53(f64vec4) FAdd 480 479 + Store 55(dvec4v) 481 + 482:39(float64_t) Load 41(doublev) + 483: 43(f64vec2) Load 45(dvec2v) + 484: 43(f64vec2) CompositeConstruct 482 482 + 485: 43(f64vec2) ExtInst 1(GLSL.std.450) 48(Step) 484 483 + 486: 43(f64vec2) Load 45(dvec2v) + 487: 43(f64vec2) FAdd 486 485 + Store 45(dvec2v) 487 + 488:39(float64_t) Load 41(doublev) + 489: 48(f64vec3) Load 50(dvec3v) + 490: 48(f64vec3) CompositeConstruct 488 488 488 + 491: 48(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 490 489 + 492: 48(f64vec3) Load 50(dvec3v) + 493: 48(f64vec3) FAdd 492 491 + Store 50(dvec3v) 493 + 494:39(float64_t) Load 41(doublev) + 495: 53(f64vec4) Load 55(dvec4v) + 496: 53(f64vec4) CompositeConstruct 494 494 494 494 + 497: 53(f64vec4) ExtInst 1(GLSL.std.450) 48(Step) 496 495 + 498: 53(f64vec4) Load 55(dvec4v) + 499: 53(f64vec4) FAdd 498 497 + Store 55(dvec4v) 499 + 500:39(float64_t) Load 41(doublev) + 501:39(float64_t) Load 41(doublev) + 502:39(float64_t) Load 41(doublev) + 503:39(float64_t) ExtInst 1(GLSL.std.450) 49(SmoothStep) 500 501 502 + 504:39(float64_t) Load 41(doublev) + 505:39(float64_t) FAdd 504 503 + Store 41(doublev) 505 + 506: 43(f64vec2) Load 45(dvec2v) + 507: 43(f64vec2) Load 45(dvec2v) + 508: 43(f64vec2) Load 45(dvec2v) + 509: 43(f64vec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 506 507 508 + 510: 43(f64vec2) Load 45(dvec2v) + 511: 43(f64vec2) FAdd 510 509 + Store 45(dvec2v) 511 + 512: 48(f64vec3) Load 50(dvec3v) + 513: 48(f64vec3) Load 50(dvec3v) + 514: 48(f64vec3) Load 50(dvec3v) + 515: 48(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 512 513 514 + 516: 48(f64vec3) Load 50(dvec3v) + 517: 48(f64vec3) FAdd 516 515 + Store 50(dvec3v) 517 + 518: 53(f64vec4) Load 55(dvec4v) + 519: 53(f64vec4) Load 55(dvec4v) + 520: 53(f64vec4) Load 55(dvec4v) + 521: 53(f64vec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 518 519 520 + 522: 53(f64vec4) Load 55(dvec4v) + 523: 53(f64vec4) FAdd 522 521 + Store 55(dvec4v) 523 + 524:39(float64_t) Load 41(doublev) + 525:39(float64_t) Load 41(doublev) + 526: 43(f64vec2) Load 45(dvec2v) + 527: 43(f64vec2) CompositeConstruct 524 524 + 528: 43(f64vec2) CompositeConstruct 525 525 + 529: 43(f64vec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 527 528 526 + 530: 43(f64vec2) Load 45(dvec2v) + 531: 43(f64vec2) FAdd 530 529 + Store 45(dvec2v) 531 + 532:39(float64_t) Load 41(doublev) + 533:39(float64_t) Load 41(doublev) + 534: 48(f64vec3) Load 50(dvec3v) + 535: 48(f64vec3) CompositeConstruct 532 532 532 + 536: 48(f64vec3) CompositeConstruct 533 533 533 + 537: 48(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 535 536 534 + 538: 48(f64vec3) Load 50(dvec3v) + 539: 48(f64vec3) FAdd 538 537 + Store 50(dvec3v) 539 + 540:39(float64_t) Load 41(doublev) + 541:39(float64_t) Load 41(doublev) + 542: 53(f64vec4) Load 55(dvec4v) + 543: 53(f64vec4) CompositeConstruct 540 540 540 540 + 544: 53(f64vec4) CompositeConstruct 541 541 541 541 + 545: 53(f64vec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 543 544 542 + 546: 53(f64vec4) Load 55(dvec4v) + 547: 53(f64vec4) FAdd 546 545 + Store 55(dvec4v) 547 + 548:39(float64_t) Load 41(doublev) + 549: 428(bool) IsNan 548 + Store 430(boolv) 549 + 550: 43(f64vec2) Load 45(dvec2v) + 551: 437(bvec2) IsNan 550 + Store 439(bvec2v) 551 + 552: 48(f64vec3) Load 50(dvec3v) + 553: 446(bvec3) IsNan 552 + Store 448(bvec3v) 553 + 554: 53(f64vec4) Load 55(dvec4v) + 555: 455(bvec4) IsNan 554 + Store 457(bvec4v) 555 + 556: 428(bool) Load 430(boolv) + SelectionMerge 559 None + BranchConditional 556 558 562 + 558: Label + 560:39(float64_t) Load 41(doublev) + 561: 428(bool) IsInf 560 + Store 557 561 + Branch 559 + 562: Label + Store 557 563 + Branch 559 + 559: Label + 564: 428(bool) Load 557 + Store 430(boolv) 564 + 565: 428(bool) Load 430(boolv) + SelectionMerge 568 None + BranchConditional 565 567 571 + 567: Label + 569: 43(f64vec2) Load 45(dvec2v) + 570: 437(bvec2) IsInf 569 + Store 566 570 + Branch 568 + 571: Label + Store 566 572 + Branch 568 + 568: Label + 573: 437(bvec2) Load 566 + Store 439(bvec2v) 573 + 574: 428(bool) Load 430(boolv) + SelectionMerge 577 None + BranchConditional 574 576 580 + 576: Label + 578: 48(f64vec3) Load 50(dvec3v) + 579: 446(bvec3) IsInf 578 + Store 575 579 + Branch 577 + 580: Label + Store 575 581 + Branch 577 + 577: Label + 582: 446(bvec3) Load 575 + Store 448(bvec3v) 582 + 583: 428(bool) Load 430(boolv) + SelectionMerge 586 None + BranchConditional 583 585 589 + 585: Label + 587: 53(f64vec4) Load 55(dvec4v) + 588: 455(bvec4) IsInf 587 + Store 584 588 + Branch 586 + 589: Label + Store 584 590 + Branch 586 + 586: Label + 591: 455(bvec4) Load 584 + Store 457(bvec4v) 591 + 592:39(float64_t) Load 41(doublev) + 593:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 592 + 594:39(float64_t) Load 41(doublev) + 595:39(float64_t) FAdd 594 593 + Store 41(doublev) 595 + 596: 43(f64vec2) Load 45(dvec2v) + 597:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 596 + 598:39(float64_t) Load 41(doublev) + 599:39(float64_t) FAdd 598 597 + Store 41(doublev) 599 + 600: 48(f64vec3) Load 50(dvec3v) + 601:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 600 + 602:39(float64_t) Load 41(doublev) + 603:39(float64_t) FAdd 602 601 + Store 41(doublev) 603 + 604: 53(f64vec4) Load 55(dvec4v) + 605:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 604 + 606:39(float64_t) Load 41(doublev) + 607:39(float64_t) FAdd 606 605 + Store 41(doublev) 607 + 608:39(float64_t) Load 41(doublev) + 609:39(float64_t) Load 41(doublev) + 610:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 608 609 + 611:39(float64_t) Load 41(doublev) + 612:39(float64_t) FAdd 611 610 + Store 41(doublev) 612 + 613: 43(f64vec2) Load 45(dvec2v) + 614: 43(f64vec2) Load 45(dvec2v) + 615:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 613 614 + 616:39(float64_t) Load 41(doublev) + 617:39(float64_t) FAdd 616 615 + Store 41(doublev) 617 + 618: 48(f64vec3) Load 50(dvec3v) + 619: 48(f64vec3) Load 50(dvec3v) + 620:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 618 619 + 621:39(float64_t) Load 41(doublev) + 622:39(float64_t) FAdd 621 620 + Store 41(doublev) 622 + 623: 53(f64vec4) Load 55(dvec4v) + 624: 53(f64vec4) Load 55(dvec4v) + 625:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 623 624 + 626:39(float64_t) Load 41(doublev) + 627:39(float64_t) FAdd 626 625 + Store 41(doublev) 627 + 628:39(float64_t) Load 41(doublev) + 629:39(float64_t) Load 41(doublev) + 630:39(float64_t) FMul 628 629 + 631:39(float64_t) Load 41(doublev) + 632:39(float64_t) FAdd 631 630 + Store 41(doublev) 632 + 633: 43(f64vec2) Load 45(dvec2v) + 634: 43(f64vec2) Load 45(dvec2v) + 635:39(float64_t) Dot 633 634 + 636:39(float64_t) Load 41(doublev) + 637:39(float64_t) FAdd 636 635 + Store 41(doublev) 637 + 638: 48(f64vec3) Load 50(dvec3v) + 639: 48(f64vec3) Load 50(dvec3v) + 640:39(float64_t) Dot 638 639 + 641:39(float64_t) Load 41(doublev) + 642:39(float64_t) FAdd 641 640 + Store 41(doublev) 642 + 643: 53(f64vec4) Load 55(dvec4v) + 644: 53(f64vec4) Load 55(dvec4v) + 645:39(float64_t) Dot 643 644 + 646:39(float64_t) Load 41(doublev) + 647:39(float64_t) FAdd 646 645 + Store 41(doublev) 647 + 648: 48(f64vec3) Load 50(dvec3v) + 649: 48(f64vec3) Load 50(dvec3v) + 650: 48(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 648 649 + 651: 48(f64vec3) Load 50(dvec3v) + 652: 48(f64vec3) FAdd 651 650 + Store 50(dvec3v) 652 + 653:39(float64_t) Load 41(doublev) + 654:39(float64_t) ExtInst 1(GLSL.std.450) 69(Normalize) 653 + 655:39(float64_t) Load 41(doublev) + 656:39(float64_t) FAdd 655 654 + Store 41(doublev) 656 + 657: 43(f64vec2) Load 45(dvec2v) + 658: 43(f64vec2) ExtInst 1(GLSL.std.450) 69(Normalize) 657 + 659: 43(f64vec2) Load 45(dvec2v) + 660: 43(f64vec2) FAdd 659 658 + Store 45(dvec2v) 660 + 661: 48(f64vec3) Load 50(dvec3v) + 662: 48(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 661 + 663: 48(f64vec3) Load 50(dvec3v) + 664: 48(f64vec3) FAdd 663 662 + Store 50(dvec3v) 664 + 665: 53(f64vec4) Load 55(dvec4v) + 666: 53(f64vec4) ExtInst 1(GLSL.std.450) 69(Normalize) 665 + 667: 53(f64vec4) Load 55(dvec4v) + 668: 53(f64vec4) FAdd 667 666 + Store 55(dvec4v) 668 + 669:39(float64_t) Load 41(doublev) + 670:39(float64_t) Load 41(doublev) + 671:39(float64_t) Load 41(doublev) + 672:39(float64_t) ExtInst 1(GLSL.std.450) 70(FaceForward) 669 670 671 + 673:39(float64_t) Load 41(doublev) + 674:39(float64_t) FAdd 673 672 + Store 41(doublev) 674 + 675: 43(f64vec2) Load 45(dvec2v) + 676: 43(f64vec2) Load 45(dvec2v) + 677: 43(f64vec2) Load 45(dvec2v) + 678: 43(f64vec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 675 676 677 + 679: 43(f64vec2) Load 45(dvec2v) + 680: 43(f64vec2) FAdd 679 678 + Store 45(dvec2v) 680 + 681: 48(f64vec3) Load 50(dvec3v) + 682: 48(f64vec3) Load 50(dvec3v) + 683: 48(f64vec3) Load 50(dvec3v) + 684: 48(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 681 682 683 + 685: 48(f64vec3) Load 50(dvec3v) + 686: 48(f64vec3) FAdd 685 684 + Store 50(dvec3v) 686 + 687: 53(f64vec4) Load 55(dvec4v) + 688: 53(f64vec4) Load 55(dvec4v) + 689: 53(f64vec4) Load 55(dvec4v) + 690: 53(f64vec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 687 688 689 + 691: 53(f64vec4) Load 55(dvec4v) + 692: 53(f64vec4) FAdd 691 690 + Store 55(dvec4v) 692 + 693:39(float64_t) Load 41(doublev) + 694:39(float64_t) Load 41(doublev) + 695:39(float64_t) ExtInst 1(GLSL.std.450) 71(Reflect) 693 694 + 696:39(float64_t) Load 41(doublev) + 697:39(float64_t) FAdd 696 695 + Store 41(doublev) 697 + 698: 43(f64vec2) Load 45(dvec2v) + 699: 43(f64vec2) Load 45(dvec2v) + 700: 43(f64vec2) ExtInst 1(GLSL.std.450) 71(Reflect) 698 699 + 701: 43(f64vec2) Load 45(dvec2v) + 702: 43(f64vec2) FAdd 701 700 + Store 45(dvec2v) 702 + 703: 48(f64vec3) Load 50(dvec3v) + 704: 48(f64vec3) Load 50(dvec3v) + 705: 48(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 703 704 + 706: 48(f64vec3) Load 50(dvec3v) + 707: 48(f64vec3) FAdd 706 705 + Store 50(dvec3v) 707 + 708: 53(f64vec4) Load 55(dvec4v) + 709: 53(f64vec4) Load 55(dvec4v) + 710: 53(f64vec4) ExtInst 1(GLSL.std.450) 71(Reflect) 708 709 + 711: 53(f64vec4) Load 55(dvec4v) + 712: 53(f64vec4) FAdd 711 710 + Store 55(dvec4v) 712 + 713:39(float64_t) Load 41(doublev) + 714:39(float64_t) Load 41(doublev) + 715:39(float64_t) Load 41(doublev) + 716:39(float64_t) ExtInst 1(GLSL.std.450) 72(Refract) 713 714 715 + 717:39(float64_t) Load 41(doublev) + 718:39(float64_t) FAdd 717 716 + Store 41(doublev) 718 + 719: 43(f64vec2) Load 45(dvec2v) + 720: 43(f64vec2) Load 45(dvec2v) + 721:39(float64_t) Load 41(doublev) + 722: 43(f64vec2) ExtInst 1(GLSL.std.450) 72(Refract) 719 720 721 + 723: 43(f64vec2) Load 45(dvec2v) + 724: 43(f64vec2) FAdd 723 722 + Store 45(dvec2v) 724 + 725: 48(f64vec3) Load 50(dvec3v) + 726: 48(f64vec3) Load 50(dvec3v) + 727:39(float64_t) Load 41(doublev) + 728: 48(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 725 726 727 + 729: 48(f64vec3) Load 50(dvec3v) + 730: 48(f64vec3) FAdd 729 728 + Store 50(dvec3v) 730 + 731: 53(f64vec4) Load 55(dvec4v) + 732: 53(f64vec4) Load 55(dvec4v) + 733:39(float64_t) Load 41(doublev) + 734: 53(f64vec4) ExtInst 1(GLSL.std.450) 72(Refract) 731 732 733 + 735: 53(f64vec4) Load 55(dvec4v) + 736: 53(f64vec4) FAdd 735 734 + Store 55(dvec4v) 736 + 740: 43(f64vec2) Load 45(dvec2v) + 741: 43(f64vec2) Load 45(dvec2v) + 742: 737 OuterProduct 740 741 + Store 739(dmat2v) 742 + 746: 48(f64vec3) Load 50(dvec3v) + 747: 48(f64vec3) Load 50(dvec3v) + 748: 743 OuterProduct 746 747 + Store 745(dmat3v) 748 + 752: 53(f64vec4) Load 55(dvec4v) + 753: 53(f64vec4) Load 55(dvec4v) + 754: 749 OuterProduct 752 753 + Store 751(dmat4v) 754 + 758: 48(f64vec3) Load 50(dvec3v) + 759: 43(f64vec2) Load 45(dvec2v) + 760: 755 OuterProduct 758 759 + Store 757(dmat2x3v) 760 + 764: 43(f64vec2) Load 45(dvec2v) + 765: 48(f64vec3) Load 50(dvec3v) + 766: 761 OuterProduct 764 765 + Store 763(dmat3x2v) 766 + 770: 53(f64vec4) Load 55(dvec4v) + 771: 43(f64vec2) Load 45(dvec2v) + 772: 767 OuterProduct 770 771 + Store 769(dmat2x4v) 772 + 776: 43(f64vec2) Load 45(dvec2v) + 777: 53(f64vec4) Load 55(dvec4v) + 778: 773 OuterProduct 776 777 + Store 775(dmat4x2v) 778 + 782: 53(f64vec4) Load 55(dvec4v) + 783: 48(f64vec3) Load 50(dvec3v) + 784: 779 OuterProduct 782 783 + Store 781(dmat3x4v) 784 + 788: 48(f64vec3) Load 50(dvec3v) + 789: 53(f64vec4) Load 55(dvec4v) + 790: 785 OuterProduct 788 789 + Store 787(dmat4x3v) 790 + 791: 737 Load 739(dmat2v) + 792: 737 Load 739(dmat2v) + 793: 43(f64vec2) CompositeExtract 791 0 + 794: 43(f64vec2) CompositeExtract 792 0 + 795: 43(f64vec2) FMul 793 794 + 796: 43(f64vec2) CompositeExtract 791 1 + 797: 43(f64vec2) CompositeExtract 792 1 + 798: 43(f64vec2) FMul 796 797 + 799: 737 CompositeConstruct 795 798 + 800: 737 Load 739(dmat2v) + 801: 737 MatrixTimesMatrix 800 799 + Store 739(dmat2v) 801 + 802: 743 Load 745(dmat3v) + 803: 743 Load 745(dmat3v) + 804: 48(f64vec3) CompositeExtract 802 0 + 805: 48(f64vec3) CompositeExtract 803 0 + 806: 48(f64vec3) FMul 804 805 + 807: 48(f64vec3) CompositeExtract 802 1 + 808: 48(f64vec3) CompositeExtract 803 1 + 809: 48(f64vec3) FMul 807 808 + 810: 48(f64vec3) CompositeExtract 802 2 + 811: 48(f64vec3) CompositeExtract 803 2 + 812: 48(f64vec3) FMul 810 811 + 813: 743 CompositeConstruct 806 809 812 + 814: 743 Load 745(dmat3v) + 815: 743 MatrixTimesMatrix 814 813 + Store 745(dmat3v) 815 + 816: 749 Load 751(dmat4v) + 817: 749 Load 751(dmat4v) + 818: 53(f64vec4) CompositeExtract 816 0 + 819: 53(f64vec4) CompositeExtract 817 0 + 820: 53(f64vec4) FMul 818 819 + 821: 53(f64vec4) CompositeExtract 816 1 + 822: 53(f64vec4) CompositeExtract 817 1 + 823: 53(f64vec4) FMul 821 822 + 824: 53(f64vec4) CompositeExtract 816 2 + 825: 53(f64vec4) CompositeExtract 817 2 + 826: 53(f64vec4) FMul 824 825 + 827: 53(f64vec4) CompositeExtract 816 3 + 828: 53(f64vec4) CompositeExtract 817 3 + 829: 53(f64vec4) FMul 827 828 + 830: 749 CompositeConstruct 820 823 826 829 + 831: 749 Load 751(dmat4v) + 832: 749 MatrixTimesMatrix 831 830 + Store 751(dmat4v) 832 + 833: 755 Load 757(dmat2x3v) + 834: 755 Load 757(dmat2x3v) + 835: 48(f64vec3) CompositeExtract 833 0 + 836: 48(f64vec3) CompositeExtract 834 0 + 837: 48(f64vec3) FMul 835 836 + 838: 48(f64vec3) CompositeExtract 833 1 + 839: 48(f64vec3) CompositeExtract 834 1 + 840: 48(f64vec3) FMul 838 839 + 841: 755 CompositeConstruct 837 840 + Store 757(dmat2x3v) 841 + 842: 767 Load 769(dmat2x4v) + 843: 767 Load 769(dmat2x4v) + 844: 53(f64vec4) CompositeExtract 842 0 + 845: 53(f64vec4) CompositeExtract 843 0 + 846: 53(f64vec4) FMul 844 845 + 847: 53(f64vec4) CompositeExtract 842 1 + 848: 53(f64vec4) CompositeExtract 843 1 + 849: 53(f64vec4) FMul 847 848 + 850: 767 CompositeConstruct 846 849 + Store 769(dmat2x4v) 850 + 851: 761 Load 763(dmat3x2v) + 852: 761 Load 763(dmat3x2v) + 853: 43(f64vec2) CompositeExtract 851 0 + 854: 43(f64vec2) CompositeExtract 852 0 + 855: 43(f64vec2) FMul 853 854 + 856: 43(f64vec2) CompositeExtract 851 1 + 857: 43(f64vec2) CompositeExtract 852 1 + 858: 43(f64vec2) FMul 856 857 + 859: 43(f64vec2) CompositeExtract 851 2 + 860: 43(f64vec2) CompositeExtract 852 2 + 861: 43(f64vec2) FMul 859 860 + 862: 761 CompositeConstruct 855 858 861 + Store 763(dmat3x2v) 862 + 863: 779 Load 781(dmat3x4v) + 864: 779 Load 781(dmat3x4v) + 865: 53(f64vec4) CompositeExtract 863 0 + 866: 53(f64vec4) CompositeExtract 864 0 + 867: 53(f64vec4) FMul 865 866 + 868: 53(f64vec4) CompositeExtract 863 1 + 869: 53(f64vec4) CompositeExtract 864 1 + 870: 53(f64vec4) FMul 868 869 + 871: 53(f64vec4) CompositeExtract 863 2 + 872: 53(f64vec4) CompositeExtract 864 2 + 873: 53(f64vec4) FMul 871 872 + 874: 779 CompositeConstruct 867 870 873 + Store 781(dmat3x4v) 874 + 875: 773 Load 775(dmat4x2v) + 876: 773 Load 775(dmat4x2v) + 877: 43(f64vec2) CompositeExtract 875 0 + 878: 43(f64vec2) CompositeExtract 876 0 + 879: 43(f64vec2) FMul 877 878 + 880: 43(f64vec2) CompositeExtract 875 1 + 881: 43(f64vec2) CompositeExtract 876 1 + 882: 43(f64vec2) FMul 880 881 + 883: 43(f64vec2) CompositeExtract 875 2 + 884: 43(f64vec2) CompositeExtract 876 2 + 885: 43(f64vec2) FMul 883 884 + 886: 43(f64vec2) CompositeExtract 875 3 + 887: 43(f64vec2) CompositeExtract 876 3 + 888: 43(f64vec2) FMul 886 887 + 889: 773 CompositeConstruct 879 882 885 888 + Store 775(dmat4x2v) 889 + 890: 785 Load 787(dmat4x3v) + 891: 785 Load 787(dmat4x3v) + 892: 48(f64vec3) CompositeExtract 890 0 + 893: 48(f64vec3) CompositeExtract 891 0 + 894: 48(f64vec3) FMul 892 893 + 895: 48(f64vec3) CompositeExtract 890 1 + 896: 48(f64vec3) CompositeExtract 891 1 + 897: 48(f64vec3) FMul 895 896 + 898: 48(f64vec3) CompositeExtract 890 2 + 899: 48(f64vec3) CompositeExtract 891 2 + 900: 48(f64vec3) FMul 898 899 + 901: 48(f64vec3) CompositeExtract 890 3 + 902: 48(f64vec3) CompositeExtract 891 3 + 903: 48(f64vec3) FMul 901 902 + 904: 785 CompositeConstruct 894 897 900 903 + Store 787(dmat4x3v) 904 + 905: 737 Load 739(dmat2v) + 906: 737 Transpose 905 + 907: 737 Load 739(dmat2v) + 908: 737 MatrixTimesMatrix 907 906 + Store 739(dmat2v) 908 + 909: 743 Load 745(dmat3v) + 910: 743 Transpose 909 + 911: 743 Load 745(dmat3v) + 912: 743 MatrixTimesMatrix 911 910 + Store 745(dmat3v) 912 + 913: 749 Load 751(dmat4v) + 914: 749 Transpose 913 + 915: 749 Load 751(dmat4v) + 916: 749 MatrixTimesMatrix 915 914 + Store 751(dmat4v) 916 + 917: 761 Load 763(dmat3x2v) + 918: 755 Transpose 917 + Store 757(dmat2x3v) 918 + 919: 755 Load 757(dmat2x3v) + 920: 761 Transpose 919 + Store 763(dmat3x2v) 920 + 921: 773 Load 775(dmat4x2v) + 922: 767 Transpose 921 + Store 769(dmat2x4v) 922 + 923: 767 Load 769(dmat2x4v) + 924: 773 Transpose 923 + Store 775(dmat4x2v) 924 + 925: 785 Load 787(dmat4x3v) + 926: 779 Transpose 925 + Store 781(dmat3x4v) 926 + 927: 779 Load 781(dmat3x4v) + 928: 785 Transpose 927 + Store 787(dmat4x3v) 928 + 929: 737 Load 739(dmat2v) + 930:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 929 + 931:39(float64_t) Load 41(doublev) + 932:39(float64_t) FAdd 931 930 + Store 41(doublev) 932 + 933: 743 Load 745(dmat3v) + 934:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 933 + 935:39(float64_t) Load 41(doublev) + 936:39(float64_t) FAdd 935 934 + Store 41(doublev) 936 + 937: 749 Load 751(dmat4v) + 938:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 937 + 939:39(float64_t) Load 41(doublev) + 940:39(float64_t) FAdd 939 938 + Store 41(doublev) 940 + 941: 737 Load 739(dmat2v) + 942: 737 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 941 + 943: 737 Load 739(dmat2v) + 944: 737 MatrixTimesMatrix 943 942 + Store 739(dmat2v) 944 + 945: 743 Load 745(dmat3v) + 946: 743 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 945 + 947: 743 Load 745(dmat3v) + 948: 743 MatrixTimesMatrix 947 946 + Store 745(dmat3v) 948 + 949: 749 Load 751(dmat4v) + 950: 749 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 949 + 951: 749 Load 751(dmat4v) + 952: 749 MatrixTimesMatrix 951 950 + Store 751(dmat4v) 952 + 953:39(float64_t) Load 41(doublev) + 955: 40(ptr) AccessChain 45(dvec2v) 954 + 956:39(float64_t) Load 955 + 957:39(float64_t) FAdd 953 956 + 959: 40(ptr) AccessChain 50(dvec3v) 958 + 960:39(float64_t) Load 959 + 961:39(float64_t) FAdd 957 960 + 963: 40(ptr) AccessChain 55(dvec4v) 962 + 964:39(float64_t) Load 963 + 965:39(float64_t) FAdd 961 964 + 967: 40(ptr) AccessChain 739(dmat2v) 966 954 + 968:39(float64_t) Load 967 + 969:39(float64_t) FAdd 965 968 + 971: 40(ptr) AccessChain 745(dmat3v) 970 958 + 972:39(float64_t) Load 971 + 973:39(float64_t) FAdd 969 972 + 974: 40(ptr) AccessChain 751(dmat4v) 25 962 + 975:39(float64_t) Load 974 + 976:39(float64_t) FAdd 973 975 + 977: 40(ptr) AccessChain 757(dmat2x3v) 966 954 + 978:39(float64_t) Load 977 + 979:39(float64_t) FAdd 976 978 + 980: 40(ptr) AccessChain 763(dmat3x2v) 966 954 + 981:39(float64_t) Load 980 + 982:39(float64_t) FAdd 979 981 + 983: 40(ptr) AccessChain 781(dmat3x4v) 970 958 + 984:39(float64_t) Load 983 + 985:39(float64_t) FAdd 982 984 + 986: 40(ptr) AccessChain 787(dmat4x3v) 970 958 + 987:39(float64_t) Load 986 + 988:39(float64_t) FAdd 985 987 + 989: 40(ptr) AccessChain 769(dmat2x4v) 966 954 + 990:39(float64_t) Load 989 + 991:39(float64_t) FAdd 988 990 + 992: 40(ptr) AccessChain 775(dmat4x2v) 966 954 + 993:39(float64_t) Load 992 + 994:39(float64_t) FAdd 991 993 + 995: 428(bool) Load 430(boolv) + 997: 10(float) Select 995 996 21 + 998:39(float64_t) FConvert 997 + 999:39(float64_t) FAdd 994 998 + 1000: 429(ptr) AccessChain 439(bvec2v) 33 + 1001: 428(bool) Load 1000 + 1002: 10(float) Select 1001 996 21 + 1003:39(float64_t) FConvert 1002 + 1004:39(float64_t) FAdd 999 1003 + 1005: 429(ptr) AccessChain 448(bvec3v) 33 + 1006: 428(bool) Load 1005 + 1007: 10(float) Select 1006 996 21 + 1008:39(float64_t) FConvert 1007 + 1009:39(float64_t) FAdd 1004 1008 + 1010: 429(ptr) AccessChain 457(bvec4v) 33 + 1011: 428(bool) Load 1010 + 1012: 10(float) Select 1011 996 21 + 1013:39(float64_t) FConvert 1012 + 1014:39(float64_t) FAdd 1009 1013 + 1015: 10(float) FConvert 1014 + 1016: 11(fvec4) Load 13(outp) + 1017: 11(fvec4) VectorTimesScalar 1016 1015 + Store 13(outp) 1017 + Return + FunctionEnd diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out index c0cecfad..47e854f2 100644 --- a/Test/baseResults/spv.8bitstorage-int.frag.out +++ b/Test/baseResults/spv.8bitstorage-int.frag.out @@ -1,7 +1,7 @@ spv.8bitstorage-int.frag // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 172 +// Id's are bound by 171 Capability Shader Capability UniformAndStorageBuffer8BitAccess @@ -208,10 +208,7 @@ spv.8bitstorage-int.frag 114: 20(int) Constant 7 115: 20(int) Constant 6 116: TypePointer Uniform 20(int) - 166: 6(int8_t) Constant 1 - 167: 6(int8_t) Constant 2 - 168: 7(i8vec2) ConstantComposite 166 167 - 170: 6(int8_t) Constant 3 + 166: 39(ivec2) ConstantComposite 32 33 4(main): 2 Function None 3 5: Label 69(x0): 68(ptr) Variable Function @@ -331,9 +328,11 @@ spv.8bitstorage-int.frag 164: 6(int8_t) Load 163 165: 28(ptr) AccessChain 19(b2) 21 Store 165 164 - 169: 42(ptr) AccessChain 19(b2) 32 - Store 169 168 - 171: 28(ptr) AccessChain 19(b2) 21 - Store 171 170 + 167: 7(i8vec2) SConvert 166 + 168: 42(ptr) AccessChain 19(b2) 32 + Store 168 167 + 169: 6(int8_t) SConvert 58 + 170: 28(ptr) AccessChain 19(b2) 21 + Store 170 169 Return FunctionEnd diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out index e89627bd..a66c6a3b 100644 --- a/Test/baseResults/spv.8bitstorage-uint.frag.out +++ b/Test/baseResults/spv.8bitstorage-uint.frag.out @@ -209,10 +209,8 @@ spv.8bitstorage-uint.frag 115: 20(int) Constant 7 116: 20(int) Constant 6 117: TypePointer Uniform 9(int) - 167: 6(int8_t) Constant 1 - 168: 6(int8_t) Constant 2 - 169: 7(i8vec2) ConstantComposite 167 168 - 171: 6(int8_t) Constant 3 + 167: 39(ivec2) ConstantComposite 82 10 + 170: 9(int) Constant 3 4(main): 2 Function None 3 5: Label 69(x0): 68(ptr) Variable Function @@ -332,8 +330,10 @@ spv.8bitstorage-uint.frag 165: 6(int8_t) Load 164 166: 28(ptr) AccessChain 19(b2) 21 Store 166 165 - 170: 42(ptr) AccessChain 19(b2) 32 - Store 170 169 + 168: 7(i8vec2) UConvert 167 + 169: 42(ptr) AccessChain 19(b2) 32 + Store 169 168 + 171: 6(int8_t) UConvert 170 172: 28(ptr) AccessChain 19(b2) 21 Store 172 171 Return diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out index 7e7a7bd6..3469715b 100644 --- a/Test/baseResults/spv.bufferhandle11.frag.out +++ b/Test/baseResults/spv.bufferhandle11.frag.out @@ -4,7 +4,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 60 +// Id's are bound by 61 Capability Shader Capability StorageBuffer8BitAccess @@ -68,7 +68,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to 50: 49(ptr) Variable StorageBuffer 51: TypePointer StorageBuffer 6(int) 54: 31(int) Constant 1 - 58: 27(int8_t) Constant 9 + 58: 6(int) Constant 9 4(main): 2 Function None 3 5: Label 20(allOk): 19(ptr) Variable Function @@ -103,8 +103,9 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to 47: Label 56: 33(ptr) AccessChain 30 32 57: 25(ptr) Load 56 - 59: 36(ptr) AccessChain 57 32 - Store 59 58 Aligned 16 + 59: 27(int8_t) UConvert 58 + 60: 36(ptr) AccessChain 57 32 + Store 60 59 Aligned 16 Return FunctionEnd 12(compare_uint8_t(u1;u1;): 8(bool) Function None 9 diff --git a/Test/baseResults/spv.conditionalDemote.frag.out b/Test/baseResults/spv.conditionalDemote.frag.out new file mode 100644 index 00000000..10f2c23e --- /dev/null +++ b/Test/baseResults/spv.conditionalDemote.frag.out @@ -0,0 +1,69 @@ +spv.conditionalDemote.frag +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 38 + + Capability Shader + Capability DemoteToHelperInvocationEXT + Extension "SPV_EXT_demote_to_helper_invocation" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 17 36 + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_EXT_demote_to_helper_invocation" + Name 4 "main" + Name 9 "v" + Name 13 "tex" + Name 17 "coord" + Name 33 "x" + Name 36 "o" + Decorate 13(tex) DescriptorSet 0 + Decorate 13(tex) Binding 0 + Decorate 17(coord) Location 0 + Decorate 36(o) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypeSampledImage 10 + 12: TypePointer UniformConstant 11 + 13(tex): 12(ptr) Variable UniformConstant + 15: TypeVector 6(float) 2 + 16: TypePointer Input 15(fvec2) + 17(coord): 16(ptr) Variable Input + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 6(float) Constant 1050253722 + 24: 6(float) Constant 1053609165 + 25: 7(fvec4) ConstantComposite 21 22 23 24 + 26: TypeBool + 27: TypeVector 26(bool) 4 + 32: TypePointer Function 26(bool) + 35: TypePointer Output 7(fvec4) + 36(o): 35(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 9(v): 8(ptr) Variable Function + 33(x): 32(ptr) Variable Function + 14: 11 Load 13(tex) + 18: 15(fvec2) Load 17(coord) + 19: 7(fvec4) ImageSampleImplicitLod 14 18 + Store 9(v) 19 + 20: 7(fvec4) Load 9(v) + 28: 27(bvec4) FOrdEqual 20 25 + 29: 26(bool) All 28 + SelectionMerge 31 None + BranchConditional 29 30 31 + 30: Label + DemoteToHelperInvocationEXT + Branch 31 + 31: Label + 34: 26(bool) IsHelperInvocationEXT + Store 33(x) 34 + 37: 7(fvec4) Load 9(v) + Store 36(o) 37 + Return + FunctionEnd diff --git a/Test/baseResults/spv.constConstruct.vert.out b/Test/baseResults/spv.constConstruct.vert.out new file mode 100644 index 00000000..5922b34a --- /dev/null +++ b/Test/baseResults/spv.constConstruct.vert.out @@ -0,0 +1,171 @@ +spv.constConstruct.vert +Validation failed +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 150 + + Capability Shader + Capability Float64 + Capability Int64 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float32" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + Name 4 "main" + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 16 + 7:6(float16_t) Constant 15360 + 8:6(float16_t) Constant 16384 + 9:6(float16_t) Constant 16896 + 10:6(float16_t) Constant 17408 + 11:6(float16_t) Constant 17664 + 12:6(float16_t) Constant 17920 + 13:6(float16_t) Constant 18176 + 14:6(float16_t) Constant 18432 + 15:6(float16_t) Constant 18560 + 16:6(float16_t) Constant 18688 + 17:6(float16_t) Constant 18816 + 18: TypeFloat 32 + 19: 18(float) Constant 1099431936 + 20: 18(float) Constant 1099956224 + 21: 18(float) Constant 1100480512 + 22: 18(float) Constant 1101004800 + 23: 18(float) Constant 1101529088 + 24: 18(float) Constant 1102053376 + 25: 18(float) Constant 1102577664 + 26: 18(float) Constant 1103101952 + 27: 18(float) Constant 1103626240 + 28: 18(float) Constant 1104150528 + 29: 18(float) Constant 1104674816 + 30: 18(float) Constant 1065353216 + 31: TypeFloat 64 + 32:31(float64_t) Constant 0 1077968896 + 33:31(float64_t) Constant 0 1078001664 + 34:31(float64_t) Constant 0 1078034432 + 35:31(float64_t) Constant 0 1078067200 + 36:31(float64_t) Constant 0 1078099968 + 37:31(float64_t) Constant 0 1078132736 + 38:31(float64_t) Constant 0 1078165504 + 39:31(float64_t) Constant 0 1078198272 + 40:31(float64_t) Constant 0 1078231040 + 41:31(float64_t) Constant 0 1078263808 + 42:31(float64_t) Constant 0 1078296576 + 43:31(float64_t) Constant 0 1072693248 + 44: TypeInt 8 1 + 45: 44(int8_t) Constant 49 + 46: 44(int8_t) Constant 50 + 47: 44(int8_t) Constant 51 + 48: 44(int8_t) Constant 52 + 49: 44(int8_t) Constant 53 + 50: 44(int8_t) Constant 54 + 51: 44(int8_t) Constant 55 + 52: 44(int8_t) Constant 56 + 53: 44(int8_t) Constant 57 + 54: 44(int8_t) Constant 58 + 55: 44(int8_t) Constant 59 + 56: 44(int8_t) Constant 1 + 57: TypeInt 16 1 + 58: 57(int16_t) Constant 65 + 59: 57(int16_t) Constant 66 + 60: 57(int16_t) Constant 67 + 61: 57(int16_t) Constant 68 + 62: 57(int16_t) Constant 69 + 63: 57(int16_t) Constant 70 + 64: 57(int16_t) Constant 71 + 65: 57(int16_t) Constant 72 + 66: 57(int16_t) Constant 73 + 67: 57(int16_t) Constant 74 + 68: 57(int16_t) Constant 75 + 69: 57(int16_t) Constant 1 + 70: TypeInt 32 1 + 71: 70(int) Constant 81 + 72: 70(int) Constant 82 + 73: 70(int) Constant 83 + 74: 70(int) Constant 84 + 75: 70(int) Constant 85 + 76: 70(int) Constant 86 + 77: 70(int) Constant 87 + 78: 70(int) Constant 88 + 79: 70(int) Constant 89 + 80: 70(int) Constant 90 + 81: 70(int) Constant 91 + 82: 70(int) Constant 1 + 83: TypeInt 64 1 + 84: 83(int64_t) Constant 97 0 + 85: 83(int64_t) Constant 98 0 + 86: 83(int64_t) Constant 99 0 + 87: 83(int64_t) Constant 100 0 + 88: 83(int64_t) Constant 101 0 + 89: 83(int64_t) Constant 102 0 + 90: 83(int64_t) Constant 103 0 + 91: 83(int64_t) Constant 104 0 + 92: 83(int64_t) Constant 105 0 + 93: 83(int64_t) Constant 106 0 + 94: 83(int64_t) Constant 107 0 + 95: 83(int64_t) Constant 1 0 + 96: TypeInt 8 0 + 97: 96(int8_t) Constant 113 + 98: 96(int8_t) Constant 114 + 99: 96(int8_t) Constant 115 + 100: 96(int8_t) Constant 116 + 101: 96(int8_t) Constant 117 + 102: 96(int8_t) Constant 118 + 103: 96(int8_t) Constant 119 + 104: 96(int8_t) Constant 120 + 105: 96(int8_t) Constant 121 + 106: 96(int8_t) Constant 122 + 107: 96(int8_t) Constant 123 + 108: 96(int8_t) Constant 1 + 109: TypeInt 16 0 + 110:109(int16_t) Constant 129 + 111:109(int16_t) Constant 130 + 112:109(int16_t) Constant 131 + 113:109(int16_t) Constant 65412 + 114:109(int16_t) Constant 133 + 115:109(int16_t) Constant 134 + 116:109(int16_t) Constant 135 + 117:109(int16_t) Constant 136 + 118:109(int16_t) Constant 137 + 119:109(int16_t) Constant 138 + 120:109(int16_t) Constant 139 + 121:109(int16_t) Constant 1 + 122: TypeInt 32 0 + 123: 122(int) Constant 145 + 124: 122(int) Constant 146 + 125: 122(int) Constant 147 + 126: 122(int) Constant 4294967188 + 127: 122(int) Constant 149 + 128: 122(int) Constant 150 + 129: 122(int) Constant 151 + 130: 122(int) Constant 152 + 131: 122(int) Constant 153 + 132: 122(int) Constant 154 + 133: 122(int) Constant 155 + 134: 122(int) Constant 1 + 135: TypeInt 64 0 + 136:135(int64_t) Constant 161 0 + 137:135(int64_t) Constant 162 0 + 138:135(int64_t) Constant 163 0 + 139:135(int64_t) Constant 4294967204 4294967295 + 140:135(int64_t) Constant 165 0 + 141:135(int64_t) Constant 166 0 + 142:135(int64_t) Constant 167 0 + 143:135(int64_t) Constant 168 0 + 144:135(int64_t) Constant 169 0 + 145:135(int64_t) Constant 170 0 + 146:135(int64_t) Constant 171 0 + 147:135(int64_t) Constant 1 0 + 148: TypeBool + 149: 148(bool) ConstantTrue + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.demoteDisabled.frag.out b/Test/baseResults/spv.demoteDisabled.frag.out new file mode 100644 index 00000000..382fa56d --- /dev/null +++ b/Test/baseResults/spv.demoteDisabled.frag.out @@ -0,0 +1,6 @@ +spv.demoteDisabled.frag +ERROR: 0:9: 'demote' : undeclared identifier +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.functionParameterTypes.frag.out b/Test/baseResults/spv.functionParameterTypes.frag.out new file mode 100644 index 00000000..24e780e2 --- /dev/null +++ b/Test/baseResults/spv.functionParameterTypes.frag.out @@ -0,0 +1,62 @@ +spv.functionParameterTypes.frag +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 34 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + Name 4 "main" + Name 29 "f(i81;u81;i161;u161;i641;u641;f161;" + Name 22 "i8" + Name 23 "u8" + Name 24 "i16" + Name 25 "u16" + Name 26 "i64" + Name 27 "u64" + Name 28 "f16" + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 8 1 + 7: TypePointer Function 6(int8_t) + 8: TypeInt 8 0 + 9: TypePointer Function 8(int8_t) + 10: TypeInt 16 1 + 11: TypePointer Function 10(int16_t) + 12: TypeInt 16 0 + 13: TypePointer Function 12(int16_t) + 14: TypeInt 64 1 + 15: TypePointer Function 14(int64_t) + 16: TypeInt 64 0 + 17: TypePointer Function 16(int64_t) + 18: TypeFloat 16 + 19: TypePointer Function 18(float16_t) + 20: TypeInt 32 1 + 21: TypeFunction 20(int) 7(ptr) 9(ptr) 11(ptr) 13(ptr) 15(ptr) 17(ptr) 19(ptr) + 31: 20(int) Constant 0 + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd +29(f(i81;u81;i161;u161;i641;u641;f161;): 20(int) Function None 21 + 22(i8): 7(ptr) FunctionParameter + 23(u8): 9(ptr) FunctionParameter + 24(i16): 11(ptr) FunctionParameter + 25(u16): 13(ptr) FunctionParameter + 26(i64): 15(ptr) FunctionParameter + 27(u64): 17(ptr) FunctionParameter + 28(f16): 19(ptr) FunctionParameter + 30: Label + ReturnValue 31 + FunctionEnd diff --git a/Test/baseResults/spv.memoryScopeSemantics.comp.out b/Test/baseResults/spv.memoryScopeSemantics.comp.out index 9361e76e..8c4e5763 100644 --- a/Test/baseResults/spv.memoryScopeSemantics.comp.out +++ b/Test/baseResults/spv.memoryScopeSemantics.comp.out @@ -1,7 +1,7 @@ spv.memoryScopeSemantics.comp // Module Version 10300 // Generated by (magic number): 80007 -// Id's are bound by 148 +// Id's are bound by 163 Capability Shader Capability Int64 @@ -23,59 +23,66 @@ spv.memoryScopeSemantics.comp Name 23 "atomu" Name 24 "value" Name 36 "imagei" - Name 45 "imageu" - Name 65 "BufferU" - MemberName 65(BufferU) 0 "x" - Name 67 "bufferu" - Name 72 "y" - Name 77 "BufferI" - MemberName 77(BufferI) 0 "x" - Name 79 "bufferi" - Name 83 "A" - MemberName 83(A) 0 "x" - Name 84 "BufferJ" - MemberName 84(BufferJ) 0 "a" - Name 87 "bufferj" - Name 98 "BufferK" - MemberName 98(BufferK) 0 "x" - Name 100 "bufferk" - Name 110 "imagej" - Name 122 "samp" - Name 133 "atomu64" - Name 138 "atomi64" - Name 143 "BufferL" - MemberName 143(BufferL) 0 "x" - Name 145 "bufferl" + Name 46 "imageu" + Name 66 "BufferU" + MemberName 66(BufferU) 0 "x" + Name 68 "bufferu" + Name 73 "y" + Name 78 "BufferI" + MemberName 78(BufferI) 0 "x" + Name 80 "bufferi" + Name 84 "A" + MemberName 84(A) 0 "x" + Name 85 "BufferJ" + MemberName 85(BufferJ) 0 "a" + Name 88 "bufferj" + Name 99 "BufferK" + MemberName 99(BufferK) 0 "x" + Name 101 "bufferk" + Name 111 "imagej" + Name 123 "samp" + Name 134 "atomu64" + Name 139 "atomi64" + Name 144 "BufferL" + MemberName 144(BufferL) 0 "x" + Name 146 "bufferl" + Name 151 "BufferM" + MemberName 151(BufferM) 0 "x" + Name 153 "bufferm" Decorate 36(imagei) DescriptorSet 0 Decorate 36(imagei) Binding 1 - Decorate 45(imageu) DescriptorSet 0 - Decorate 45(imageu) Binding 0 - MemberDecorate 65(BufferU) 0 Offset 0 - Decorate 65(BufferU) Block - Decorate 67(bufferu) DescriptorSet 0 - Decorate 67(bufferu) Binding 2 - MemberDecorate 77(BufferI) 0 Offset 0 - Decorate 77(BufferI) Block - Decorate 79(bufferi) DescriptorSet 0 - Decorate 79(bufferi) Binding 3 - Decorate 82 ArrayStride 4 - MemberDecorate 83(A) 0 Offset 0 - MemberDecorate 84(BufferJ) 0 Offset 0 - Decorate 84(BufferJ) Block - Decorate 87(bufferj) DescriptorSet 0 - Decorate 87(bufferj) Binding 4 - MemberDecorate 98(BufferK) 0 Offset 0 - Decorate 98(BufferK) Block - Decorate 100(bufferk) DescriptorSet 0 - Decorate 100(bufferk) Binding 7 - Decorate 110(imagej) DescriptorSet 0 - Decorate 110(imagej) Binding 5 - Decorate 122(samp) DescriptorSet 0 - Decorate 122(samp) Binding 6 - MemberDecorate 143(BufferL) 0 Offset 0 - Decorate 143(BufferL) Block - Decorate 145(bufferl) DescriptorSet 0 - Decorate 145(bufferl) Binding 8 + Decorate 46(imageu) DescriptorSet 0 + Decorate 46(imageu) Binding 0 + MemberDecorate 66(BufferU) 0 Offset 0 + Decorate 66(BufferU) Block + Decorate 68(bufferu) DescriptorSet 0 + Decorate 68(bufferu) Binding 2 + MemberDecorate 78(BufferI) 0 Offset 0 + Decorate 78(BufferI) Block + Decorate 80(bufferi) DescriptorSet 0 + Decorate 80(bufferi) Binding 3 + Decorate 83 ArrayStride 4 + MemberDecorate 84(A) 0 Offset 0 + MemberDecorate 85(BufferJ) 0 Offset 0 + Decorate 85(BufferJ) Block + Decorate 88(bufferj) DescriptorSet 0 + Decorate 88(bufferj) Binding 4 + MemberDecorate 99(BufferK) 0 Offset 0 + Decorate 99(BufferK) Block + Decorate 101(bufferk) DescriptorSet 0 + Decorate 101(bufferk) Binding 7 + Decorate 111(imagej) DescriptorSet 0 + Decorate 111(imagej) Binding 5 + Decorate 123(samp) DescriptorSet 0 + Decorate 123(samp) Binding 6 + MemberDecorate 144(BufferL) 0 Offset 0 + Decorate 144(BufferL) Block + Decorate 146(bufferl) DescriptorSet 0 + Decorate 146(bufferl) Binding 8 + MemberDecorate 151(BufferM) 0 Offset 0 + Decorate 151(BufferM) Block + Decorate 153(bufferm) DescriptorSet 0 + Decorate 153(bufferm) Binding 9 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -106,67 +113,72 @@ spv.memoryScopeSemantics.comp 38: 6(int) Constant 0 39: 37(ivec2) ConstantComposite 38 38 40: TypePointer Image 6(int) - 43: TypeImage 15(int) 2D nonsampled format:R32ui - 44: TypePointer UniformConstant 43 - 45(imageu): 44(ptr) Variable UniformConstant - 46: 15(int) Constant 3 - 47: TypePointer Image 15(int) - 50: 15(int) Constant 4 - 52: 15(int) Constant 7 - 57: 6(int) Constant 7 - 61: 15(int) Constant 10 - 63: 15(int) Constant 322 - 65(BufferU): TypeStruct 15(int) - 66: TypePointer StorageBuffer 65(BufferU) - 67(bufferu): 66(ptr) Variable StorageBuffer - 68: TypePointer StorageBuffer 15(int) - 70: 15(int) Constant 1 - 77(BufferI): TypeStruct 15(int) - 78: TypePointer StorageBuffer 77(BufferI) - 79(bufferi): 78(ptr) Variable StorageBuffer - 82: TypeArray 15(int) 26 - 83(A): TypeStruct 82 - 84(BufferJ): TypeStruct 83(A) - 85: TypeArray 84(BufferJ) 26 - 86: TypePointer StorageBuffer 85 - 87(bufferj): 86(ptr) Variable StorageBuffer - 94: TypePointer StorageBuffer 83(A) - 98(BufferK): TypeStruct 15(int) - 99: TypePointer Uniform 98(BufferK) - 100(bufferk): 99(ptr) Variable Uniform - 101: TypePointer Uniform 15(int) - 106: TypeVector 6(int) 4 - 108: TypeArray 34 26 - 109: TypePointer UniformConstant 108 - 110(imagej): 109(ptr) Variable UniformConstant - 116: 106(ivec4) ConstantComposite 38 38 38 38 - 117: TypeFloat 32 - 118: TypeImage 117(float) 2D sampled format:Unknown - 119: TypeSampledImage 118 - 120: TypeArray 119 26 - 121: TypePointer UniformConstant 120 - 122(samp): 121(ptr) Variable UniformConstant - 123: TypePointer UniformConstant 119 - 126: TypeVector 117(float) 2 - 127: 117(float) Constant 0 - 128: 126(fvec2) ConstantComposite 127 127 - 129: TypeVector 117(float) 4 - 131: TypeInt 64 0 - 132: TypePointer Workgroup 131(int64_t) - 133(atomu64): 132(ptr) Variable Workgroup - 134:131(int64_t) Constant 7 0 - 136: TypeInt 64 1 - 137: TypePointer Workgroup 136(int64_t) - 138(atomi64): 137(ptr) Variable Workgroup - 139:136(int64_t) Constant 10 0 - 143(BufferL): TypeStruct 15(int) - 144: TypePointer StorageBuffer 143(BufferL) - 145(bufferl): 144(ptr) Variable StorageBuffer + 42: 15(int) Constant 32768 + 44: TypeImage 15(int) 2D nonsampled format:R32ui + 45: TypePointer UniformConstant 44 + 46(imageu): 45(ptr) Variable UniformConstant + 47: 15(int) Constant 3 + 48: TypePointer Image 15(int) + 51: 15(int) Constant 4 + 53: 15(int) Constant 7 + 58: 6(int) Constant 7 + 62: 15(int) Constant 10 + 64: 15(int) Constant 322 + 66(BufferU): TypeStruct 15(int) + 67: TypePointer StorageBuffer 66(BufferU) + 68(bufferu): 67(ptr) Variable StorageBuffer + 69: TypePointer StorageBuffer 15(int) + 71: 15(int) Constant 1 + 78(BufferI): TypeStruct 15(int) + 79: TypePointer StorageBuffer 78(BufferI) + 80(bufferi): 79(ptr) Variable StorageBuffer + 83: TypeArray 15(int) 26 + 84(A): TypeStruct 83 + 85(BufferJ): TypeStruct 84(A) + 86: TypeArray 85(BufferJ) 26 + 87: TypePointer StorageBuffer 86 + 88(bufferj): 87(ptr) Variable StorageBuffer + 95: TypePointer StorageBuffer 84(A) + 99(BufferK): TypeStruct 15(int) + 100: TypePointer Uniform 99(BufferK) + 101(bufferk): 100(ptr) Variable Uniform + 102: TypePointer Uniform 15(int) + 107: TypeVector 6(int) 4 + 109: TypeArray 34 26 + 110: TypePointer UniformConstant 109 + 111(imagej): 110(ptr) Variable UniformConstant + 117: 107(ivec4) ConstantComposite 38 38 38 38 + 118: TypeFloat 32 + 119: TypeImage 118(float) 2D sampled format:Unknown + 120: TypeSampledImage 119 + 121: TypeArray 120 26 + 122: TypePointer UniformConstant 121 + 123(samp): 122(ptr) Variable UniformConstant + 124: TypePointer UniformConstant 120 + 127: TypeVector 118(float) 2 + 128: 118(float) Constant 0 + 129: 127(fvec2) ConstantComposite 128 128 + 130: TypeVector 118(float) 4 + 132: TypeInt 64 0 + 133: TypePointer Workgroup 132(int64_t) + 134(atomu64): 133(ptr) Variable Workgroup + 135:132(int64_t) Constant 7 0 + 137: TypeInt 64 1 + 138: TypePointer Workgroup 137(int64_t) + 139(atomi64): 138(ptr) Variable Workgroup + 140:137(int64_t) Constant 10 0 + 144(BufferL): TypeStruct 15(int) + 145: TypePointer StorageBuffer 144(BufferL) + 146(bufferl): 145(ptr) Variable StorageBuffer + 151(BufferM): TypeStruct 15(int) + 152: TypePointer StorageBuffer 151(BufferM) + 153(bufferm): 152(ptr) Variable StorageBuffer + 161: 6(int) Constant 32768 4(main): 2 Function None 3 5: Label 8(origi): 7(ptr) Variable Function 21(origu): 20(ptr) Variable Function - 72(y): 20(ptr) Variable Function + 73(y): 20(ptr) Variable Function 19: 6(int) AtomicIAdd 10(atomi) 12 18 11 Store 8(origi) 19 25: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 @@ -177,77 +189,87 @@ spv.memoryScopeSemantics.comp 32: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 AtomicStore 23(atomu) 12 33 32 41: 40(ptr) ImageTexelPointer 36(imagei) 39 17 - 42: 6(int) AtomicLoad 41 12 30 - Store 8(origi) 42 - 48: 47(ptr) ImageTexelPointer 45(imageu) 39 17 - 49: 15(int) AtomicIAdd 48 12 30 46 - Store 21(origu) 49 - 51: 47(ptr) ImageTexelPointer 45(imageu) 39 17 - AtomicStore 51 12 33 50 - 53: 15(int) AtomicOr 23(atomu) 12 17 52 - Store 21(origu) 53 - 54: 15(int) AtomicXor 23(atomu) 12 17 52 + 43: 6(int) AtomicLoad 41 12 30 + Store 8(origi) 43 + 49: 48(ptr) ImageTexelPointer 46(imageu) 39 17 + 50: 15(int) AtomicIAdd 49 12 30 47 + Store 21(origu) 50 + 52: 48(ptr) ImageTexelPointer 46(imageu) 39 17 + AtomicStore 52 12 33 51 + 54: 15(int) AtomicOr 23(atomu) 12 17 53 Store 21(origu) 54 - 55: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 - 56: 15(int) AtomicUMin 23(atomu) 12 17 55 - Store 21(origu) 56 - 58: 6(int) AtomicSMax 10(atomi) 12 17 57 - Store 8(origi) 58 - 59: 6(int) Load 8(origi) - 60: 6(int) AtomicExchange 10(atomi) 12 17 59 - Store 8(origi) 60 - 62: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 - 64: 15(int) AtomicCompareExchange 23(atomu) 12 63 63 62 61 - Store 21(origu) 64 - 69: 68(ptr) AccessChain 67(bufferu) 38 - 71: 15(int) AtomicIAdd 69 12 18 70 + 55: 15(int) AtomicXor 23(atomu) 12 17 53 + Store 21(origu) 55 + 56: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 + 57: 15(int) AtomicUMin 23(atomu) 12 17 56 + Store 21(origu) 57 + 59: 6(int) AtomicSMax 10(atomi) 12 17 58 + Store 8(origi) 59 + 60: 6(int) Load 8(origi) + 61: 6(int) AtomicExchange 10(atomi) 12 17 60 + Store 8(origi) 61 + 63: 15(int) Load 24(value) MakePointerVisibleKHR NonPrivatePointerKHR 26 + 65: 15(int) AtomicCompareExchange 23(atomu) 12 64 64 63 62 + Store 21(origu) 65 + 70: 69(ptr) AccessChain 68(bufferu) 38 + 72: 15(int) AtomicIAdd 70 12 18 71 MemoryBarrier 26 18 - ControlBarrier 26 26 63 + ControlBarrier 26 26 64 ControlBarrier 26 26 17 - 73: 68(ptr) AccessChain 67(bufferu) 38 - 74: 15(int) Load 73 MakePointerVisibleKHR NonPrivatePointerKHR 26 - Store 72(y) 74 - 75: 15(int) Load 72(y) - 76: 68(ptr) AccessChain 67(bufferu) 38 - Store 76 75 MakePointerAvailableKHR NonPrivatePointerKHR 26 - 80: 68(ptr) AccessChain 79(bufferi) 38 - 81: 15(int) Load 80 MakePointerVisibleKHR NonPrivatePointerKHR 16 - Store 72(y) 81 - 88: 68(ptr) AccessChain 87(bufferj) 38 38 38 12 - 89: 15(int) Load 88 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 - Store 72(y) 89 - 90: 15(int) Load 72(y) - 91: 68(ptr) AccessChain 79(bufferi) 38 - Store 91 90 MakePointerAvailableKHR NonPrivatePointerKHR 16 - 92: 15(int) Load 72(y) - 93: 68(ptr) AccessChain 87(bufferj) 38 38 38 12 - Store 93 92 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16 - 95: 94(ptr) AccessChain 87(bufferj) 12 38 - 96: 83(A) Load 95 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 - 97: 94(ptr) AccessChain 87(bufferj) 38 38 - Store 97 96 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16 - 102: 101(ptr) AccessChain 100(bufferk) 38 - 103: 15(int) Load 102 NonPrivatePointerKHR - 104: 68(ptr) AccessChain 79(bufferi) 38 - Store 104 103 MakePointerAvailableKHR NonPrivatePointerKHR 16 - 105: 34 Load 36(imagei) - 107: 106(ivec4) ImageRead 105 39 MakeTexelVisibleKHR NonPrivateTexelKHR VolatileTexelKHR 16 - 111: 35(ptr) AccessChain 110(imagej) 38 - 112: 34 Load 111 - 113: 106(ivec4) ImageRead 112 39 NonPrivateTexelKHR - 114: 35(ptr) AccessChain 110(imagej) 12 - 115: 34 Load 114 - ImageWrite 115 39 116 NonPrivateTexelKHR - 124: 123(ptr) AccessChain 122(samp) 38 - 125: 119 Load 124 - 130: 129(fvec4) ImageSampleExplicitLod 125 128 Lod NonPrivateTexelKHR 127 - 135:131(int64_t) AtomicUMax 133(atomu64) 12 17 134 - Store 133(atomu64) 135 MakePointerAvailableKHR NonPrivatePointerKHR 26 - 140:131(int64_t) Load 133(atomu64) MakePointerVisibleKHR NonPrivatePointerKHR 26 - 141:136(int64_t) Bitcast 140 - 142:136(int64_t) AtomicCompareExchange 138(atomi64) 12 63 63 141 139 - 146: 68(ptr) AccessChain 145(bufferl) 38 - 147: 15(int) Load 146 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 - Store 72(y) 147 + 74: 69(ptr) AccessChain 68(bufferu) 38 + 75: 15(int) Load 74 MakePointerVisibleKHR NonPrivatePointerKHR 26 + Store 73(y) 75 + 76: 15(int) Load 73(y) + 77: 69(ptr) AccessChain 68(bufferu) 38 + Store 77 76 MakePointerAvailableKHR NonPrivatePointerKHR 26 + 81: 69(ptr) AccessChain 80(bufferi) 38 + 82: 15(int) Load 81 MakePointerVisibleKHR NonPrivatePointerKHR 16 + Store 73(y) 82 + 89: 69(ptr) AccessChain 88(bufferj) 38 38 38 12 + 90: 15(int) Load 89 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 + Store 73(y) 90 + 91: 15(int) Load 73(y) + 92: 69(ptr) AccessChain 80(bufferi) 38 + Store 92 91 MakePointerAvailableKHR NonPrivatePointerKHR 16 + 93: 15(int) Load 73(y) + 94: 69(ptr) AccessChain 88(bufferj) 38 38 38 12 + Store 94 93 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16 + 96: 95(ptr) AccessChain 88(bufferj) 12 38 + 97: 84(A) Load 96 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 + 98: 95(ptr) AccessChain 88(bufferj) 38 38 + Store 98 97 Volatile MakePointerAvailableKHR NonPrivatePointerKHR 16 + 103: 102(ptr) AccessChain 101(bufferk) 38 + 104: 15(int) Load 103 NonPrivatePointerKHR + 105: 69(ptr) AccessChain 80(bufferi) 38 + Store 105 104 MakePointerAvailableKHR NonPrivatePointerKHR 16 + 106: 34 Load 36(imagei) + 108: 107(ivec4) ImageRead 106 39 MakeTexelVisibleKHR NonPrivateTexelKHR VolatileTexelKHR 16 + 112: 35(ptr) AccessChain 111(imagej) 38 + 113: 34 Load 112 + 114: 107(ivec4) ImageRead 113 39 NonPrivateTexelKHR + 115: 35(ptr) AccessChain 111(imagej) 12 + 116: 34 Load 115 + ImageWrite 116 39 117 NonPrivateTexelKHR + 125: 124(ptr) AccessChain 123(samp) 38 + 126: 120 Load 125 + 131: 130(fvec4) ImageSampleExplicitLod 126 129 Lod NonPrivateTexelKHR 128 + 136:132(int64_t) AtomicUMax 134(atomu64) 12 17 135 + Store 134(atomu64) 136 MakePointerAvailableKHR NonPrivatePointerKHR 26 + 141:132(int64_t) Load 134(atomu64) MakePointerVisibleKHR NonPrivatePointerKHR 26 + 142:137(int64_t) Bitcast 141 + 143:137(int64_t) AtomicCompareExchange 139(atomi64) 12 64 64 142 140 + 147: 69(ptr) AccessChain 146(bufferl) 38 + 148: 15(int) Load 147 Volatile MakePointerVisibleKHR NonPrivatePointerKHR 16 + Store 73(y) 148 + 149: 69(ptr) AccessChain 146(bufferl) 38 + 150: 15(int) AtomicIAdd 149 16 42 71 + 154: 69(ptr) AccessChain 153(bufferm) 38 + 155: 15(int) AtomicOr 154 16 42 26 + 156: 40(ptr) ImageTexelPointer 36(imagei) 39 17 + 157: 6(int) AtomicIAdd 156 16 42 11 + 158: 69(ptr) AccessChain 68(bufferu) 38 + 159: 15(int) AtomicIAdd 158 12 17 51 + 160: 69(ptr) AccessChain 68(bufferu) 38 + 162: 15(int) AtomicIAdd 160 12 42 16 Return FunctionEnd diff --git a/Test/baseResults/spv.memoryScopeSemantics_Error.comp.out b/Test/baseResults/spv.memoryScopeSemantics_Error.comp.out index c4149d87..6de93fde 100644 --- a/Test/baseResults/spv.memoryScopeSemantics_Error.comp.out +++ b/Test/baseResults/spv.memoryScopeSemantics_Error.comp.out @@ -11,7 +11,9 @@ ERROR: 0:23: 'atomicAdd' : Semantics must not include multiple of gl_SemanticsRe ERROR: 0:24: 'atomicCompSwap' : semUnequal must not be gl_SemanticsRelease or gl_SemanticsAcquireRelease ERROR: 0:25: 'memoryBarrier' : gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease ERROR: 0:26: 'memoryBarrier' : gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease -ERROR: 12 compilation errors. No code generated. +ERROR: 0:27: 'memoryBarrier' : gl_SemanticsVolatile must not be used with memoryBarrier or controlBarrier +ERROR: 0:28: 'atomicCompSwap' : semEqual and semUnequal must either both include gl_SemanticsVolatile or neither +ERROR: 14 compilation errors. No code generated. SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out index 7e7a37db..266f662d 100644 --- a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out @@ -1,13 +1,13 @@ spv.meshShaderPerViewUserDefined.mesh // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 90 +// Id's are bound by 108 Capability MeshShadingNV Extension "SPV_NV_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint MeshNV 4 "main" 11 20 21 35 67 + EntryPoint MeshNV 4 "main" 11 20 21 35 67 92 95 96 97 102 105 106 107 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 @@ -32,6 +32,14 @@ spv.meshShaderPerViewUserDefined.mesh MemberName 64(perviewBlock) 2 "color7" MemberName 64(perviewBlock) 3 "color8" Name 67 "b2" + Name 92 "nonBlk1" + Name 95 "nonBlk2" + Name 96 "nonBlk3" + Name 97 "nonBlk4" + Name 102 "nonBlkArr1" + Name 105 "nonBlkArr2" + Name 106 "nonBlkArr3" + Name 107 "nonBlkArr4" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV @@ -50,6 +58,26 @@ spv.meshShaderPerViewUserDefined.mesh Decorate 64(perviewBlock) Block Decorate 67(b2) Location 10 Decorate 89 BuiltIn WorkgroupSize + Decorate 92(nonBlk1) PerViewNV + Decorate 92(nonBlk1) Location 18 + Decorate 95(nonBlk2) PerPrimitiveNV + Decorate 95(nonBlk2) PerViewNV + Decorate 95(nonBlk2) Location 19 + Decorate 96(nonBlk3) PerViewNV + Decorate 96(nonBlk3) Location 20 + Decorate 97(nonBlk4) PerPrimitiveNV + Decorate 97(nonBlk4) PerViewNV + Decorate 97(nonBlk4) Location 21 + Decorate 102(nonBlkArr1) PerViewNV + Decorate 102(nonBlkArr1) Location 22 + Decorate 105(nonBlkArr2) PerPrimitiveNV + Decorate 105(nonBlkArr2) PerViewNV + Decorate 105(nonBlkArr2) Location 24 + Decorate 106(nonBlkArr3) PerViewNV + Decorate 106(nonBlkArr3) Location 26 + Decorate 107(nonBlkArr4) PerPrimitiveNV + Decorate 107(nonBlkArr4) PerViewNV + Decorate 107(nonBlkArr4) Location 28 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -106,6 +134,24 @@ spv.meshShaderPerViewUserDefined.mesh 86: 27(fvec4) ConstantComposite 85 85 85 85 88: 6(int) Constant 32 89: 9(ivec3) ConstantComposite 88 60 60 + 90: TypeArray 63 32 + 91: TypePointer Output 90 + 92(nonBlk1): 91(ptr) Variable Output + 93: TypeArray 63 88 + 94: TypePointer Output 93 + 95(nonBlk2): 94(ptr) Variable Output + 96(nonBlk3): 91(ptr) Variable Output + 97(nonBlk4): 94(ptr) Variable Output + 98: TypeArray 27(fvec4) 62 + 99: TypeArray 98 17 + 100: TypeArray 99 32 + 101: TypePointer Output 100 + 102(nonBlkArr1): 101(ptr) Variable Output + 103: TypeArray 99 88 + 104: TypePointer Output 103 + 105(nonBlkArr2): 104(ptr) Variable Output + 106(nonBlkArr3): 101(ptr) Variable Output + 107(nonBlkArr4): 104(ptr) Variable Output 4(main): 2 Function None 3 5: Label 8(iid): 7(ptr) Variable Function diff --git a/Test/baseResults/spv.meshShaderPerView_Errors.mesh.out b/Test/baseResults/spv.meshShaderPerView_Errors.mesh.out new file mode 100644 index 00000000..aa0b99ee --- /dev/null +++ b/Test/baseResults/spv.meshShaderPerView_Errors.mesh.out @@ -0,0 +1,11 @@ +spv.meshShaderPerView_Errors.mesh +ERROR: 0:19: '[]' : only outermost dimension of an array of arrays can be implicitly sized +ERROR: 0:20: '[]' : mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized +ERROR: 0:21: 'perviewNV' : requires a view array dimension +ERROR: 0:25: '[]' : only outermost dimension of an array of arrays can be implicitly sized +ERROR: 0:26: '[]' : mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized +ERROR: 0:27: 'perviewNV' : requires a view array dimension +ERROR: 6 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out index 16bea3db..c06a890b 100644 --- a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out +++ b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out @@ -1,8 +1,7 @@ spv.multiviewPerViewAttributes.tesc -Validation failed // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 37 +// Id's are bound by 41 Capability Tessellation Capability PerViewAttributesNV @@ -24,7 +23,7 @@ Validation failed MemberName 27(gl_PerVertex) 1 "gl_PointSize" MemberName 27(gl_PerVertex) 2 "gl_ClipDistance" MemberName 27(gl_PerVertex) 3 "gl_CullDistance" - MemberName 27(gl_PerVertex) 5 "gl_PositionPerViewNV" + MemberName 27(gl_PerVertex) 4 "gl_PositionPerViewNV" Name 31 "gl_in" MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV MemberDecorate 13(gl_PerVertex) 1 BuiltIn ViewportMaskPerViewNV @@ -34,6 +33,7 @@ Validation failed MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance + MemberDecorate 27(gl_PerVertex) 4 BuiltIn PositionPerViewNV Decorate 27(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 @@ -61,7 +61,8 @@ Validation failed 30: TypePointer Input 29 31(gl_in): 30(ptr) Variable Input 32: TypePointer Input 7(fvec4) - 35: TypePointer Output 7(fvec4) + 35: 11(int) Constant 4 + 39: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 20: 11(int) Load 19(gl_InvocationID) @@ -70,7 +71,10 @@ Validation failed 25: 11(int) Load 19(gl_InvocationID) 33: 32(ptr) AccessChain 31(gl_in) 21 22 34: 7(fvec4) Load 33 - 36: 35(ptr) AccessChain 17(gl_out) 25 22 22 - Store 36 34 + 36: 32(ptr) AccessChain 31(gl_in) 21 35 22 + 37: 7(fvec4) Load 36 + 38: 7(fvec4) FAdd 34 37 + 40: 39(ptr) AccessChain 17(gl_out) 25 22 22 + Store 40 38 Return FunctionEnd diff --git a/Test/baseResults/spv.privateVariableTypes.frag.out b/Test/baseResults/spv.privateVariableTypes.frag.out new file mode 100644 index 00000000..9b4063ed --- /dev/null +++ b/Test/baseResults/spv.privateVariableTypes.frag.out @@ -0,0 +1,54 @@ +spv.privateVariableTypes.frag +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 27 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + Name 4 "main" + Name 8 "i8" + Name 11 "u8" + Name 14 "i16" + Name 17 "u16" + Name 20 "i64" + Name 23 "u64" + Name 26 "f16" + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 8 1 + 7: TypePointer Private 6(int8_t) + 8(i8): 7(ptr) Variable Private + 9: TypeInt 8 0 + 10: TypePointer Private 9(int8_t) + 11(u8): 10(ptr) Variable Private + 12: TypeInt 16 1 + 13: TypePointer Private 12(int16_t) + 14(i16): 13(ptr) Variable Private + 15: TypeInt 16 0 + 16: TypePointer Private 15(int16_t) + 17(u16): 16(ptr) Variable Private + 18: TypeInt 64 1 + 19: TypePointer Private 18(int64_t) + 20(i64): 19(ptr) Variable Private + 21: TypeInt 64 0 + 22: TypePointer Private 21(int64_t) + 23(u64): 22(ptr) Variable Private + 24: TypeFloat 16 + 25: TypePointer Private 24(float16_t) + 26(f16): 25(ptr) Variable Private + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out index 84b763ba..3a9872e3 100644 --- a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out +++ b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out @@ -1,10 +1,10 @@ spv.sampleMaskOverrideCoverage.frag -Validation failed // Module Version 10000 // Generated by (magic number): 80007 // Id's are bound by 20 Capability Shader + Capability SampleMaskOverrideCoverageNV Extension "SPV_NV_sample_mask_override_coverage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index 2f0e5a0b..1c616ee5 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -1,7 +1,7 @@ spv.shaderBallot.comp // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 298 +// Id's are bound by 318 Capability Shader Capability Int64 @@ -9,7 +9,7 @@ spv.shaderBallot.comp Extension "SPV_KHR_shader_ballot" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 "main" 10 12 21 23 26 29 32 + EntryPoint GLCompute 4 "main" 10 12 22 29 36 43 50 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" @@ -19,30 +19,30 @@ spv.shaderBallot.comp Name 10 "gl_SubGroupInvocationARB" Name 12 "gl_SubGroupSizeARB" Name 19 "relMask" - Name 21 "gl_SubGroupEqMaskARB" - Name 23 "gl_SubGroupGeMaskARB" - Name 26 "gl_SubGroupGtMaskARB" - Name 29 "gl_SubGroupLeMaskARB" - Name 32 "gl_SubGroupLtMaskARB" - Name 52 "Buffers" - MemberName 52(Buffers) 0 "f4" - MemberName 52(Buffers) 1 "i4" - MemberName 52(Buffers) 2 "u4" - Name 55 "data" + Name 22 "gl_SubGroupEqMaskARB" + Name 29 "gl_SubGroupGeMaskARB" + Name 36 "gl_SubGroupGtMaskARB" + Name 43 "gl_SubGroupLeMaskARB" + Name 50 "gl_SubGroupLtMaskARB" + Name 72 "Buffers" + MemberName 72(Buffers) 0 "f4" + MemberName 72(Buffers) 1 "i4" + MemberName 72(Buffers) 2 "u4" + Name 75 "data" Decorate 10(gl_SubGroupInvocationARB) BuiltIn SubgroupLocalInvocationId Decorate 12(gl_SubGroupSizeARB) BuiltIn SubgroupSize - Decorate 21(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR - Decorate 23(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR - Decorate 26(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR - Decorate 29(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR - Decorate 32(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR - MemberDecorate 52(Buffers) 0 Offset 0 - MemberDecorate 52(Buffers) 1 Offset 16 - MemberDecorate 52(Buffers) 2 Offset 32 - Decorate 52(Buffers) BufferBlock - Decorate 55(data) DescriptorSet 0 - Decorate 55(data) Binding 0 - Decorate 297 BuiltIn WorkgroupSize + Decorate 22(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR + Decorate 29(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR + Decorate 36(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR + Decorate 43(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR + Decorate 50(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR + MemberDecorate 72(Buffers) 0 Offset 0 + MemberDecorate 72(Buffers) 1 Offset 16 + MemberDecorate 72(Buffers) 2 Offset 32 + Decorate 72(Buffers) BufferBlock + Decorate 75(data) DescriptorSet 0 + Decorate 75(data) Binding 0 + Decorate 317 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -53,43 +53,43 @@ spv.shaderBallot.comp 15: 6(int) Constant 4 17: TypeInt 64 0 18: TypePointer Function 17(int64_t) - 20: TypePointer Input 17(int64_t) -21(gl_SubGroupEqMaskARB): 20(ptr) Variable Input -23(gl_SubGroupGeMaskARB): 20(ptr) Variable Input -26(gl_SubGroupGtMaskARB): 20(ptr) Variable Input -29(gl_SubGroupLeMaskARB): 20(ptr) Variable Input -32(gl_SubGroupLtMaskARB): 20(ptr) Variable Input - 36: TypeBool - 37: 36(bool) ConstantTrue - 38: TypeVector 6(int) 4 - 42: TypeVector 6(int) 2 - 48: TypeFloat 32 - 49: TypeVector 48(float) 4 - 50: TypeInt 32 1 - 51: TypeVector 50(int) 4 - 52(Buffers): TypeStruct 49(fvec4) 51(ivec4) 38(ivec4) - 53: TypeArray 52(Buffers) 15 - 54: TypePointer Uniform 53 - 55(data): 54(ptr) Variable Uniform - 57: 50(int) Constant 0 - 58: 6(int) Constant 0 - 59: TypePointer Uniform 48(float) - 66: 50(int) Constant 1 - 67: TypeVector 48(float) 2 - 68: TypePointer Uniform 49(fvec4) - 82: 50(int) Constant 2 - 83: TypeVector 48(float) 3 - 99: 50(int) Constant 3 - 114: TypePointer Uniform 50(int) - 121: TypeVector 50(int) 2 - 122: TypePointer Uniform 51(ivec4) - 136: TypeVector 50(int) 3 - 166: TypePointer Uniform 6(int) - 173: TypePointer Uniform 38(ivec4) - 187: TypeVector 6(int) 3 - 295: 6(int) Constant 8 - 296: 6(int) Constant 1 - 297: 187(ivec3) ConstantComposite 295 295 296 + 20: TypeVector 6(int) 4 + 21: TypePointer Input 20(ivec4) +22(gl_SubGroupEqMaskARB): 21(ptr) Variable Input + 26: TypeVector 6(int) 2 +29(gl_SubGroupGeMaskARB): 21(ptr) Variable Input +36(gl_SubGroupGtMaskARB): 21(ptr) Variable Input +43(gl_SubGroupLeMaskARB): 21(ptr) Variable Input +50(gl_SubGroupLtMaskARB): 21(ptr) Variable Input + 58: TypeBool + 59: 58(bool) ConstantTrue + 68: TypeFloat 32 + 69: TypeVector 68(float) 4 + 70: TypeInt 32 1 + 71: TypeVector 70(int) 4 + 72(Buffers): TypeStruct 69(fvec4) 71(ivec4) 20(ivec4) + 73: TypeArray 72(Buffers) 15 + 74: TypePointer Uniform 73 + 75(data): 74(ptr) Variable Uniform + 77: 70(int) Constant 0 + 78: 6(int) Constant 0 + 79: TypePointer Uniform 68(float) + 86: 70(int) Constant 1 + 87: TypeVector 68(float) 2 + 88: TypePointer Uniform 69(fvec4) + 102: 70(int) Constant 2 + 103: TypeVector 68(float) 3 + 119: 70(int) Constant 3 + 134: TypePointer Uniform 70(int) + 141: TypeVector 70(int) 2 + 142: TypePointer Uniform 71(ivec4) + 156: TypeVector 70(int) 3 + 186: TypePointer Uniform 6(int) + 193: TypePointer Uniform 20(ivec4) + 207: TypeVector 6(int) 3 + 315: 6(int) Constant 8 + 316: 6(int) Constant 1 + 317: 207(ivec3) ConstantComposite 315 315 316 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function @@ -99,275 +99,295 @@ spv.shaderBallot.comp 14: 6(int) IAdd 11 13 16: 6(int) UMod 14 15 Store 8(invocation) 16 - 22: 17(int64_t) Load 21(gl_SubGroupEqMaskARB) - 24: 17(int64_t) Load 23(gl_SubGroupGeMaskARB) - 25: 17(int64_t) IAdd 22 24 - 27: 17(int64_t) Load 26(gl_SubGroupGtMaskARB) - 28: 17(int64_t) IAdd 25 27 - 30: 17(int64_t) Load 29(gl_SubGroupLeMaskARB) - 31: 17(int64_t) IAdd 28 30 - 33: 17(int64_t) Load 32(gl_SubGroupLtMaskARB) - 34: 17(int64_t) IAdd 31 33 - Store 19(relMask) 34 - 35: 17(int64_t) Load 19(relMask) - 39: 38(ivec4) SubgroupBallotKHR 37 - 40: 6(int) CompositeExtract 39 0 - 41: 6(int) CompositeExtract 39 1 - 43: 42(ivec2) CompositeConstruct 40 41 - 44: 17(int64_t) Bitcast 43 - 45: 36(bool) IEqual 35 44 - SelectionMerge 47 None - BranchConditional 45 46 216 - 46: Label - 56: 6(int) Load 8(invocation) - 60: 59(ptr) AccessChain 55(data) 57 57 58 - 61: 48(float) Load 60 - 62: 6(int) Load 8(invocation) - 63: 48(float) SubgroupReadInvocationKHR 61 62 - 64: 59(ptr) AccessChain 55(data) 56 57 58 - Store 64 63 - 65: 6(int) Load 8(invocation) - 69: 68(ptr) AccessChain 55(data) 66 57 - 70: 49(fvec4) Load 69 - 71: 67(fvec2) VectorShuffle 70 70 0 1 - 72: 6(int) Load 8(invocation) - 73: 48(float) CompositeExtract 71 0 - 74: 48(float) SubgroupReadInvocationKHR 73 72 - 75: 48(float) CompositeExtract 71 1 - 76: 48(float) SubgroupReadInvocationKHR 75 72 - 77: 67(fvec2) CompositeConstruct 74 76 - 78: 68(ptr) AccessChain 55(data) 65 57 - 79: 49(fvec4) Load 78 - 80: 49(fvec4) VectorShuffle 79 77 4 5 2 3 - Store 78 80 - 81: 6(int) Load 8(invocation) - 84: 68(ptr) AccessChain 55(data) 82 57 - 85: 49(fvec4) Load 84 - 86: 83(fvec3) VectorShuffle 85 85 0 1 2 - 87: 6(int) Load 8(invocation) - 88: 48(float) CompositeExtract 86 0 - 89: 48(float) SubgroupReadInvocationKHR 88 87 - 90: 48(float) CompositeExtract 86 1 - 91: 48(float) SubgroupReadInvocationKHR 90 87 - 92: 48(float) CompositeExtract 86 2 - 93: 48(float) SubgroupReadInvocationKHR 92 87 - 94: 83(fvec3) CompositeConstruct 89 91 93 - 95: 68(ptr) AccessChain 55(data) 81 57 - 96: 49(fvec4) Load 95 - 97: 49(fvec4) VectorShuffle 96 94 4 5 6 3 - Store 95 97 - 98: 6(int) Load 8(invocation) - 100: 68(ptr) AccessChain 55(data) 99 57 - 101: 49(fvec4) Load 100 - 102: 6(int) Load 8(invocation) - 103: 48(float) CompositeExtract 101 0 - 104: 48(float) SubgroupReadInvocationKHR 103 102 - 105: 48(float) CompositeExtract 101 1 - 106: 48(float) SubgroupReadInvocationKHR 105 102 - 107: 48(float) CompositeExtract 101 2 - 108: 48(float) SubgroupReadInvocationKHR 107 102 - 109: 48(float) CompositeExtract 101 3 - 110: 48(float) SubgroupReadInvocationKHR 109 102 - 111: 49(fvec4) CompositeConstruct 104 106 108 110 - 112: 68(ptr) AccessChain 55(data) 98 57 - Store 112 111 - 113: 6(int) Load 8(invocation) - 115: 114(ptr) AccessChain 55(data) 57 66 58 - 116: 50(int) Load 115 - 117: 6(int) Load 8(invocation) - 118: 50(int) SubgroupReadInvocationKHR 116 117 - 119: 114(ptr) AccessChain 55(data) 113 66 58 - Store 119 118 - 120: 6(int) Load 8(invocation) - 123: 122(ptr) AccessChain 55(data) 66 66 - 124: 51(ivec4) Load 123 - 125: 121(ivec2) VectorShuffle 124 124 0 1 - 126: 6(int) Load 8(invocation) - 127: 50(int) CompositeExtract 125 0 - 128: 50(int) SubgroupReadInvocationKHR 127 126 - 129: 50(int) CompositeExtract 125 1 - 130: 50(int) SubgroupReadInvocationKHR 129 126 - 131: 121(ivec2) CompositeConstruct 128 130 - 132: 122(ptr) AccessChain 55(data) 120 66 - 133: 51(ivec4) Load 132 - 134: 51(ivec4) VectorShuffle 133 131 4 5 2 3 - Store 132 134 - 135: 6(int) Load 8(invocation) - 137: 122(ptr) AccessChain 55(data) 82 66 - 138: 51(ivec4) Load 137 - 139: 136(ivec3) VectorShuffle 138 138 0 1 2 + 23: 20(ivec4) Load 22(gl_SubGroupEqMaskARB) + 24: 6(int) CompositeExtract 23 0 + 25: 6(int) CompositeExtract 23 1 + 27: 26(ivec2) CompositeConstruct 24 25 + 28: 17(int64_t) Bitcast 27 + 30: 20(ivec4) Load 29(gl_SubGroupGeMaskARB) + 31: 6(int) CompositeExtract 30 0 + 32: 6(int) CompositeExtract 30 1 + 33: 26(ivec2) CompositeConstruct 31 32 + 34: 17(int64_t) Bitcast 33 + 35: 17(int64_t) IAdd 28 34 + 37: 20(ivec4) Load 36(gl_SubGroupGtMaskARB) + 38: 6(int) CompositeExtract 37 0 + 39: 6(int) CompositeExtract 37 1 + 40: 26(ivec2) CompositeConstruct 38 39 + 41: 17(int64_t) Bitcast 40 + 42: 17(int64_t) IAdd 35 41 + 44: 20(ivec4) Load 43(gl_SubGroupLeMaskARB) + 45: 6(int) CompositeExtract 44 0 + 46: 6(int) CompositeExtract 44 1 + 47: 26(ivec2) CompositeConstruct 45 46 + 48: 17(int64_t) Bitcast 47 + 49: 17(int64_t) IAdd 42 48 + 51: 20(ivec4) Load 50(gl_SubGroupLtMaskARB) + 52: 6(int) CompositeExtract 51 0 + 53: 6(int) CompositeExtract 51 1 + 54: 26(ivec2) CompositeConstruct 52 53 + 55: 17(int64_t) Bitcast 54 + 56: 17(int64_t) IAdd 49 55 + Store 19(relMask) 56 + 57: 17(int64_t) Load 19(relMask) + 60: 20(ivec4) SubgroupBallotKHR 59 + 61: 6(int) CompositeExtract 60 0 + 62: 6(int) CompositeExtract 60 1 + 63: 26(ivec2) CompositeConstruct 61 62 + 64: 17(int64_t) Bitcast 63 + 65: 58(bool) IEqual 57 64 + SelectionMerge 67 None + BranchConditional 65 66 236 + 66: Label + 76: 6(int) Load 8(invocation) + 80: 79(ptr) AccessChain 75(data) 77 77 78 + 81: 68(float) Load 80 + 82: 6(int) Load 8(invocation) + 83: 68(float) SubgroupReadInvocationKHR 81 82 + 84: 79(ptr) AccessChain 75(data) 76 77 78 + Store 84 83 + 85: 6(int) Load 8(invocation) + 89: 88(ptr) AccessChain 75(data) 86 77 + 90: 69(fvec4) Load 89 + 91: 87(fvec2) VectorShuffle 90 90 0 1 + 92: 6(int) Load 8(invocation) + 93: 68(float) CompositeExtract 91 0 + 94: 68(float) SubgroupReadInvocationKHR 93 92 + 95: 68(float) CompositeExtract 91 1 + 96: 68(float) SubgroupReadInvocationKHR 95 92 + 97: 87(fvec2) CompositeConstruct 94 96 + 98: 88(ptr) AccessChain 75(data) 85 77 + 99: 69(fvec4) Load 98 + 100: 69(fvec4) VectorShuffle 99 97 4 5 2 3 + Store 98 100 + 101: 6(int) Load 8(invocation) + 104: 88(ptr) AccessChain 75(data) 102 77 + 105: 69(fvec4) Load 104 + 106: 103(fvec3) VectorShuffle 105 105 0 1 2 + 107: 6(int) Load 8(invocation) + 108: 68(float) CompositeExtract 106 0 + 109: 68(float) SubgroupReadInvocationKHR 108 107 + 110: 68(float) CompositeExtract 106 1 + 111: 68(float) SubgroupReadInvocationKHR 110 107 + 112: 68(float) CompositeExtract 106 2 + 113: 68(float) SubgroupReadInvocationKHR 112 107 + 114: 103(fvec3) CompositeConstruct 109 111 113 + 115: 88(ptr) AccessChain 75(data) 101 77 + 116: 69(fvec4) Load 115 + 117: 69(fvec4) VectorShuffle 116 114 4 5 6 3 + Store 115 117 + 118: 6(int) Load 8(invocation) + 120: 88(ptr) AccessChain 75(data) 119 77 + 121: 69(fvec4) Load 120 + 122: 6(int) Load 8(invocation) + 123: 68(float) CompositeExtract 121 0 + 124: 68(float) SubgroupReadInvocationKHR 123 122 + 125: 68(float) CompositeExtract 121 1 + 126: 68(float) SubgroupReadInvocationKHR 125 122 + 127: 68(float) CompositeExtract 121 2 + 128: 68(float) SubgroupReadInvocationKHR 127 122 + 129: 68(float) CompositeExtract 121 3 + 130: 68(float) SubgroupReadInvocationKHR 129 122 + 131: 69(fvec4) CompositeConstruct 124 126 128 130 + 132: 88(ptr) AccessChain 75(data) 118 77 + Store 132 131 + 133: 6(int) Load 8(invocation) + 135: 134(ptr) AccessChain 75(data) 77 86 78 + 136: 70(int) Load 135 + 137: 6(int) Load 8(invocation) + 138: 70(int) SubgroupReadInvocationKHR 136 137 + 139: 134(ptr) AccessChain 75(data) 133 86 78 + Store 139 138 140: 6(int) Load 8(invocation) - 141: 50(int) CompositeExtract 139 0 - 142: 50(int) SubgroupReadInvocationKHR 141 140 - 143: 50(int) CompositeExtract 139 1 - 144: 50(int) SubgroupReadInvocationKHR 143 140 - 145: 50(int) CompositeExtract 139 2 - 146: 50(int) SubgroupReadInvocationKHR 145 140 - 147: 136(ivec3) CompositeConstruct 142 144 146 - 148: 122(ptr) AccessChain 55(data) 135 66 - 149: 51(ivec4) Load 148 - 150: 51(ivec4) VectorShuffle 149 147 4 5 6 3 - Store 148 150 - 151: 6(int) Load 8(invocation) - 152: 122(ptr) AccessChain 55(data) 99 66 - 153: 51(ivec4) Load 152 - 154: 6(int) Load 8(invocation) - 155: 50(int) CompositeExtract 153 0 - 156: 50(int) SubgroupReadInvocationKHR 155 154 - 157: 50(int) CompositeExtract 153 1 - 158: 50(int) SubgroupReadInvocationKHR 157 154 - 159: 50(int) CompositeExtract 153 2 - 160: 50(int) SubgroupReadInvocationKHR 159 154 - 161: 50(int) CompositeExtract 153 3 - 162: 50(int) SubgroupReadInvocationKHR 161 154 - 163: 51(ivec4) CompositeConstruct 156 158 160 162 - 164: 122(ptr) AccessChain 55(data) 151 66 - Store 164 163 - 165: 6(int) Load 8(invocation) - 167: 166(ptr) AccessChain 55(data) 57 82 58 - 168: 6(int) Load 167 - 169: 6(int) Load 8(invocation) - 170: 6(int) SubgroupReadInvocationKHR 168 169 - 171: 166(ptr) AccessChain 55(data) 165 82 58 - Store 171 170 - 172: 6(int) Load 8(invocation) - 174: 173(ptr) AccessChain 55(data) 66 82 - 175: 38(ivec4) Load 174 - 176: 42(ivec2) VectorShuffle 175 175 0 1 - 177: 6(int) Load 8(invocation) - 178: 6(int) CompositeExtract 176 0 - 179: 6(int) SubgroupReadInvocationKHR 178 177 - 180: 6(int) CompositeExtract 176 1 - 181: 6(int) SubgroupReadInvocationKHR 180 177 - 182: 42(ivec2) CompositeConstruct 179 181 - 183: 173(ptr) AccessChain 55(data) 172 82 - 184: 38(ivec4) Load 183 - 185: 38(ivec4) VectorShuffle 184 182 4 5 2 3 - Store 183 185 - 186: 6(int) Load 8(invocation) - 188: 173(ptr) AccessChain 55(data) 82 82 - 189: 38(ivec4) Load 188 - 190: 187(ivec3) VectorShuffle 189 189 0 1 2 - 191: 6(int) Load 8(invocation) - 192: 6(int) CompositeExtract 190 0 - 193: 6(int) SubgroupReadInvocationKHR 192 191 - 194: 6(int) CompositeExtract 190 1 - 195: 6(int) SubgroupReadInvocationKHR 194 191 - 196: 6(int) CompositeExtract 190 2 - 197: 6(int) SubgroupReadInvocationKHR 196 191 - 198: 187(ivec3) CompositeConstruct 193 195 197 - 199: 173(ptr) AccessChain 55(data) 186 82 - 200: 38(ivec4) Load 199 - 201: 38(ivec4) VectorShuffle 200 198 4 5 6 3 - Store 199 201 - 202: 6(int) Load 8(invocation) - 203: 173(ptr) AccessChain 55(data) 99 82 - 204: 38(ivec4) Load 203 - 205: 6(int) Load 8(invocation) - 206: 6(int) CompositeExtract 204 0 - 207: 6(int) SubgroupReadInvocationKHR 206 205 - 208: 6(int) CompositeExtract 204 1 - 209: 6(int) SubgroupReadInvocationKHR 208 205 - 210: 6(int) CompositeExtract 204 2 - 211: 6(int) SubgroupReadInvocationKHR 210 205 - 212: 6(int) CompositeExtract 204 3 - 213: 6(int) SubgroupReadInvocationKHR 212 205 - 214: 38(ivec4) CompositeConstruct 207 209 211 213 - 215: 173(ptr) AccessChain 55(data) 202 82 - Store 215 214 - Branch 47 - 216: Label - 217: 6(int) Load 8(invocation) - 218: 59(ptr) AccessChain 55(data) 57 57 58 - 219: 48(float) Load 218 - 220: 48(float) SubgroupFirstInvocationKHR 219 - 221: 59(ptr) AccessChain 55(data) 217 57 58 - Store 221 220 + 143: 142(ptr) AccessChain 75(data) 86 86 + 144: 71(ivec4) Load 143 + 145: 141(ivec2) VectorShuffle 144 144 0 1 + 146: 6(int) Load 8(invocation) + 147: 70(int) CompositeExtract 145 0 + 148: 70(int) SubgroupReadInvocationKHR 147 146 + 149: 70(int) CompositeExtract 145 1 + 150: 70(int) SubgroupReadInvocationKHR 149 146 + 151: 141(ivec2) CompositeConstruct 148 150 + 152: 142(ptr) AccessChain 75(data) 140 86 + 153: 71(ivec4) Load 152 + 154: 71(ivec4) VectorShuffle 153 151 4 5 2 3 + Store 152 154 + 155: 6(int) Load 8(invocation) + 157: 142(ptr) AccessChain 75(data) 102 86 + 158: 71(ivec4) Load 157 + 159: 156(ivec3) VectorShuffle 158 158 0 1 2 + 160: 6(int) Load 8(invocation) + 161: 70(int) CompositeExtract 159 0 + 162: 70(int) SubgroupReadInvocationKHR 161 160 + 163: 70(int) CompositeExtract 159 1 + 164: 70(int) SubgroupReadInvocationKHR 163 160 + 165: 70(int) CompositeExtract 159 2 + 166: 70(int) SubgroupReadInvocationKHR 165 160 + 167: 156(ivec3) CompositeConstruct 162 164 166 + 168: 142(ptr) AccessChain 75(data) 155 86 + 169: 71(ivec4) Load 168 + 170: 71(ivec4) VectorShuffle 169 167 4 5 6 3 + Store 168 170 + 171: 6(int) Load 8(invocation) + 172: 142(ptr) AccessChain 75(data) 119 86 + 173: 71(ivec4) Load 172 + 174: 6(int) Load 8(invocation) + 175: 70(int) CompositeExtract 173 0 + 176: 70(int) SubgroupReadInvocationKHR 175 174 + 177: 70(int) CompositeExtract 173 1 + 178: 70(int) SubgroupReadInvocationKHR 177 174 + 179: 70(int) CompositeExtract 173 2 + 180: 70(int) SubgroupReadInvocationKHR 179 174 + 181: 70(int) CompositeExtract 173 3 + 182: 70(int) SubgroupReadInvocationKHR 181 174 + 183: 71(ivec4) CompositeConstruct 176 178 180 182 + 184: 142(ptr) AccessChain 75(data) 171 86 + Store 184 183 + 185: 6(int) Load 8(invocation) + 187: 186(ptr) AccessChain 75(data) 77 102 78 + 188: 6(int) Load 187 + 189: 6(int) Load 8(invocation) + 190: 6(int) SubgroupReadInvocationKHR 188 189 + 191: 186(ptr) AccessChain 75(data) 185 102 78 + Store 191 190 + 192: 6(int) Load 8(invocation) + 194: 193(ptr) AccessChain 75(data) 86 102 + 195: 20(ivec4) Load 194 + 196: 26(ivec2) VectorShuffle 195 195 0 1 + 197: 6(int) Load 8(invocation) + 198: 6(int) CompositeExtract 196 0 + 199: 6(int) SubgroupReadInvocationKHR 198 197 + 200: 6(int) CompositeExtract 196 1 + 201: 6(int) SubgroupReadInvocationKHR 200 197 + 202: 26(ivec2) CompositeConstruct 199 201 + 203: 193(ptr) AccessChain 75(data) 192 102 + 204: 20(ivec4) Load 203 + 205: 20(ivec4) VectorShuffle 204 202 4 5 2 3 + Store 203 205 + 206: 6(int) Load 8(invocation) + 208: 193(ptr) AccessChain 75(data) 102 102 + 209: 20(ivec4) Load 208 + 210: 207(ivec3) VectorShuffle 209 209 0 1 2 + 211: 6(int) Load 8(invocation) + 212: 6(int) CompositeExtract 210 0 + 213: 6(int) SubgroupReadInvocationKHR 212 211 + 214: 6(int) CompositeExtract 210 1 + 215: 6(int) SubgroupReadInvocationKHR 214 211 + 216: 6(int) CompositeExtract 210 2 + 217: 6(int) SubgroupReadInvocationKHR 216 211 + 218: 207(ivec3) CompositeConstruct 213 215 217 + 219: 193(ptr) AccessChain 75(data) 206 102 + 220: 20(ivec4) Load 219 + 221: 20(ivec4) VectorShuffle 220 218 4 5 6 3 + Store 219 221 222: 6(int) Load 8(invocation) - 223: 68(ptr) AccessChain 55(data) 66 57 - 224: 49(fvec4) Load 223 - 225: 67(fvec2) VectorShuffle 224 224 0 1 - 226: 67(fvec2) SubgroupFirstInvocationKHR 225 - 227: 68(ptr) AccessChain 55(data) 222 57 - 228: 49(fvec4) Load 227 - 229: 49(fvec4) VectorShuffle 228 226 4 5 2 3 - Store 227 229 - 230: 6(int) Load 8(invocation) - 231: 68(ptr) AccessChain 55(data) 82 57 - 232: 49(fvec4) Load 231 - 233: 83(fvec3) VectorShuffle 232 232 0 1 2 - 234: 83(fvec3) SubgroupFirstInvocationKHR 233 - 235: 68(ptr) AccessChain 55(data) 230 57 - 236: 49(fvec4) Load 235 - 237: 49(fvec4) VectorShuffle 236 234 4 5 6 3 - Store 235 237 - 238: 6(int) Load 8(invocation) - 239: 68(ptr) AccessChain 55(data) 99 57 - 240: 49(fvec4) Load 239 - 241: 49(fvec4) SubgroupFirstInvocationKHR 240 - 242: 68(ptr) AccessChain 55(data) 238 57 - Store 242 241 - 243: 6(int) Load 8(invocation) - 244: 114(ptr) AccessChain 55(data) 57 66 58 - 245: 50(int) Load 244 - 246: 50(int) SubgroupFirstInvocationKHR 245 - 247: 114(ptr) AccessChain 55(data) 243 66 58 - Store 247 246 - 248: 6(int) Load 8(invocation) - 249: 122(ptr) AccessChain 55(data) 66 66 - 250: 51(ivec4) Load 249 - 251: 121(ivec2) VectorShuffle 250 250 0 1 - 252: 121(ivec2) SubgroupFirstInvocationKHR 251 - 253: 122(ptr) AccessChain 55(data) 248 66 - 254: 51(ivec4) Load 253 - 255: 51(ivec4) VectorShuffle 254 252 4 5 2 3 - Store 253 255 - 256: 6(int) Load 8(invocation) - 257: 122(ptr) AccessChain 55(data) 82 66 - 258: 51(ivec4) Load 257 - 259: 136(ivec3) VectorShuffle 258 258 0 1 2 - 260: 136(ivec3) SubgroupFirstInvocationKHR 259 - 261: 122(ptr) AccessChain 55(data) 256 66 - 262: 51(ivec4) Load 261 - 263: 51(ivec4) VectorShuffle 262 260 4 5 6 3 - Store 261 263 - 264: 6(int) Load 8(invocation) - 265: 122(ptr) AccessChain 55(data) 99 66 - 266: 51(ivec4) Load 265 - 267: 51(ivec4) SubgroupFirstInvocationKHR 266 - 268: 122(ptr) AccessChain 55(data) 264 66 - Store 268 267 - 269: 6(int) Load 8(invocation) - 270: 166(ptr) AccessChain 55(data) 57 82 58 - 271: 6(int) Load 270 - 272: 6(int) SubgroupFirstInvocationKHR 271 - 273: 166(ptr) AccessChain 55(data) 269 82 58 - Store 273 272 - 274: 6(int) Load 8(invocation) - 275: 173(ptr) AccessChain 55(data) 66 82 - 276: 38(ivec4) Load 275 - 277: 42(ivec2) VectorShuffle 276 276 0 1 - 278: 42(ivec2) SubgroupFirstInvocationKHR 277 - 279: 173(ptr) AccessChain 55(data) 274 82 - 280: 38(ivec4) Load 279 - 281: 38(ivec4) VectorShuffle 280 278 4 5 2 3 - Store 279 281 - 282: 6(int) Load 8(invocation) - 283: 173(ptr) AccessChain 55(data) 82 82 - 284: 38(ivec4) Load 283 - 285: 187(ivec3) VectorShuffle 284 284 0 1 2 - 286: 187(ivec3) SubgroupFirstInvocationKHR 285 - 287: 173(ptr) AccessChain 55(data) 282 82 - 288: 38(ivec4) Load 287 - 289: 38(ivec4) VectorShuffle 288 286 4 5 6 3 - Store 287 289 - 290: 6(int) Load 8(invocation) - 291: 173(ptr) AccessChain 55(data) 99 82 - 292: 38(ivec4) Load 291 - 293: 38(ivec4) SubgroupFirstInvocationKHR 292 - 294: 173(ptr) AccessChain 55(data) 290 82 - Store 294 293 - Branch 47 - 47: Label + 223: 193(ptr) AccessChain 75(data) 119 102 + 224: 20(ivec4) Load 223 + 225: 6(int) Load 8(invocation) + 226: 6(int) CompositeExtract 224 0 + 227: 6(int) SubgroupReadInvocationKHR 226 225 + 228: 6(int) CompositeExtract 224 1 + 229: 6(int) SubgroupReadInvocationKHR 228 225 + 230: 6(int) CompositeExtract 224 2 + 231: 6(int) SubgroupReadInvocationKHR 230 225 + 232: 6(int) CompositeExtract 224 3 + 233: 6(int) SubgroupReadInvocationKHR 232 225 + 234: 20(ivec4) CompositeConstruct 227 229 231 233 + 235: 193(ptr) AccessChain 75(data) 222 102 + Store 235 234 + Branch 67 + 236: Label + 237: 6(int) Load 8(invocation) + 238: 79(ptr) AccessChain 75(data) 77 77 78 + 239: 68(float) Load 238 + 240: 68(float) SubgroupFirstInvocationKHR 239 + 241: 79(ptr) AccessChain 75(data) 237 77 78 + Store 241 240 + 242: 6(int) Load 8(invocation) + 243: 88(ptr) AccessChain 75(data) 86 77 + 244: 69(fvec4) Load 243 + 245: 87(fvec2) VectorShuffle 244 244 0 1 + 246: 87(fvec2) SubgroupFirstInvocationKHR 245 + 247: 88(ptr) AccessChain 75(data) 242 77 + 248: 69(fvec4) Load 247 + 249: 69(fvec4) VectorShuffle 248 246 4 5 2 3 + Store 247 249 + 250: 6(int) Load 8(invocation) + 251: 88(ptr) AccessChain 75(data) 102 77 + 252: 69(fvec4) Load 251 + 253: 103(fvec3) VectorShuffle 252 252 0 1 2 + 254: 103(fvec3) SubgroupFirstInvocationKHR 253 + 255: 88(ptr) AccessChain 75(data) 250 77 + 256: 69(fvec4) Load 255 + 257: 69(fvec4) VectorShuffle 256 254 4 5 6 3 + Store 255 257 + 258: 6(int) Load 8(invocation) + 259: 88(ptr) AccessChain 75(data) 119 77 + 260: 69(fvec4) Load 259 + 261: 69(fvec4) SubgroupFirstInvocationKHR 260 + 262: 88(ptr) AccessChain 75(data) 258 77 + Store 262 261 + 263: 6(int) Load 8(invocation) + 264: 134(ptr) AccessChain 75(data) 77 86 78 + 265: 70(int) Load 264 + 266: 70(int) SubgroupFirstInvocationKHR 265 + 267: 134(ptr) AccessChain 75(data) 263 86 78 + Store 267 266 + 268: 6(int) Load 8(invocation) + 269: 142(ptr) AccessChain 75(data) 86 86 + 270: 71(ivec4) Load 269 + 271: 141(ivec2) VectorShuffle 270 270 0 1 + 272: 141(ivec2) SubgroupFirstInvocationKHR 271 + 273: 142(ptr) AccessChain 75(data) 268 86 + 274: 71(ivec4) Load 273 + 275: 71(ivec4) VectorShuffle 274 272 4 5 2 3 + Store 273 275 + 276: 6(int) Load 8(invocation) + 277: 142(ptr) AccessChain 75(data) 102 86 + 278: 71(ivec4) Load 277 + 279: 156(ivec3) VectorShuffle 278 278 0 1 2 + 280: 156(ivec3) SubgroupFirstInvocationKHR 279 + 281: 142(ptr) AccessChain 75(data) 276 86 + 282: 71(ivec4) Load 281 + 283: 71(ivec4) VectorShuffle 282 280 4 5 6 3 + Store 281 283 + 284: 6(int) Load 8(invocation) + 285: 142(ptr) AccessChain 75(data) 119 86 + 286: 71(ivec4) Load 285 + 287: 71(ivec4) SubgroupFirstInvocationKHR 286 + 288: 142(ptr) AccessChain 75(data) 284 86 + Store 288 287 + 289: 6(int) Load 8(invocation) + 290: 186(ptr) AccessChain 75(data) 77 102 78 + 291: 6(int) Load 290 + 292: 6(int) SubgroupFirstInvocationKHR 291 + 293: 186(ptr) AccessChain 75(data) 289 102 78 + Store 293 292 + 294: 6(int) Load 8(invocation) + 295: 193(ptr) AccessChain 75(data) 86 102 + 296: 20(ivec4) Load 295 + 297: 26(ivec2) VectorShuffle 296 296 0 1 + 298: 26(ivec2) SubgroupFirstInvocationKHR 297 + 299: 193(ptr) AccessChain 75(data) 294 102 + 300: 20(ivec4) Load 299 + 301: 20(ivec4) VectorShuffle 300 298 4 5 2 3 + Store 299 301 + 302: 6(int) Load 8(invocation) + 303: 193(ptr) AccessChain 75(data) 102 102 + 304: 20(ivec4) Load 303 + 305: 207(ivec3) VectorShuffle 304 304 0 1 2 + 306: 207(ivec3) SubgroupFirstInvocationKHR 305 + 307: 193(ptr) AccessChain 75(data) 302 102 + 308: 20(ivec4) Load 307 + 309: 20(ivec4) VectorShuffle 308 306 4 5 6 3 + Store 307 309 + 310: 6(int) Load 8(invocation) + 311: 193(ptr) AccessChain 75(data) 119 102 + 312: 20(ivec4) Load 311 + 313: 20(ivec4) SubgroupFirstInvocationKHR 312 + 314: 193(ptr) AccessChain 75(data) 310 102 + Store 314 313 + Branch 67 + 67: Label Return FunctionEnd diff --git a/Test/baseResults/spv.smBuiltins.frag.out b/Test/baseResults/spv.smBuiltins.frag.out new file mode 100644 index 00000000..fda06eb5 --- /dev/null +++ b/Test/baseResults/spv.smBuiltins.frag.out @@ -0,0 +1,50 @@ +spv.smBuiltins.frag +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 20 + + Capability Shader + Capability ShaderSMBuiltinsNV + Extension "SPV_NV_shader_sm_builtins" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 11 13 15 17 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_NV_shader_sm_builtins" + Name 4 "main" + Name 9 "data" + Name 11 "gl_WarpsPerSMNV" + Name 13 "gl_SMCountNV" + Name 15 "gl_WarpIDNV" + Name 17 "gl_SMIDNV" + Decorate 9(data) Location 0 + Decorate 11(gl_WarpsPerSMNV) Flat + Decorate 11(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV + Decorate 13(gl_SMCountNV) Flat + Decorate 13(gl_SMCountNV) BuiltIn SMCountNV + Decorate 15(gl_WarpIDNV) Flat + Decorate 15(gl_WarpIDNV) BuiltIn WarpIDNV + Decorate 17(gl_SMIDNV) Flat + Decorate 17(gl_SMIDNV) BuiltIn SMIDNV + 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_WarpsPerSMNV): 10(ptr) Variable Input +13(gl_SMCountNV): 10(ptr) Variable Input + 15(gl_WarpIDNV): 10(ptr) Variable Input + 17(gl_SMIDNV): 10(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 12: 6(int) Load 11(gl_WarpsPerSMNV) + 14: 6(int) Load 13(gl_SMCountNV) + 16: 6(int) Load 15(gl_WarpIDNV) + 18: 6(int) Load 17(gl_SMIDNV) + 19: 7(ivec4) CompositeConstruct 12 14 16 18 + Store 9(data) 19 + Return + FunctionEnd diff --git a/Test/baseResults/spv.smBuiltins.vert.out b/Test/baseResults/spv.smBuiltins.vert.out new file mode 100644 index 00000000..8423e5b8 --- /dev/null +++ b/Test/baseResults/spv.smBuiltins.vert.out @@ -0,0 +1,62 @@ +spv.smBuiltins.vert +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 29 + + Capability Shader + Capability ShaderSMBuiltinsNV + Extension "SPV_NV_shader_sm_builtins" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 15 18 20 22 24 + Source GLSL 450 + SourceExtension "GL_NV_shader_sm_builtins" + Name 4 "main" + Name 9 "Output" + MemberName 9(Output) 0 "result" + Name 11 "" + Name 15 "gl_VertexIndex" + Name 18 "gl_WarpsPerSMNV" + Name 20 "gl_SMCountNV" + Name 22 "gl_WarpIDNV" + Name 24 "gl_SMIDNV" + 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_WarpsPerSMNV) BuiltIn WarpsPerSMNV + Decorate 20(gl_SMCountNV) BuiltIn SMCountNV + Decorate 22(gl_WarpIDNV) BuiltIn WarpIDNV + Decorate 24(gl_SMIDNV) BuiltIn SMIDNV + 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_WarpsPerSMNV): 17(ptr) Variable Input +20(gl_SMCountNV): 17(ptr) Variable Input + 22(gl_WarpIDNV): 17(ptr) Variable Input + 24(gl_SMIDNV): 17(ptr) Variable Input + 27: 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_WarpsPerSMNV) + 21: 6(int) Load 20(gl_SMCountNV) + 23: 6(int) Load 22(gl_WarpIDNV) + 25: 6(int) Load 24(gl_SMIDNV) + 26: 7(ivec4) CompositeConstruct 19 21 23 25 + 28: 27(ptr) AccessChain 11 13 16 + Store 28 26 + Return + FunctionEnd diff --git a/Test/baseResults/spv.specConstArrayCheck.vert.out b/Test/baseResults/spv.specConstArrayCheck.vert.out new file mode 100755 index 00000000..d9b0779f --- /dev/null +++ b/Test/baseResults/spv.specConstArrayCheck.vert.out @@ -0,0 +1,6 @@ +spv.specConstArrayCheck.vert +ERROR: 0:13: '[' : array index out of range '6' +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index 0d47dce7..931ba8d8 100644 --- a/Test/baseResults/spv.specConstant.vert.out +++ b/Test/baseResults/spv.specConstant.vert.out @@ -11,7 +11,7 @@ spv.specConstant.vert Source GLSL 400 Name 4 "main" Name 9 "arraySize" - Name 14 "foo(vf4[s2765];" + Name 14 "foo(vf4[s2769];" Name 13 "p" Name 17 "builtin_spec_constant(" Name 20 "color" @@ -102,10 +102,10 @@ spv.specConstant.vert Store 20(color) 46 48: 10 Load 22(ucol) Store 47(param) 48 - 49: 2 FunctionCall 14(foo(vf4[s2765];) 47(param) + 49: 2 FunctionCall 14(foo(vf4[s2769];) 47(param) Return FunctionEnd -14(foo(vf4[s2765];): 2 Function None 12 +14(foo(vf4[s2769];): 2 Function None 12 13(p): 11(ptr) FunctionParameter 15: Label 54: 24(ptr) AccessChain 53(dupUcol) 23 diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out index 03b20f95..43afff97 100644 --- a/Test/baseResults/spv.stereoViewRendering.tesc.out +++ b/Test/baseResults/spv.stereoViewRendering.tesc.out @@ -1,8 +1,7 @@ spv.stereoViewRendering.tesc -Validation failed // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 38 +// Id's are bound by 42 Capability Geometry Capability Tessellation @@ -14,7 +13,7 @@ Validation failed Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 4 "main" 16 18 31 37 + EntryPoint TessellationControl 4 "main" 16 18 31 41 ExecutionMode 4 OutputVertices 4 Source GLSL 450 SourceExtension "GL_NV_stereo_view_rendering" @@ -32,7 +31,7 @@ Validation failed MemberName 27(gl_PerVertex) 3 "gl_CullDistance" MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV" Name 31 "gl_in" - Name 37 "gl_Layer" + Name 41 "gl_Layer" MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV Decorate 12(gl_PerVertex) Block @@ -41,10 +40,11 @@ Validation failed MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance + MemberDecorate 27(gl_PerVertex) 4 BuiltIn SecondaryPositionNV Decorate 27(gl_PerVertex) Block - Decorate 37(gl_Layer) BuiltIn Layer - Decorate 37(gl_Layer) ViewportRelativeNV - Decorate 37(gl_Layer) SecondaryViewportRelativeNV 1 + Decorate 41(gl_Layer) BuiltIn Layer + Decorate 41(gl_Layer) ViewportRelativeNV + Decorate 41(gl_Layer) SecondaryViewportRelativeNV 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -71,8 +71,9 @@ Validation failed 30: TypePointer Input 29 31(gl_in): 30(ptr) Variable Input 32: TypePointer Input 7(fvec4) - 35: TypePointer Output 7(fvec4) - 37(gl_Layer): 22(ptr) Variable Output + 35: 8(int) Constant 4 + 39: TypePointer Output 7(fvec4) + 41(gl_Layer): 22(ptr) Variable Output 4(main): 2 Function None 3 5: Label 19: 8(int) Load 18(gl_InvocationID) @@ -81,7 +82,10 @@ Validation failed 24: 8(int) Load 18(gl_InvocationID) 33: 32(ptr) AccessChain 31(gl_in) 20 21 34: 7(fvec4) Load 33 - 36: 35(ptr) AccessChain 16(gl_out) 24 21 - Store 36 34 + 36: 32(ptr) AccessChain 31(gl_in) 20 35 + 37: 7(fvec4) Load 36 + 38: 7(fvec4) FAdd 34 37 + 40: 39(ptr) AccessChain 16(gl_out) 24 21 + Store 40 38 Return FunctionEnd diff --git a/Test/glsl.450.subgroup.frag b/Test/glsl.450.subgroup.frag index 26011ed9..61cfc8fb 100644 --- a/Test/glsl.450.subgroup.frag +++ b/Test/glsl.450.subgroup.frag @@ -226,3 +226,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.450.subgroup.geom b/Test/glsl.450.subgroup.geom index affe0453..d5d2f25f 100644 --- a/Test/glsl.450.subgroup.geom +++ b/Test/glsl.450.subgroup.geom @@ -232,3 +232,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.450.subgroup.tesc b/Test/glsl.450.subgroup.tesc index a67af25b..92cb1aef 100644 --- a/Test/glsl.450.subgroup.tesc +++ b/Test/glsl.450.subgroup.tesc @@ -231,3 +231,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.450.subgroup.tese b/Test/glsl.450.subgroup.tese index ebfd1232..bfb2b72f 100644 --- a/Test/glsl.450.subgroup.tese +++ b/Test/glsl.450.subgroup.tese @@ -230,3 +230,24 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } + +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.450.subgroup.vert b/Test/glsl.450.subgroup.vert index 0be08b52..110b1d0d 100644 --- a/Test/glsl.450.subgroup.vert +++ b/Test/glsl.450.subgroup.vert @@ -230,3 +230,24 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} + diff --git a/Test/glsl.450.subgroupBasic.comp b/Test/glsl.450.subgroupBasic.comp index 1bcd4869..7b428789 100644 --- a/Test/glsl.450.subgroupBasic.comp +++ b/Test/glsl.450.subgroupBasic.comp @@ -236,3 +236,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.460.subgroup.mesh b/Test/glsl.460.subgroup.mesh index 19a47578..1071cac8 100644 --- a/Test/glsl.460.subgroup.mesh +++ b/Test/glsl.460.subgroup.mesh @@ -291,3 +291,24 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveOrNV(ballot, parti); subgroupPartitionedExclusiveXorNV(ballot, parti); } + +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.460.subgroup.rahit b/Test/glsl.460.subgroup.rahit index 3ee73785..a1bce287 100644 --- a/Test/glsl.460.subgroup.rahit +++ b/Test/glsl.460.subgroup.rahit @@ -253,3 +253,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.460.subgroup.rcall b/Test/glsl.460.subgroup.rcall index dc7ad2e6..9c2ede88 100644 --- a/Test/glsl.460.subgroup.rcall +++ b/Test/glsl.460.subgroup.rcall @@ -241,3 +241,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.460.subgroup.rchit b/Test/glsl.460.subgroup.rchit index cbe3517a..aae5b541 100644 --- a/Test/glsl.460.subgroup.rchit +++ b/Test/glsl.460.subgroup.rchit @@ -251,3 +251,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.460.subgroup.rgen b/Test/glsl.460.subgroup.rgen index 9184e15f..a3c78c95 100644 --- a/Test/glsl.460.subgroup.rgen +++ b/Test/glsl.460.subgroup.rgen @@ -245,3 +245,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.460.subgroup.rint b/Test/glsl.460.subgroup.rint index 7a58804a..1909c5af 100644 --- a/Test/glsl.460.subgroup.rint +++ b/Test/glsl.460.subgroup.rint @@ -251,3 +251,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.460.subgroup.rmiss b/Test/glsl.460.subgroup.rmiss index 4d629d67..96c44119 100644 --- a/Test/glsl.460.subgroup.rmiss +++ b/Test/glsl.460.subgroup.rmiss @@ -245,3 +245,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/glsl.460.subgroup.task b/Test/glsl.460.subgroup.task index 84d31405..9b147f80 100644 --- a/Test/glsl.460.subgroup.task +++ b/Test/glsl.460.subgroup.task @@ -282,3 +282,23 @@ void partitioned_works(vec4 f4) subgroupPartitionedExclusiveXorNV(ballot, parti); } +// tests for NV_shader_sm_builtins +void sm_builtins_err() +{ + gl_WarpsPerSMNV; // ERROR, no extension + gl_SMCountNV; // ERROR, no extension + gl_WarpIDNV; // ERROR, no extension + gl_SMIDNV; // ERROR, no extension +} + +#ifdef GL_NV_shader_sm_builtins +#extension GL_NV_shader_sm_builtins : enable +#endif + +void sm_builtins() +{ + gl_WarpsPerSMNV; + gl_SMCountNV; + gl_WarpIDNV; + gl_SMIDNV; +} diff --git a/Test/hlsl.specConstant.frag b/Test/hlsl.specConstant.frag new file mode 100755 index 00000000..ab2a815e --- /dev/null +++ b/Test/hlsl.specConstant.frag @@ -0,0 +1,15 @@ +[[vk::constant_id(0)]] const uint index = 2; + +static const uint array[] = { 10, 20, 30, 40 }; + +float4 main( ) : SV_TARGET +{ + float4 r; + for(uint i = 0; i < array[index]; i++) + r = i; + + r += index + index; + r += 2 * index; + + return r; +} diff --git a/Test/runtests b/Test/runtests index cc343060..c50f1482 100755 --- a/Test/runtests +++ b/Test/runtests @@ -239,6 +239,13 @@ $EXE -D -E hlsl.pp.expand.frag > $TARGETDIR/hlsl.pp.expand.frag.out 2> $TARGETDI diff -b $BASEDIR/hlsl.pp.expand.frag.out $TARGETDIR/hlsl.pp.expand.frag.out || HASERROR=1 diff -b $BASEDIR/hlsl.pp.expand.frag.err $TARGETDIR/hlsl.pp.expand.frag.err || HASERROR=1 +# +# Test --nan-clamp +# +echo "Testing nan-clamp" +$EXE --nan-clamp -H --aml --amb spv.400.frag > $TARGETDIR/spv.400.frag.nanclamp.out +diff -b $BASEDIR/spv.400.frag.nanclamp.out $TARGETDIR/spv.400.frag.nanclamp.out || HASERROR=1 + # # Final checking # diff --git a/Test/spv.conditionalDemote.frag b/Test/spv.conditionalDemote.frag new file mode 100644 index 00000000..1f9b238a --- /dev/null +++ b/Test/spv.conditionalDemote.frag @@ -0,0 +1,18 @@ +#version 460 core +#extension GL_EXT_demote_to_helper_invocation : enable + +layout(set = 0, binding = 0) uniform sampler2D tex; +layout(location = 0) in vec2 coord; +layout(location = 0) out vec4 o; + +void main (void) +{ + vec4 v = texture(tex, coord); + + if (v == vec4(0.1,0.2,0.3,0.4)) + demote; + + bool x = helperInvocationEXT(); + + o = v; +} diff --git a/Test/spv.constConstruct.vert b/Test/spv.constConstruct.vert new file mode 100644 index 00000000..13d5e361 --- /dev/null +++ b/Test/spv.constConstruct.vert @@ -0,0 +1,158 @@ +#version 450 +#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_float32 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_float64 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable + +precision highp float; + +void main() +{ + float16_t(float16_t(0x1)); + float16_t(float32_t(0x2)); + float16_t(float64_t(0x3)); + float16_t(int8_t (0x4)); + float16_t(int16_t (0x5)); + float16_t(int32_t (0x6)); + float16_t(int64_t (0x7)); + float16_t(uint8_t (0x8)); + float16_t(uint16_t (0x9)); + float16_t(uint32_t (0xA)); + float16_t(uint64_t (0xB)); + float16_t(bool (0xC)); + float32_t(float16_t(0x11)); + float32_t(float32_t(0x12)); + float32_t(float64_t(0x13)); + float32_t(int8_t (0x14)); + float32_t(int16_t (0x15)); + float32_t(int32_t (0x16)); + float32_t(int64_t (0x17)); + float32_t(uint8_t (0x18)); + float32_t(uint16_t (0x19)); + float32_t(uint32_t (0x1A)); + float32_t(uint64_t (0x1B)); + float32_t(bool (0x1C)); + float64_t(float16_t(0x21)); + float64_t(float32_t(0x22)); + float64_t(float64_t(0x23)); + float64_t(int8_t (0x24)); + float64_t(int16_t (0x25)); + float64_t(int32_t (0x26)); + float64_t(int64_t (0x27)); + float64_t(uint8_t (0x28)); + float64_t(uint16_t (0x29)); + float64_t(uint32_t (0x2A)); + float64_t(uint64_t (0x2B)); + float64_t(bool (0x2C)); + int8_t(float16_t(0x31)); + int8_t(float32_t(0x32)); + int8_t(float64_t(0x33)); + int8_t(int8_t (0x34)); + int8_t(int16_t (0x35)); + int8_t(int32_t (0x36)); + int8_t(int64_t (0x37)); + int8_t(uint8_t (0x38)); + int8_t(uint16_t (0x39)); + int8_t(uint32_t (0x3A)); + int8_t(uint64_t (0x3B)); + int8_t(bool (0x3C)); + int16_t(float16_t(0x41)); + int16_t(float32_t(0x42)); + int16_t(float64_t(0x43)); + int16_t(int8_t (0x44)); + int16_t(int16_t (0x45)); + int16_t(int32_t (0x46)); + int16_t(int64_t (0x47)); + int16_t(uint8_t (0x48)); + int16_t(uint16_t (0x49)); + int16_t(uint32_t (0x4A)); + int16_t(uint64_t (0x4B)); + int16_t(bool (0x4C)); + int32_t(float16_t(0x51)); + int32_t(float32_t(0x52)); + int32_t(float64_t(0x53)); + int32_t(int8_t (0x54)); + int32_t(int16_t (0x55)); + int32_t(int32_t (0x56)); + int32_t(int64_t (0x57)); + int32_t(uint8_t (0x58)); + int32_t(uint16_t (0x59)); + int32_t(uint32_t (0x5A)); + int32_t(uint64_t (0x5B)); + int32_t(bool (0x5C)); + int64_t(float16_t(0x61)); + int64_t(float32_t(0x62)); + int64_t(float64_t(0x63)); + int64_t(int8_t (0x64)); + int64_t(int16_t (0x65)); + int64_t(int32_t (0x66)); + int64_t(int64_t (0x67)); + int64_t(uint8_t (0x68)); + int64_t(uint16_t (0x69)); + int64_t(uint32_t (0x6A)); + int64_t(uint64_t (0x6B)); + int64_t(bool (0x6C)); + uint8_t(float16_t(0x71)); + uint8_t(float32_t(0x72)); + uint8_t(float64_t(0x73)); + uint8_t(int8_t (0x74)); + uint8_t(int16_t (0x75)); + uint8_t(int32_t (0x76)); + uint8_t(int64_t (0x77)); + uint8_t(uint8_t (0x78)); + uint8_t(uint16_t (0x79)); + uint8_t(uint32_t (0x7A)); + uint8_t(uint64_t (0x7B)); + uint8_t(bool (0x7C)); + uint16_t(float16_t(0x81)); + uint16_t(float32_t(0x82)); + uint16_t(float64_t(0x83)); + uint16_t(int8_t (0x84)); + uint16_t(int16_t (0x85)); + uint16_t(int32_t (0x86)); + uint16_t(int64_t (0x87)); + uint16_t(uint8_t (0x88)); + uint16_t(uint16_t (0x89)); + uint16_t(uint32_t (0x8A)); + uint16_t(uint64_t (0x8B)); + uint16_t(bool (0x8C)); + uint32_t(float16_t(0x91)); + uint32_t(float32_t(0x92)); + uint32_t(float64_t(0x93)); + uint32_t(int8_t (0x94)); + uint32_t(int16_t (0x95)); + uint32_t(int32_t (0x96)); + uint32_t(int64_t (0x97)); + uint32_t(uint8_t (0x98)); + uint32_t(uint16_t (0x99)); + uint32_t(uint32_t (0x9A)); + uint32_t(uint64_t (0x9B)); + uint32_t(bool (0x9C)); + uint64_t(float16_t(0xA1)); + uint64_t(float32_t(0xA2)); + uint64_t(float64_t(0xA3)); + uint64_t(int8_t (0xA4)); + uint64_t(int16_t (0xA5)); + uint64_t(int32_t (0xA6)); + uint64_t(int64_t (0xA7)); + uint64_t(uint8_t (0xA8)); + uint64_t(uint16_t (0xA9)); + uint64_t(uint32_t (0xAA)); + uint64_t(uint64_t (0xAB)); + uint64_t(bool (0xAC)); + bool(float16_t(0xB1)); + bool(float32_t(0xB2)); + bool(float64_t(0xB3)); + bool(int8_t (0xB4)); + bool(int16_t (0xB5)); + bool(int32_t (0xB6)); + bool(int64_t (0xB7)); + bool(uint8_t (0xB8)); + bool(uint16_t (0xB9)); + bool(uint32_t (0xBA)); + bool(uint64_t (0xBB)); + bool(bool (0xBC)); +} diff --git a/Test/spv.demoteDisabled.frag b/Test/spv.demoteDisabled.frag new file mode 100644 index 00000000..fca702d6 --- /dev/null +++ b/Test/spv.demoteDisabled.frag @@ -0,0 +1,10 @@ +#version 460 core + +void main (void) +{ + { + int demote = 0; + demote; + } + demote; +} diff --git a/Test/spv.functionParameterTypes.frag b/Test/spv.functionParameterTypes.frag new file mode 100644 index 00000000..08c16875 --- /dev/null +++ b/Test/spv.functionParameterTypes.frag @@ -0,0 +1,20 @@ +#version 460 core +#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable + +int f(int8_t i8, + uint8_t u8, + int16_t i16, + uint16_t u16, + int64_t i64, + uint64_t u64, + float16_t f16) +{ + return 0; +} + +void main() +{ +} diff --git a/Test/spv.memoryScopeSemantics.comp b/Test/spv.memoryScopeSemantics.comp index 88f54819..037e6d7b 100644 --- a/Test/spv.memoryScopeSemantics.comp +++ b/Test/spv.memoryScopeSemantics.comp @@ -19,6 +19,7 @@ layout (binding = 7) nonprivate uniform BufferK { uint x; } bufferk; shared uint64_t atomu64; shared int64_t atomi64; layout (binding = 8) volatile buffer BufferL { uint x; } bufferl; +layout (binding = 9) buffer BufferM { volatile uint x; } bufferm; void main() @@ -60,5 +61,10 @@ void main() atomicCompSwap(atomi64, int64_t(10), int64_t(atomu64), gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire); y = bufferl.x; + atomicAdd(bufferl.x, 1); + atomicOr(bufferm.x, 2); + imageAtomicAdd(imagei, ivec2(0,0), 3); + atomicAdd(bufferu.x, 4u, gl_ScopeDevice, 0, 0); + atomicAdd(bufferu.x, 5u, gl_ScopeDevice, 0, gl_SemanticsVolatile); } diff --git a/Test/spv.memoryScopeSemantics_Error.comp b/Test/spv.memoryScopeSemantics_Error.comp index 4e18b2e0..1b856717 100644 --- a/Test/spv.memoryScopeSemantics_Error.comp +++ b/Test/spv.memoryScopeSemantics_Error.comp @@ -24,5 +24,7 @@ void main() uint origu = atomicCompSwap(atomu, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeVisible); memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeAvailable); + memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsVolatile); + atomicCompSwap(bufferi.x, 10u, 10u, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsVolatile, gl_StorageSemanticsBuffer, gl_SemanticsAcquire); } diff --git a/Test/spv.meshShaderPerViewUserDefined.mesh b/Test/spv.meshShaderPerViewUserDefined.mesh index 4a316eb2..262504dd 100644 --- a/Test/spv.meshShaderPerViewUserDefined.mesh +++ b/Test/spv.meshShaderPerViewUserDefined.mesh @@ -22,18 +22,30 @@ layout(triangles) out; layout(location=0) out block { perprimitiveNV perviewNV vec4 color1[][3]; // Implicitly sized perprimitiveNV vec4 color2[3]; - perviewNV vec4 color3[MAX_VIEWS][3]; // Explicitly sized + perviewNV vec4 color3[MAX_VIEWS][3]; // Explicitly sized vec4 color4; } b[]; -// per-view block +// per-view block attributes perviewNV layout(location=10) out perviewBlock { perprimitiveNV vec4 color5[]; // Implicitly sized perprimitiveNV vec4 color6[MAX_VIEWS][3]; // Explicitly sized - vec4 color7[][3]; // Implicitly sized - vec4 color8[MAX_VIEWS]; // Explicitly sized + vec4 color7[][3]; // Implicitly sized + vec4 color8[MAX_VIEWS]; // Explicitly sized } b2[]; +// per-view non-block attributes +perviewNV layout(location=18) out vec4 nonBlk1[MAX_VER][MAX_VIEWS]; // Explicit+Explicit +perviewNV perprimitiveNV layout(location=19) out vec4 nonBlk2[MAX_PRIM][]; // Explicit+Implicit +perviewNV layout(location=20) out vec4 nonBlk3[][MAX_VIEWS]; // Implicit+Explicit +perviewNV perprimitiveNV layout(location=21) out vec4 nonBlk4[][]; // Implicit+Implicit + +// per-view non-block array attributes +perviewNV layout(location=22) out vec4 nonBlkArr1[MAX_VER][MAX_VIEWS][2]; // Explicit+Explicit +perviewNV perprimitiveNV layout(location=24) out vec4 nonBlkArr2[MAX_PRIM][][2]; // Explicit+Implicit +perviewNV layout(location=26) out vec4 nonBlkArr3[][MAX_VIEWS][2]; // Implicit+Explicit +perviewNV perprimitiveNV layout(location=28) out vec4 nonBlkArr4[][][2]; // Implicit+Implicit + void main() { uint iid = gl_LocalInvocationID.x; diff --git a/Test/spv.meshShaderPerView_Errors.mesh b/Test/spv.meshShaderPerView_Errors.mesh new file mode 100644 index 00000000..77190ef0 --- /dev/null +++ b/Test/spv.meshShaderPerView_Errors.mesh @@ -0,0 +1,32 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 +#define MAX_VIEWS gl_MaxMeshViewCountNV + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test error checks for use of incorrect per-view attributes + +// per-view block attributes +perviewNV layout(location=0) out perviewBlock { + vec4 missingInnermostDimSize1[][]; + vec4 incorrectViewDimSize1[MAX_VIEWS+1]; + vec4 missingViewDim1; +} b2[]; + +// per-view non-block attributes +perviewNV layout(location=10) out vec4 missingInnermostDimSize2[][][]; +perviewNV layout(location=11) out vec4 incorrectViewDimSize2[][MAX_VIEWS-1]; +perviewNV layout(location=12) out vec4 missingViewDim2[]; + +void main() +{ +} + diff --git a/Test/spv.multiviewPerViewAttributes.tesc b/Test/spv.multiviewPerViewAttributes.tesc index a0dd64df..117a1ad4 100644 --- a/Test/spv.multiviewPerViewAttributes.tesc +++ b/Test/spv.multiviewPerViewAttributes.tesc @@ -10,5 +10,5 @@ out gl_PerVertex { void main() { gl_out[gl_InvocationID].gl_ViewportMaskPerViewNV[0] = 1; - gl_out[gl_InvocationID].gl_PositionPerViewNV[0] = gl_in[1].gl_Position; + gl_out[gl_InvocationID].gl_PositionPerViewNV[0] = gl_in[1].gl_Position + gl_in[1].gl_PositionPerViewNV[0]; } diff --git a/Test/spv.privateVariableTypes.frag b/Test/spv.privateVariableTypes.frag new file mode 100644 index 00000000..cb6981f7 --- /dev/null +++ b/Test/spv.privateVariableTypes.frag @@ -0,0 +1,17 @@ +#version 460 core +#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16 : enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable + +int8_t i8; +uint8_t u8; +int16_t i16; +uint16_t u16; +int64_t i64; +uint64_t u64; +float16_t f16; + +void main() +{ +} diff --git a/Test/spv.smBuiltins.frag b/Test/spv.smBuiltins.frag new file mode 100644 index 00000000..b676e604 --- /dev/null +++ b/Test/spv.smBuiltins.frag @@ -0,0 +1,7 @@ +#version 450 +#extension GL_NV_shader_sm_builtins: enable +layout(location = 0) out uvec4 data; +void main (void) +{ + data = uvec4(gl_WarpsPerSMNV, gl_SMCountNV, gl_WarpIDNV, gl_SMIDNV); +} diff --git a/Test/spv.smBuiltins.vert b/Test/spv.smBuiltins.vert new file mode 100644 index 00000000..0b3db021 --- /dev/null +++ b/Test/spv.smBuiltins.vert @@ -0,0 +1,11 @@ +#version 450 +#extension GL_NV_shader_sm_builtins: enable +layout(set = 0, binding = 0, std430) buffer Output +{ + uvec4 result[]; +}; + +void main (void) +{ + result[gl_VertexIndex] = uvec4(gl_WarpsPerSMNV, gl_SMCountNV, gl_WarpIDNV, gl_SMIDNV); +} diff --git a/Test/spv.specConstArrayCheck.vert b/Test/spv.specConstArrayCheck.vert new file mode 100755 index 00000000..9f0dc0b0 --- /dev/null +++ b/Test/spv.specConstArrayCheck.vert @@ -0,0 +1,14 @@ +#version 450 + +layout(constant_id = 0) const uint a = 1; +layout(constant_id = 1) const uint b = 2; +layout(location = 0) out uint o; + +void main() { + uint arr1[a+a]; + uint arr2[b]; + o = arr1[1]; + o = arr2[1]; + o = arr1[6]; + o = arr2[6]; +} diff --git a/Test/spv.stereoViewRendering.tesc b/Test/spv.stereoViewRendering.tesc index e8cfe003..ec1076f8 100644 --- a/Test/spv.stereoViewRendering.tesc +++ b/Test/spv.stereoViewRendering.tesc @@ -15,5 +15,5 @@ layout (viewport_relative, secondary_view_offset = 1) out highp int gl_Layer; void main() { gl_out[gl_InvocationID].gl_SecondaryViewportMaskNV[0] = 1; - gl_out[gl_InvocationID].gl_SecondaryPositionNV = gl_in[1].gl_Position; + gl_out[gl_InvocationID].gl_SecondaryPositionNV = gl_in[1].gl_Position + gl_in[1].gl_SecondaryPositionNV; } diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index e4a4572b..1a99e1bb 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -275,6 +275,12 @@ enum TBuiltInVariable { EbvMeshViewIndicesNV, #endif + // sm builtins + EbvWarpsPerSM, + EbvSMCount, + EbvWarpID, + EbvSMID, + // HLSL built-ins that live only temporarily, until they get remapped // to one of the above. EbvFragDepthGreater, @@ -460,6 +466,11 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvMeshViewIndicesNV: return "MeshViewIndicesNV"; #endif + case EbvWarpsPerSM: return "WarpsPerSMNV"; + case EbvSMCount: return "SMCountNV"; + case EbvWarpID: return "WarpIDNV"; + case EbvSMID: return "SMIDNV"; + default: return "unknown built-in variable"; } } diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 1cbf4db7..989c34a7 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -514,8 +514,9 @@ public: const char* semanticName; TStorageQualifier storage : 6; - TBuiltInVariable builtIn : 8; - TBuiltInVariable declaredBuiltIn : 8; + TBuiltInVariable builtIn : 9; + TBuiltInVariable declaredBuiltIn : 9; + static_assert(EbvLast < 256, "need to increase size of TBuiltInVariable bitfields!"); TPrecisionQualifier precision : 3; bool invariant : 1; // require canonical treatment for cross-shader invariance bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index f7424e88..212a09f2 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -624,6 +624,8 @@ enum TOperator { EOpBeginInvocationInterlock, // Fragment only EOpEndInvocationInterlock, // Fragment only + EOpIsHelperInvocation, + // // Branch // @@ -634,6 +636,7 @@ enum TOperator { EOpContinue, EOpCase, EOpDefault, + EOpDemote, // Fragment only // // Constructors @@ -651,9 +654,21 @@ enum TOperator { EOpConstructBool, EOpConstructFloat, EOpConstructDouble, + // Keep vector and matrix constructors in a consistent relative order for + // TParseContext::constructBuiltIn, which converts between 8/16/32 bit + // vector constructors EOpConstructVec2, EOpConstructVec3, EOpConstructVec4, + EOpConstructMat2x2, + EOpConstructMat2x3, + EOpConstructMat2x4, + EOpConstructMat3x2, + EOpConstructMat3x3, + EOpConstructMat3x4, + EOpConstructMat4x2, + EOpConstructMat4x3, + EOpConstructMat4x4, EOpConstructDVec2, EOpConstructDVec3, EOpConstructDVec4, @@ -684,15 +699,6 @@ enum TOperator { EOpConstructU64Vec2, EOpConstructU64Vec3, EOpConstructU64Vec4, - EOpConstructMat2x2, - EOpConstructMat2x3, - EOpConstructMat2x4, - EOpConstructMat3x2, - EOpConstructMat3x3, - EOpConstructMat3x4, - EOpConstructMat4x2, - EOpConstructMat4x3, - EOpConstructMat4x4, EOpConstructDMat2x2, EOpConstructDMat2x3, EOpConstructDMat2x4, @@ -999,6 +1005,10 @@ enum TOperator { EOpWaveGetLaneIndex, // Will decompose to gl_SubgroupInvocationID. EOpWaveActiveCountBits, // Will decompose to subgroupBallotBitCount(subgroupBallot()). EOpWavePrefixCountBits, // Will decompose to subgroupBallotInclusiveBitCount(subgroupBallot()). + + // Shader Clock Ops + EOpReadClockSubgroupKHR, + EOpReadClockDeviceKHR, }; class TIntermTraverser; diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index dd6c8da0..7afa37b0 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 3226 +#define GLSLANG_PATCH_LEVEL 3321 diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp old mode 100644 new mode 100755 index b75e3efb..e0f3d55a --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -415,8 +415,8 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpEmitStreamVertex: case EOpEndStreamPrimitive: - // These don't actually fold - return 0; + // These don't fold + return nullptr; case EOpPackSnorm2x16: case EOpPackUnorm2x16: @@ -491,8 +491,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) break; } - // TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out - case EOpPackSnorm2x16: case EOpPackUnorm2x16: case EOpPackHalf2x16: @@ -510,7 +508,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpDeterminant: case EOpMatrixInverse: case EOpTranspose: - return 0; + return nullptr; default: assert(componentWise); @@ -538,7 +536,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break; case EbtUint64: newConstArray[i].setU64Const(static_cast(-static_cast(unionArray[i].getU64Const()))); break; default: - return 0; + return nullptr; } break; case EOpLogicalNot: @@ -546,7 +544,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) switch (getType().getBasicType()) { case EbtBool: newConstArray[i].setBConst(!unionArray[i].getBConst()); break; default: - return 0; + return nullptr; } break; case EOpBitwiseNot: @@ -970,7 +968,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpInt16BitsToFloat16: case EOpUint16BitsToFloat16: default: - return 0; + return nullptr; } } @@ -1201,12 +1199,17 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) newConstArray[comp].setBConst(childConstUnions[0][arg0comp] != childConstUnions[1][arg1comp]); break; case EOpMix: - if (children[2]->getAsTyped()->getBasicType() == EbtBool) - newConstArray[comp].setDConst(childConstUnions[2][arg2comp].getBConst() ? childConstUnions[1][arg1comp].getDConst() : - childConstUnions[0][arg0comp].getDConst()); - else - newConstArray[comp].setDConst(childConstUnions[0][arg0comp].getDConst() * (1.0 - childConstUnions[2][arg2comp].getDConst()) + - childConstUnions[1][arg1comp].getDConst() * childConstUnions[2][arg2comp].getDConst()); + if (!children[0]->getAsTyped()->isFloatingDomain()) + return aggrNode; + if (children[2]->getAsTyped()->getBasicType() == EbtBool) { + newConstArray[comp].setDConst(childConstUnions[2][arg2comp].getBConst() + ? childConstUnions[1][arg1comp].getDConst() + : childConstUnions[0][arg0comp].getDConst()); + } else { + newConstArray[comp].setDConst( + childConstUnions[0][arg0comp].getDConst() * (1.0 - childConstUnions[2][arg2comp].getDConst()) + + childConstUnions[1][arg1comp].getDConst() * childConstUnions[2][arg2comp].getDConst()); + } break; case EOpStep: newConstArray[comp].setDConst(childConstUnions[1][arg1comp].getDConst() < childConstUnions[0][arg0comp].getDConst() ? 0.0 : 1.0); diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index ecaf7556..a229e302 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -3838,12 +3838,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } // GL_AMD_gcn_shader - if (profile != EEsProfile && version >= 450) { + if (profile != EEsProfile && version >= 440) { commonBuiltins.append( "float cubeFaceIndexAMD(vec3);" "vec2 cubeFaceCoordAMD(vec3);" "uint64_t timeAMD();" + "in int gl_SIMDGroupSizeAMD;" "\n"); } @@ -5034,6 +5035,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void beginInvocationInterlockARB(void);" "void endInvocationInterlockARB(void);"); + stageBuiltins[EShLangFragment].append( + "bool helperInvocationEXT();" + "\n"); + #ifdef AMD_EXTENSIONS // GL_AMD_shader_explicit_vertex_parameter if (profile != EEsProfile && version >= 450) { @@ -5085,6 +5090,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + // GL_ARB_shader_clock & GL_EXT_shader_realtime_clock + if (profile != EEsProfile && version >= 450) { + commonBuiltins.append( + "uvec2 clock2x32ARB();" + "uint64_t clockARB();" + "uvec2 clockRealtime2x32EXT();" + "uint64_t clockRealtimeEXT();" + "\n"); + } + // GL_AMD_shader_fragment_mask if (profile != EEsProfile && version >= 450 && spvVersion.vulkan > 0) { stageBuiltins[EShLangFragment].append( @@ -5129,14 +5144,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } //E_SPV_NV_compute_shader_derivatives - - stageBuiltins[EShLangCompute].append(derivatives); - stageBuiltins[EShLangCompute].append(derivativeControls); - stageBuiltins[EShLangCompute].append("\n"); - - + if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) { + stageBuiltins[EShLangCompute].append(derivatives); + stageBuiltins[EShLangCompute].append(derivativeControls); + stageBuiltins[EShLangCompute].append("\n"); + } if (profile != EEsProfile && version >= 450) { - stageBuiltins[EShLangCompute].append(derivativesAndControl16bits); stageBuiltins[EShLangCompute].append(derivativesAndControl64bits); stageBuiltins[EShLangCompute].append("\n"); @@ -6141,6 +6154,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in highp uvec4 gl_SubgroupGtMask;" "in highp uvec4 gl_SubgroupLeMask;" "in highp uvec4 gl_SubgroupLtMask;" + // GL_NV_shader_sm_builtins + "in highp uint gl_WarpsPerSMNV;" + "in highp uint gl_SMCountNV;" + "in highp uint gl_WarpIDNV;" + "in highp uint gl_SMIDNV;" "\n"; const char* fragmentSubgroupDecls = "flat in mediump uint gl_SubgroupSize;" @@ -6150,6 +6168,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "flat in highp uvec4 gl_SubgroupGtMask;" "flat in highp uvec4 gl_SubgroupLeMask;" "flat in highp uvec4 gl_SubgroupLtMask;" + // GL_NV_shader_sm_builtins + "flat in highp uint gl_WarpsPerSMNV;" + "flat in highp uint gl_SMCountNV;" + "flat in highp uint gl_WarpIDNV;" + "flat in highp uint gl_SMIDNV;" "\n"; const char* computeSubgroupDecls = "in highp uint gl_NumSubgroups;" @@ -6299,6 +6322,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append("const int gl_SemanticsAcquireRelease = 0x8;\n"); commonBuiltins.append("const int gl_SemanticsMakeAvailable = 0x2000;\n"); commonBuiltins.append("const int gl_SemanticsMakeVisible = 0x4000;\n"); + commonBuiltins.append("const int gl_SemanticsVolatile = 0x8000;\n"); commonBuiltins.append("const int gl_StorageSemanticsNone = 0x0;\n"); commonBuiltins.append("const int gl_StorageSemanticsBuffer = 0x40;\n"); @@ -7737,14 +7761,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } -#ifdef AMD_EXTENSIONS - // GL_AMD_gcn_shader - if (profile != EEsProfile && version >= 450) { - snprintf(builtInConstant, maxSize, "const int gl_SIMDGroupSizeAMD = 64;"); - s.append(builtInConstant); - } -#endif - #ifdef NV_EXTENSIONS // SPV_NV_mesh_shader if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { @@ -7889,19 +7905,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("readInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setFunctionExtensions("readFirstInvocationARB", 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); - if (version >= 430) { symbolTable.setFunctionExtensions("anyInvocationARB", 1, &E_GL_ARB_shader_group_vote); symbolTable.setFunctionExtensions("allInvocationsARB", 1, &E_GL_ARB_shader_group_vote); @@ -7909,6 +7912,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } } + #ifdef AMD_EXTENSIONS if (profile != EEsProfile) { symbolTable.setFunctionExtensions("minInvocationsAMD", 1, &E_GL_AMD_shader_ballot); @@ -7943,6 +7947,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } if (profile != EEsProfile) { + symbolTable.setVariableExtensions("gl_SIMDGroupSizeAMD", 1, &E_GL_AMD_gcn_shader); + SpecialQualifier("gl_SIMDGroupSizeAMD", EvqVaryingIn, EbvSubGroupSize, symbolTable); + symbolTable.setFunctionExtensions("cubeFaceIndexAMD", 1, &E_GL_AMD_gcn_shader); symbolTable.setFunctionExtensions("cubeFaceCoordAMD", 1, &E_GL_AMD_gcn_shader); symbolTable.setFunctionExtensions("timeAMD", 1, &E_GL_AMD_gcn_shader); @@ -8088,7 +8095,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); BuiltInVariable("gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable); - if (language != EShLangVertex) { + if (language == EShLangVertex || language == EShLangGeometry) { symbolTable.setVariableExtensions("gl_in", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); symbolTable.setVariableExtensions("gl_in", "gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); @@ -8162,7 +8169,22 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); } - + + if (profile != EEsProfile) { + 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 ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { @@ -8181,6 +8203,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); + + // GL_NV_shader_sm_builtins + symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); + BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); + BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); + BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); + BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } break; @@ -8409,19 +8441,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_BaryCoordNV", EbvBaryCoordNV, symbolTable); BuiltInVariable("gl_BaryCoordNoPerspNV", EbvBaryCoordNoPerspNV, symbolTable); } - if (((profile != EEsProfile && version >= 450) || - (profile == EEsProfile && version >= 320)) && - language == EShLangCompute) { - symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives); - symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_NV_compute_shader_derivatives); - symbolTable.setFunctionExtensions("fwidth", 1, &E_GL_NV_compute_shader_derivatives); - symbolTable.setFunctionExtensions("dFdxFine", 1, &E_GL_NV_compute_shader_derivatives); - symbolTable.setFunctionExtensions("dFdyFine", 1, &E_GL_NV_compute_shader_derivatives); - symbolTable.setFunctionExtensions("fwidthFine", 1, &E_GL_NV_compute_shader_derivatives); - symbolTable.setFunctionExtensions("dFdxCoarse", 1, &E_GL_NV_compute_shader_derivatives); - symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives); - symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); - } #endif if ((profile != EEsProfile && version >= 450) || @@ -8434,6 +8453,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth); + symbolTable.setFunctionExtensions("clockARB", 1, &E_GL_ARB_shader_clock); + symbolTable.setFunctionExtensions("clock2x32ARB", 1, &E_GL_ARB_shader_clock); + + symbolTable.setFunctionExtensions("clockRealtimeEXT", 1, &E_GL_EXT_shader_realtime_clock); + symbolTable.setFunctionExtensions("clockRealtime2x32EXT", 1, &E_GL_EXT_shader_realtime_clock); + if (profile == EEsProfile && version < 320) { symbolTable.setVariableExtensions("gl_PrimitiveID", Num_AEP_geometry_shader, AEP_geometry_shader); symbolTable.setVariableExtensions("gl_Layer", Num_AEP_geometry_shader, AEP_geometry_shader); @@ -8582,6 +8607,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned); #endif + // GL_NV_shader_sm_builtins + symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); + BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); + BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); + BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); + BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } if (profile == EEsProfile) { @@ -8601,6 +8635,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_SemanticsAcquireRelease", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsMakeAvailable", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_SemanticsMakeVisible", 1, &E_GL_KHR_memory_scope_semantics); + symbolTable.setVariableExtensions("gl_SemanticsVolatile", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsNone", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsBuffer", 1, &E_GL_KHR_memory_scope_semantics); @@ -8608,6 +8643,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_StorageSemanticsImage", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsOutput", 1, &E_GL_KHR_memory_scope_semantics); } + + symbolTable.setFunctionExtensions("helperInvocationEXT", 1, &E_GL_EXT_demote_to_helper_invocation); break; case EShLangCompute: @@ -8686,6 +8723,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); + + // GL_NV_shader_sm_builtins + symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); + BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); + BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); + BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); + BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } if ((profile != EEsProfile && version >= 140) || @@ -8712,6 +8759,20 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("coopMatStoreNV", 1, &E_GL_NV_cooperative_matrix); symbolTable.setFunctionExtensions("coopMatMulAddNV", 1, &E_GL_NV_cooperative_matrix); +#ifdef NV_EXTENSIONS + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { + symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("fwidth", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdxFine", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdyFine", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("fwidthFine", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdxCoarse", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); + } +#endif + break; #ifdef NV_EXTENSIONS case EShLangRayGenNV: @@ -8800,6 +8861,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); + + // GL_NV_shader_sm_builtins + symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); + BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); + BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); + BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); + BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } break; @@ -8934,6 +9005,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); + + // GL_NV_shader_sm_builtins + symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); + BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); + BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); + BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); + BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } break; @@ -9024,6 +9105,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); + + // GL_NV_shader_sm_builtins + symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMCountNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_WarpIDNV", 1, &E_GL_NV_shader_sm_builtins); + symbolTable.setVariableExtensions("gl_SMIDNV", 1, &E_GL_NV_shader_sm_builtins); + BuiltInVariable("gl_WarpsPerSMNV", EbvWarpsPerSM, symbolTable); + BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); + BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); + BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } break; #endif @@ -9196,6 +9287,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("atomicCounterDecrement", EOpAtomicCounterDecrement); symbolTable.relateToOperator("atomicCounter", EOpAtomicCounter); + symbolTable.relateToOperator("clockARB", EOpReadClockSubgroupKHR); + symbolTable.relateToOperator("clock2x32ARB", EOpReadClockSubgroupKHR); + + symbolTable.relateToOperator("clockRealtimeEXT", EOpReadClockDeviceKHR); + symbolTable.relateToOperator("clockRealtime2x32EXT", EOpReadClockDeviceKHR); + if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("atomicCounterAdd", EOpAtomicCounterAdd); symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicCounterSubtract); @@ -9222,6 +9319,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("findLSB", EOpFindLSB); symbolTable.relateToOperator("findMSB", EOpFindMSB); + symbolTable.relateToOperator("helperInvocationEXT", EOpIsHelperInvocation); + if (PureOperatorBuiltins) { symbolTable.relateToOperator("imageSize", EOpImageQuerySize); symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples); @@ -9671,6 +9770,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_in", "gl_TexCoord", EbvTexCoord, symbolTable); BuiltInVariable("gl_in", "gl_FogFragCoord", EbvFogFragCoord, symbolTable); +#ifdef NV_EXTENSIONS + symbolTable.setVariableExtensions("gl_in", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering); + symbolTable.setVariableExtensions("gl_in", "gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes); + + BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable); + BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); +#endif + // extension requirements if (profile == EEsProfile) { symbolTable.setVariableExtensions("gl_in", "gl_PointSize", Num_AEP_tessellation_point_size, AEP_tessellation_point_size); diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 584d8805..1dd6dcef 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -574,24 +574,6 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped TOperator newOp = EOpNull; - // Certain explicit conversions are allowed conditionally - bool arithemeticInt8Enabled = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8); -#ifdef AMD_EXTENSIONS - bool arithemeticInt16Enabled = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16) || - extensionRequested(E_GL_AMD_gpu_shader_int16); - - bool arithemeticFloat16Enabled = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16) || - extensionRequested(E_GL_AMD_gpu_shader_half_float); -#else - bool arithemeticInt16Enabled = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16); - - bool arithemeticFloat16Enabled = extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || - extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16); -#endif bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 || convertTo == EbtInt16 || convertTo == EbtUint16 || convertTo == EbtInt || convertTo == EbtUint || @@ -608,19 +590,19 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped node->getBasicType() == EbtFloat || node->getBasicType() == EbtDouble); - if (! arithemeticInt8Enabled) { + if (! getArithemeticInt8Enabled()) { if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) || ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes)) return nullptr; } - if (! arithemeticInt16Enabled) { + if (! getArithemeticInt16Enabled()) { if (((convertTo == EbtInt16 || convertTo == EbtUint16) && ! convertFromIntTypes) || ((node->getBasicType() == EbtInt16 || node->getBasicType() == EbtUint16) && ! convertToIntTypes)) return nullptr; } - if (! arithemeticFloat16Enabled) { + if (! getArithemeticFloat16Enabled()) { if ((convertTo == EbtFloat16 && ! convertFromFloatTypes) || (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) return nullptr; @@ -841,9 +823,15 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped newNode = addUnaryNode(newOp, node, node->getLoc(), newType); if (node->getAsConstantUnion()) { - TIntermTyped* folded = node->getAsConstantUnion()->fold(newOp, newType); - if (folded) - return folded; + // 8/16-bit storage extensions don't support 8/16-bit constants, so don't fold conversions + // to those types + if ((getArithemeticInt8Enabled() || !(convertTo == EbtInt8 || convertTo == EbtUint8)) && + (getArithemeticInt16Enabled() || !(convertTo == EbtInt16 || convertTo == EbtUint16)) && + (getArithemeticFloat16Enabled() || !(convertTo == EbtFloat16))) { + TIntermTyped* folded = node->getAsConstantUnion()->fold(newOp, newType); + if (folded) + return folded; + } } // Propagate specialization-constant-ness, if allowed @@ -3788,217 +3776,41 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC TConstUnionArray leftUnionArray(size); for (int i=0; i < size; i++) { - switch (promoteTo) { - case EbtFloat: - switch (node->getType().getBasicType()) { - case EbtInt: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getIConst())); - break; - case EbtUint: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getUConst())); - break; - case EbtInt64: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getI64Const())); - break; - case EbtUint64: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getU64Const())); - break; - case EbtBool: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getBConst())); - break; - case EbtFloat: - case EbtDouble: - case EbtFloat16: - leftUnionArray[i] = rightUnionArray[i]; - break; - default: - return node; - } - break; - case EbtDouble: - switch (node->getType().getBasicType()) { - case EbtInt: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getIConst())); - break; - case EbtUint: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getUConst())); - break; - case EbtInt64: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getI64Const())); - break; - case EbtUint64: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getU64Const())); - break; - case EbtBool: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getBConst())); - break; - case EbtFloat: - case EbtDouble: - case EbtFloat16: - leftUnionArray[i] = rightUnionArray[i]; - break; - default: - return node; - } - break; - case EbtFloat16: - switch (node->getType().getBasicType()) { - case EbtInt: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getIConst())); - break; - case EbtUint: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getUConst())); - break; - case EbtInt64: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getI64Const())); - break; - case EbtUint64: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getU64Const())); - break; - case EbtBool: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getBConst())); - break; - case EbtFloat: - case EbtDouble: - case EbtFloat16: - leftUnionArray[i] = rightUnionArray[i]; - break; - default: - return node; - } - break; - case EbtInt: - switch (node->getType().getBasicType()) { - case EbtInt: - leftUnionArray[i] = rightUnionArray[i]; - break; - case EbtUint: - leftUnionArray[i].setIConst(static_cast(rightUnionArray[i].getUConst())); - break; - case EbtInt64: - leftUnionArray[i].setIConst(static_cast(rightUnionArray[i].getI64Const())); - break; - case EbtUint64: - leftUnionArray[i].setIConst(static_cast(rightUnionArray[i].getU64Const())); - break; - case EbtBool: - leftUnionArray[i].setIConst(static_cast(rightUnionArray[i].getBConst())); - break; - case EbtFloat: - case EbtDouble: - case EbtFloat16: - leftUnionArray[i].setIConst(static_cast(rightUnionArray[i].getDConst())); - break; - default: - return node; - } - break; - case EbtUint: - switch (node->getType().getBasicType()) { - case EbtInt: - leftUnionArray[i].setUConst(static_cast(rightUnionArray[i].getIConst())); - break; - case EbtUint: - leftUnionArray[i] = rightUnionArray[i]; - break; - case EbtInt64: - leftUnionArray[i].setUConst(static_cast(rightUnionArray[i].getI64Const())); - break; - case EbtUint64: - leftUnionArray[i].setUConst(static_cast(rightUnionArray[i].getU64Const())); - break; - case EbtBool: - leftUnionArray[i].setUConst(static_cast(rightUnionArray[i].getBConst())); - break; - case EbtFloat: - case EbtDouble: - case EbtFloat16: - leftUnionArray[i].setUConst(static_cast(rightUnionArray[i].getDConst())); - break; - default: - return node; - } - break; - case EbtBool: - switch (node->getType().getBasicType()) { - case EbtInt: - leftUnionArray[i].setBConst(rightUnionArray[i].getIConst() != 0); - break; - case EbtUint: - leftUnionArray[i].setBConst(rightUnionArray[i].getUConst() != 0); - break; - case EbtInt64: - leftUnionArray[i].setBConst(rightUnionArray[i].getI64Const() != 0); - break; - case EbtUint64: - leftUnionArray[i].setBConst(rightUnionArray[i].getU64Const() != 0); - break; - case EbtBool: - leftUnionArray[i] = rightUnionArray[i]; - break; - case EbtFloat: - case EbtDouble: - case EbtFloat16: - leftUnionArray[i].setBConst(rightUnionArray[i].getDConst() != 0.0); - break; - default: - return node; - } - break; - case EbtInt64: - switch (node->getType().getBasicType()) { - case EbtInt: - leftUnionArray[i].setI64Const(static_cast(rightUnionArray[i].getIConst())); - break; - case EbtUint: - leftUnionArray[i].setI64Const(static_cast(rightUnionArray[i].getUConst())); - break; - case EbtInt64: - leftUnionArray[i] = rightUnionArray[i]; - break; - case EbtUint64: - leftUnionArray[i].setI64Const(static_cast(rightUnionArray[i].getU64Const())); - break; - case EbtBool: - leftUnionArray[i].setI64Const(static_cast(rightUnionArray[i].getBConst())); - break; - case EbtFloat: - case EbtDouble: - case EbtFloat16: - leftUnionArray[i].setI64Const(static_cast(rightUnionArray[i].getDConst())); - break; - default: - return node; - } - break; - case EbtUint64: - switch (node->getType().getBasicType()) { - case EbtInt: - leftUnionArray[i].setU64Const(static_cast(rightUnionArray[i].getIConst())); - break; - case EbtUint: - leftUnionArray[i].setU64Const(static_cast(rightUnionArray[i].getUConst())); - break; - case EbtInt64: - leftUnionArray[i].setU64Const(static_cast(rightUnionArray[i].getI64Const())); - break; - case EbtUint64: - leftUnionArray[i] = rightUnionArray[i]; - break; - case EbtBool: - leftUnionArray[i].setU64Const(static_cast(rightUnionArray[i].getBConst())); - break; - case EbtFloat: - case EbtDouble: - case EbtFloat16: - leftUnionArray[i].setU64Const(static_cast(rightUnionArray[i].getDConst())); - break; - default: - return node; - } - break; - default: - return node; + +#define PROMOTE(Set, CType, Get) leftUnionArray[i].Set(static_cast(rightUnionArray[i].Get())) +#define PROMOTE_TO_BOOL(Get) leftUnionArray[i].setBConst(rightUnionArray[i].Get() != 0) + +#define TO_ALL(Get) \ + switch (promoteTo) { \ + case EbtFloat16: PROMOTE(setDConst, double, Get); break; \ + case EbtFloat: PROMOTE(setDConst, double, Get); break; \ + case EbtDouble: PROMOTE(setDConst, double, Get); break; \ + case EbtInt8: PROMOTE(setI8Const, char, Get); break; \ + case EbtInt16: PROMOTE(setI16Const, short, Get); break; \ + case EbtInt: PROMOTE(setIConst, int, Get); break; \ + case EbtInt64: PROMOTE(setI64Const, long long, Get); break; \ + case EbtUint8: PROMOTE(setU8Const, unsigned char, Get); break; \ + case EbtUint16: PROMOTE(setU16Const, unsigned short, Get); break; \ + case EbtUint: PROMOTE(setUConst, unsigned int, Get); break; \ + case EbtUint64: PROMOTE(setU64Const, unsigned long long, Get); break; \ + case EbtBool: PROMOTE_TO_BOOL(Get); break; \ + default: return node; \ + } + + switch (node->getType().getBasicType()) { + case EbtFloat16: TO_ALL(getDConst); break; + case EbtFloat: TO_ALL(getDConst); break; + case EbtDouble: TO_ALL(getDConst); break; + case EbtInt8: TO_ALL(getI8Const); break; + case EbtInt16: TO_ALL(getI16Const); break; + case EbtInt: TO_ALL(getIConst); break; + case EbtInt64: TO_ALL(getI64Const); break; + case EbtUint8: TO_ALL(getU8Const); break; + case EbtUint16: TO_ALL(getU16Const); break; + case EbtUint: TO_ALL(getUConst); break; + case EbtUint64: TO_ALL(getU64Const); break; + case EbtBool: TO_ALL(getBConst); break; + default: return node; } } diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index c9ddaead..e0de1a4a 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -254,11 +254,17 @@ void TParseContextBase::trackLinkage(TSymbol& symbol) // Give an error if not. void TParseContextBase::checkIndex(const TSourceLoc& loc, const TType& type, int& index) { + const auto sizeIsSpecializationExpression = [&type]() { + return type.containsSpecializationSize() && + type.getArraySizes()->getOuterNode() != nullptr && + type.getArraySizes()->getOuterNode()->getAsSymbolNode() == nullptr; }; + if (index < 0) { error(loc, "", "[", "index out of range '%d'", index); index = 0; } else if (type.isArray()) { - if (type.isSizedArray() && index >= type.getOuterArraySize()) { + if (type.isSizedArray() && !sizeIsSpecializationExpression() && + index >= type.getOuterArraySize()) { error(loc, "", "[", "array index out of range '%d'", index); index = type.getOuterArraySize() - 1; } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 7b0f0660..6df25f0e 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1165,8 +1165,9 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction error(arguments->getLoc(), message, "readonly", ""); if (argQualifier.writeonly && ! formalQualifier.writeonly) error(arguments->getLoc(), message, "writeonly", ""); - if (!builtIn && argQualifier.restrict && ! formalQualifier.restrict) - error(arguments->getLoc(), message, "restrict", ""); + // Don't check 'restrict', it is different than the rest: + // "...but only restrict can be taken away from a calling argument, by a formal parameter that + // lacks the restrict qualifier..." } if (!builtIn && argQualifier.layoutFormat != formalQualifier.layoutFormat) { // we have mismatched formats, which should only be allowed if writeonly @@ -1640,6 +1641,7 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& const int gl_SemanticsAcquireRelease = 0x8; const int gl_SemanticsMakeAvailable = 0x2000; const int gl_SemanticsMakeVisible = 0x4000; + const int gl_SemanticsVolatile = 0x8000; //const int gl_StorageSemanticsNone = 0x0; const int gl_StorageSemanticsBuffer = 0x40; @@ -1729,7 +1731,8 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& gl_SemanticsRelease | gl_SemanticsAcquireRelease | gl_SemanticsMakeAvailable | - gl_SemanticsMakeVisible))) { + gl_SemanticsMakeVisible | + gl_SemanticsVolatile))) { error(loc, "Invalid semantics value", fnCandidate.getName().c_str(), ""); } if (((storageClassSemantics | storageClassSemantics2) & ~(gl_StorageSemanticsBuffer | @@ -1781,7 +1784,16 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& error(loc, "gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } - + if ((semantics & gl_SemanticsVolatile) && + (callNode.getOp() == EOpMemoryBarrier || callNode.getOp() == EOpBarrier)) { + error(loc, "gl_SemanticsVolatile must not be used with memoryBarrier or controlBarrier", + fnCandidate.getName().c_str(), ""); + } + if ((callNode.getOp() == EOpAtomicCompSwap || callNode.getOp() == EOpImageAtomicCompSwap) && + ((semantics ^ semantics2) & gl_SemanticsVolatile)) { + error(loc, "semEqual and semUnequal must either both include gl_SemanticsVolatile or neither", + fnCandidate.getName().c_str(), ""); + } } @@ -3964,23 +3976,30 @@ bool TParseContext::isRuntimeLength(const TIntermTyped& base) const } #ifdef NV_EXTENSIONS -// Fix mesh view output array dimension -void TParseContext::resizeMeshViewDimension(const TSourceLoc& loc, TType& type) +// Check if mesh perviewNV attributes have a view dimension +// and resize it to gl_MaxMeshViewCountNV when implicitly sized. +void TParseContext::checkAndResizeMeshViewDim(const TSourceLoc& loc, TType& type, bool isBlockMember) { // see if member is a per-view attribute - if (type.getQualifier().isPerView()) { - // since we don't have the maxMeshViewCountNV set during parsing builtins, we hardcode the value - int maxViewCount = parsingBuiltins ? 4 : resources.maxMeshViewCountNV; + if (!type.getQualifier().isPerView()) + return; - if (! type.isArray()) { - error(loc, "requires an view array dimension", "perviewNV", ""); - } - else if (!type.isUnsizedArray() && type.getOuterArraySize() != maxViewCount) { + if ((isBlockMember && type.isArray()) || (!isBlockMember && type.isArrayOfArrays())) { + // since we don't have the maxMeshViewCountNV set during parsing builtins, we hardcode the value. + int maxViewCount = parsingBuiltins ? 4 : resources.maxMeshViewCountNV; + // For block members, outermost array dimension is the view dimension. + // For non-block members, outermost array dimension is the vertex/primitive dimension + // and 2nd outermost is the view dimension. + int viewDim = isBlockMember ? 0 : 1; + int viewDimSize = type.getArraySizes()->getDimSize(viewDim); + + if (viewDimSize != UnsizedArraySize && viewDimSize != maxViewCount) error(loc, "mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized", "[]", ""); - } - else if (type.isUnsizedArray()) { - type.changeOuterArraySize(maxViewCount); - } + else if (viewDimSize == UnsizedArraySize) + type.getArraySizes()->setDimSize(viewDim, maxViewCount); + } + else { + error(loc, "requires a view array dimension", "perviewNV", ""); } } #endif @@ -6415,6 +6434,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden transparentOpaqueCheck(loc, type, identifier); #ifdef NV_EXTENSIONS accStructNVCheck(loc, type, identifier); + checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false); #endif if (type.getQualifier().storage == EvqConst && type.containsBasicType(EbtReference)) { error(loc, "variables with reference type can't have qualifier 'const'", "qualifier", ""); @@ -6936,6 +6956,16 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructF16Mat4x4: case EOpConstructFloat16: basicOp = EOpConstructFloat16; + // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // so construct a 32-bit type and convert + if (!intermediate.getArithemeticFloat16Enabled()) { + TType tempType(EbtFloat, EvqTemporary, type.getVectorSize()); + newNode = node; + if (tempType != newNode->getType()) + newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructVec2 + op - EOpConstructF16Vec2), tempType, node->getLoc()); + newNode = intermediate.addConversion(EbtFloat16, newNode); + return newNode; + } break; case EOpConstructI8Vec2: @@ -6943,6 +6973,16 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructI8Vec4: case EOpConstructInt8: basicOp = EOpConstructInt8; + // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // so construct a 32-bit type and convert + if (!intermediate.getArithemeticInt8Enabled()) { + TType tempType(EbtInt, EvqTemporary, type.getVectorSize()); + newNode = node; + if (tempType != newNode->getType()) + newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructIVec2 + op - EOpConstructI8Vec2), tempType, node->getLoc()); + newNode = intermediate.addConversion(EbtInt8, newNode); + return newNode; + } break; case EOpConstructU8Vec2: @@ -6950,6 +6990,16 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructU8Vec4: case EOpConstructUint8: basicOp = EOpConstructUint8; + // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // so construct a 32-bit type and convert + if (!intermediate.getArithemeticInt8Enabled()) { + TType tempType(EbtUint, EvqTemporary, type.getVectorSize()); + newNode = node; + if (tempType != newNode->getType()) + newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructUVec2 + op - EOpConstructU8Vec2), tempType, node->getLoc()); + newNode = intermediate.addConversion(EbtUint8, newNode); + return newNode; + } break; case EOpConstructI16Vec2: @@ -6957,6 +7007,16 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructI16Vec4: case EOpConstructInt16: basicOp = EOpConstructInt16; + // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // so construct a 32-bit type and convert + if (!intermediate.getArithemeticInt16Enabled()) { + TType tempType(EbtInt, EvqTemporary, type.getVectorSize()); + newNode = node; + if (tempType != newNode->getType()) + newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructIVec2 + op - EOpConstructI16Vec2), tempType, node->getLoc()); + newNode = intermediate.addConversion(EbtInt16, newNode); + return newNode; + } break; case EOpConstructU16Vec2: @@ -6964,6 +7024,16 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructU16Vec4: case EOpConstructUint16: basicOp = EOpConstructUint16; + // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // so construct a 32-bit type and convert + if (!intermediate.getArithemeticInt16Enabled()) { + TType tempType(EbtUint, EvqTemporary, type.getVectorSize()); + newNode = node; + if (tempType != newNode->getType()) + newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructUVec2 + op - EOpConstructU16Vec2), tempType, node->getLoc()); + newNode = intermediate.addConversion(EbtUint16, newNode); + return newNode; + } break; case EOpConstructIVec2: @@ -7280,7 +7350,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con #ifdef NV_EXTENSIONS if (memberWithPerViewQualifier) { for (unsigned int member = 0; member < typeList.size(); ++member) { - resizeMeshViewDimension(typeList[member].loc, *typeList[member].type); + checkAndResizeMeshViewDim(typeList[member].loc, *typeList[member].type, /*isBlockMember*/ true); } } #endif diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 04ede1e3..3619437c 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -429,7 +429,7 @@ public: // Determine loop control from attributes void handleLoopAttributes(const TAttributes& attributes, TIntermNode*); - void resizeMeshViewDimension(const TSourceLoc&, TType&); + void checkAndResizeMeshViewDim(const TSourceLoc&, TType&, bool isBlockMember); protected: void nonInitConstCheck(const TSourceLoc&, TString& identifier, TType& type); diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 482f6ba2..119b0bc1 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -356,6 +356,7 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["default"] = DEFAULT; (*KeywordMap)["if"] = IF; (*KeywordMap)["else"] = ELSE; + (*KeywordMap)["demote"] = DEMOTE; (*KeywordMap)["discard"] = DISCARD; (*KeywordMap)["return"] = RETURN; (*KeywordMap)["void"] = VOID; @@ -1621,6 +1622,12 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); + case DEMOTE: + if (parseContext.extensionTurnedOn(E_GL_EXT_demote_to_helper_invocation)) + return keyword; + else + return identifierOrType(); + default: parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc); return 0; diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 80f577f8..b595b865 100755 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1791,6 +1791,7 @@ void TShader::setUniformLocationBase(int base) void TShader::setHlslIoMapping(bool hlslIoMap) { intermediate->setHlslIoMapping(hlslIoMap); } void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); } void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); } +void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } void TShader::setResourceSetBinding(const std::vector& base) { intermediate->setResourceSetBinding(base); } void TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { intermediate->setTextureSamplerTransformMode(mode); } @@ -1982,7 +1983,7 @@ const char* TProgram::getInfoDebugLog() bool TProgram::buildReflection(int opts) { - if (! linked || reflection) + if (! linked || reflection != nullptr) return false; int firstStage = EShLangVertex, lastStage = EShLangFragment; @@ -2012,9 +2013,8 @@ bool TProgram::buildReflection(int opts) return true; } -unsigned TProgram::getLocalSize(int dim) const { return reflection->getLocalSize(dim); } -int TProgram::getReflectionIndex(const char* name) const { return reflection->getIndex(name); } - +unsigned TProgram::getLocalSize(int dim) const { return reflection->getLocalSize(dim); } +int TProgram::getReflectionIndex(const char* name) const { return reflection->getIndex(name); } int TProgram::getNumUniformVariables() const { return reflection->getNumUniforms(); } const TObjectReflection& TProgram::getUniform(int index) const { return reflection->getUniform(index); } int TProgram::getNumUniformBlocks() const { return reflection->getNumUniformBlocks(); } @@ -2029,8 +2029,7 @@ int TProgram::getNumBufferBlocks() const { return r const TObjectReflection& TProgram::getBufferBlock(int index) const { return reflection->getStorageBufferBlock(index); } int TProgram::getNumAtomicCounters() const { return reflection->getNumAtomicCounters(); } const TObjectReflection& TProgram::getAtomicCounter(int index) const { return reflection->getAtomicCounter(index); } - -void TProgram::dumpReflection() { reflection->dump(); } +void TProgram::dumpReflection() { if (reflection != nullptr) reflection->dump(); } // // I/O mapping implementation. diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 6c97da16..e2519188 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -188,6 +188,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_ARB_post_depth_coverage] = EBhDisable; extensionBehavior[E_GL_ARB_shader_viewport_layer_array] = EBhDisable; extensionBehavior[E_GL_ARB_fragment_shader_interlock] = EBhDisable; + extensionBehavior[E_GL_ARB_shader_clock] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable; @@ -211,6 +212,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_fragment_invocation_density] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference2] = EBhDisable; + extensionBehavior[E_GL_EXT_demote_to_helper_invocation] = EBhDisable; extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable; @@ -251,6 +253,7 @@ void TParseVersions::initializeExtensionBehavior() #endif extensionBehavior[E_GL_NV_cooperative_matrix] = EBhDisable; + extensionBehavior[E_GL_NV_shader_sm_builtins] = EBhDisable; // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; @@ -283,6 +286,7 @@ void TParseVersions::initializeExtensionBehavior() // EXT extensions extensionBehavior[E_GL_EXT_device_group] = EBhDisable; extensionBehavior[E_GL_EXT_multiview] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_realtime_clock] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -393,6 +397,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_fragment_invocation_density 1\n" "#define GL_EXT_buffer_reference 1\n" "#define GL_EXT_buffer_reference2 1\n" + "#define GL_EXT_demote_to_helper_invocation 1\n" // GL_KHR_shader_subgroup "#define GL_KHR_shader_subgroup_basic 1\n" @@ -405,6 +410,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_KHR_shader_subgroup_quad 1\n" "#define E_GL_EXT_shader_atomic_int64 1\n" + "#define E_GL_EXT_shader_realtime_clock 1\n" #ifdef AMD_EXTENSIONS "#define GL_AMD_shader_ballot 1\n" @@ -459,6 +465,7 @@ void TParseVersions::getPreamble(std::string& preamble) preamble += "#define GL_EXT_device_group 1\n" "#define GL_EXT_multiview 1\n" + "#define GL_NV_shader_sm_builtins 1\n" ; } diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 953d33a0..809ba746 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -142,6 +142,7 @@ const char* const E_GL_ARB_shader_stencil_export = "GL_ARB_shader_stencil 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_ARB_fragment_shader_interlock = "GL_ARB_fragment_shader_interlock"; +const char* const E_GL_ARB_shader_clock = "GL_ARB_shader_clock"; 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"; @@ -173,6 +174,8 @@ const char* const E_GL_EXT_scalar_block_layout = "GL_EXT_scalar_blo const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_invocation_density"; const char* const E_GL_EXT_buffer_reference = "GL_EXT_buffer_reference"; const char* const E_GL_EXT_buffer_reference2 = "GL_EXT_buffer_reference2"; +const char* const E_GL_EXT_demote_to_helper_invocation = "GL_EXT_demote_to_helper_invocation"; +const char* const E_GL_EXT_shader_realtime_clock = "GL_EXT_shader_realtime_clock"; // Arrays of extensions for the above viewportEXTs duplications @@ -228,6 +231,7 @@ const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]); #endif const char* const E_GL_NV_cooperative_matrix = "GL_NV_cooperative_matrix"; +const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_sm_builtins"; // AEP const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a"; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index b5691a29..97595725 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -128,7 +128,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token ATTRIBUTE VARYING %token FLOAT16_T FLOAT FLOAT32_T DOUBLE FLOAT64_T %token CONST BOOL INT UINT INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T -%token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE +%token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE DEMOTE %token BVEC2 BVEC3 BVEC4 %token IVEC2 IVEC3 IVEC4 %token UVEC2 UVEC3 UVEC4 @@ -265,7 +265,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %type declaration external_declaration %type for_init_statement compound_statement_no_new_scope %type selection_rest_statement for_rest_statement -%type iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped +%type iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped demote_statement %type single_declaration init_declarator_list %type parameter_declaration parameter_declarator parameter_type_specifier @@ -3416,6 +3416,15 @@ simple_statement | case_label { $$ = $1; } | iteration_statement { $$ = $1; } | jump_statement { $$ = $1; } + | demote_statement { $$ = $1; } + ; + +demote_statement + : DEMOTE SEMICOLON { + parseContext.requireStage($1.loc, EShLangFragment, "demote"); + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); + $$ = parseContext.intermediate.addBranch(EOpDemote, $1.loc); + } ; compound_statement diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 07feffea..a52b486f 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -154,380 +154,381 @@ extern int yydebug; 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, - NONUNIFORM = 337, - PAYLOADNV = 338, - PAYLOADINNV = 339, - HITATTRNV = 340, - CALLDATANV = 341, - CALLDATAINNV = 342, - COHERENT = 343, - VOLATILE = 344, - RESTRICT = 345, - READONLY = 346, - WRITEONLY = 347, - DEVICECOHERENT = 348, - QUEUEFAMILYCOHERENT = 349, - WORKGROUPCOHERENT = 350, - SUBGROUPCOHERENT = 351, - NONPRIVATE = 352, - DVEC2 = 353, - DVEC3 = 354, - DVEC4 = 355, - DMAT2 = 356, - DMAT3 = 357, - DMAT4 = 358, - F16VEC2 = 359, - F16VEC3 = 360, - F16VEC4 = 361, - F16MAT2 = 362, - F16MAT3 = 363, - F16MAT4 = 364, - F32VEC2 = 365, - F32VEC3 = 366, - F32VEC4 = 367, - F32MAT2 = 368, - F32MAT3 = 369, - F32MAT4 = 370, - F64VEC2 = 371, - F64VEC3 = 372, - F64VEC4 = 373, - F64MAT2 = 374, - F64MAT3 = 375, - F64MAT4 = 376, - NOPERSPECTIVE = 377, - FLAT = 378, - SMOOTH = 379, - LAYOUT = 380, - EXPLICITINTERPAMD = 381, - PERVERTEXNV = 382, - PERPRIMITIVENV = 383, - PERVIEWNV = 384, - PERTASKNV = 385, - MAT2X2 = 386, - MAT2X3 = 387, - MAT2X4 = 388, - MAT3X2 = 389, - MAT3X3 = 390, - MAT3X4 = 391, - MAT4X2 = 392, - MAT4X3 = 393, - MAT4X4 = 394, - DMAT2X2 = 395, - DMAT2X3 = 396, - DMAT2X4 = 397, - DMAT3X2 = 398, - DMAT3X3 = 399, - DMAT3X4 = 400, - DMAT4X2 = 401, - DMAT4X3 = 402, - DMAT4X4 = 403, - F16MAT2X2 = 404, - F16MAT2X3 = 405, - F16MAT2X4 = 406, - F16MAT3X2 = 407, - F16MAT3X3 = 408, - F16MAT3X4 = 409, - F16MAT4X2 = 410, - F16MAT4X3 = 411, - F16MAT4X4 = 412, - F32MAT2X2 = 413, - F32MAT2X3 = 414, - F32MAT2X4 = 415, - F32MAT3X2 = 416, - F32MAT3X3 = 417, - F32MAT3X4 = 418, - F32MAT4X2 = 419, - F32MAT4X3 = 420, - F32MAT4X4 = 421, - F64MAT2X2 = 422, - F64MAT2X3 = 423, - F64MAT2X4 = 424, - F64MAT3X2 = 425, - F64MAT3X3 = 426, - F64MAT3X4 = 427, - F64MAT4X2 = 428, - F64MAT4X3 = 429, - F64MAT4X4 = 430, - ATOMIC_UINT = 431, - ACCSTRUCTNV = 432, - FCOOPMATNV = 433, - SAMPLER1D = 434, - SAMPLER2D = 435, - SAMPLER3D = 436, - SAMPLERCUBE = 437, - SAMPLER1DSHADOW = 438, - SAMPLER2DSHADOW = 439, - SAMPLERCUBESHADOW = 440, - SAMPLER1DARRAY = 441, - SAMPLER2DARRAY = 442, - SAMPLER1DARRAYSHADOW = 443, - SAMPLER2DARRAYSHADOW = 444, - ISAMPLER1D = 445, - ISAMPLER2D = 446, - ISAMPLER3D = 447, - ISAMPLERCUBE = 448, - ISAMPLER1DARRAY = 449, - ISAMPLER2DARRAY = 450, - USAMPLER1D = 451, - USAMPLER2D = 452, - USAMPLER3D = 453, - USAMPLERCUBE = 454, - USAMPLER1DARRAY = 455, - USAMPLER2DARRAY = 456, - SAMPLER2DRECT = 457, - SAMPLER2DRECTSHADOW = 458, - ISAMPLER2DRECT = 459, - USAMPLER2DRECT = 460, - SAMPLERBUFFER = 461, - ISAMPLERBUFFER = 462, - USAMPLERBUFFER = 463, - SAMPLERCUBEARRAY = 464, - SAMPLERCUBEARRAYSHADOW = 465, - ISAMPLERCUBEARRAY = 466, - USAMPLERCUBEARRAY = 467, - SAMPLER2DMS = 468, - ISAMPLER2DMS = 469, - USAMPLER2DMS = 470, - SAMPLER2DMSARRAY = 471, - ISAMPLER2DMSARRAY = 472, - USAMPLER2DMSARRAY = 473, - SAMPLEREXTERNALOES = 474, - SAMPLEREXTERNAL2DY2YEXT = 475, - F16SAMPLER1D = 476, - F16SAMPLER2D = 477, - F16SAMPLER3D = 478, - F16SAMPLER2DRECT = 479, - F16SAMPLERCUBE = 480, - F16SAMPLER1DARRAY = 481, - F16SAMPLER2DARRAY = 482, - F16SAMPLERCUBEARRAY = 483, - F16SAMPLERBUFFER = 484, - F16SAMPLER2DMS = 485, - F16SAMPLER2DMSARRAY = 486, - F16SAMPLER1DSHADOW = 487, - F16SAMPLER2DSHADOW = 488, - F16SAMPLER1DARRAYSHADOW = 489, - F16SAMPLER2DARRAYSHADOW = 490, - F16SAMPLER2DRECTSHADOW = 491, - F16SAMPLERCUBESHADOW = 492, - F16SAMPLERCUBEARRAYSHADOW = 493, - SAMPLER = 494, - SAMPLERSHADOW = 495, - TEXTURE1D = 496, - TEXTURE2D = 497, - TEXTURE3D = 498, - TEXTURECUBE = 499, - TEXTURE1DARRAY = 500, - TEXTURE2DARRAY = 501, - ITEXTURE1D = 502, - ITEXTURE2D = 503, - ITEXTURE3D = 504, - ITEXTURECUBE = 505, - ITEXTURE1DARRAY = 506, - ITEXTURE2DARRAY = 507, - UTEXTURE1D = 508, - UTEXTURE2D = 509, - UTEXTURE3D = 510, - UTEXTURECUBE = 511, - UTEXTURE1DARRAY = 512, - UTEXTURE2DARRAY = 513, - TEXTURE2DRECT = 514, - ITEXTURE2DRECT = 515, - UTEXTURE2DRECT = 516, - TEXTUREBUFFER = 517, - ITEXTUREBUFFER = 518, - UTEXTUREBUFFER = 519, - TEXTURECUBEARRAY = 520, - ITEXTURECUBEARRAY = 521, - UTEXTURECUBEARRAY = 522, - TEXTURE2DMS = 523, - ITEXTURE2DMS = 524, - UTEXTURE2DMS = 525, - TEXTURE2DMSARRAY = 526, - ITEXTURE2DMSARRAY = 527, - UTEXTURE2DMSARRAY = 528, - F16TEXTURE1D = 529, - F16TEXTURE2D = 530, - F16TEXTURE3D = 531, - F16TEXTURE2DRECT = 532, - F16TEXTURECUBE = 533, - F16TEXTURE1DARRAY = 534, - F16TEXTURE2DARRAY = 535, - F16TEXTURECUBEARRAY = 536, - F16TEXTUREBUFFER = 537, - F16TEXTURE2DMS = 538, - F16TEXTURE2DMSARRAY = 539, - SUBPASSINPUT = 540, - SUBPASSINPUTMS = 541, - ISUBPASSINPUT = 542, - ISUBPASSINPUTMS = 543, - USUBPASSINPUT = 544, - USUBPASSINPUTMS = 545, - F16SUBPASSINPUT = 546, - F16SUBPASSINPUTMS = 547, - IMAGE1D = 548, - IIMAGE1D = 549, - UIMAGE1D = 550, - IMAGE2D = 551, - IIMAGE2D = 552, - UIMAGE2D = 553, - IMAGE3D = 554, - IIMAGE3D = 555, - UIMAGE3D = 556, - IMAGE2DRECT = 557, - IIMAGE2DRECT = 558, - UIMAGE2DRECT = 559, - IMAGECUBE = 560, - IIMAGECUBE = 561, - UIMAGECUBE = 562, - IMAGEBUFFER = 563, - IIMAGEBUFFER = 564, - UIMAGEBUFFER = 565, - IMAGE1DARRAY = 566, - IIMAGE1DARRAY = 567, - UIMAGE1DARRAY = 568, - IMAGE2DARRAY = 569, - IIMAGE2DARRAY = 570, - UIMAGE2DARRAY = 571, - IMAGECUBEARRAY = 572, - IIMAGECUBEARRAY = 573, - UIMAGECUBEARRAY = 574, - IMAGE2DMS = 575, - IIMAGE2DMS = 576, - UIMAGE2DMS = 577, - IMAGE2DMSARRAY = 578, - IIMAGE2DMSARRAY = 579, - UIMAGE2DMSARRAY = 580, - F16IMAGE1D = 581, - F16IMAGE2D = 582, - F16IMAGE3D = 583, - F16IMAGE2DRECT = 584, - F16IMAGECUBE = 585, - F16IMAGE1DARRAY = 586, - F16IMAGE2DARRAY = 587, - F16IMAGECUBEARRAY = 588, - F16IMAGEBUFFER = 589, - F16IMAGE2DMS = 590, - F16IMAGE2DMSARRAY = 591, - STRUCT = 592, - VOID = 593, - WHILE = 594, - IDENTIFIER = 595, - TYPE_NAME = 596, - FLOATCONSTANT = 597, - DOUBLECONSTANT = 598, - INT16CONSTANT = 599, - UINT16CONSTANT = 600, - INT32CONSTANT = 601, - UINT32CONSTANT = 602, - INTCONSTANT = 603, - UINTCONSTANT = 604, - INT64CONSTANT = 605, - UINT64CONSTANT = 606, - BOOLCONSTANT = 607, - FLOAT16CONSTANT = 608, - LEFT_OP = 609, - RIGHT_OP = 610, - INC_OP = 611, - DEC_OP = 612, - LE_OP = 613, - GE_OP = 614, - EQ_OP = 615, - NE_OP = 616, - AND_OP = 617, - OR_OP = 618, - XOR_OP = 619, - MUL_ASSIGN = 620, - DIV_ASSIGN = 621, - ADD_ASSIGN = 622, - MOD_ASSIGN = 623, - LEFT_ASSIGN = 624, - RIGHT_ASSIGN = 625, - AND_ASSIGN = 626, - XOR_ASSIGN = 627, - OR_ASSIGN = 628, - SUB_ASSIGN = 629, - LEFT_PAREN = 630, - RIGHT_PAREN = 631, - LEFT_BRACKET = 632, - RIGHT_BRACKET = 633, - LEFT_BRACE = 634, - RIGHT_BRACE = 635, - DOT = 636, - COMMA = 637, - COLON = 638, - EQUAL = 639, - SEMICOLON = 640, - BANG = 641, - DASH = 642, - TILDE = 643, - PLUS = 644, - STAR = 645, - SLASH = 646, - PERCENT = 647, - LEFT_ANGLE = 648, - RIGHT_ANGLE = 649, - VERTICAL_BAR = 650, - CARET = 651, - AMPERSAND = 652, - QUESTION = 653, - INVARIANT = 654, - PRECISE = 655, - HIGH_PRECISION = 656, - MEDIUM_PRECISION = 657, - LOW_PRECISION = 658, - PRECISION = 659, - PACKED = 660, - RESOURCE = 661, - SUPERP = 662 + DEMOTE = 289, + BVEC2 = 290, + BVEC3 = 291, + BVEC4 = 292, + IVEC2 = 293, + IVEC3 = 294, + IVEC4 = 295, + UVEC2 = 296, + UVEC3 = 297, + UVEC4 = 298, + I64VEC2 = 299, + I64VEC3 = 300, + I64VEC4 = 301, + U64VEC2 = 302, + U64VEC3 = 303, + U64VEC4 = 304, + I32VEC2 = 305, + I32VEC3 = 306, + I32VEC4 = 307, + U32VEC2 = 308, + U32VEC3 = 309, + U32VEC4 = 310, + I16VEC2 = 311, + I16VEC3 = 312, + I16VEC4 = 313, + U16VEC2 = 314, + U16VEC3 = 315, + U16VEC4 = 316, + I8VEC2 = 317, + I8VEC3 = 318, + I8VEC4 = 319, + U8VEC2 = 320, + U8VEC3 = 321, + U8VEC4 = 322, + VEC2 = 323, + VEC3 = 324, + VEC4 = 325, + MAT2 = 326, + MAT3 = 327, + MAT4 = 328, + CENTROID = 329, + IN = 330, + OUT = 331, + INOUT = 332, + UNIFORM = 333, + PATCH = 334, + SAMPLE = 335, + BUFFER = 336, + SHARED = 337, + NONUNIFORM = 338, + PAYLOADNV = 339, + PAYLOADINNV = 340, + HITATTRNV = 341, + CALLDATANV = 342, + CALLDATAINNV = 343, + COHERENT = 344, + VOLATILE = 345, + RESTRICT = 346, + READONLY = 347, + WRITEONLY = 348, + DEVICECOHERENT = 349, + QUEUEFAMILYCOHERENT = 350, + WORKGROUPCOHERENT = 351, + SUBGROUPCOHERENT = 352, + NONPRIVATE = 353, + DVEC2 = 354, + DVEC3 = 355, + DVEC4 = 356, + DMAT2 = 357, + DMAT3 = 358, + DMAT4 = 359, + F16VEC2 = 360, + F16VEC3 = 361, + F16VEC4 = 362, + F16MAT2 = 363, + F16MAT3 = 364, + F16MAT4 = 365, + F32VEC2 = 366, + F32VEC3 = 367, + F32VEC4 = 368, + F32MAT2 = 369, + F32MAT3 = 370, + F32MAT4 = 371, + F64VEC2 = 372, + F64VEC3 = 373, + F64VEC4 = 374, + F64MAT2 = 375, + F64MAT3 = 376, + F64MAT4 = 377, + NOPERSPECTIVE = 378, + FLAT = 379, + SMOOTH = 380, + LAYOUT = 381, + EXPLICITINTERPAMD = 382, + PERVERTEXNV = 383, + PERPRIMITIVENV = 384, + PERVIEWNV = 385, + PERTASKNV = 386, + MAT2X2 = 387, + MAT2X3 = 388, + MAT2X4 = 389, + MAT3X2 = 390, + MAT3X3 = 391, + MAT3X4 = 392, + MAT4X2 = 393, + MAT4X3 = 394, + MAT4X4 = 395, + DMAT2X2 = 396, + DMAT2X3 = 397, + DMAT2X4 = 398, + DMAT3X2 = 399, + DMAT3X3 = 400, + DMAT3X4 = 401, + DMAT4X2 = 402, + DMAT4X3 = 403, + DMAT4X4 = 404, + F16MAT2X2 = 405, + F16MAT2X3 = 406, + F16MAT2X4 = 407, + F16MAT3X2 = 408, + F16MAT3X3 = 409, + F16MAT3X4 = 410, + F16MAT4X2 = 411, + F16MAT4X3 = 412, + F16MAT4X4 = 413, + F32MAT2X2 = 414, + F32MAT2X3 = 415, + F32MAT2X4 = 416, + F32MAT3X2 = 417, + F32MAT3X3 = 418, + F32MAT3X4 = 419, + F32MAT4X2 = 420, + F32MAT4X3 = 421, + F32MAT4X4 = 422, + F64MAT2X2 = 423, + F64MAT2X3 = 424, + F64MAT2X4 = 425, + F64MAT3X2 = 426, + F64MAT3X3 = 427, + F64MAT3X4 = 428, + F64MAT4X2 = 429, + F64MAT4X3 = 430, + F64MAT4X4 = 431, + ATOMIC_UINT = 432, + ACCSTRUCTNV = 433, + FCOOPMATNV = 434, + SAMPLER1D = 435, + SAMPLER2D = 436, + SAMPLER3D = 437, + SAMPLERCUBE = 438, + SAMPLER1DSHADOW = 439, + SAMPLER2DSHADOW = 440, + SAMPLERCUBESHADOW = 441, + SAMPLER1DARRAY = 442, + SAMPLER2DARRAY = 443, + SAMPLER1DARRAYSHADOW = 444, + SAMPLER2DARRAYSHADOW = 445, + ISAMPLER1D = 446, + ISAMPLER2D = 447, + ISAMPLER3D = 448, + ISAMPLERCUBE = 449, + ISAMPLER1DARRAY = 450, + ISAMPLER2DARRAY = 451, + USAMPLER1D = 452, + USAMPLER2D = 453, + USAMPLER3D = 454, + USAMPLERCUBE = 455, + USAMPLER1DARRAY = 456, + USAMPLER2DARRAY = 457, + SAMPLER2DRECT = 458, + SAMPLER2DRECTSHADOW = 459, + ISAMPLER2DRECT = 460, + USAMPLER2DRECT = 461, + SAMPLERBUFFER = 462, + ISAMPLERBUFFER = 463, + USAMPLERBUFFER = 464, + SAMPLERCUBEARRAY = 465, + SAMPLERCUBEARRAYSHADOW = 466, + ISAMPLERCUBEARRAY = 467, + USAMPLERCUBEARRAY = 468, + SAMPLER2DMS = 469, + ISAMPLER2DMS = 470, + USAMPLER2DMS = 471, + SAMPLER2DMSARRAY = 472, + ISAMPLER2DMSARRAY = 473, + USAMPLER2DMSARRAY = 474, + SAMPLEREXTERNALOES = 475, + SAMPLEREXTERNAL2DY2YEXT = 476, + F16SAMPLER1D = 477, + F16SAMPLER2D = 478, + F16SAMPLER3D = 479, + F16SAMPLER2DRECT = 480, + F16SAMPLERCUBE = 481, + F16SAMPLER1DARRAY = 482, + F16SAMPLER2DARRAY = 483, + F16SAMPLERCUBEARRAY = 484, + F16SAMPLERBUFFER = 485, + F16SAMPLER2DMS = 486, + F16SAMPLER2DMSARRAY = 487, + F16SAMPLER1DSHADOW = 488, + F16SAMPLER2DSHADOW = 489, + F16SAMPLER1DARRAYSHADOW = 490, + F16SAMPLER2DARRAYSHADOW = 491, + F16SAMPLER2DRECTSHADOW = 492, + F16SAMPLERCUBESHADOW = 493, + F16SAMPLERCUBEARRAYSHADOW = 494, + SAMPLER = 495, + SAMPLERSHADOW = 496, + TEXTURE1D = 497, + TEXTURE2D = 498, + TEXTURE3D = 499, + TEXTURECUBE = 500, + TEXTURE1DARRAY = 501, + TEXTURE2DARRAY = 502, + ITEXTURE1D = 503, + ITEXTURE2D = 504, + ITEXTURE3D = 505, + ITEXTURECUBE = 506, + ITEXTURE1DARRAY = 507, + ITEXTURE2DARRAY = 508, + UTEXTURE1D = 509, + UTEXTURE2D = 510, + UTEXTURE3D = 511, + UTEXTURECUBE = 512, + UTEXTURE1DARRAY = 513, + UTEXTURE2DARRAY = 514, + TEXTURE2DRECT = 515, + ITEXTURE2DRECT = 516, + UTEXTURE2DRECT = 517, + TEXTUREBUFFER = 518, + ITEXTUREBUFFER = 519, + UTEXTUREBUFFER = 520, + TEXTURECUBEARRAY = 521, + ITEXTURECUBEARRAY = 522, + UTEXTURECUBEARRAY = 523, + TEXTURE2DMS = 524, + ITEXTURE2DMS = 525, + UTEXTURE2DMS = 526, + TEXTURE2DMSARRAY = 527, + ITEXTURE2DMSARRAY = 528, + UTEXTURE2DMSARRAY = 529, + F16TEXTURE1D = 530, + F16TEXTURE2D = 531, + F16TEXTURE3D = 532, + F16TEXTURE2DRECT = 533, + F16TEXTURECUBE = 534, + F16TEXTURE1DARRAY = 535, + F16TEXTURE2DARRAY = 536, + F16TEXTURECUBEARRAY = 537, + F16TEXTUREBUFFER = 538, + F16TEXTURE2DMS = 539, + F16TEXTURE2DMSARRAY = 540, + SUBPASSINPUT = 541, + SUBPASSINPUTMS = 542, + ISUBPASSINPUT = 543, + ISUBPASSINPUTMS = 544, + USUBPASSINPUT = 545, + USUBPASSINPUTMS = 546, + F16SUBPASSINPUT = 547, + F16SUBPASSINPUTMS = 548, + IMAGE1D = 549, + IIMAGE1D = 550, + UIMAGE1D = 551, + IMAGE2D = 552, + IIMAGE2D = 553, + UIMAGE2D = 554, + IMAGE3D = 555, + IIMAGE3D = 556, + UIMAGE3D = 557, + IMAGE2DRECT = 558, + IIMAGE2DRECT = 559, + UIMAGE2DRECT = 560, + IMAGECUBE = 561, + IIMAGECUBE = 562, + UIMAGECUBE = 563, + IMAGEBUFFER = 564, + IIMAGEBUFFER = 565, + UIMAGEBUFFER = 566, + IMAGE1DARRAY = 567, + IIMAGE1DARRAY = 568, + UIMAGE1DARRAY = 569, + IMAGE2DARRAY = 570, + IIMAGE2DARRAY = 571, + UIMAGE2DARRAY = 572, + IMAGECUBEARRAY = 573, + IIMAGECUBEARRAY = 574, + UIMAGECUBEARRAY = 575, + IMAGE2DMS = 576, + IIMAGE2DMS = 577, + UIMAGE2DMS = 578, + IMAGE2DMSARRAY = 579, + IIMAGE2DMSARRAY = 580, + UIMAGE2DMSARRAY = 581, + F16IMAGE1D = 582, + F16IMAGE2D = 583, + F16IMAGE3D = 584, + F16IMAGE2DRECT = 585, + F16IMAGECUBE = 586, + F16IMAGE1DARRAY = 587, + F16IMAGE2DARRAY = 588, + F16IMAGECUBEARRAY = 589, + F16IMAGEBUFFER = 590, + F16IMAGE2DMS = 591, + F16IMAGE2DMSARRAY = 592, + STRUCT = 593, + VOID = 594, + WHILE = 595, + IDENTIFIER = 596, + TYPE_NAME = 597, + FLOATCONSTANT = 598, + DOUBLECONSTANT = 599, + INT16CONSTANT = 600, + UINT16CONSTANT = 601, + INT32CONSTANT = 602, + UINT32CONSTANT = 603, + INTCONSTANT = 604, + UINTCONSTANT = 605, + INT64CONSTANT = 606, + UINT64CONSTANT = 607, + BOOLCONSTANT = 608, + FLOAT16CONSTANT = 609, + LEFT_OP = 610, + RIGHT_OP = 611, + INC_OP = 612, + DEC_OP = 613, + LE_OP = 614, + GE_OP = 615, + EQ_OP = 616, + NE_OP = 617, + AND_OP = 618, + OR_OP = 619, + XOR_OP = 620, + MUL_ASSIGN = 621, + DIV_ASSIGN = 622, + ADD_ASSIGN = 623, + MOD_ASSIGN = 624, + LEFT_ASSIGN = 625, + RIGHT_ASSIGN = 626, + AND_ASSIGN = 627, + XOR_ASSIGN = 628, + OR_ASSIGN = 629, + SUB_ASSIGN = 630, + LEFT_PAREN = 631, + RIGHT_PAREN = 632, + LEFT_BRACKET = 633, + RIGHT_BRACKET = 634, + LEFT_BRACE = 635, + RIGHT_BRACE = 636, + DOT = 637, + COMMA = 638, + COLON = 639, + EQUAL = 640, + SEMICOLON = 641, + BANG = 642, + DASH = 643, + TILDE = 644, + PLUS = 645, + STAR = 646, + SLASH = 647, + PERCENT = 648, + LEFT_ANGLE = 649, + RIGHT_ANGLE = 650, + VERTICAL_BAR = 651, + CARET = 652, + AMPERSAND = 653, + QUESTION = 654, + INVARIANT = 655, + PRECISE = 656, + HIGH_PRECISION = 657, + MEDIUM_PRECISION = 658, + LOW_PRECISION = 659, + PRECISION = 660, + PACKED = 661, + RESOURCE = 662, + SUPERP = 663 }; #endif @@ -572,7 +573,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ +#line 577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -603,7 +604,7 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -845,21 +846,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 384 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 9348 +#define YYLAST 9372 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 408 +#define YYNTOKENS 409 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 110 +#define YYNNTS 111 /* YYNRULES -- Number of rules. */ -#define YYNRULES 578 +#define YYNRULES 580 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 722 +#define YYNSTATES 725 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 662 +#define YYMAXUTOK 663 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -934,7 +935,7 @@ static const yytype_uint16 yytranslate[] = 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407 + 405, 406, 407, 408 }; #if YYDEBUG @@ -992,13 +993,14 @@ static const yytype_uint16 yyrline[] = 3193, 3199, 3205, 3211, 3217, 3223, 3228, 3244, 3249, 3254, 3262, 3262, 3273, 3273, 3283, 3286, 3299, 3321, 3348, 3352, 3358, 3363, 3374, 3377, 3383, 3392, 3395, 3401, 3405, 3406, - 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3422, 3423, 3427, - 3423, 3439, 3440, 3444, 3444, 3451, 3451, 3465, 3468, 3476, - 3484, 3495, 3496, 3500, 3503, 3509, 3516, 3520, 3528, 3532, - 3545, 3548, 3554, 3554, 3574, 3577, 3583, 3595, 3607, 3610, - 3616, 3616, 3631, 3631, 3647, 3647, 3668, 3671, 3677, 3680, - 3686, 3690, 3697, 3702, 3707, 3714, 3717, 3726, 3730, 3739, - 3742, 3745, 3753, 3753, 3775, 3781, 3784, 3789, 3792 + 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3423, 3431, + 3432, 3436, 3432, 3448, 3449, 3453, 3453, 3460, 3460, 3474, + 3477, 3485, 3493, 3504, 3505, 3509, 3512, 3518, 3525, 3529, + 3537, 3541, 3554, 3557, 3563, 3563, 3583, 3586, 3592, 3604, + 3616, 3619, 3625, 3625, 3640, 3640, 3656, 3656, 3677, 3680, + 3686, 3689, 3695, 3699, 3706, 3711, 3716, 3723, 3726, 3735, + 3739, 3748, 3751, 3754, 3762, 3762, 3784, 3790, 3793, 3798, + 3801 }; #endif @@ -1012,16 +1014,16 @@ static const char *const yytname[] = "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", - "NONUNIFORM", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", "CALLDATANV", - "CALLDATAINNV", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", - "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", + "SUBROUTINE", "DEMOTE", "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", "NONUNIFORM", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", + "CALLDATANV", "CALLDATAINNV", "COHERENT", "VOLATILE", "RESTRICT", + "READONLY", "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", @@ -1120,8 +1122,8 @@ static const char *const yytname[] = "$@3", "$@4", "struct_declaration_list", "struct_declaration", "struct_declarator_list", "struct_declarator", "initializer", "initializer_list", "declaration_statement", "statement", - "simple_statement", "compound_statement", "$@5", "$@6", - "statement_no_new_scope", "statement_scoped", "$@7", "$@8", + "simple_statement", "demote_statement", "compound_statement", "$@5", + "$@6", "statement_no_new_scope", "statement_scoped", "$@7", "$@8", "compound_statement_no_new_scope", "statement_list", "expression_statement", "selection_statement", "selection_statement_nonattributed", "selection_rest_statement", @@ -1180,16 +1182,16 @@ static const yytype_uint16 yytoknum[] = 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662 + 655, 656, 657, 658, 659, 660, 661, 662, 663 }; # endif -#define YYPACT_NINF -659 +#define YYPACT_NINF -657 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-659))) + (!!((Yystate) == (-657))) -#define YYTABLE_NINF -524 +#define YYTABLE_NINF -526 #define yytable_value_is_error(Yytable_value) \ 0 @@ -1198,79 +1200,79 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 3535, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -331, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -324, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -319, -659, -659, -659, -659, -659, - -659, -659, -659, -256, -659, -314, -351, -309, -306, 5942, - -257, -659, -217, -659, -659, -659, -659, 4338, -659, -659, - -659, -659, -241, -659, -659, 721, -659, -659, -204, -71, - -219, -659, 9007, -349, -659, -659, -215, -659, 5942, -659, - -659, -659, 5942, -178, -172, -659, -337, -267, -659, -659, - -659, 8237, -207, -659, -659, -659, -659, -341, -659, -211, - -330, -659, -659, 5942, -210, 6697, -659, -322, 1123, -659, - -659, -659, -659, -207, -328, -659, 7082, -304, -659, -163, - -659, -252, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -659, -659, -659, 8237, 8237, 8237, -659, -659, - -659, -659, -659, -659, -303, -659, -659, -659, -196, -299, - 8622, -194, -659, 8237, -659, -659, -355, -195, -659, -157, - 8237, -659, -71, 5942, 5942, -155, 4739, -659, -659, -659, - -659, -242, -236, -249, -335, -206, -191, -187, -209, -149, - -150, -333, -162, 7467, -659, -170, -168, -659, -154, -153, - -167, 7852, -152, 8237, -159, -148, -151, -160, -659, -659, - -274, -659, -659, -251, -659, -351, -147, -144, -659, -659, - -659, -659, 1525, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -19, -195, 7082, -302, 7082, -659, -659, 7082, - 5942, -659, -115, -659, -659, -659, -292, -659, -659, 8237, - -108, -659, -659, 8237, -143, -659, -659, -659, 8237, -659, - -659, -659, -659, -659, 5140, -155, -207, -250, -659, -659, - -659, 8237, 8237, 8237, 8237, 8237, 8237, 8237, 8237, 8237, - 8237, 8237, 8237, 8237, 8237, 8237, 8237, 8237, 8237, 8237, - -659, -659, -659, -142, -659, -659, 1927, -659, 8237, -659, - -659, -245, 8237, -226, -659, -659, -106, -659, 1927, -659, - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - 8237, 8237, -659, -659, -659, -659, -659, -659, -659, 7082, - -659, -238, -659, 5541, -659, -659, -141, -140, -659, -659, - -659, -659, -244, -195, -155, -659, -659, -659, -659, -242, - -242, -236, -236, -249, -249, -249, -249, -335, -335, -206, - -191, -187, -209, -149, -150, 8237, -659, -104, 3133, -263, - -659, -260, -659, 3937, -136, -297, -659, 1927, -659, -659, - -659, -659, 6312, -659, -659, -659, -659, -224, -135, -659, - -659, 3937, -138, -659, -140, -97, 5942, -132, 8237, -133, - -106, -134, -659, -659, 8237, 8237, -659, -137, -129, 224, - -128, 2731, -659, -127, -131, 2329, -126, -659, -659, -659, - -659, -255, 8237, 2329, -138, -659, -659, 1927, 7082, -659, - -659, -659, -659, -130, -140, -659, -659, 1927, -123, -659, - -659, -659 + 3545, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -328, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -307, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -318, -657, -657, -657, -657, -657, + -657, -657, -657, -259, -657, -320, -286, -236, -251, 5958, + -299, -657, -191, -657, -657, -657, -657, 4350, -657, -657, + -657, -657, -228, -657, -657, 724, -657, -657, -176, -72, + -212, -657, 9030, -352, -657, -657, -211, -657, 5958, -657, + -657, -657, 5958, -171, -169, -657, -324, -285, -657, -657, + -657, 8258, -205, -657, -657, -657, -657, -281, -657, -210, + -280, -657, -657, 5958, -208, 6714, -657, -345, 1127, -657, + -657, -657, -657, -205, -325, -657, 7100, -322, -657, -167, + -657, -271, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -657, 8258, 8258, 8258, -657, -657, + -657, -657, -657, -657, -327, -657, -657, -657, -198, -278, + 8644, -196, -657, 8258, -657, -657, -355, -197, -657, -159, + 8258, -657, -72, 5958, 5958, -158, 4752, -657, -657, -657, + -657, -245, -305, -291, -323, -209, -214, -207, -204, -178, + -177, -340, -192, 7486, -657, -193, -190, -657, -187, -182, + -189, 7872, -181, 8258, -186, -185, -174, -179, -172, -657, + -657, -293, -657, -657, -253, -657, -286, -165, -164, -657, + -657, -657, -657, -657, 1530, -657, -657, -657, -657, -657, + -657, -657, -657, -657, -19, -197, 7100, -292, 7100, -657, + -657, 7100, 5958, -657, -141, -657, -657, -657, -273, -657, + -657, 8258, -137, -657, -657, 8258, -163, -657, -657, -657, + 8258, -657, -657, -657, -657, -657, 5154, -158, -205, -252, + -657, -657, -657, 8258, 8258, 8258, 8258, 8258, 8258, 8258, + 8258, 8258, 8258, 8258, 8258, 8258, 8258, 8258, 8258, 8258, + 8258, 8258, -657, -657, -657, -166, -657, -657, 1933, -657, + 8258, -657, -657, -246, 8258, -229, -657, -657, -657, -136, + -657, 1933, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -657, 8258, 8258, -657, -657, -657, -657, -657, + -657, -657, 7100, -657, -232, -657, 5556, -657, -657, -142, + -145, -657, -657, -657, -657, -244, -197, -158, -657, -657, + -657, -657, -245, -245, -305, -305, -291, -291, -291, -291, + -323, -323, -209, -214, -207, -204, -178, -177, 8258, -657, + -101, 3142, -269, -657, -261, -657, 3948, -135, -344, -657, + 1933, -657, -657, -657, -657, 6328, -657, -657, -657, -657, + -227, -134, -657, -657, 3948, -140, -657, -145, -97, 5958, + -132, 8258, -133, -136, -131, -657, -657, 8258, 8258, -657, + -139, -129, 224, -128, 2739, -657, -127, -130, 2336, -126, + -657, -657, -657, -657, -254, 8258, 2336, -140, -657, -657, + 1933, 7100, -657, -657, -657, -657, -124, -145, -657, -657, + 1933, -125, -657, -657, -657 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1310,14 +1312,14 @@ static const yytype_uint16 yydefact[] = 444, 445, 446, 448, 449, 450, 452, 453, 454, 456, 457, 458, 460, 461, 462, 464, 465, 466, 468, 469, 470, 472, 473, 431, 435, 439, 443, 447, 455, 459, - 463, 451, 467, 471, 0, 199, 486, 571, 131, 146, - 487, 488, 489, 0, 570, 0, 572, 0, 108, 107, + 463, 451, 467, 471, 0, 199, 486, 573, 131, 146, + 487, 488, 489, 0, 572, 0, 574, 0, 108, 107, 0, 119, 124, 153, 152, 150, 154, 0, 147, 149, - 155, 129, 195, 151, 485, 0, 567, 569, 0, 0, + 155, 129, 195, 151, 485, 0, 569, 571, 0, 0, 0, 492, 0, 0, 96, 93, 0, 106, 0, 115, 109, 117, 0, 118, 0, 94, 125, 0, 99, 148, - 130, 0, 188, 194, 1, 568, 186, 0, 145, 143, - 0, 141, 490, 0, 0, 0, 97, 0, 0, 573, + 130, 0, 188, 194, 1, 570, 186, 0, 145, 143, + 0, 141, 490, 0, 0, 0, 97, 0, 0, 575, 110, 114, 116, 112, 120, 111, 0, 126, 102, 0, 100, 0, 2, 12, 13, 10, 11, 4, 5, 6, 7, 8, 9, 15, 14, 0, 0, 0, 42, 41, @@ -1325,64 +1327,66 @@ static const yytype_uint16 yydefact[] = 29, 0, 197, 0, 35, 33, 0, 189, 184, 0, 0, 140, 0, 0, 0, 0, 0, 494, 95, 190, 44, 48, 51, 54, 59, 62, 64, 66, 68, 70, - 72, 74, 0, 0, 98, 0, 0, 552, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 518, 527, 531, - 44, 77, 90, 0, 507, 0, 155, 129, 510, 529, - 509, 508, 0, 511, 512, 533, 513, 540, 514, 515, - 548, 516, 0, 113, 0, 121, 0, 502, 128, 0, - 0, 104, 0, 101, 37, 38, 0, 21, 22, 0, - 0, 27, 26, 0, 199, 30, 32, 39, 0, 196, - 187, 92, 144, 142, 0, 0, 500, 0, 498, 493, - 495, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 74, 0, 0, 98, 0, 0, 554, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 520, 529, + 533, 44, 77, 90, 0, 507, 0, 155, 129, 510, + 531, 509, 517, 508, 0, 511, 512, 535, 513, 542, + 514, 515, 550, 516, 0, 113, 0, 121, 0, 502, + 128, 0, 0, 104, 0, 101, 37, 38, 0, 21, + 22, 0, 0, 27, 26, 0, 199, 30, 32, 39, + 0, 196, 187, 92, 144, 142, 0, 0, 500, 0, + 498, 493, 495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 75, 191, 192, 0, 563, 562, 0, 554, 0, 566, - 564, 0, 0, 0, 547, 550, 0, 517, 0, 80, - 81, 83, 82, 85, 86, 87, 88, 89, 84, 79, - 0, 0, 532, 528, 530, 534, 541, 549, 123, 0, - 505, 0, 127, 0, 105, 16, 0, 23, 20, 31, - 198, 491, 0, 501, 0, 496, 45, 46, 47, 50, - 49, 52, 53, 57, 58, 55, 56, 60, 61, 63, - 65, 67, 69, 71, 73, 0, 193, 0, 0, 0, - 565, 0, 546, 0, 577, 0, 575, 519, 78, 91, - 122, 503, 0, 103, 18, 497, 499, 0, 0, 557, - 556, 559, 525, 542, 538, 0, 0, 0, 0, 0, - 0, 0, 504, 506, 0, 0, 558, 0, 0, 537, - 0, 0, 535, 0, 0, 0, 0, 574, 576, 520, - 76, 0, 560, 0, 525, 524, 526, 544, 0, 522, - 551, 521, 578, 0, 561, 555, 536, 545, 0, 539, - 553, 543 + 0, 0, 75, 191, 192, 0, 565, 564, 0, 556, + 0, 568, 566, 0, 0, 0, 549, 518, 552, 0, + 519, 0, 80, 81, 83, 82, 85, 86, 87, 88, + 89, 84, 79, 0, 0, 534, 530, 532, 536, 543, + 551, 123, 0, 505, 0, 127, 0, 105, 16, 0, + 23, 20, 31, 198, 491, 0, 501, 0, 496, 45, + 46, 47, 50, 49, 52, 53, 57, 58, 55, 56, + 60, 61, 63, 65, 67, 69, 71, 73, 0, 193, + 0, 0, 0, 567, 0, 548, 0, 579, 0, 577, + 521, 78, 91, 122, 503, 0, 103, 18, 497, 499, + 0, 0, 559, 558, 561, 527, 544, 540, 0, 0, + 0, 0, 0, 0, 0, 504, 506, 0, 0, 560, + 0, 0, 539, 0, 0, 537, 0, 0, 0, 0, + 576, 578, 522, 76, 0, 562, 0, 527, 526, 528, + 546, 0, 524, 553, 523, 580, 0, 563, 557, 538, + 547, 0, 541, 555, 545 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -659, -659, -659, -659, -659, -659, -659, -659, -659, -659, - -659, -659, -364, -659, -389, -385, -457, -384, -310, -307, - -305, -308, -301, -298, -659, -386, -659, -390, -659, -415, - -418, 1, -659, -659, -659, 2, -659, -659, -659, -110, - -105, -107, -659, -659, -628, -659, -659, -659, -659, -188, - -659, -336, -343, -659, 6, -659, 0, -334, -659, -659, - -659, -659, -67, -659, -659, -659, -431, -437, -277, -350, - -501, -659, -375, -488, -658, -414, -659, -659, -428, -426, - -659, -659, -87, -568, -368, -659, -231, -659, -388, -659, - -230, -659, -659, -659, -659, -228, -659, -659, -659, -659, - -659, -659, -659, -659, -70, -659, -659, -659, -659, -394 + -657, -657, -657, -657, -657, -657, -657, -657, -657, -657, + -657, -657, -337, -657, -398, -395, -435, -404, -312, -310, + -309, -311, -306, -308, -657, -383, -657, -397, -657, -413, + -421, 1, -657, -657, -657, 2, -657, -657, -657, -107, + -102, -105, -657, -657, -629, -657, -657, -657, -657, -180, + -657, -336, -343, -657, 6, -657, 0, -357, -657, -657, + -657, -657, -63, -657, -657, -657, -431, -439, -276, -354, + -503, -657, -377, -484, -656, -657, -417, -657, -657, -429, + -428, -657, -657, -88, -575, -370, -657, -231, -657, -392, + -657, -230, -657, -657, -657, -657, -226, -657, -657, -657, + -657, -657, -657, -657, -657, -70, -657, -657, -657, -657, + -396 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 432, 433, 434, 616, 435, 436, 437, 438, 439, - 440, 441, 490, 443, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 491, 645, 492, 600, 493, - 542, 494, 335, 520, 411, 495, 337, 338, 339, 369, + -1, 432, 433, 434, 619, 435, 436, 437, 438, 439, + 440, 441, 491, 443, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 492, 648, 493, 603, 494, + 544, 495, 335, 522, 411, 496, 337, 338, 339, 369, 370, 371, 340, 341, 342, 343, 344, 345, 390, 391, 346, 347, 348, 349, 444, 387, 445, 397, 382, 383, - 446, 352, 353, 354, 453, 393, 456, 457, 547, 548, - 518, 611, 498, 499, 500, 501, 588, 681, 710, 689, - 690, 691, 711, 502, 503, 504, 505, 692, 677, 506, - 507, 693, 718, 508, 509, 510, 653, 576, 648, 671, - 687, 688, 511, 355, 356, 357, 366, 512, 655, 656 + 446, 352, 353, 354, 453, 393, 456, 457, 549, 550, + 520, 614, 499, 500, 501, 502, 503, 591, 684, 713, + 692, 693, 694, 714, 504, 505, 506, 507, 695, 680, + 508, 509, 696, 721, 510, 511, 512, 656, 578, 651, + 674, 690, 691, 513, 355, 356, 357, 366, 514, 658, + 659 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1390,363 +1394,82 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 351, 334, 336, 372, 379, 477, 350, 478, 479, 472, - 388, 482, 526, 608, 604, 610, 517, 442, 612, 550, - 657, 360, 544, 558, 559, 675, 363, 538, 395, 379, - 569, 460, 372, 706, 365, 448, 396, 709, 405, 539, - 395, 449, 407, 675, 358, 709, 451, 406, 447, 395, - 535, 359, 452, 527, 528, 473, 514, 454, 560, 561, - 361, 524, 525, 474, 541, 570, 581, 367, 583, 513, - 515, 364, -34, 473, 529, 473, 368, 532, 530, 537, - 519, 679, 609, 533, 615, 680, 460, 573, 647, 613, - 601, 589, 590, 591, 592, 593, 594, 595, 596, 597, - 598, 633, 634, 635, 636, 556, 557, 550, 660, 460, - 599, 379, 408, 672, 617, 409, 673, 454, 410, 601, - 454, 713, 601, 376, 517, 374, 517, 601, 375, 517, - 522, 601, 624, 523, 602, 625, 386, 601, 624, 717, - 650, 665, 661, 619, 662, 330, 331, 332, 551, 552, - 553, 554, 381, 555, 562, 563, 601, 652, 601, 684, - 392, 683, 403, 649, 398, 629, 630, 651, 404, 604, - 395, 631, 632, 450, 620, 458, 550, 521, 637, 638, - 531, 536, 473, 540, 454, 546, 566, 626, 627, 628, + 351, 334, 336, 372, 379, 477, 350, 478, 479, 519, + 388, 482, 472, 611, 528, 613, 660, 552, 615, 407, + 607, 363, 546, 360, 571, 447, 395, 678, 540, 379, + 529, 530, 372, 473, 396, 682, 560, 561, 709, 683, + 541, 474, 712, 537, 442, 678, 515, 517, 358, -34, + 712, 531, 405, 395, 395, 532, 473, 454, 460, 572, + 516, 406, 361, 521, 558, 559, 364, 543, 583, 359, + 585, 562, 563, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 556, 374, 557, 473, 375, 526, 527, + 575, 616, 602, 612, 650, 408, 448, 451, 409, 534, + 365, 410, 449, 452, 618, 535, 539, 552, 675, 663, + 604, 379, 524, 460, 604, 525, 676, 454, 620, 519, + 454, 519, 604, 716, 519, 636, 637, 638, 639, 604, + 604, 627, 368, 605, 628, 720, 460, 604, 622, 627, + 653, 367, 668, 330, 331, 332, 553, 554, 555, 664, + 376, 665, 564, 565, 604, 655, 604, 687, 632, 633, + 640, 641, 686, 634, 635, 386, 381, 652, 392, 398, + 403, 654, 404, 395, 523, 450, 607, 552, 458, 533, + 538, 473, 542, 548, 566, 569, 454, 573, 570, 579, + 567, 626, 568, 576, 580, 584, 577, 581, 586, 589, + 617, 587, 588, 623, 621, 657, 661, 662, 722, 590, + 454, -35, -33, 649, -28, 519, 629, 630, 631, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 564, 719, 454, 565, - 658, 659, 623, 567, 568, 574, 571, 575, 579, 517, - 587, 577, 578, 582, 584, 614, 586, 585, -35, 604, - 667, -33, 618, -28, 654, 668, 646, 664, 674, 678, - 685, -523, 601, 694, 695, 697, 699, 703, 702, 704, - 712, 487, 707, 708, 639, 720, 674, 721, 640, 642, - 696, 641, 401, 400, 543, 402, 362, 643, 622, 389, - 701, 644, 517, 669, 666, 715, 705, 454, 716, 399, - 670, 605, 606, 686, 607, 385, 698, 714, 0, 0, - 0, 0, 541, 0, 700, 0, 0, 0, 0, 0, + 460, 460, 460, 460, 460, 670, 607, 667, 604, 671, + -525, 681, 688, 677, 697, 698, 700, 705, 706, 707, + 702, 715, 488, 710, 642, 711, 724, 643, 645, 644, + 699, 677, 723, 647, 646, 401, 400, 402, 519, 389, + 362, 625, 545, 669, 672, 704, 708, 718, 399, 719, + 454, 673, 689, 608, 609, 385, 0, 701, 610, 0, + 703, 0, 717, 0, 0, 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 460, 0, 0, 676, 517, 0, - 485, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 379, 0, 676, 0, 0, 0, 373, - 0, 0, 0, 0, 0, 350, 0, 380, 0, 0, + 0, 0, 0, 0, 519, 0, 0, 0, 0, 0, + 679, 486, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 379, 0, 679, 373, + 0, 0, 0, 0, 460, 350, 0, 380, 0, 0, 0, 0, 0, 350, 0, 351, 334, 336, 0, 0, 0, 350, 394, 0, 0, 0, 0, 0, 373, 0, 0, 0, 373, 0, 350, 0, 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 455, 0, 0, 0, 0, 497, 350, - 0, 0, 0, 0, 496, 0, 0, 0, 0, 0, + 0, 0, 0, 455, 0, 0, 0, 0, 498, 350, + 0, 0, 0, 0, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 455, 545, 0, 455, 0, 0, 350, + 0, 0, 0, 455, 547, 0, 455, 0, 0, 350, 350, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 497, 0, 0, 0, 0, 0, 496, 0, + 0, 0, 0, 0, 498, 0, 0, 0, 0, 0, + 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 455, 0, 0, 0, 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 455, 0, 0, 0, 0, 0, 350, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 455, 0, 0, 0, 0, 0, - 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 497, 0, 0, 0, - 0, 0, 496, 0, 0, 0, 0, 0, 497, 0, - 0, 0, 0, 0, 496, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 455, 0, 0, 0, 0, 0, 350, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 497, 0, - 0, 0, 0, 497, 496, 0, 0, 497, 0, 496, - 0, 0, 0, 496, 0, 0, 0, 0, 0, 0, - 0, 497, 0, 0, 0, 0, 380, 496, 0, 0, + 0, 0, 0, 0, 0, 0, 455, 0, 0, 0, + 0, 0, 350, 0, 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, 0, + 0, 0, 0, 0, 497, 0, 0, 0, 0, 0, + 0, 498, 0, 0, 0, 0, 0, 497, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 455, 0, 0, 0, 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, - 0, 497, 0, 0, 0, 497, 0, 496, 0, 0, - 0, 496, 0, 497, 0, 0, 0, 497, 0, 496, - 0, 0, 0, 496, 0, 0, 0, 497, 0, 0, - 0, 384, 0, 496, 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, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 328, 329, 330, 331, 332, 333, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 475, 476, 477, 0, 478, - 479, 480, 481, 482, 483, 484, 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, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 485, 412, 326, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 0, 0, 425, - 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 427, 0, - 486, 0, 487, 488, 0, 0, 0, 0, 489, 428, - 429, 430, 431, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 328, 329, 330, 331, 332, 333, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 475, 476, 477, - 0, 478, 479, 480, 481, 482, 483, 484, 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, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 485, 412, 326, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, - 0, 425, 426, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 427, 0, 486, 0, 487, 603, 0, 0, 0, 0, - 489, 428, 429, 430, 431, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 328, 329, 330, 331, 332, 333, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 475, - 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, - 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, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 485, 412, 326, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 427, 0, 486, 0, 487, 0, 0, 0, - 0, 0, 489, 428, 429, 430, 431, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, - 332, 333, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 475, 476, 477, 0, 478, 479, 480, 481, 482, - 483, 484, 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, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 485, 412, - 326, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 0, 0, 425, 426, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 427, 0, 486, 0, 398, 0, - 0, 0, 0, 0, 489, 428, 429, 430, 431, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, - 330, 331, 332, 333, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 475, 476, 477, 0, 478, 479, 480, - 481, 482, 483, 484, 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, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 485, 412, 326, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 0, 0, 425, 426, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 427, 0, 486, 0, - 0, 0, 0, 0, 0, 0, 489, 428, 429, 430, - 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 328, 329, 330, 331, 332, 333, 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, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 0, 412, 326, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 0, 0, 425, - 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 427, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 489, 428, - 429, 430, 431, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 328, 329, 330, 331, 332, 333, 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, + 0, 498, 0, 0, 0, 0, 498, 497, 0, 0, + 498, 0, 497, 0, 0, 0, 497, 0, 0, 0, + 0, 0, 0, 0, 498, 0, 0, 0, 0, 380, + 497, 0, 0, 0, 0, 350, 0, 0, 0, 0, + 0, 0, 0, 0, 498, 0, 0, 0, 498, 0, + 497, 0, 0, 0, 497, 0, 498, 0, 0, 0, + 498, 0, 497, 0, 0, 0, 497, 0, 0, 0, + 498, 0, 0, 0, 384, 0, 497, 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, 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, @@ -1785,49 +1508,9 @@ static const yytype_int16 yytable[] = 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, 333, 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, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 0, 412, 326, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 428, 429, 430, 431, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, - 332, 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, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 475, + 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, + 20, 485, 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, @@ -1857,17 +1540,460 @@ static const yytype_int16 yytable[] = 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, 0, 377, 326, + 319, 320, 321, 322, 323, 324, 325, 486, 412, 326, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 378, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 427, 0, 487, 0, 488, 489, 0, + 0, 0, 0, 490, 428, 429, 430, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, - 331, 332, 1, 2, 3, 4, 5, 6, 7, 8, + 331, 332, 333, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 475, 476, 477, 0, 478, 479, 480, 481, + 482, 483, 484, 20, 485, 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, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 486, 412, 326, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 0, 0, 425, 426, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 427, 0, 487, 0, + 488, 606, 0, 0, 0, 0, 490, 428, 429, 430, + 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 328, 329, 330, 331, 332, 333, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 475, 476, 477, 0, 478, + 479, 480, 481, 482, 483, 484, 20, 485, 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, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 486, 412, 326, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 0, 0, + 425, 426, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 427, + 0, 487, 0, 488, 0, 0, 0, 0, 0, 490, + 428, 429, 430, 431, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 328, 329, 330, 331, 332, 333, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 475, 476, + 477, 0, 478, 479, 480, 481, 482, 483, 484, 20, + 485, 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, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 486, 412, 326, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 427, 0, 487, 0, 398, 0, 0, 0, + 0, 0, 490, 428, 429, 430, 431, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, + 332, 333, 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, + 19, 475, 476, 477, 0, 478, 479, 480, 481, 482, + 483, 484, 20, 485, 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, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 486, + 412, 326, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 0, 0, 425, 426, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 427, 0, 487, 0, 0, + 0, 0, 0, 0, 0, 490, 428, 429, 430, 431, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 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, 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, 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, 0, 412, 326, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 0, 0, 425, + 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 427, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 490, 428, + 429, 430, 431, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 328, 329, 330, 331, 332, 333, 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, 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, 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, 0, 0, 326, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 327, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, + 333, 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, 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, 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, 0, 412, + 326, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 0, 0, 425, 426, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 428, 429, 430, 431, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, + 330, 331, 332, 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, 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, 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, + 0, 377, 326, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 378, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 328, 329, 330, 331, 332, 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, 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, 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, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 551, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 328, 329, 330, 331, 332, 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, 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, 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, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 624, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 328, 329, 330, 331, 332, 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, + 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, + 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, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, + 332, 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, 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, @@ -1901,56 +2027,393 @@ static const yytype_int16 yytable[] = 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, - 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, 0, 328, 329, - 330, 331, 332, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 330, 331, 332, 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, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 412, + 326, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 0, 0, 425, 426, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 427, 0, 0, 0, 518, 685, + 0, 0, 0, 0, 0, 428, 429, 430, 431, 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, 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, 69, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 0, 412, 326, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, + 0, 425, 426, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 427, 0, 0, 459, 0, 0, 0, 0, 0, 0, + 0, 428, 429, 430, 431, 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, 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, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, - 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 621, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 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, + 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, 69, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, + 0, 412, 326, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 0, 0, 425, 426, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 427, 0, 0, 0, + 518, 0, 0, 0, 0, 0, 0, 428, 429, 430, + 431, 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, + 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, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 412, 326, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 427, 0, 0, 574, 0, 0, 0, 0, + 0, 0, 0, 428, 429, 430, 431, 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, 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, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 412, 326, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 0, 0, 425, + 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 427, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 582, 428, + 429, 430, 431, 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, 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, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 412, + 326, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 0, 0, 425, 426, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 427, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 428, 429, 430, 431, 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, 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, 69, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 536, 0, 412, 326, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, + 0, 425, 426, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 428, 429, 430, 431, 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, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, + 0, 0, 326 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 0, 0, 339, 347, 24, 0, 26, 27, 406, + 82, 30, 395, 516, 427, 518, 591, 456, 521, 376, + 504, 341, 453, 341, 364, 382, 378, 656, 383, 372, + 357, 358, 368, 378, 386, 379, 359, 360, 694, 383, + 395, 386, 698, 440, 381, 674, 403, 404, 376, 376, + 706, 378, 376, 378, 378, 382, 378, 393, 395, 399, + 385, 385, 380, 385, 355, 356, 386, 450, 481, 376, + 483, 394, 395, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 388, 383, 390, 378, 386, 425, 426, + 473, 522, 385, 385, 578, 380, 377, 377, 383, 377, + 386, 386, 383, 383, 377, 383, 443, 546, 377, 612, + 383, 454, 383, 450, 383, 386, 377, 453, 531, 516, + 456, 518, 383, 377, 521, 560, 561, 562, 563, 383, + 383, 383, 383, 386, 386, 710, 473, 383, 535, 383, + 386, 377, 386, 402, 403, 404, 391, 392, 393, 381, + 341, 383, 361, 362, 383, 384, 383, 384, 556, 557, + 564, 565, 665, 558, 559, 341, 394, 580, 380, 380, + 341, 584, 341, 378, 341, 385, 660, 616, 386, 377, + 376, 378, 341, 341, 398, 363, 522, 379, 365, 376, + 397, 548, 396, 386, 376, 376, 386, 386, 384, 378, + 341, 386, 376, 540, 341, 341, 603, 604, 711, 381, + 546, 376, 376, 379, 377, 612, 553, 554, 555, 556, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 567, 568, 569, 570, 571, 648, 720, 379, 383, 340, + 380, 376, 376, 656, 341, 377, 379, 386, 377, 25, + 381, 377, 380, 380, 566, 385, 381, 567, 569, 568, + 681, 674, 386, 571, 570, 372, 368, 372, 665, 341, + 333, 547, 452, 627, 651, 688, 693, 706, 366, 707, + 616, 651, 674, 514, 514, 355, -1, 683, 514, -1, + 687, -1, 705, -1, -1, -1, -1, -1, 681, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 711, -1, -1, -1, -1, -1, + 656, 340, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 679, -1, 674, 339, + -1, -1, -1, -1, 681, 339, -1, 347, -1, -1, + -1, -1, -1, 347, -1, 355, 355, 355, -1, -1, + -1, 355, 362, -1, -1, -1, -1, -1, 368, -1, + -1, -1, 372, -1, 368, -1, -1, -1, 372, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 393, -1, -1, -1, -1, 398, 393, + -1, -1, -1, -1, 398, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 453, 454, -1, 456, -1, -1, 453, + 454, -1, 456, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 504, -1, -1, -1, -1, -1, + 504, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 522, -1, -1, -1, -1, -1, 522, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 546, -1, -1, -1, + -1, -1, 546, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 578, -1, + -1, -1, -1, -1, 578, -1, -1, -1, -1, -1, + -1, 591, -1, -1, -1, -1, -1, 591, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 616, -1, -1, -1, + -1, -1, 616, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 651, -1, -1, -1, -1, 656, 651, -1, -1, + 660, -1, 656, -1, -1, -1, 660, -1, -1, -1, + -1, -1, -1, -1, 674, -1, -1, -1, -1, 679, + 674, -1, -1, -1, -1, 679, -1, -1, -1, -1, + -1, -1, -1, -1, 694, -1, -1, -1, 698, -1, + 694, -1, -1, -1, 698, -1, 706, -1, -1, -1, + 710, -1, 706, -1, -1, -1, 710, -1, -1, -1, + 720, -1, -1, -1, 0, -1, 720, 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, -1, 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, @@ -1978,550 +2441,14 @@ static const yytype_int16 yytable[] = 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, - 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 663, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 328, 329, 330, 331, 332, 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, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 0, 0, 326, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 328, 329, 330, 331, 332, 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, 69, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 0, 412, 326, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 0, 0, 425, 426, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 427, 0, 0, - 0, 516, 682, 0, 0, 0, 0, 0, 428, 429, - 430, 431, 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, 69, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 412, 326, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 427, 0, 0, 459, 0, 0, 0, 0, - 0, 0, 0, 428, 429, 430, 431, 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, 69, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 0, 412, 326, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 0, 0, 425, 426, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 427, 0, 0, - 0, 516, 0, 0, 0, 0, 0, 0, 428, 429, - 430, 431, 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, 69, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 412, 326, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 427, 0, 0, 572, 0, 0, 0, 0, - 0, 0, 0, 428, 429, 430, 431, 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, 69, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, 0, 412, 326, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 0, 0, 425, 426, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 427, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 580, 428, 429, - 430, 431, 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, 69, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 412, 326, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 0, 0, 425, 426, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 428, 429, 430, 431, 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, 69, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 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, - 534, 0, 412, 326, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 0, 0, 425, 426, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 427, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 428, 429, - 430, 431, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 326 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 0, 0, 339, 347, 24, 0, 26, 27, 395, - 81, 30, 427, 514, 502, 516, 406, 381, 519, 456, - 588, 340, 453, 358, 359, 653, 340, 382, 377, 372, - 363, 395, 368, 691, 385, 376, 385, 695, 375, 394, - 377, 382, 376, 671, 375, 703, 376, 384, 382, 377, - 440, 375, 382, 356, 357, 377, 384, 393, 393, 394, - 379, 425, 426, 385, 450, 398, 481, 376, 483, 403, - 404, 385, 375, 377, 377, 377, 382, 376, 381, 443, - 384, 378, 384, 382, 376, 382, 450, 473, 576, 520, - 382, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 558, 559, 560, 561, 354, 355, 544, 609, 473, - 384, 454, 379, 376, 529, 382, 376, 453, 385, 382, - 456, 376, 382, 340, 514, 382, 516, 382, 385, 519, - 382, 382, 382, 385, 385, 385, 340, 382, 382, 707, - 385, 385, 380, 533, 382, 401, 402, 403, 390, 391, - 392, 387, 393, 389, 360, 361, 382, 383, 382, 383, - 379, 662, 340, 578, 379, 554, 555, 582, 340, 657, - 377, 556, 557, 384, 538, 385, 613, 340, 562, 563, - 376, 375, 377, 340, 520, 340, 395, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, - 564, 565, 566, 567, 568, 569, 397, 708, 544, 396, - 600, 601, 546, 362, 364, 385, 378, 385, 385, 609, - 380, 375, 375, 375, 383, 340, 377, 375, 375, 717, - 645, 375, 340, 376, 340, 339, 378, 378, 653, 375, - 375, 379, 382, 340, 376, 378, 380, 376, 385, 25, - 376, 379, 379, 384, 564, 385, 671, 380, 565, 567, - 678, 566, 372, 368, 452, 372, 333, 568, 545, 340, - 685, 569, 662, 648, 624, 703, 690, 613, 704, 366, - 648, 512, 512, 671, 512, 355, 680, 702, -1, -1, - -1, -1, 678, -1, 684, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 678, -1, -1, 653, 708, -1, - 339, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 676, -1, 671, -1, -1, -1, 339, - -1, -1, -1, -1, -1, 339, -1, 347, -1, -1, - -1, -1, -1, 347, -1, 355, 355, 355, -1, -1, - -1, 355, 362, -1, -1, -1, -1, -1, 368, -1, - -1, -1, 372, -1, 368, -1, -1, -1, 372, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 393, -1, -1, -1, -1, 398, 393, - -1, -1, -1, -1, 398, -1, -1, -1, -1, -1, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 337, 338, 339, -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 453, 454, -1, 456, -1, -1, 453, - 454, -1, 456, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 502, -1, -1, -1, -1, -1, 502, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 520, -1, -1, -1, -1, -1, 520, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 544, -1, -1, -1, -1, -1, - 544, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 576, -1, -1, -1, - -1, -1, 576, -1, -1, -1, -1, -1, 588, -1, - -1, -1, -1, -1, 588, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 613, -1, -1, -1, -1, -1, 613, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 648, -1, - -1, -1, -1, 653, 648, -1, -1, 657, -1, 653, - -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, - -1, 671, -1, -1, -1, -1, 676, 671, -1, -1, - -1, -1, 676, -1, -1, -1, -1, -1, -1, -1, - -1, 691, -1, -1, -1, 695, -1, 691, -1, -1, - -1, 695, -1, 703, -1, -1, -1, 707, -1, 703, - -1, -1, -1, 707, -1, -1, -1, 717, -1, -1, - -1, 0, -1, 717, 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, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - -1, -1, 341, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 385, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 399, 400, 401, 402, 403, 404, 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, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, -1, -1, 356, - 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 375, -1, - 377, -1, 379, 380, -1, -1, -1, -1, 385, 386, - 387, 388, 389, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 399, 400, 401, 402, 403, 404, 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, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, -1, - -1, 356, 357, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 375, -1, 377, -1, 379, 380, -1, -1, -1, -1, - 385, 386, 387, 388, 389, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 399, 400, 401, 402, 403, 404, + 386, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 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, @@ -2557,12 +2484,133 @@ static const yytype_int16 yycheck[] = 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, -1, -1, 356, 357, -1, -1, -1, -1, -1, + 353, 354, -1, -1, 357, 358, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, -1, 377, -1, 379, -1, -1, -1, - -1, -1, 385, 386, 387, 388, 389, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 399, 400, 401, 402, - 403, 404, 3, 4, 5, 6, 7, 8, 9, 10, + -1, -1, -1, 376, -1, 378, -1, 380, 381, -1, + -1, -1, -1, 386, 387, 388, 389, 390, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 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, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, -1, -1, 357, 358, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 376, -1, 378, -1, + 380, 381, -1, -1, -1, -1, 386, 387, 388, 389, + 390, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 400, 401, 402, 403, 404, 405, 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, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, 358, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, + -1, 378, -1, 380, -1, -1, -1, -1, -1, 386, + 387, 388, 389, 390, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 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, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, -1, -1, 357, 358, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 376, -1, 378, -1, 380, -1, -1, -1, + -1, -1, 386, 387, 388, 389, 390, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 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, @@ -2597,336 +2645,15 @@ static const yytype_int16 yycheck[] = 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, -1, -1, 356, 357, -1, -1, -1, + 351, 352, 353, 354, -1, -1, 357, 358, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 375, -1, 377, -1, 379, -1, - -1, -1, -1, -1, 385, 386, 387, 388, 389, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 399, 400, - 401, 402, 403, 404, 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, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, -1, -1, 356, 357, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, -1, 377, -1, - -1, -1, -1, -1, -1, -1, 385, 386, 387, 388, - 389, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 399, 400, 401, 402, 403, 404, 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, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, -1, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, -1, -1, 356, - 357, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 375, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 385, 386, - 387, 388, 389, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 399, 400, 401, 402, 403, 404, 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, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, -1, -1, 341, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 399, 400, 401, 402, 403, 404, - 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, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, -1, -1, 356, 357, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 399, 400, 401, 402, - 403, 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, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, -1, 340, 341, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 385, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 399, 400, 401, - 402, 403, 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, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, -1, -1, - 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 380, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 399, 400, - 401, 402, 403, 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, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, -1, - -1, 341, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 380, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 399, - 400, 401, 402, 403, 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, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - -1, -1, 341, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 380, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 399, 400, 401, 402, 403, 3, 4, 5, 6, 7, + -1, -1, -1, -1, -1, 376, -1, 378, -1, -1, + -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 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, + -1, -1, -1, -1, -1, 33, -1, 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, @@ -2957,313 +2684,596 @@ static const yytype_int16 yycheck[] = 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, -1, -1, 341, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -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, 399, 400, 401, 402, 403, 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, 82, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 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, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 375, -1, -1, - -1, 379, 380, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 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, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 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, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, -1, -1, 356, 357, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, -1, -1, 378, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 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, 82, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 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, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 375, -1, -1, - -1, 379, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 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, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 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, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, -1, -1, 356, 357, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, -1, -1, 378, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 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, 82, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 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, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 375, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 385, 386, 387, - 388, 389, 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, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 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, 336, 337, 338, -1, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, -1, -1, 356, 357, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 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, 82, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 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, 336, 337, - 338, -1, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, -1, -1, 356, 357, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 375, -1, -1, + 338, 339, -1, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, + 358, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 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, + 388, 389, 390, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 400, 401, 402, 403, 404, 405, 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, -1, + 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, 336, 337, 338, 339, -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 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, 336, 337, 338, -1, -1, 341 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 386, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 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, -1, 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, 336, 337, 338, 339, -1, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, -1, -1, 357, 358, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 387, 388, 389, 390, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 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, -1, 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, 336, 337, 338, 339, + -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 400, 401, 402, 403, 404, 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, -1, 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, 336, 337, + 338, 339, -1, -1, 342, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 381, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 400, 401, 402, 403, 404, 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, -1, 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, + 336, 337, 338, 339, -1, -1, 342, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 381, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, 402, 403, 404, 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, + -1, 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, 336, 337, 338, 339, -1, -1, 342, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 381, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 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, -1, 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, 336, 337, 338, 339, -1, -1, + 342, -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, 400, 401, + 402, 403, 404, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 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, 336, 337, 338, 339, -1, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, -1, -1, 357, 358, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 376, -1, -1, -1, 380, 381, + -1, -1, -1, -1, -1, 387, 388, 389, 390, 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, -1, 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, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 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, + 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, + -1, 357, 358, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 376, -1, -1, 379, -1, -1, -1, -1, -1, -1, + -1, 387, 388, 389, 390, 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, -1, 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, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 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, 336, 337, 338, 339, + -1, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, -1, -1, 357, 358, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 376, -1, -1, -1, + 380, -1, -1, -1, -1, -1, -1, 387, 388, 389, + 390, 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, + -1, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 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, 336, 337, 338, 339, -1, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, -1, -1, 357, 358, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 376, -1, -1, 379, -1, -1, -1, -1, + -1, -1, -1, 387, 388, 389, 390, 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, -1, 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, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 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, 336, 337, + 338, 339, -1, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, + 358, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 376, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, + 388, 389, 390, 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, -1, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 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, 336, 337, 338, 339, -1, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, -1, -1, 357, 358, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 376, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 387, 388, 389, 390, 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, -1, 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, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 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, + 336, 337, 338, 339, -1, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, + -1, 357, 358, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 387, 388, 389, 390, 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, -1, 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, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 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, 336, 337, 338, 339, + -1, -1, 342 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -3272,140 +3282,141 @@ 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, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 341, 385, 399, 400, - 401, 402, 403, 404, 439, 440, 443, 444, 445, 446, - 450, 451, 452, 453, 454, 455, 458, 459, 460, 461, - 462, 464, 469, 470, 471, 511, 512, 513, 375, 375, - 340, 379, 470, 340, 385, 385, 514, 376, 382, 447, - 448, 449, 459, 464, 382, 385, 340, 340, 385, 460, - 464, 393, 466, 467, 0, 512, 340, 463, 81, 340, - 456, 457, 379, 473, 464, 377, 385, 465, 379, 490, - 448, 447, 449, 340, 340, 375, 384, 465, 379, 382, - 385, 442, 340, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 356, 357, 375, 386, 387, - 388, 389, 409, 410, 411, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 462, 464, 468, 465, 376, 382, - 384, 376, 382, 472, 459, 464, 474, 475, 385, 378, - 420, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 377, 385, 22, 23, 24, 26, 27, - 28, 29, 30, 31, 32, 339, 377, 379, 380, 385, - 420, 433, 435, 437, 439, 443, 462, 464, 480, 481, - 482, 483, 491, 492, 493, 494, 497, 498, 501, 502, - 503, 510, 515, 465, 384, 465, 379, 435, 478, 384, - 441, 340, 382, 385, 420, 420, 437, 356, 357, 377, - 381, 376, 376, 382, 338, 435, 375, 420, 382, 394, - 340, 433, 438, 457, 474, 464, 340, 476, 477, 380, - 475, 390, 391, 392, 387, 389, 354, 355, 358, 359, - 393, 394, 360, 361, 397, 396, 395, 362, 364, 363, - 398, 378, 378, 433, 385, 385, 505, 375, 375, 385, - 385, 437, 375, 437, 383, 375, 377, 380, 484, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 384, - 436, 382, 385, 380, 481, 494, 498, 503, 478, 384, - 478, 479, 478, 474, 340, 376, 412, 437, 340, 435, - 420, 380, 476, 465, 382, 385, 420, 420, 420, 422, - 422, 423, 423, 424, 424, 424, 424, 425, 425, 426, - 427, 428, 429, 430, 431, 434, 378, 481, 506, 437, - 385, 437, 383, 504, 340, 516, 517, 491, 435, 435, - 478, 380, 382, 380, 378, 385, 477, 437, 339, 480, - 492, 507, 376, 376, 437, 452, 459, 496, 375, 378, - 382, 485, 380, 478, 383, 375, 496, 508, 509, 487, - 488, 489, 495, 499, 340, 376, 438, 378, 517, 380, - 435, 437, 385, 376, 25, 483, 482, 379, 384, 482, - 486, 490, 376, 376, 437, 486, 487, 491, 500, 478, - 385, 380 + 33, 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, 336, 337, 338, 339, 342, 386, 400, 401, + 402, 403, 404, 405, 440, 441, 444, 445, 446, 447, + 451, 452, 453, 454, 455, 456, 459, 460, 461, 462, + 463, 465, 470, 471, 472, 513, 514, 515, 376, 376, + 341, 380, 471, 341, 386, 386, 516, 377, 383, 448, + 449, 450, 460, 465, 383, 386, 341, 341, 386, 461, + 465, 394, 467, 468, 0, 514, 341, 464, 82, 341, + 457, 458, 380, 474, 465, 378, 386, 466, 380, 492, + 449, 448, 450, 341, 341, 376, 385, 466, 380, 383, + 386, 443, 341, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 357, 358, 376, 387, 388, + 389, 390, 410, 411, 412, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 463, 465, 469, 466, 377, 383, + 385, 377, 383, 473, 460, 465, 475, 476, 386, 379, + 421, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 378, 386, 22, 23, 24, 26, 27, + 28, 29, 30, 31, 32, 34, 340, 378, 380, 381, + 386, 421, 434, 436, 438, 440, 444, 463, 465, 481, + 482, 483, 484, 485, 493, 494, 495, 496, 499, 500, + 503, 504, 505, 512, 517, 466, 385, 466, 380, 436, + 479, 385, 442, 341, 383, 386, 421, 421, 438, 357, + 358, 378, 382, 377, 377, 383, 339, 436, 376, 421, + 383, 395, 341, 434, 439, 458, 475, 465, 341, 477, + 478, 381, 476, 391, 392, 393, 388, 390, 355, 356, + 359, 360, 394, 395, 361, 362, 398, 397, 396, 363, + 365, 364, 399, 379, 379, 434, 386, 386, 507, 376, + 376, 386, 386, 438, 376, 438, 384, 386, 376, 378, + 381, 486, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 385, 437, 383, 386, 381, 482, 496, 500, + 505, 479, 385, 479, 480, 479, 475, 341, 377, 413, + 438, 341, 436, 421, 381, 477, 466, 383, 386, 421, + 421, 421, 423, 423, 424, 424, 425, 425, 425, 425, + 426, 426, 427, 428, 429, 430, 431, 432, 435, 379, + 482, 508, 438, 386, 438, 384, 506, 341, 518, 519, + 493, 436, 436, 479, 381, 383, 381, 379, 386, 478, + 438, 340, 481, 494, 509, 377, 377, 438, 453, 460, + 498, 376, 379, 383, 487, 381, 479, 384, 376, 498, + 510, 511, 489, 490, 491, 497, 501, 341, 377, 439, + 379, 519, 381, 436, 438, 386, 377, 25, 485, 483, + 380, 385, 483, 488, 492, 377, 377, 438, 488, 489, + 493, 502, 479, 386, 381 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 408, 409, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 411, 411, 411, - 411, 411, 411, 412, 413, 414, 415, 415, 416, 416, - 417, 417, 418, 419, 419, 419, 420, 420, 420, 420, - 421, 421, 421, 421, 422, 422, 422, 422, 423, 423, - 423, 424, 424, 424, 425, 425, 425, 425, 425, 426, - 426, 426, 427, 427, 428, 428, 429, 429, 430, 430, - 431, 431, 432, 432, 433, 434, 433, 435, 435, 436, - 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, - 437, 437, 438, 439, 439, 439, 439, 439, 439, 439, - 439, 439, 441, 440, 442, 442, 443, 444, 444, 445, - 445, 446, 447, 447, 448, 448, 448, 448, 449, 450, - 450, 450, 450, 450, 451, 451, 451, 451, 451, 452, - 452, 453, 454, 454, 454, 454, 454, 454, 454, 454, - 455, 456, 456, 457, 457, 457, 458, 459, 459, 460, - 460, 460, 460, 460, 460, 460, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 462, 463, 463, 464, 464, - 465, 465, 465, 465, 466, 466, 467, 468, 468, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, 469, 469, 469, 470, 470, 470, - 472, 471, 473, 471, 474, 474, 475, 475, 476, 476, - 477, 477, 478, 478, 478, 479, 479, 480, 481, 481, - 482, 482, 482, 482, 482, 482, 482, 483, 484, 485, - 483, 486, 486, 488, 487, 489, 487, 490, 490, 491, - 491, 492, 492, 493, 493, 494, 495, 495, 496, 496, - 497, 497, 499, 498, 500, 500, 501, 501, 502, 502, - 504, 503, 505, 503, 506, 503, 507, 507, 508, 508, - 509, 509, 510, 510, 510, 510, 510, 511, 511, 512, - 512, 512, 514, 513, 515, 516, 516, 517, 517 + 0, 409, 410, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 412, 412, 412, + 412, 412, 412, 413, 414, 415, 416, 416, 417, 417, + 418, 418, 419, 420, 420, 420, 421, 421, 421, 421, + 422, 422, 422, 422, 423, 423, 423, 423, 424, 424, + 424, 425, 425, 425, 426, 426, 426, 426, 426, 427, + 427, 427, 428, 428, 429, 429, 430, 430, 431, 431, + 432, 432, 433, 433, 434, 435, 434, 436, 436, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 438, 438, 439, 440, 440, 440, 440, 440, 440, 440, + 440, 440, 442, 441, 443, 443, 444, 445, 445, 446, + 446, 447, 448, 448, 449, 449, 449, 449, 450, 451, + 451, 451, 451, 451, 452, 452, 452, 452, 452, 453, + 453, 454, 455, 455, 455, 455, 455, 455, 455, 455, + 456, 457, 457, 458, 458, 458, 459, 460, 460, 461, + 461, 461, 461, 461, 461, 461, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 463, 464, 464, 465, 465, + 466, 466, 466, 466, 467, 467, 468, 469, 469, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 471, 471, 471, + 473, 472, 474, 472, 475, 475, 476, 476, 477, 477, + 478, 478, 479, 479, 479, 480, 480, 481, 482, 482, + 483, 483, 483, 483, 483, 483, 483, 483, 484, 485, + 486, 487, 485, 488, 488, 490, 489, 491, 489, 492, + 492, 493, 493, 494, 494, 495, 495, 496, 497, 497, + 498, 498, 499, 499, 501, 500, 502, 502, 503, 503, + 504, 504, 506, 505, 507, 505, 508, 505, 509, 509, + 510, 510, 511, 511, 512, 512, 512, 512, 512, 513, + 513, 514, 514, 514, 516, 515, 517, 518, 518, 519, + 519 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -3462,13 +3473,14 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, 0, 5, 1, 2, 3, 4, 1, 3, 1, 2, 1, 3, 4, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, - 5, 1, 1, 0, 2, 0, 2, 2, 3, 1, - 2, 1, 2, 1, 2, 5, 3, 1, 1, 4, - 1, 2, 0, 8, 0, 1, 3, 2, 1, 2, - 0, 6, 0, 8, 0, 7, 1, 1, 1, 0, - 2, 3, 2, 2, 2, 3, 2, 1, 2, 1, - 1, 1, 0, 3, 5, 1, 3, 1, 4 + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 0, 0, 5, 1, 1, 0, 2, 0, 2, 2, + 3, 1, 2, 1, 2, 1, 2, 5, 3, 1, + 1, 4, 1, 2, 0, 8, 0, 1, 3, 2, + 1, 2, 0, 6, 0, 8, 0, 7, 1, 1, + 1, 0, 2, 3, 2, 2, 2, 3, 2, 1, + 2, 1, 1, 1, 0, 3, 5, 1, 3, 1, + 4 }; @@ -4155,7 +4167,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 4159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: @@ -4163,7 +4175,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: @@ -4172,7 +4184,7 @@ yyreduce: 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 4176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: @@ -4181,7 +4193,7 @@ yyreduce: 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 4185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: @@ -4189,7 +4201,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: @@ -4198,7 +4210,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: @@ -4207,7 +4219,7 @@ yyreduce: 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 4211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: @@ -4216,7 +4228,7 @@ yyreduce: 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 4220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: @@ -4225,7 +4237,7 @@ yyreduce: 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 4229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 11: @@ -4234,7 +4246,7 @@ yyreduce: 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 4238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 12: @@ -4242,7 +4254,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 4246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: @@ -4251,7 +4263,7 @@ yyreduce: 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 4255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 14: @@ -4260,7 +4272,7 @@ yyreduce: 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 4264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: @@ -4268,7 +4280,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 4272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: @@ -4278,7 +4290,7 @@ yyreduce: if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 4282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: @@ -4286,7 +4298,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: @@ -4294,7 +4306,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 4298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: @@ -4302,7 +4314,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: @@ -4310,7 +4322,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 4314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: @@ -4320,7 +4332,7 @@ yyreduce: 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 4324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: @@ -4330,7 +4342,7 @@ yyreduce: 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 4334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: @@ -4339,7 +4351,7 @@ yyreduce: parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 24: @@ -4348,7 +4360,7 @@ yyreduce: (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 4352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: @@ -4356,7 +4368,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 4360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: @@ -4365,7 +4377,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 27: @@ -4374,7 +4386,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 28: @@ -4382,7 +4394,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 4386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 29: @@ -4390,7 +4402,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 4394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 30: @@ -4402,7 +4414,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 4406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 31: @@ -4414,7 +4426,7 @@ yyreduce: (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 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 32: @@ -4422,7 +4434,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 4426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 33: @@ -4432,7 +4444,7 @@ yyreduce: (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 34: @@ -4464,7 +4476,7 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 4468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 35: @@ -4474,7 +4486,7 @@ yyreduce: (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 36: @@ -4485,7 +4497,7 @@ yyreduce: if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 4489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 37: @@ -4494,7 +4506,7 @@ yyreduce: 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 4498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 38: @@ -4503,7 +4515,7 @@ yyreduce: 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 4507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 39: @@ -4524,38 +4536,38 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 4528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 40: #line 528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 41: #line 529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 42: #line 530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 43: #line 531 "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 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 44: #line 537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 45: @@ -4565,7 +4577,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 46: @@ -4575,7 +4587,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 47: @@ -4586,13 +4598,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 48: #line 557 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 49: @@ -4602,7 +4614,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 50: @@ -4612,13 +4624,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 51: #line 571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 52: @@ -4629,7 +4641,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 53: @@ -4640,13 +4652,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 54: #line 587 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 55: @@ -4656,7 +4668,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 56: @@ -4666,7 +4678,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 57: @@ -4676,7 +4688,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 58: @@ -4686,13 +4698,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 59: #line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 60: @@ -4706,7 +4718,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 61: @@ -4720,13 +4732,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 62: #line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 63: @@ -4737,13 +4749,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 64: #line 643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 65: @@ -4754,13 +4766,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 66: #line 653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 67: @@ -4771,13 +4783,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 68: #line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 69: @@ -4787,13 +4799,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 70: #line 672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: @@ -4803,13 +4815,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4807 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 72: #line 681 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 73: @@ -4819,13 +4831,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 74: #line 690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 75: @@ -4833,7 +4845,7 @@ yyreduce: { ++parseContext.controlFlowNestingLevel; } -#line 4837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 76: @@ -4850,13 +4862,13 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 77: #line 709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 78: @@ -4874,7 +4886,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 4878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 79: @@ -4883,7 +4895,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 4887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 80: @@ -4892,7 +4904,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 4896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 81: @@ -4901,7 +4913,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 4905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 82: @@ -4911,7 +4923,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 4915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 83: @@ -4920,7 +4932,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 4924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 84: @@ -4929,7 +4941,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 4933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 85: @@ -4938,7 +4950,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 4942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 86: @@ -4947,7 +4959,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 4951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 87: @@ -4956,7 +4968,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 4960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 88: @@ -4965,7 +4977,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 4969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 89: @@ -4974,7 +4986,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 4978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 90: @@ -4982,7 +4994,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 91: @@ -4995,7 +5007,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 92: @@ -5004,7 +5016,7 @@ yyreduce: parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5020 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 93: @@ -5014,7 +5026,7 @@ yyreduce: (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 5018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 94: @@ -5024,7 +5036,7 @@ yyreduce: (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 95: @@ -5037,7 +5049,7 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 5041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 96: @@ -5046,7 +5058,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 5050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 97: @@ -5055,7 +5067,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 98: @@ -5064,7 +5076,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 5068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 99: @@ -5074,7 +5086,7 @@ yyreduce: parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 5078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 100: @@ -5084,7 +5096,7 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 101: @@ -5095,13 +5107,13 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 5099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 102: #line 844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 5105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 103: @@ -5115,7 +5127,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 5119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 104: @@ -5124,7 +5136,7 @@ yyreduce: (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 105: @@ -5133,7 +5145,7 @@ yyreduce: (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 106: @@ -5142,7 +5154,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 107: @@ -5150,7 +5162,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 108: @@ -5158,7 +5170,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 109: @@ -5171,7 +5183,7 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 5175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 110: @@ -5193,7 +5205,7 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 5197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 111: @@ -5217,7 +5229,7 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 5221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 112: @@ -5237,7 +5249,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 5241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 113: @@ -5261,7 +5273,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 5265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 114: @@ -5277,7 +5289,7 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 115: @@ -5289,7 +5301,7 @@ yyreduce: parseContext.paramCheckFixStorage((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 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 116: @@ -5304,7 +5316,7 @@ yyreduce: 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 5308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 117: @@ -5316,7 +5328,7 @@ yyreduce: parseContext.paramCheckFixStorage((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 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 118: @@ -5327,7 +5339,7 @@ yyreduce: if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 5331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 119: @@ -5335,7 +5347,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 5339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 120: @@ -5344,7 +5356,7 @@ yyreduce: (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 5348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 121: @@ -5353,7 +5365,7 @@ yyreduce: (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 5357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 122: @@ -5363,7 +5375,7 @@ yyreduce: 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 5367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 123: @@ -5373,7 +5385,7 @@ yyreduce: 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 5377 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 124: @@ -5383,7 +5395,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 5387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 125: @@ -5393,7 +5405,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 5397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 126: @@ -5403,7 +5415,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 5407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 127: @@ -5413,7 +5425,7 @@ yyreduce: 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 5417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 128: @@ -5423,7 +5435,7 @@ yyreduce: 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 5427 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 129: @@ -5439,7 +5451,7 @@ yyreduce: parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 5443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 130: @@ -5468,7 +5480,7 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 5472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 131: @@ -5479,7 +5491,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 5483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 132: @@ -5491,7 +5503,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 5495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: @@ -5503,7 +5515,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 5507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 134: @@ -5519,7 +5531,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 5523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 135: @@ -5533,7 +5545,7 @@ yyreduce: (yyval.interm.type).qualifier.explicitInterp = true; #endif } -#line 5537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 136: @@ -5548,7 +5560,7 @@ yyreduce: (yyval.interm.type).qualifier.pervertexNV = true; #endif } -#line 5552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 137: @@ -5565,7 +5577,7 @@ yyreduce: (yyval.interm.type).qualifier.perPrimitiveNV = true; #endif } -#line 5569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 138: @@ -5579,7 +5591,7 @@ yyreduce: (yyval.interm.type).qualifier.perViewNV = true; #endif } -#line 5583 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 139: @@ -5593,7 +5605,7 @@ yyreduce: (yyval.interm.type).qualifier.perTaskNV = true; #endif } -#line 5597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 140: @@ -5601,7 +5613,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 5605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 141: @@ -5609,7 +5621,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 142: @@ -5619,7 +5631,7 @@ yyreduce: (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 5623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 143: @@ -5628,7 +5640,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 5632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 144: @@ -5637,7 +5649,7 @@ yyreduce: (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 5641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 145: @@ -5647,7 +5659,7 @@ yyreduce: TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 5651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 146: @@ -5658,7 +5670,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 5662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 147: @@ -5666,7 +5678,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 148: @@ -5679,7 +5691,7 @@ yyreduce: (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 5683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 149: @@ -5687,7 +5699,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 150: @@ -5695,7 +5707,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 151: @@ -5704,7 +5716,7 @@ yyreduce: parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: @@ -5713,7 +5725,7 @@ yyreduce: // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 153: @@ -5722,7 +5734,7 @@ yyreduce: // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 154: @@ -5731,7 +5743,7 @@ yyreduce: // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 155: @@ -5739,7 +5751,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 156: @@ -5748,7 +5760,7 @@ yyreduce: (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 5752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 157: @@ -5765,7 +5777,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 158: @@ -5784,7 +5796,7 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 159: @@ -5794,7 +5806,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 5798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 160: @@ -5805,7 +5817,7 @@ yyreduce: // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 5809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 161: @@ -5816,7 +5828,7 @@ yyreduce: // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 5820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 162: @@ -5828,7 +5840,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 5832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 163: @@ -5839,7 +5851,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 5843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 164: @@ -5849,7 +5861,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 5853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 165: @@ -5859,7 +5871,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 5863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 166: @@ -5869,7 +5881,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 5873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 167: @@ -5884,7 +5896,7 @@ yyreduce: (yyval.interm.type).qualifier.storage = EvqHitAttrNV; #endif } -#line 5888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 168: @@ -5899,7 +5911,7 @@ yyreduce: (yyval.interm.type).qualifier.storage = EvqPayloadNV; #endif } -#line 5903 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 169: @@ -5914,7 +5926,7 @@ yyreduce: (yyval.interm.type).qualifier.storage = EvqPayloadInNV; #endif } -#line 5918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 170: @@ -5929,7 +5941,7 @@ yyreduce: (yyval.interm.type).qualifier.storage = EvqCallableDataNV; #endif } -#line 5933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 171: @@ -5943,7 +5955,7 @@ yyreduce: (yyval.interm.type).qualifier.storage = EvqCallableDataInNV; #endif } -#line 5947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 172: @@ -5960,7 +5972,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 5964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 173: @@ -5969,7 +5981,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 5973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 174: @@ -5979,7 +5991,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 5983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 175: @@ -5989,7 +6001,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 5993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 176: @@ -5999,7 +6011,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 6003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 177: @@ -6009,7 +6021,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 6013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 178: @@ -6019,7 +6031,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 6023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 179: @@ -6028,7 +6040,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 6032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 180: @@ -6037,7 +6049,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 6041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 181: @@ -6046,7 +6058,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 6050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 182: @@ -6055,7 +6067,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 6059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 183: @@ -6066,7 +6078,7 @@ yyreduce: parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 6070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 184: @@ -6077,7 +6089,7 @@ yyreduce: parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 6081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 185: @@ -6086,7 +6098,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 6090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 186: @@ -6094,7 +6106,7 @@ yyreduce: { // TODO } -#line 6098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 187: @@ -6104,7 +6116,7 @@ yyreduce: // 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 6108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 188: @@ -6114,7 +6126,7 @@ yyreduce: (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 6118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 189: @@ -6126,7 +6138,7 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 6130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 190: @@ -6136,7 +6148,7 @@ yyreduce: (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 6140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 191: @@ -6149,7 +6161,7 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 192: @@ -6158,7 +6170,7 @@ yyreduce: (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 6162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 193: @@ -6170,7 +6182,7 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 194: @@ -6178,7 +6190,7 @@ yyreduce: { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 6182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 195: @@ -6186,7 +6198,7 @@ yyreduce: { (yyval.interm.typeParameters) = 0; } -#line 6190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 196: @@ -6194,7 +6206,7 @@ yyreduce: { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 6198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 197: @@ -6206,7 +6218,7 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 198: @@ -6218,7 +6230,7 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 199: @@ -6227,7 +6239,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 6231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 200: @@ -6236,7 +6248,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 201: @@ -6246,7 +6258,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 6250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 202: @@ -6256,7 +6268,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 6260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 203: @@ -6266,7 +6278,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 204: @@ -6276,7 +6288,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 6280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 205: @@ -6285,7 +6297,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 206: @@ -6295,7 +6307,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 207: @@ -6305,7 +6317,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 6309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 208: @@ -6315,7 +6327,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 6319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 209: @@ -6325,7 +6337,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 6329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 210: @@ -6335,7 +6347,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 6339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 211: @@ -6345,7 +6357,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6349 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 212: @@ -6355,7 +6367,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 213: @@ -6365,7 +6377,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 6369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 214: @@ -6375,7 +6387,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 6379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 215: @@ -6384,7 +6396,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 6388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 216: @@ -6394,7 +6406,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 6398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 217: @@ -6404,7 +6416,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 6408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 218: @@ -6414,7 +6426,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 6418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 219: @@ -6425,7 +6437,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 6429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 220: @@ -6436,7 +6448,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 6440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 221: @@ -6447,7 +6459,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 6451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 222: @@ -6458,7 +6470,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 6462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 223: @@ -6469,7 +6481,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 6473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 224: @@ -6480,7 +6492,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 6484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 225: @@ -6491,7 +6503,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 6495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 226: @@ -6502,7 +6514,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 227: @@ -6513,7 +6525,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 6517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 228: @@ -6524,7 +6536,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 6528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 229: @@ -6535,7 +6547,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 6539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 230: @@ -6546,7 +6558,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 6550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 231: @@ -6556,7 +6568,7 @@ yyreduce: (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 6560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 232: @@ -6566,7 +6578,7 @@ yyreduce: (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 6570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: @@ -6576,7 +6588,7 @@ yyreduce: (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 6580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: @@ -6586,7 +6598,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 6590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 235: @@ -6596,7 +6608,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 6600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 236: @@ -6606,7 +6618,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 6610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 237: @@ -6617,7 +6629,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 6621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: @@ -6628,7 +6640,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 6632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: @@ -6639,7 +6651,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 6643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: @@ -6650,7 +6662,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 6654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: @@ -6661,7 +6673,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 6665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: @@ -6672,7 +6684,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 6676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 243: @@ -6683,7 +6695,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 6687 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 244: @@ -6694,7 +6706,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 6698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 245: @@ -6705,7 +6717,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 6709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 246: @@ -6716,7 +6728,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 6720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: @@ -6727,7 +6739,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 6731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 248: @@ -6738,7 +6750,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 6742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 249: @@ -6749,7 +6761,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 6753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 250: @@ -6760,7 +6772,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 6764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 251: @@ -6771,7 +6783,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 6775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 252: @@ -6782,7 +6794,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 6786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 253: @@ -6793,7 +6805,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 6797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 254: @@ -6804,7 +6816,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 6808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 255: @@ -6815,7 +6827,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 6819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 256: @@ -6826,7 +6838,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 6830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 257: @@ -6837,7 +6849,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 6841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 258: @@ -6848,7 +6860,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 6852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 259: @@ -6859,7 +6871,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 6863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 260: @@ -6870,7 +6882,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 6874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 261: @@ -6881,7 +6893,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 6885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 262: @@ -6892,7 +6904,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 6896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 263: @@ -6903,7 +6915,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 6907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 264: @@ -6913,7 +6925,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 265: @@ -6923,7 +6935,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 266: @@ -6933,7 +6945,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 6937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 267: @@ -6943,7 +6955,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 268: @@ -6953,7 +6965,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 269: @@ -6963,7 +6975,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 6967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 270: @@ -6973,7 +6985,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 6977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 271: @@ -6983,7 +6995,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 272: @@ -6993,7 +7005,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 6997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7009 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 273: @@ -7003,7 +7015,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 274: @@ -7013,7 +7025,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 275: @@ -7023,7 +7035,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 276: @@ -7034,7 +7046,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 277: @@ -7045,7 +7057,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 278: @@ -7056,7 +7068,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 279: @@ -7067,7 +7079,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 280: @@ -7078,7 +7090,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: @@ -7089,7 +7101,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 282: @@ -7100,7 +7112,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 283: @@ -7111,7 +7123,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 284: @@ -7122,7 +7134,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 285: @@ -7133,7 +7145,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 286: @@ -7144,7 +7156,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 287: @@ -7155,7 +7167,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 288: @@ -7166,7 +7178,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 7170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 289: @@ -7177,7 +7189,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 7181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 290: @@ -7188,7 +7200,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7192 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 291: @@ -7199,7 +7211,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 7203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 292: @@ -7210,7 +7222,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 7214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 293: @@ -7221,7 +7233,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 7225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 294: @@ -7232,7 +7244,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 7236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 295: @@ -7243,7 +7255,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 7247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 296: @@ -7254,7 +7266,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 7258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 297: @@ -7265,7 +7277,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 7269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 298: @@ -7276,7 +7288,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 7280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 299: @@ -7287,7 +7299,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 300: @@ -7298,7 +7310,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 301: @@ -7309,7 +7321,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 302: @@ -7320,7 +7332,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 303: @@ -7331,7 +7343,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 304: @@ -7342,7 +7354,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 305: @@ -7353,7 +7365,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 306: @@ -7364,7 +7376,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 307: @@ -7375,7 +7387,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 308: @@ -7386,7 +7398,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 309: @@ -7397,7 +7409,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 310: @@ -7408,7 +7420,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7412 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 311: @@ -7419,7 +7431,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 312: @@ -7430,7 +7442,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 313: @@ -7441,7 +7453,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 314: @@ -7452,7 +7464,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 315: @@ -7463,7 +7475,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 316: @@ -7474,7 +7486,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 317: @@ -7485,7 +7497,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 318: @@ -7496,7 +7508,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 319: @@ -7507,7 +7519,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 320: @@ -7518,7 +7530,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 321: @@ -7529,7 +7541,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 322: @@ -7540,7 +7552,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 323: @@ -7551,7 +7563,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 324: @@ -7562,7 +7574,7 @@ yyreduce: (yyval.interm.type).basicType = EbtAccStructNV; #endif } -#line 7566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 325: @@ -7572,7 +7584,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 7576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 326: @@ -7582,7 +7594,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 7586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 327: @@ -7592,7 +7604,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 7596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 328: @@ -7602,7 +7614,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 7606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 329: @@ -7612,7 +7624,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 7616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 330: @@ -7622,7 +7634,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 7626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 331: @@ -7632,7 +7644,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 7636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7648 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 332: @@ -7642,7 +7654,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 7646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 333: @@ -7652,7 +7664,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 7656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 334: @@ -7662,7 +7674,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 7666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 335: @@ -7672,7 +7684,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 7676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 336: @@ -7682,7 +7694,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 7686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 337: @@ -7692,7 +7704,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 7696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 338: @@ -7702,7 +7714,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 7706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 339: @@ -7715,7 +7727,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); #endif } -#line 7719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 340: @@ -7728,7 +7740,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); #endif } -#line 7732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 341: @@ -7741,7 +7753,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); #endif } -#line 7745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 342: @@ -7754,7 +7766,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); #endif } -#line 7758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 343: @@ -7767,7 +7779,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); #endif } -#line 7771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 344: @@ -7780,7 +7792,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); #endif } -#line 7784 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 345: @@ -7793,7 +7805,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); #endif } -#line 7797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 346: @@ -7806,7 +7818,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); #endif } -#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 347: @@ -7819,7 +7831,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); #endif } -#line 7823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 348: @@ -7832,7 +7844,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); #endif } -#line 7836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 349: @@ -7845,7 +7857,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); #endif } -#line 7849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 350: @@ -7858,7 +7870,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); #endif } -#line 7862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 351: @@ -7871,7 +7883,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); #endif } -#line 7875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 352: @@ -7881,7 +7893,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 7885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 353: @@ -7891,7 +7903,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 7895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 354: @@ -7901,7 +7913,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 7905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 355: @@ -7911,7 +7923,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 7915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 356: @@ -7921,7 +7933,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 7925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 357: @@ -7931,7 +7943,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 7935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 358: @@ -7941,7 +7953,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 7945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 359: @@ -7951,7 +7963,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 7955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 360: @@ -7961,7 +7973,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 7965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 361: @@ -7971,7 +7983,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 7975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 362: @@ -7981,7 +7993,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 7985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 363: @@ -7991,7 +8003,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 7995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 364: @@ -8001,7 +8013,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 8005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 365: @@ -8011,7 +8023,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 8015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 366: @@ -8021,7 +8033,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 8025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 367: @@ -8031,7 +8043,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 8035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 368: @@ -8044,7 +8056,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); #endif } -#line 8048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 369: @@ -8057,7 +8069,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); #endif } -#line 8061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 370: @@ -8067,7 +8079,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 8071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 371: @@ -8077,7 +8089,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 8081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 372: @@ -8087,7 +8099,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 8091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 373: @@ -8100,7 +8112,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); #endif } -#line 8104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 374: @@ -8110,7 +8122,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 8114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 375: @@ -8120,7 +8132,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 8124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 376: @@ -8130,7 +8142,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 8134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 377: @@ -8143,7 +8155,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); #endif } -#line 8147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 378: @@ -8153,7 +8165,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 8157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 379: @@ -8163,7 +8175,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 8167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 380: @@ -8173,7 +8185,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 8177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 381: @@ -8186,7 +8198,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); #endif } -#line 8190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 382: @@ -8196,7 +8208,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 8200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8212 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 383: @@ -8206,7 +8218,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 8210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 384: @@ -8216,7 +8228,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 8220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 385: @@ -8226,7 +8238,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 8230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 386: @@ -8236,7 +8248,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 8240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 387: @@ -8249,7 +8261,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); #endif } -#line 8253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 388: @@ -8259,7 +8271,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 8263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 389: @@ -8272,7 +8284,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); #endif } -#line 8276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 390: @@ -8282,7 +8294,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 8286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 391: @@ -8295,7 +8307,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); #endif } -#line 8299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 392: @@ -8305,7 +8317,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 8309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 393: @@ -8318,7 +8330,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); #endif } -#line 8322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 394: @@ -8328,7 +8340,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 8332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 395: @@ -8341,7 +8353,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); #endif } -#line 8345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 396: @@ -8351,7 +8363,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 8355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 397: @@ -8364,7 +8376,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); #endif } -#line 8368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 398: @@ -8374,7 +8386,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 8378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 399: @@ -8387,7 +8399,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); #endif } -#line 8391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 400: @@ -8397,7 +8409,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 8401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 401: @@ -8407,7 +8419,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 8411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 402: @@ -8417,7 +8429,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 8421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 403: @@ -8427,7 +8439,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 8431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 404: @@ -8437,7 +8449,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 8441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 405: @@ -8447,7 +8459,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 8451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 406: @@ -8457,7 +8469,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 8461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 407: @@ -8467,7 +8479,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 8471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 408: @@ -8477,7 +8489,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 8481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 409: @@ -8487,7 +8499,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 8491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 410: @@ -8497,7 +8509,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 8501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 411: @@ -8507,7 +8519,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 8511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 412: @@ -8517,7 +8529,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 8521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 413: @@ -8527,7 +8539,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 8531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 414: @@ -8537,7 +8549,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 8541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 415: @@ -8550,7 +8562,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); #endif } -#line 8554 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 416: @@ -8560,7 +8572,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 8564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 417: @@ -8570,7 +8582,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 8574 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 418: @@ -8580,7 +8592,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 8584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 419: @@ -8593,7 +8605,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); #endif } -#line 8597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 420: @@ -8603,7 +8615,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 8607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 421: @@ -8613,7 +8625,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 8617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 422: @@ -8623,7 +8635,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 8627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 423: @@ -8636,7 +8648,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); #endif } -#line 8640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 424: @@ -8646,7 +8658,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 8650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 425: @@ -8656,7 +8668,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 8660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 426: @@ -8666,7 +8678,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 8670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 427: @@ -8679,7 +8691,7 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); #endif } -#line 8683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 428: @@ -8689,7 +8701,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 8693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 429: @@ -8699,7 +8711,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 8703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 430: @@ -8709,7 +8721,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 8713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 431: @@ -8722,7 +8734,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); #endif } -#line 8726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 432: @@ -8732,7 +8744,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 8736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 433: @@ -8742,7 +8754,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 8746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 434: @@ -8752,7 +8764,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 8756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 435: @@ -8765,7 +8777,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); #endif } -#line 8769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 436: @@ -8775,7 +8787,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 8779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 437: @@ -8785,7 +8797,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 8789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 438: @@ -8795,7 +8807,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 8799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 439: @@ -8808,7 +8820,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); #endif } -#line 8812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 440: @@ -8818,7 +8830,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 8822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 441: @@ -8828,7 +8840,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 8832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 442: @@ -8838,7 +8850,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 8842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 443: @@ -8851,7 +8863,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); #endif } -#line 8855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 444: @@ -8861,7 +8873,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 8865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 445: @@ -8871,7 +8883,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 8875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 446: @@ -8881,7 +8893,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 8885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 447: @@ -8894,7 +8906,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); #endif } -#line 8898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 448: @@ -8904,7 +8916,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 8908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 449: @@ -8914,7 +8926,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 8918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 450: @@ -8924,7 +8936,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 8928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 451: @@ -8937,7 +8949,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); #endif } -#line 8941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 452: @@ -8947,7 +8959,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 8951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 453: @@ -8957,7 +8969,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 8961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 454: @@ -8967,7 +8979,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 8971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 455: @@ -8980,7 +8992,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); #endif } -#line 8984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 456: @@ -8990,7 +9002,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 8994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 457: @@ -9000,7 +9012,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 9004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 458: @@ -9010,7 +9022,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 9014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 459: @@ -9023,7 +9035,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); #endif } -#line 9027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 460: @@ -9033,7 +9045,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 9037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 461: @@ -9043,7 +9055,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 9047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 462: @@ -9053,7 +9065,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 9057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 463: @@ -9066,7 +9078,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); #endif } -#line 9070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 464: @@ -9076,7 +9088,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 9080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 465: @@ -9086,7 +9098,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 466: @@ -9096,7 +9108,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 9100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 467: @@ -9109,7 +9121,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); #endif } -#line 9113 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 468: @@ -9119,7 +9131,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 9123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 469: @@ -9129,7 +9141,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 9133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 470: @@ -9139,7 +9151,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 9143 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 471: @@ -9152,7 +9164,7 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); #endif } -#line 9156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 472: @@ -9162,7 +9174,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 9166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 473: @@ -9172,7 +9184,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 9176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 474: @@ -9183,7 +9195,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 9187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 475: @@ -9194,7 +9206,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 9198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 476: @@ -9205,7 +9217,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 9209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 477: @@ -9216,7 +9228,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 9220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 478: @@ -9230,7 +9242,7 @@ yyreduce: (yyval.interm.type).sampler.setSubpass(EbtFloat16); #endif } -#line 9234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 479: @@ -9244,7 +9256,7 @@ yyreduce: (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); #endif } -#line 9248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 480: @@ -9255,7 +9267,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 9259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 481: @@ -9266,7 +9278,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 9270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 482: @@ -9277,7 +9289,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 9281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 483: @@ -9288,7 +9300,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 9292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 484: @@ -9299,7 +9311,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 9303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 485: @@ -9309,7 +9321,7 @@ yyreduce: (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 9313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 486: @@ -9327,7 +9339,7 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 9331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 487: @@ -9337,7 +9349,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 9341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 488: @@ -9347,7 +9359,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 9351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9363 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 489: @@ -9357,13 +9369,13 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 9361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 490: #line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 9367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 491: @@ -9379,13 +9391,13 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 492: #line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 9389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 493: @@ -9397,7 +9409,7 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 494: @@ -9405,7 +9417,7 @@ yyreduce: { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 9409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 495: @@ -9420,7 +9432,7 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 9424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 496: @@ -9447,7 +9459,7 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 497: @@ -9476,7 +9488,7 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 498: @@ -9485,7 +9497,7 @@ yyreduce: (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 499: @@ -9493,7 +9505,7 @@ yyreduce: { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 500: @@ -9503,7 +9515,7 @@ yyreduce: (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 9507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 501: @@ -9516,7 +9528,7 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 9520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 502: @@ -9524,7 +9536,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 9528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 503: @@ -9535,7 +9547,7 @@ yyreduce: parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 9539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 504: @@ -9546,7 +9558,7 @@ yyreduce: parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 9550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 505: @@ -9554,7 +9566,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 9558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 506: @@ -9562,173 +9574,189 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 9566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 507: #line 3401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 508: #line 3405 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 509: #line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 510: #line 3412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 511: #line 3413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 512: #line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 513: #line 3415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 514: #line 3416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 515: #line 3417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 516: #line 3418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 517: -#line 3422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 9632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 518: #line 3423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.symbolTable.push(); - ++parseContext.statementNestingLevel; + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); + parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 9641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 519: -#line 3427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = 0; } +#line 9660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 520: +#line 3432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } +#line 9669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 521: +#line 3436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 9650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 520: -#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 522: +#line 3440 "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 9660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 521: -#line 3439 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 522: -#line 3440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 523: -#line 3444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.controlFlowNestingLevel; - } -#line 9680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 524: -#line 3447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 525: +#line 3453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + ++parseContext.controlFlowNestingLevel; + } +#line 9708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 526: +#line 3456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 525: -#line 3451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 527: +#line 3460 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 526: -#line 3456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 528: +#line 3465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 527: -#line 3465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 529: +#line 3474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 528: -#line 3468 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 530: +#line 3477 "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 9728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 529: -#line 3476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 531: +#line 3485 "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 || @@ -9737,11 +9765,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 9741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 530: -#line 3484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 532: +#line 3493 "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)) { @@ -9750,76 +9778,76 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 9754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 531: -#line 3495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 9760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 532: -#line 3496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 9766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 533: -#line 3500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = 0; } +#line 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 534: -#line 3503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3505 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } +#line 9794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 535: #line 3509 "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); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 536: -#line 3516 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 537: +#line 3518 "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 9820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 538: +#line 3525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 9801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 537: -#line 3520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 539: +#line 3529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 9810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 538: -#line 3528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 540: +#line 3537 "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 9819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 539: -#line 3532 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 541: +#line 3541 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -9830,28 +9858,28 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 9834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 540: -#line 3545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 541: -#line 3548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9851 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 542: #line 3554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 543: +#line 3557 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 544: +#line 3563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -9860,11 +9888,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 9864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 543: -#line 3562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 545: +#line 3571 "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(); @@ -9874,27 +9902,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 544: -#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; - } -#line 9886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 545: -#line 3577 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 546: #line 3583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = 0; + } +#line 9914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 547: +#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 548: +#line 3592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -9907,11 +9935,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 9911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 547: -#line 3595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 549: +#line 3604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -9921,28 +9949,28 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 9925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 548: -#line 3607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 549: -#line 3610 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 550: #line 3616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 551: +#line 3619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 552: +#line 3625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -9951,11 +9979,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 551: -#line 3624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 553: +#line 3633 "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); @@ -9963,21 +9991,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 552: -#line 3631 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 554: +#line 3640 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 553: -#line 3636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 555: +#line 3645 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -9989,22 +10017,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 554: -#line 3647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 556: +#line 3656 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 555: -#line 3653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 557: +#line 3662 "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); @@ -10017,81 +10045,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 556: -#line 3668 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 10029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 557: -#line 3671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 10037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 558: #line 3677 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 559: #line 3680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = 0; + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 560: #line 3686 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); - (yyval.interm.nodePair).node2 = 0; + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 561: -#line 3690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3689 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = 0; + } +#line 10081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 562: +#line 3695 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = 0; + } +#line 10090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 563: +#line 3699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 10071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 562: -#line 3697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 564: +#line 3706 "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 10081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 563: -#line 3702 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 565: +#line 3711 "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 10091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 564: -#line 3707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 566: +#line 3716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -10099,83 +10127,83 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 10103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 565: -#line 3714 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 567: +#line 3723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 10111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 566: -#line 3717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 568: +#line 3726 "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 10120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 567: -#line 3726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 569: +#line 3735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 10129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 568: -#line 3730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 570: +#line 3739 "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 10140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 569: -#line 3739 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 10148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 570: -#line 3742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 10156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 571: -#line 3745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 10176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 572: +#line 3751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 10184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 573: +#line 3754 "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 10166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 572: -#line 3753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 574: +#line 3762 "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 10175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 573: -#line 3757 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 575: +#line 3766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -10191,52 +10219,52 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 10195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 574: -#line 3775 "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 10204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 575: -#line 3781 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = (yyvsp[0].interm.attributes); - } -#line 10212 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 576: #line 3784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); + (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); + parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); } -#line 10220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 577: -#line 3789 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); + (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 10228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 578: -#line 3792 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); + } +#line 10248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 579: +#line 3798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); + } +#line 10256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 580: +#line 3801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 10236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 10240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10464,5 +10492,5 @@ yyreturn: #endif return yyresult; } -#line 3796 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 3805 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index a467db64..3e67dd0d 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -76,380 +76,381 @@ extern int yydebug; 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, - NONUNIFORM = 337, - PAYLOADNV = 338, - PAYLOADINNV = 339, - HITATTRNV = 340, - CALLDATANV = 341, - CALLDATAINNV = 342, - COHERENT = 343, - VOLATILE = 344, - RESTRICT = 345, - READONLY = 346, - WRITEONLY = 347, - DEVICECOHERENT = 348, - QUEUEFAMILYCOHERENT = 349, - WORKGROUPCOHERENT = 350, - SUBGROUPCOHERENT = 351, - NONPRIVATE = 352, - DVEC2 = 353, - DVEC3 = 354, - DVEC4 = 355, - DMAT2 = 356, - DMAT3 = 357, - DMAT4 = 358, - F16VEC2 = 359, - F16VEC3 = 360, - F16VEC4 = 361, - F16MAT2 = 362, - F16MAT3 = 363, - F16MAT4 = 364, - F32VEC2 = 365, - F32VEC3 = 366, - F32VEC4 = 367, - F32MAT2 = 368, - F32MAT3 = 369, - F32MAT4 = 370, - F64VEC2 = 371, - F64VEC3 = 372, - F64VEC4 = 373, - F64MAT2 = 374, - F64MAT3 = 375, - F64MAT4 = 376, - NOPERSPECTIVE = 377, - FLAT = 378, - SMOOTH = 379, - LAYOUT = 380, - EXPLICITINTERPAMD = 381, - PERVERTEXNV = 382, - PERPRIMITIVENV = 383, - PERVIEWNV = 384, - PERTASKNV = 385, - MAT2X2 = 386, - MAT2X3 = 387, - MAT2X4 = 388, - MAT3X2 = 389, - MAT3X3 = 390, - MAT3X4 = 391, - MAT4X2 = 392, - MAT4X3 = 393, - MAT4X4 = 394, - DMAT2X2 = 395, - DMAT2X3 = 396, - DMAT2X4 = 397, - DMAT3X2 = 398, - DMAT3X3 = 399, - DMAT3X4 = 400, - DMAT4X2 = 401, - DMAT4X3 = 402, - DMAT4X4 = 403, - F16MAT2X2 = 404, - F16MAT2X3 = 405, - F16MAT2X4 = 406, - F16MAT3X2 = 407, - F16MAT3X3 = 408, - F16MAT3X4 = 409, - F16MAT4X2 = 410, - F16MAT4X3 = 411, - F16MAT4X4 = 412, - F32MAT2X2 = 413, - F32MAT2X3 = 414, - F32MAT2X4 = 415, - F32MAT3X2 = 416, - F32MAT3X3 = 417, - F32MAT3X4 = 418, - F32MAT4X2 = 419, - F32MAT4X3 = 420, - F32MAT4X4 = 421, - F64MAT2X2 = 422, - F64MAT2X3 = 423, - F64MAT2X4 = 424, - F64MAT3X2 = 425, - F64MAT3X3 = 426, - F64MAT3X4 = 427, - F64MAT4X2 = 428, - F64MAT4X3 = 429, - F64MAT4X4 = 430, - ATOMIC_UINT = 431, - ACCSTRUCTNV = 432, - FCOOPMATNV = 433, - SAMPLER1D = 434, - SAMPLER2D = 435, - SAMPLER3D = 436, - SAMPLERCUBE = 437, - SAMPLER1DSHADOW = 438, - SAMPLER2DSHADOW = 439, - SAMPLERCUBESHADOW = 440, - SAMPLER1DARRAY = 441, - SAMPLER2DARRAY = 442, - SAMPLER1DARRAYSHADOW = 443, - SAMPLER2DARRAYSHADOW = 444, - ISAMPLER1D = 445, - ISAMPLER2D = 446, - ISAMPLER3D = 447, - ISAMPLERCUBE = 448, - ISAMPLER1DARRAY = 449, - ISAMPLER2DARRAY = 450, - USAMPLER1D = 451, - USAMPLER2D = 452, - USAMPLER3D = 453, - USAMPLERCUBE = 454, - USAMPLER1DARRAY = 455, - USAMPLER2DARRAY = 456, - SAMPLER2DRECT = 457, - SAMPLER2DRECTSHADOW = 458, - ISAMPLER2DRECT = 459, - USAMPLER2DRECT = 460, - SAMPLERBUFFER = 461, - ISAMPLERBUFFER = 462, - USAMPLERBUFFER = 463, - SAMPLERCUBEARRAY = 464, - SAMPLERCUBEARRAYSHADOW = 465, - ISAMPLERCUBEARRAY = 466, - USAMPLERCUBEARRAY = 467, - SAMPLER2DMS = 468, - ISAMPLER2DMS = 469, - USAMPLER2DMS = 470, - SAMPLER2DMSARRAY = 471, - ISAMPLER2DMSARRAY = 472, - USAMPLER2DMSARRAY = 473, - SAMPLEREXTERNALOES = 474, - SAMPLEREXTERNAL2DY2YEXT = 475, - F16SAMPLER1D = 476, - F16SAMPLER2D = 477, - F16SAMPLER3D = 478, - F16SAMPLER2DRECT = 479, - F16SAMPLERCUBE = 480, - F16SAMPLER1DARRAY = 481, - F16SAMPLER2DARRAY = 482, - F16SAMPLERCUBEARRAY = 483, - F16SAMPLERBUFFER = 484, - F16SAMPLER2DMS = 485, - F16SAMPLER2DMSARRAY = 486, - F16SAMPLER1DSHADOW = 487, - F16SAMPLER2DSHADOW = 488, - F16SAMPLER1DARRAYSHADOW = 489, - F16SAMPLER2DARRAYSHADOW = 490, - F16SAMPLER2DRECTSHADOW = 491, - F16SAMPLERCUBESHADOW = 492, - F16SAMPLERCUBEARRAYSHADOW = 493, - SAMPLER = 494, - SAMPLERSHADOW = 495, - TEXTURE1D = 496, - TEXTURE2D = 497, - TEXTURE3D = 498, - TEXTURECUBE = 499, - TEXTURE1DARRAY = 500, - TEXTURE2DARRAY = 501, - ITEXTURE1D = 502, - ITEXTURE2D = 503, - ITEXTURE3D = 504, - ITEXTURECUBE = 505, - ITEXTURE1DARRAY = 506, - ITEXTURE2DARRAY = 507, - UTEXTURE1D = 508, - UTEXTURE2D = 509, - UTEXTURE3D = 510, - UTEXTURECUBE = 511, - UTEXTURE1DARRAY = 512, - UTEXTURE2DARRAY = 513, - TEXTURE2DRECT = 514, - ITEXTURE2DRECT = 515, - UTEXTURE2DRECT = 516, - TEXTUREBUFFER = 517, - ITEXTUREBUFFER = 518, - UTEXTUREBUFFER = 519, - TEXTURECUBEARRAY = 520, - ITEXTURECUBEARRAY = 521, - UTEXTURECUBEARRAY = 522, - TEXTURE2DMS = 523, - ITEXTURE2DMS = 524, - UTEXTURE2DMS = 525, - TEXTURE2DMSARRAY = 526, - ITEXTURE2DMSARRAY = 527, - UTEXTURE2DMSARRAY = 528, - F16TEXTURE1D = 529, - F16TEXTURE2D = 530, - F16TEXTURE3D = 531, - F16TEXTURE2DRECT = 532, - F16TEXTURECUBE = 533, - F16TEXTURE1DARRAY = 534, - F16TEXTURE2DARRAY = 535, - F16TEXTURECUBEARRAY = 536, - F16TEXTUREBUFFER = 537, - F16TEXTURE2DMS = 538, - F16TEXTURE2DMSARRAY = 539, - SUBPASSINPUT = 540, - SUBPASSINPUTMS = 541, - ISUBPASSINPUT = 542, - ISUBPASSINPUTMS = 543, - USUBPASSINPUT = 544, - USUBPASSINPUTMS = 545, - F16SUBPASSINPUT = 546, - F16SUBPASSINPUTMS = 547, - IMAGE1D = 548, - IIMAGE1D = 549, - UIMAGE1D = 550, - IMAGE2D = 551, - IIMAGE2D = 552, - UIMAGE2D = 553, - IMAGE3D = 554, - IIMAGE3D = 555, - UIMAGE3D = 556, - IMAGE2DRECT = 557, - IIMAGE2DRECT = 558, - UIMAGE2DRECT = 559, - IMAGECUBE = 560, - IIMAGECUBE = 561, - UIMAGECUBE = 562, - IMAGEBUFFER = 563, - IIMAGEBUFFER = 564, - UIMAGEBUFFER = 565, - IMAGE1DARRAY = 566, - IIMAGE1DARRAY = 567, - UIMAGE1DARRAY = 568, - IMAGE2DARRAY = 569, - IIMAGE2DARRAY = 570, - UIMAGE2DARRAY = 571, - IMAGECUBEARRAY = 572, - IIMAGECUBEARRAY = 573, - UIMAGECUBEARRAY = 574, - IMAGE2DMS = 575, - IIMAGE2DMS = 576, - UIMAGE2DMS = 577, - IMAGE2DMSARRAY = 578, - IIMAGE2DMSARRAY = 579, - UIMAGE2DMSARRAY = 580, - F16IMAGE1D = 581, - F16IMAGE2D = 582, - F16IMAGE3D = 583, - F16IMAGE2DRECT = 584, - F16IMAGECUBE = 585, - F16IMAGE1DARRAY = 586, - F16IMAGE2DARRAY = 587, - F16IMAGECUBEARRAY = 588, - F16IMAGEBUFFER = 589, - F16IMAGE2DMS = 590, - F16IMAGE2DMSARRAY = 591, - STRUCT = 592, - VOID = 593, - WHILE = 594, - IDENTIFIER = 595, - TYPE_NAME = 596, - FLOATCONSTANT = 597, - DOUBLECONSTANT = 598, - INT16CONSTANT = 599, - UINT16CONSTANT = 600, - INT32CONSTANT = 601, - UINT32CONSTANT = 602, - INTCONSTANT = 603, - UINTCONSTANT = 604, - INT64CONSTANT = 605, - UINT64CONSTANT = 606, - BOOLCONSTANT = 607, - FLOAT16CONSTANT = 608, - LEFT_OP = 609, - RIGHT_OP = 610, - INC_OP = 611, - DEC_OP = 612, - LE_OP = 613, - GE_OP = 614, - EQ_OP = 615, - NE_OP = 616, - AND_OP = 617, - OR_OP = 618, - XOR_OP = 619, - MUL_ASSIGN = 620, - DIV_ASSIGN = 621, - ADD_ASSIGN = 622, - MOD_ASSIGN = 623, - LEFT_ASSIGN = 624, - RIGHT_ASSIGN = 625, - AND_ASSIGN = 626, - XOR_ASSIGN = 627, - OR_ASSIGN = 628, - SUB_ASSIGN = 629, - LEFT_PAREN = 630, - RIGHT_PAREN = 631, - LEFT_BRACKET = 632, - RIGHT_BRACKET = 633, - LEFT_BRACE = 634, - RIGHT_BRACE = 635, - DOT = 636, - COMMA = 637, - COLON = 638, - EQUAL = 639, - SEMICOLON = 640, - BANG = 641, - DASH = 642, - TILDE = 643, - PLUS = 644, - STAR = 645, - SLASH = 646, - PERCENT = 647, - LEFT_ANGLE = 648, - RIGHT_ANGLE = 649, - VERTICAL_BAR = 650, - CARET = 651, - AMPERSAND = 652, - QUESTION = 653, - INVARIANT = 654, - PRECISE = 655, - HIGH_PRECISION = 656, - MEDIUM_PRECISION = 657, - LOW_PRECISION = 658, - PRECISION = 659, - PACKED = 660, - RESOURCE = 661, - SUPERP = 662 + DEMOTE = 289, + BVEC2 = 290, + BVEC3 = 291, + BVEC4 = 292, + IVEC2 = 293, + IVEC3 = 294, + IVEC4 = 295, + UVEC2 = 296, + UVEC3 = 297, + UVEC4 = 298, + I64VEC2 = 299, + I64VEC3 = 300, + I64VEC4 = 301, + U64VEC2 = 302, + U64VEC3 = 303, + U64VEC4 = 304, + I32VEC2 = 305, + I32VEC3 = 306, + I32VEC4 = 307, + U32VEC2 = 308, + U32VEC3 = 309, + U32VEC4 = 310, + I16VEC2 = 311, + I16VEC3 = 312, + I16VEC4 = 313, + U16VEC2 = 314, + U16VEC3 = 315, + U16VEC4 = 316, + I8VEC2 = 317, + I8VEC3 = 318, + I8VEC4 = 319, + U8VEC2 = 320, + U8VEC3 = 321, + U8VEC4 = 322, + VEC2 = 323, + VEC3 = 324, + VEC4 = 325, + MAT2 = 326, + MAT3 = 327, + MAT4 = 328, + CENTROID = 329, + IN = 330, + OUT = 331, + INOUT = 332, + UNIFORM = 333, + PATCH = 334, + SAMPLE = 335, + BUFFER = 336, + SHARED = 337, + NONUNIFORM = 338, + PAYLOADNV = 339, + PAYLOADINNV = 340, + HITATTRNV = 341, + CALLDATANV = 342, + CALLDATAINNV = 343, + COHERENT = 344, + VOLATILE = 345, + RESTRICT = 346, + READONLY = 347, + WRITEONLY = 348, + DEVICECOHERENT = 349, + QUEUEFAMILYCOHERENT = 350, + WORKGROUPCOHERENT = 351, + SUBGROUPCOHERENT = 352, + NONPRIVATE = 353, + DVEC2 = 354, + DVEC3 = 355, + DVEC4 = 356, + DMAT2 = 357, + DMAT3 = 358, + DMAT4 = 359, + F16VEC2 = 360, + F16VEC3 = 361, + F16VEC4 = 362, + F16MAT2 = 363, + F16MAT3 = 364, + F16MAT4 = 365, + F32VEC2 = 366, + F32VEC3 = 367, + F32VEC4 = 368, + F32MAT2 = 369, + F32MAT3 = 370, + F32MAT4 = 371, + F64VEC2 = 372, + F64VEC3 = 373, + F64VEC4 = 374, + F64MAT2 = 375, + F64MAT3 = 376, + F64MAT4 = 377, + NOPERSPECTIVE = 378, + FLAT = 379, + SMOOTH = 380, + LAYOUT = 381, + EXPLICITINTERPAMD = 382, + PERVERTEXNV = 383, + PERPRIMITIVENV = 384, + PERVIEWNV = 385, + PERTASKNV = 386, + MAT2X2 = 387, + MAT2X3 = 388, + MAT2X4 = 389, + MAT3X2 = 390, + MAT3X3 = 391, + MAT3X4 = 392, + MAT4X2 = 393, + MAT4X3 = 394, + MAT4X4 = 395, + DMAT2X2 = 396, + DMAT2X3 = 397, + DMAT2X4 = 398, + DMAT3X2 = 399, + DMAT3X3 = 400, + DMAT3X4 = 401, + DMAT4X2 = 402, + DMAT4X3 = 403, + DMAT4X4 = 404, + F16MAT2X2 = 405, + F16MAT2X3 = 406, + F16MAT2X4 = 407, + F16MAT3X2 = 408, + F16MAT3X3 = 409, + F16MAT3X4 = 410, + F16MAT4X2 = 411, + F16MAT4X3 = 412, + F16MAT4X4 = 413, + F32MAT2X2 = 414, + F32MAT2X3 = 415, + F32MAT2X4 = 416, + F32MAT3X2 = 417, + F32MAT3X3 = 418, + F32MAT3X4 = 419, + F32MAT4X2 = 420, + F32MAT4X3 = 421, + F32MAT4X4 = 422, + F64MAT2X2 = 423, + F64MAT2X3 = 424, + F64MAT2X4 = 425, + F64MAT3X2 = 426, + F64MAT3X3 = 427, + F64MAT3X4 = 428, + F64MAT4X2 = 429, + F64MAT4X3 = 430, + F64MAT4X4 = 431, + ATOMIC_UINT = 432, + ACCSTRUCTNV = 433, + FCOOPMATNV = 434, + SAMPLER1D = 435, + SAMPLER2D = 436, + SAMPLER3D = 437, + SAMPLERCUBE = 438, + SAMPLER1DSHADOW = 439, + SAMPLER2DSHADOW = 440, + SAMPLERCUBESHADOW = 441, + SAMPLER1DARRAY = 442, + SAMPLER2DARRAY = 443, + SAMPLER1DARRAYSHADOW = 444, + SAMPLER2DARRAYSHADOW = 445, + ISAMPLER1D = 446, + ISAMPLER2D = 447, + ISAMPLER3D = 448, + ISAMPLERCUBE = 449, + ISAMPLER1DARRAY = 450, + ISAMPLER2DARRAY = 451, + USAMPLER1D = 452, + USAMPLER2D = 453, + USAMPLER3D = 454, + USAMPLERCUBE = 455, + USAMPLER1DARRAY = 456, + USAMPLER2DARRAY = 457, + SAMPLER2DRECT = 458, + SAMPLER2DRECTSHADOW = 459, + ISAMPLER2DRECT = 460, + USAMPLER2DRECT = 461, + SAMPLERBUFFER = 462, + ISAMPLERBUFFER = 463, + USAMPLERBUFFER = 464, + SAMPLERCUBEARRAY = 465, + SAMPLERCUBEARRAYSHADOW = 466, + ISAMPLERCUBEARRAY = 467, + USAMPLERCUBEARRAY = 468, + SAMPLER2DMS = 469, + ISAMPLER2DMS = 470, + USAMPLER2DMS = 471, + SAMPLER2DMSARRAY = 472, + ISAMPLER2DMSARRAY = 473, + USAMPLER2DMSARRAY = 474, + SAMPLEREXTERNALOES = 475, + SAMPLEREXTERNAL2DY2YEXT = 476, + F16SAMPLER1D = 477, + F16SAMPLER2D = 478, + F16SAMPLER3D = 479, + F16SAMPLER2DRECT = 480, + F16SAMPLERCUBE = 481, + F16SAMPLER1DARRAY = 482, + F16SAMPLER2DARRAY = 483, + F16SAMPLERCUBEARRAY = 484, + F16SAMPLERBUFFER = 485, + F16SAMPLER2DMS = 486, + F16SAMPLER2DMSARRAY = 487, + F16SAMPLER1DSHADOW = 488, + F16SAMPLER2DSHADOW = 489, + F16SAMPLER1DARRAYSHADOW = 490, + F16SAMPLER2DARRAYSHADOW = 491, + F16SAMPLER2DRECTSHADOW = 492, + F16SAMPLERCUBESHADOW = 493, + F16SAMPLERCUBEARRAYSHADOW = 494, + SAMPLER = 495, + SAMPLERSHADOW = 496, + TEXTURE1D = 497, + TEXTURE2D = 498, + TEXTURE3D = 499, + TEXTURECUBE = 500, + TEXTURE1DARRAY = 501, + TEXTURE2DARRAY = 502, + ITEXTURE1D = 503, + ITEXTURE2D = 504, + ITEXTURE3D = 505, + ITEXTURECUBE = 506, + ITEXTURE1DARRAY = 507, + ITEXTURE2DARRAY = 508, + UTEXTURE1D = 509, + UTEXTURE2D = 510, + UTEXTURE3D = 511, + UTEXTURECUBE = 512, + UTEXTURE1DARRAY = 513, + UTEXTURE2DARRAY = 514, + TEXTURE2DRECT = 515, + ITEXTURE2DRECT = 516, + UTEXTURE2DRECT = 517, + TEXTUREBUFFER = 518, + ITEXTUREBUFFER = 519, + UTEXTUREBUFFER = 520, + TEXTURECUBEARRAY = 521, + ITEXTURECUBEARRAY = 522, + UTEXTURECUBEARRAY = 523, + TEXTURE2DMS = 524, + ITEXTURE2DMS = 525, + UTEXTURE2DMS = 526, + TEXTURE2DMSARRAY = 527, + ITEXTURE2DMSARRAY = 528, + UTEXTURE2DMSARRAY = 529, + F16TEXTURE1D = 530, + F16TEXTURE2D = 531, + F16TEXTURE3D = 532, + F16TEXTURE2DRECT = 533, + F16TEXTURECUBE = 534, + F16TEXTURE1DARRAY = 535, + F16TEXTURE2DARRAY = 536, + F16TEXTURECUBEARRAY = 537, + F16TEXTUREBUFFER = 538, + F16TEXTURE2DMS = 539, + F16TEXTURE2DMSARRAY = 540, + SUBPASSINPUT = 541, + SUBPASSINPUTMS = 542, + ISUBPASSINPUT = 543, + ISUBPASSINPUTMS = 544, + USUBPASSINPUT = 545, + USUBPASSINPUTMS = 546, + F16SUBPASSINPUT = 547, + F16SUBPASSINPUTMS = 548, + IMAGE1D = 549, + IIMAGE1D = 550, + UIMAGE1D = 551, + IMAGE2D = 552, + IIMAGE2D = 553, + UIMAGE2D = 554, + IMAGE3D = 555, + IIMAGE3D = 556, + UIMAGE3D = 557, + IMAGE2DRECT = 558, + IIMAGE2DRECT = 559, + UIMAGE2DRECT = 560, + IMAGECUBE = 561, + IIMAGECUBE = 562, + UIMAGECUBE = 563, + IMAGEBUFFER = 564, + IIMAGEBUFFER = 565, + UIMAGEBUFFER = 566, + IMAGE1DARRAY = 567, + IIMAGE1DARRAY = 568, + UIMAGE1DARRAY = 569, + IMAGE2DARRAY = 570, + IIMAGE2DARRAY = 571, + UIMAGE2DARRAY = 572, + IMAGECUBEARRAY = 573, + IIMAGECUBEARRAY = 574, + UIMAGECUBEARRAY = 575, + IMAGE2DMS = 576, + IIMAGE2DMS = 577, + UIMAGE2DMS = 578, + IMAGE2DMSARRAY = 579, + IIMAGE2DMSARRAY = 580, + UIMAGE2DMSARRAY = 581, + F16IMAGE1D = 582, + F16IMAGE2D = 583, + F16IMAGE3D = 584, + F16IMAGE2DRECT = 585, + F16IMAGECUBE = 586, + F16IMAGE1DARRAY = 587, + F16IMAGE2DARRAY = 588, + F16IMAGECUBEARRAY = 589, + F16IMAGEBUFFER = 590, + F16IMAGE2DMS = 591, + F16IMAGE2DMSARRAY = 592, + STRUCT = 593, + VOID = 594, + WHILE = 595, + IDENTIFIER = 596, + TYPE_NAME = 597, + FLOATCONSTANT = 598, + DOUBLECONSTANT = 599, + INT16CONSTANT = 600, + UINT16CONSTANT = 601, + INT32CONSTANT = 602, + UINT32CONSTANT = 603, + INTCONSTANT = 604, + UINTCONSTANT = 605, + INT64CONSTANT = 606, + UINT64CONSTANT = 607, + BOOLCONSTANT = 608, + FLOAT16CONSTANT = 609, + LEFT_OP = 610, + RIGHT_OP = 611, + INC_OP = 612, + DEC_OP = 613, + LE_OP = 614, + GE_OP = 615, + EQ_OP = 616, + NE_OP = 617, + AND_OP = 618, + OR_OP = 619, + XOR_OP = 620, + MUL_ASSIGN = 621, + DIV_ASSIGN = 622, + ADD_ASSIGN = 623, + MOD_ASSIGN = 624, + LEFT_ASSIGN = 625, + RIGHT_ASSIGN = 626, + AND_ASSIGN = 627, + XOR_ASSIGN = 628, + OR_ASSIGN = 629, + SUB_ASSIGN = 630, + LEFT_PAREN = 631, + RIGHT_PAREN = 632, + LEFT_BRACKET = 633, + RIGHT_BRACKET = 634, + LEFT_BRACE = 635, + RIGHT_BRACE = 636, + DOT = 637, + COMMA = 638, + COLON = 639, + EQUAL = 640, + SEMICOLON = 641, + BANG = 642, + DASH = 643, + TILDE = 644, + PLUS = 645, + STAR = 646, + SLASH = 647, + PERCENT = 648, + LEFT_ANGLE = 649, + RIGHT_ANGLE = 650, + VERTICAL_BAR = 651, + CARET = 652, + AMPERSAND = 653, + QUESTION = 654, + INVARIANT = 655, + PRECISE = 656, + HIGH_PRECISION = 657, + MEDIUM_PRECISION = 658, + LOW_PRECISION = 659, + PRECISION = 660, + PACKED = 661, + RESOURCE = 662, + SUPERP = 663 }; #endif @@ -494,7 +495,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 498 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ +#line 499 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index abf5681b..3ca3a80f 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1098,6 +1098,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break; case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices"; break; + case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break; + default: out.debug.message(EPrefixError, "Bad aggregation op"); } @@ -1392,6 +1394,7 @@ bool TOutputTraverser::visitBranch(TVisit /* visit*/, TIntermBranch* node) case EOpContinue: out.debug << "Branch: Continue"; break; case EOpReturn: out.debug << "Branch: Return"; break; case EOpCase: out.debug << "case: "; break; + case EOpDemote: out.debug << "Demote"; break; case EOpDefault: out.debug << "default: "; break; default: out.debug << "Branch: Unknown Branch"; break; } diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 30ba98db..eb0cc7a4 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -266,7 +266,8 @@ public: needToLegalize(false), binaryDoubleOutput(false), usePhysicalStorageBuffer(false), - uniformLocationBase(0) + uniformLocationBase(0), + nanMinMaxClamp(false) { localSize[0] = 1; localSize[1] = 1; @@ -767,6 +768,9 @@ public: void setUniformLocationBase(int base) { uniformLocationBase = base; } int getUniformLocationBase() const { return uniformLocationBase; } + void setNanMinMaxClamp(bool setting) { nanMinMaxClamp = setting; } + bool getNanMinMaxClamp() const { return nanMinMaxClamp; } + void setNeedsLegalization() { needToLegalize = true; } bool needsLegalization() const { return needToLegalize; } @@ -776,6 +780,27 @@ public: const char* const implicitThisName; const char* const implicitCounterName; + // Certain explicit conversions are allowed conditionally + bool getArithemeticInt8Enabled() const { + return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || + extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8); + } + bool getArithemeticInt16Enabled() const { + return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || +#ifdef AMD_EXTENSIONS + extensionRequested(E_GL_AMD_gpu_shader_int16) || +#endif + extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16); + } + + bool getArithemeticFloat16Enabled() const { + return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) || +#ifdef AMD_EXTENSIONS + extensionRequested(E_GL_AMD_gpu_shader_half_float) || +#endif + extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16); + } + protected: TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); void error(TInfoSink& infoSink, const char*); @@ -900,6 +925,7 @@ protected: std::unordered_map uniformLocationOverrides; int uniformLocationBase; + bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN private: void operator=(TIntermediate&); // prevent assignments diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 747f56a0..8811ca19 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -435,6 +435,7 @@ public: void setHlslIoMapping(bool hlslIoMap); void setFlattenUniformArrays(bool flatten); void setNoStorageFormat(bool useUnknownFormat); + void setNanMinMaxClamp(bool nanMinMaxClamp); void setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode); // For setting up the environment (cleared to nothingness in the constructor). diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 6fb69e4b..7738c804 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -351,6 +351,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.shapeConvRet.frag", "main"}, {"hlsl.self_cast.frag", "main"}, {"hlsl.snorm.uav.comp", "main"}, + {"hlsl.specConstant.frag", "main"}, {"hlsl.staticMemberFunction.frag", "main"}, {"hlsl.staticFuncInit.frag", "main"}, {"hlsl.store.rwbyteaddressbuffer.type.comp", "main"}, diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ead5e6d2..e630f56f 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -294,8 +294,10 @@ INSTANTIATE_TEST_CASE_P( "spv.bufferhandle9.frag", "spv.bufferhandle_Error.frag", "spv.builtInXFB.vert", + "spv.conditionalDemote.frag", "spv.conditionalDiscard.frag", "spv.constStruct.vert", + "spv.constConstruct.vert", "spv.controlFlowAttributes.frag", "spv.conversion.frag", "spv.coopmat.comp", @@ -303,6 +305,7 @@ INSTANTIATE_TEST_CASE_P( "spv.dataOut.frag", "spv.dataOutIndirect.frag", "spv.dataOutIndirect.vert", + "spv.demoteDisabled.frag", "spv.deepRvalue.frag", "spv.depthOut.frag", "spv.discard-dce.frag", @@ -325,6 +328,7 @@ INSTANTIATE_TEST_CASE_P( "spv.functionCall.frag", "spv.functionNestedOpaque.vert", "spv.functionSemantics.frag", + "spv.functionParameterTypes.frag", "spv.GeometryShaderPassthrough.geom", "spv.interpOps.frag", "spv.int64.frag", @@ -353,6 +357,7 @@ INSTANTIATE_TEST_CASE_P( "spv.precision.frag", "spv.precisionNonESSamp.frag", "spv.prepost.frag", + "spv.privateVariableTypes.frag", "spv.qualifiers.vert", "spv.sample.frag", "spv.sampleId.frag", @@ -410,6 +415,8 @@ INSTANTIATE_TEST_CASE_P( "spv.xfb2.vert", "spv.xfb3.vert", "spv.samplerlessTextureFunctions.frag", + "spv.smBuiltins.vert", + "spv.smBuiltins.frag", })), FileNameAsCustomTestSuffix ); @@ -538,6 +545,7 @@ INSTANTIATE_TEST_CASE_P( "vulkan.vert", "vulkan.comp", "samplerlessTextureFunctions.frag", + "spv.specConstArrayCheck.vert", })), FileNameAsCustomTestSuffix ); @@ -617,6 +625,7 @@ INSTANTIATE_TEST_CASE_P( "spv.meshShaderUserDefined.mesh", "spv.meshShaderPerViewBuiltins.mesh", "spv.meshShaderPerViewUserDefined.mesh", + "spv.meshShaderPerView_Errors.mesh", "spv.meshShaderSharedMem.mesh", "spv.meshShaderTaskMem.mesh", "spv.320.meshShaderUserDefined.mesh", diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 56743104..a972009c 100644 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -816,7 +816,8 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, base->getAsSymbolNode()->getName().c_str(), ""); else error(loc, " left of '[' is not of type array, matrix, or vector ", "expression", ""); - } else if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) { + } else if (base->getType().getQualifier().isFrontEndConstant() && + index->getQualifier().isFrontEndConstant()) { // both base and index are front-end constants checkIndex(loc, base->getType(), indexValue); return intermediate.foldDereference(base, indexValue, loc); diff --git a/known_good.json b/known_good.json index 337a573d..03818797 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "2c0111e6eba779cf30e8c7f5a733ea0762895ba0" + "commit" : "aa9e8f538041db3055ea443080e0ccc315fa114f" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "8b911bd2ba37677037b38c9bd286c7c05701bcda" + "commit" : "45c2cc37276d69e5b257507d97fd90d2a5684ccc" } ] }