diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.EXT.h b/3rdparty/glslang/SPIRV/GLSL.ext.EXT.h index 748d9c883..a5c242526 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.EXT.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.EXT.h @@ -42,5 +42,7 @@ static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_in static const char* const E_SPV_EXT_shader_tile_image = "SPV_EXT_shader_tile_image"; static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader"; static const char* const E_SPV_EXT_float8 = "SPV_EXT_float8"; +static const char* const E_SPV_EXT_shader_64bit_indexing = "SPV_EXT_shader_64bit_indexing"; +static const char* const E_SPV_EXT_shader_invocation_reorder = "SPV_EXT_shader_invocation_reorder"; #endif // #ifndef GLSLextEXT_H diff --git a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp index eec68596b..c42c1395e 100644 --- a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp +++ b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp @@ -127,15 +127,16 @@ public: glslang::SpvOptions& options); virtual ~TGlslangToSpvTraverser() { } - bool visitAggregate(glslang::TVisit, glslang::TIntermAggregate*); - bool visitBinary(glslang::TVisit, glslang::TIntermBinary*); - void visitConstantUnion(glslang::TIntermConstantUnion*); - bool visitSelection(glslang::TVisit, glslang::TIntermSelection*); - bool visitSwitch(glslang::TVisit, glslang::TIntermSwitch*); - void visitSymbol(glslang::TIntermSymbol* symbol); - bool visitUnary(glslang::TVisit, glslang::TIntermUnary*); - bool visitLoop(glslang::TVisit, glslang::TIntermLoop*); - bool visitBranch(glslang::TVisit visit, glslang::TIntermBranch*); + bool visitAggregate(glslang::TVisit, glslang::TIntermAggregate*) override; + bool visitBinary(glslang::TVisit, glslang::TIntermBinary*) override; + void visitConstantUnion(glslang::TIntermConstantUnion*) override; + bool visitSelection(glslang::TVisit, glslang::TIntermSelection*) override; + bool visitSwitch(glslang::TVisit, glslang::TIntermSwitch*) override; + void visitSymbol(glslang::TIntermSymbol* symbol) override; + bool visitUnary(glslang::TVisit, glslang::TIntermUnary*) override; + bool visitLoop(glslang::TVisit, glslang::TIntermLoop*) override; + bool visitBranch(glslang::TVisit visit, glslang::TIntermBranch*) override; + bool visitVariableDecl(glslang::TVisit, glslang::TIntermVariableDecl*) override; void finishSpv(bool compileOnly); void dumpSpv(std::vector& out); @@ -194,7 +195,6 @@ protected: void makeGlobalInitializers(const glslang::TIntermSequence&); void collectRayTracingLinkerObjects(); void visitFunctions(const glslang::TIntermSequence&); - void handleFunctionEntry(const glslang::TIntermAggregate* node); void translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); void translateArguments(glslang::TIntermUnary& node, std::vector& arguments); @@ -390,6 +390,7 @@ spv::Decoration TranslateBlockDecoration(const glslang::TStorageQualifier storag case glslang::EvqCallableData: return spv::Decoration::Block; case glslang::EvqCallableDataIn: return spv::Decoration::Block; case glslang::EvqHitObjectAttrNV: return spv::Decoration::Block; + case glslang::EvqHitObjectAttrEXT: return spv::Decoration::Block; default: assert(0); break; @@ -465,6 +466,7 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T case glslang::EvqCallableData: case glslang::EvqCallableDataIn: case glslang::EvqHitObjectAttrNV: + case glslang::EvqHitObjectAttrEXT: return spv::Decoration::Max; default: assert(0); @@ -1323,7 +1325,8 @@ spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(const glslang: // Translate glslang type to SPIR-V storage class. spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type) { - if (type.getBasicType() == glslang::EbtRayQuery || type.getBasicType() == glslang::EbtHitObjectNV) + if (type.getBasicType() == glslang::EbtRayQuery || type.getBasicType() == glslang::EbtHitObjectNV + || type.getBasicType() == glslang::EbtHitObjectEXT) return spv::StorageClass::Private; if (type.getQualifier().isSpirvByReference()) { if (type.getQualifier().isParamInput() || type.getQualifier().isParamOutput()) @@ -1389,6 +1392,7 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T case glslang::EvqCallableDataIn: return spv::StorageClass::IncomingCallableDataKHR; case glslang::EvqtaskPayloadSharedEXT : return spv::StorageClass::TaskPayloadWorkgroupEXT; case glslang::EvqHitObjectAttrNV: return spv::StorageClass::HitObjectAttributeNV; + case glslang::EvqHitObjectAttrEXT: return spv::StorageClass::HitObjectAttributeEXT; case glslang::EvqSpirvStorageClass: return static_cast(type.getQualifier().spirvStorageClass); default: assert(0); @@ -1713,6 +1717,13 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExecutionMode(shaderEntry, spv::ExecutionMode::RequireFullQuadsKHR); } + if (glslangIntermediate->usingShader64BitIndexing()) + { + builder.addCapability(spv::Capability::Shader64BitIndexingEXT); + builder.addExtension(spv::E_SPV_EXT_shader_64bit_indexing); + builder.addExecutionMode(shaderEntry, spv::ExecutionMode::Shader64BitIndexingEXT); + } + spv::ExecutionMode mode; switch (glslangIntermediate->getStage()) { case EShLangVertex: @@ -2373,10 +2384,20 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T coherentFlags.nonUniform = 0; // normal case for indexing array or structure or block - builder.accessChainPush(builder.makeIntConstant(spvIndex), - coherentFlags, - node->getLeft()->getType().getBufferReferenceAlignment()); + if ((node->getRight()->getType().getBasicType() == glslang::EbtUint && glslangIntermediate->usingPromoteUint32Indices()) || + node->getRight()->getType().contains64BitInt()) { + int64_t idx = node->getRight()->getType().contains64BitInt() ? + node->getRight()->getAsConstantUnion()->getConstArray()[0].getI64Const() : + node->getRight()->getAsConstantUnion()->getConstArray()[0].getUConst(); + builder.accessChainPush(builder.makeInt64Constant(idx), + coherentFlags, + node->getLeft()->getType().getBufferReferenceAlignment()); + } else { + builder.accessChainPush(builder.makeIntConstant(spvIndex), + coherentFlags, + node->getLeft()->getType().getBufferReferenceAlignment()); + } // Add capabilities here for accessing PointSize and clip/cull distance. // We have deferred generation of associated capabilities until now. if (node->getLeft()->getType().isStruct() && ! node->getLeft()->getType().isArray()) @@ -2429,9 +2450,15 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T index, convertGlslangToSpvType(node->getLeft()->getType()), coherent_flags, glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize)); - } else + } else { + if (glslangIntermediate->usingPromoteUint32Indices() && + node->getRight()->getType().getBasicType() == glslang::EbtUint) { + index = createIntWidthConversion(index, 0, builder.makeIntegerType(64, true), glslang::EbtInt64, node->getRight()->getType().getBasicType()); + } + builder.accessChainPush(index, coherent_flags, node->getLeft()->getType().getBufferReferenceAlignment()); + } } return false; case glslang::EOpVectorSwizzle: @@ -2658,6 +2685,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // So, this has to be block.lastMember.length(). // SPV wants "block" and member number as the operands, go get them. + uint32_t bits = node->getType().contains64BitInt() ? 64 : 32; + spv::Id length; if (node->getOperand()->getType().isCoopMat()) { spv::Id typeId = convertGlslangToSpvType(node->getOperand()->getType()); @@ -2677,7 +2706,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI block->traverse(this); unsigned int member = node->getOperand()->getAsBinaryNode()->getRight()->getAsConstantUnion() ->getConstArray()[0].getUConst(); - length = builder.createArrayLength(builder.accessChainGetLValue(), member); + length = builder.createArrayLength(builder.accessChainGetLValue(), member, bits); } // GLSL semantics say the result of .length() is an int, while SPIR-V says @@ -2685,9 +2714,9 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // AST expectation of a signed result. if (glslangIntermediate->getSource() == glslang::EShSourceGlsl) { if (builder.isInSpecConstCodeGenMode()) { - length = builder.createBinOp(spv::Op::OpIAdd, builder.makeIntType(32), length, builder.makeIntConstant(0)); + length = builder.createBinOp(spv::Op::OpIAdd, builder.makeIntType(bits), length, builder.makeIntConstant(0)); } else { - length = builder.createUnaryOp(spv::Op::OpBitcast, builder.makeIntType(32), length); + length = builder.createUnaryOp(spv::Op::OpBitcast, builder.makeIntType(bits), length); } } @@ -2756,6 +2785,28 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI case glslang::EOpHitObjectGetSphereRadiusNV: case glslang::EOpHitObjectIsSphereHitNV: case glslang::EOpHitObjectIsLSSHitNV: + case glslang::EOpReorderThreadEXT: + case glslang::EOpHitObjectGetCurrentTimeEXT: + case glslang::EOpHitObjectGetHitKindEXT: + case glslang::EOpHitObjectGetPrimitiveIndexEXT: + case glslang::EOpHitObjectGetGeometryIndexEXT: + case glslang::EOpHitObjectGetInstanceIdEXT: + case glslang::EOpHitObjectGetInstanceCustomIndexEXT: + case glslang::EOpHitObjectGetObjectRayDirectionEXT: + case glslang::EOpHitObjectGetObjectRayOriginEXT: + case glslang::EOpHitObjectGetWorldRayDirectionEXT: + case glslang::EOpHitObjectGetWorldRayOriginEXT: + case glslang::EOpHitObjectGetWorldToObjectEXT: + case glslang::EOpHitObjectGetObjectToWorldEXT: + case glslang::EOpHitObjectGetRayTMaxEXT: + case glslang::EOpHitObjectGetRayTMinEXT: + case glslang::EOpHitObjectGetRayFlagsEXT: + case glslang::EOpHitObjectIsEmptyEXT: + case glslang::EOpHitObjectIsHitEXT: + case glslang::EOpHitObjectIsMissEXT: + case glslang::EOpHitObjectRecordEmptyEXT: + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexEXT: + case glslang::EOpHitObjectGetShaderRecordBufferHandleEXT: return true; default: return false; @@ -2927,9 +2978,15 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI case glslang::EOpReorderThreadNV: builder.createNoResultOp(spv::Op::OpReorderThreadWithHitObjectNV, operand); return false; + case glslang::EOpReorderThreadEXT: + builder.createNoResultOp(spv::Op::OpReorderThreadWithHitObjectEXT, operand); + return false; case glslang::EOpHitObjectRecordEmptyNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordEmptyNV, operand); return false; + case glslang::EOpHitObjectRecordEmptyEXT: + builder.createNoResultOp(spv::Op::OpHitObjectRecordEmptyEXT, operand); + return false; case glslang::EOpCreateTensorLayoutNV: result = builder.createOp(spv::Op::OpCreateTensorLayoutNV, resultType(), std::vector{}); @@ -3104,7 +3161,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.enterFunction(shaderEntry); currentFunction = shaderEntry; } else { - handleFunctionEntry(node); + // SPIR-V functions should already be in the functionMap from the prepass + // that called makeFunctions(). + currentFunction = functionMap[node->getName().c_str()]; + spv::Block* functionBlock = currentFunction->getEntryBlock(); + builder.setBuildPoint(functionBlock); + builder.enterFunction(currentFunction); } if (options.generateDebugInfo && !options.emitNonSemanticShaderDebugInfo) { const auto& loc = node->getLoc(); @@ -3113,6 +3175,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt currentFunction->setDebugLineInfo(sourceFileId, loc.line, loc.column); } } else { + // Here we have finished visiting the function (post-visit). Finalize it. if (options.generateDebugInfo) { if (glslangIntermediate->getSource() == glslang::EShSourceGlsl && node->getSequence().size() > 1) { auto endLoc = node->getSequence()[1]->getAsAggregate()->getEndLoc(); @@ -3123,6 +3186,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt entryPointTerminated = true; builder.leaveFunction(); inEntryPoint = false; + currentFunction = nullptr; } return true; @@ -3576,6 +3640,46 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); break; + case glslang::EOpHitObjectTraceRayEXT: + case glslang::EOpHitObjectTraceRayMotionEXT: + case glslang::EOpHitObjectGetAttributesEXT: + case glslang::EOpHitObjectExecuteShaderEXT: + case glslang::EOpHitObjectRecordEmptyEXT: + case glslang::EOpHitObjectRecordMissEXT: + case glslang::EOpHitObjectRecordMissMotionEXT: + case glslang::EOpReorderThreadEXT: + case glslang::EOpHitObjectSetShaderBindingTableRecordIndexEXT: + case glslang::EOpHitObjectReorderExecuteEXT: + case glslang::EOpHitObjectTraceReorderExecuteEXT: + case glslang::EOpHitObjectTraceMotionReorderExecuteEXT: + case glslang::EOpHitObjectRecordFromQueryEXT: + case glslang::EOpHitObjectGetIntersectionTriangleVertexPositionsEXT: + noReturnValue = true; + [[fallthrough]]; + case glslang::EOpHitObjectIsEmptyEXT: + case glslang::EOpHitObjectIsMissEXT: + case glslang::EOpHitObjectIsHitEXT: + case glslang::EOpHitObjectGetRayTMinEXT: + case glslang::EOpHitObjectGetRayTMaxEXT: + case glslang::EOpHitObjectGetRayFlagsEXT: + case glslang::EOpHitObjectGetObjectRayOriginEXT: + case glslang::EOpHitObjectGetObjectRayDirectionEXT: + case glslang::EOpHitObjectGetWorldRayOriginEXT: + case glslang::EOpHitObjectGetWorldRayDirectionEXT: + case glslang::EOpHitObjectGetObjectToWorldEXT: + case glslang::EOpHitObjectGetWorldToObjectEXT: + case glslang::EOpHitObjectGetInstanceCustomIndexEXT: + case glslang::EOpHitObjectGetInstanceIdEXT: + case glslang::EOpHitObjectGetGeometryIndexEXT: + case glslang::EOpHitObjectGetPrimitiveIndexEXT: + case glslang::EOpHitObjectGetHitKindEXT: + case glslang::EOpHitObjectGetCurrentTimeEXT: + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexEXT: + case glslang::EOpHitObjectGetShaderRecordBufferHandleEXT: + builder.addExtension(spv::E_SPV_EXT_shader_invocation_reorder); + builder.addCapability(spv::Capability::ShaderInvocationReorderEXT); + break; + case glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: builder.addExtension(spv::E_SPV_KHR_ray_tracing_position_fetch); builder.addCapability(spv::Capability::RayQueryPositionFetchKHR); @@ -3683,6 +3787,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt + case glslang::EOpHitObjectRecordFromQueryEXT: + case glslang::EOpHitObjectGetIntersectionTriangleVertexPositionsEXT: + if (arg == 0 || arg == 1) + lvalue = true; + break; + case glslang::EOpHitObjectRecordHitNV: case glslang::EOpHitObjectRecordHitMotionNV: case glslang::EOpHitObjectRecordHitWithIndexNV: @@ -3694,6 +3804,16 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpHitObjectRecordMissMotionNV: case glslang::EOpHitObjectGetAttributesNV: case glslang::EOpHitObjectGetClusterIdNV: + case glslang::EOpHitObjectTraceRayEXT: + case glslang::EOpHitObjectTraceRayMotionEXT: + case glslang::EOpHitObjectExecuteShaderEXT: + case glslang::EOpHitObjectRecordMissEXT: + case glslang::EOpHitObjectRecordMissMotionEXT: + case glslang::EOpHitObjectGetAttributesEXT: + case glslang::EOpHitObjectSetShaderBindingTableRecordIndexEXT: + case glslang::EOpHitObjectReorderExecuteEXT: + case glslang::EOpHitObjectTraceReorderExecuteEXT: + case glslang::EOpHitObjectTraceMotionReorderExecuteEXT: if (arg == 0) lvalue = true; break; @@ -3837,6 +3957,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt lvalue = true; break; case glslang::EOpReorderThreadNV: + case glslang::EOpReorderThreadEXT: //Three variants of reorderThreadNV, two of them use hitObjectNV if (arg == 0 && glslangOperands.size() != 2) lvalue = true; @@ -3973,22 +4094,33 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt )) { bool cond = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getBConst(); operands.push_back(builder.makeIntConstant(cond ? 1 : 0)); - } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) || - (arg == 11 && glslangOp == glslang::EOpTraceRayMotionNV) || - (arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR) || - (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderNV) || - (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayNV) || - (arg == 12 && glslangOp == glslang::EOpHitObjectTraceRayMotionNV)) { - const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0; - const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst(); - auto itNode = locationToSymbol[set].find(location); - visitSymbol(itNode->second); - spv::Id symId = getSymbolId(itNode->second); - operands.push_back(symId); + } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) || + (arg == 11 && glslangOp == glslang::EOpTraceRayMotionNV) || + (arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR) || + (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderNV) || + (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderEXT) || + (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayNV) || + (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayEXT) || + (arg == 12 && glslangOp == glslang::EOpHitObjectTraceRayMotionNV) || + (arg == 12 && glslangOp == glslang::EOpHitObjectTraceRayMotionEXT) || + (arg == 12 && glslangOp == glslang::EOpHitObjectTraceMotionReorderExecuteEXT && glslangOperands.size() == 13) || + (arg == 14 && glslangOp == glslang::EOpHitObjectTraceMotionReorderExecuteEXT && glslangOperands.size() == 15) || + (arg == 11 && glslangOp == glslang::EOpHitObjectTraceReorderExecuteEXT && glslangOperands.size() == 12) || + (arg == 13 && glslangOp == glslang::EOpHitObjectTraceReorderExecuteEXT && glslangOperands.size() == 14) || + (arg == 1 && glslangOp == glslang::EOpHitObjectReorderExecuteEXT && glslangOperands.size() == 2) || + (arg == 3 && glslangOp == glslang::EOpHitObjectReorderExecuteEXT && glslangOperands.size() == 4)) { + const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0; + const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst(); + auto itNode = locationToSymbol[set].find(location); + visitSymbol(itNode->second); + spv::Id symId = getSymbolId(itNode->second); + operands.push_back(symId); } else if ((arg == 12 && glslangOp == glslang::EOpHitObjectRecordHitNV) || (arg == 13 && glslangOp == glslang::EOpHitObjectRecordHitMotionNV) || (arg == 11 && glslangOp == glslang::EOpHitObjectRecordHitWithIndexNV) || (arg == 12 && glslangOp == glslang::EOpHitObjectRecordHitWithIndexMotionNV) || + (arg == 3 && glslangOp == glslang::EOpHitObjectRecordFromQueryEXT) || + (arg == 1 && glslangOp == glslang::EOpHitObjectGetAttributesEXT) || (arg == 1 && glslangOp == glslang::EOpHitObjectGetAttributesNV)) { const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst(); const int set = 2; @@ -4198,7 +4330,19 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // store the result to the pointer (out param 'm') builder.createStore(result, operands[1]); result = 0; + } else if (node->getOp() == glslang::EOpHitObjectGetIntersectionTriangleVertexPositionsEXT) { + std::vector idImmOps; + idImmOps.push_back(spv::IdImmediate(true, operands[0])); // hitObject + + spv::Op spvOp = spv::Op::OpHitObjectGetIntersectionTriangleVertexPositionsEXT; + spv::Id typeId = builder.makeArrayType(builder.makeVectorType(builder.makeFloatType(32), 3), + builder.makeUintConstant(3), 0); + + spv::Id result = builder.createOp(spvOp, typeId, idImmOps); + // store the result to the pointer (out param 'm') + builder.createStore(result, operands[1]); + result = 0; } else if (node->getOp() == glslang::EOpCooperativeMatrixMulAdd) { auto matrixOperands = spv::CooperativeMatrixOperandsMask::MaskNone; @@ -4800,7 +4944,7 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn builder.setBuildPoint(&test); node->getTest()->traverse(this); - spv::Id condition = accessChainLoad(node->getTest()->getType()); + spv::Id condition = accessChainLoad(node->getTestExpr()->getType()); builder.createConditionalBranch(condition, &blocks.body, &blocks.merge); builder.setBuildPoint(&blocks.body); @@ -4831,7 +4975,7 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn if (node->getTest()) { node->getTest()->traverse(this); spv::Id condition = - accessChainLoad(node->getTest()->getType()); + accessChainLoad(node->getTestExpr()->getType()); builder.createConditionalBranch(condition, &blocks.head, &blocks.merge); } else { // TODO: unless there was a break/return/discard instruction @@ -4914,6 +5058,18 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T return false; } +bool TGlslangToSpvTraverser::visitVariableDecl(glslang::TVisit visit, glslang::TIntermVariableDecl* node) +{ + if (visit == glslang::EvPreVisit) { + builder.setDebugSourceLocation(node->getDeclSymbol()->getLoc().line, node->getDeclSymbol()->getLoc().getFilename()); + // We touch the symbol once here to create the debug info. + getSymbolId(node->getDeclSymbol()); + } + + return true; +} + + spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* node, spv::Id forcedType) { // First, steer off constants, which are not SPIR-V variables, but @@ -4921,8 +5077,12 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* // This includes specialization constants. if (node->getQualifier().isConstant()) { spv::Id result = createSpvConstant(*node); - if (result != spv::NoResult) + if (result != spv::NoResult) { + auto name = node->getAsSymbolNode()->getAccessName().c_str(); + auto typeId = convertGlslangToSpvType(node->getType()); + builder.createConstVariable(typeId, name, result, currentFunction == nullptr); return result; + } } // Now, handle actual variables @@ -5209,18 +5369,50 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty case glslang::EbtSampler: { const glslang::TSampler& sampler = type.getSampler(); + std::string debugName; + if (sampler.isPureSampler()) { - spvType = builder.makeSamplerType(); + if (options.emitNonSemanticShaderDebugInfo) { + if (glslangIntermediate->getSource() == glslang::EShSourceGlsl) { + debugName = sampler.getString(); + } + else { + debugName = "type.sampler"; + } + } + spvType = builder.makeSamplerType(debugName.c_str()); } else { // an image is present, make its type + if (options.emitNonSemanticShaderDebugInfo) { + if (glslangIntermediate->getSource() == glslang::EShSourceGlsl) { + debugName = sampler.removeCombined().getString(); + } + else { + switch (sampler.dim) { + case glslang::Esd1D: debugName = "type.1d.image"; break; + case glslang::Esd2D: debugName = "type.2d.image"; break; + case glslang::Esd3D: debugName = "type.3d.image"; break; + case glslang::EsdCube: debugName = "type.cube.image"; break; + default: debugName = "type.image"; break; + } + } + } spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.isShadow(), sampler.isArrayed(), sampler.isMultiSample(), - sampler.isImageClass() ? 2 : 1, TranslateImageFormat(type)); + sampler.isImageClass() ? 2 : 1, TranslateImageFormat(type), debugName.c_str()); if (sampler.isCombined() && (!sampler.isBuffer() || glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_6)) { // Already has both image and sampler, make the combined type. Only combine sampler to // buffer if before SPIR-V 1.6. - spvType = builder.makeSampledImageType(spvType); + if (options.emitNonSemanticShaderDebugInfo) { + if (glslangIntermediate->getSource() == glslang::EShSourceGlsl) { + debugName = sampler.getString(); + } + else { + debugName = "type.sampled.image"; + } + } + spvType = builder.makeSampledImageType(spvType, debugName.c_str()); } } } @@ -5254,6 +5446,13 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = builder.makeHitObjectNVType(); } break; + + case glslang::EbtHitObjectEXT: { + builder.addExtension(spv::E_SPV_EXT_shader_invocation_reorder); + builder.addCapability(spv::Capability::ShaderInvocationReorderEXT); + spvType = builder.makeHitObjectEXTType(); + } + break; case glslang::EbtSpirvType: { // GL_EXT_spirv_intrinsics const auto& spirvType = type.getSpirvType(); @@ -5654,7 +5853,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy // Per the GLSL spec, bool variables inside of a uniform or buffer block are generated as uint. // But for debug info, we want to represent them as bool because that is the original type in - // the source code. The bool type can be nested within a vector or a multidimensional array, + // the source code. The bool type can be nested within a vector or a multidimensional array, // so we must construct the chain of types up from the scalar bool. if (glslangIntermediate->getSource() == glslang::EShSourceGlsl && explicitLayout != glslang::ElpNone && glslangMember.type->getBasicType() == glslang::EbtBool) { @@ -5830,6 +6029,8 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, if (qualifier.hasHitObjectShaderRecordNV()) builder.addDecoration(spvType, spv::Decoration::HitObjectShaderRecordBufferNV); + if (qualifier.hasHitObjectShaderRecordEXT()) + builder.addDecoration(spvType, spv::Decoration::HitObjectShaderRecordBufferEXT); } // Turn the expression forming the array size into an id. @@ -6396,6 +6597,7 @@ void TGlslangToSpvTraverser::collectRayTracingLinkerObjects() break; case glslang::EvqHitObjectAttrNV: + case glslang::EvqHitObjectAttrEXT: set = 2; break; @@ -6418,16 +6620,6 @@ void TGlslangToSpvTraverser::visitFunctions(const glslang::TIntermSequence& glsl } } -void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate* node) -{ - // SPIR-V functions should already be in the functionMap from the prepass - // that called makeFunctions(). - currentFunction = functionMap[node->getName().c_str()]; - spv::Block* functionBlock = currentFunction->getEntryBlock(); - builder.setBuildPoint(functionBlock); - builder.enterFunction(currentFunction); -} - void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) { @@ -8075,74 +8267,150 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe unaryOp = spv::Op::OpHitObjectIsEmptyNV; break; + case glslang::EOpHitObjectIsEmptyEXT: + unaryOp = spv::Op::OpHitObjectIsEmptyEXT; + break; + case glslang::EOpHitObjectIsMissNV: unaryOp = spv::Op::OpHitObjectIsMissNV; break; + case glslang::EOpHitObjectIsMissEXT: + unaryOp = spv::Op::OpHitObjectIsMissEXT; + break; + case glslang::EOpHitObjectIsHitNV: unaryOp = spv::Op::OpHitObjectIsHitNV; break; + case glslang::EOpHitObjectIsHitEXT: + unaryOp = spv::Op::OpHitObjectIsHitEXT; + break; + case glslang::EOpHitObjectGetObjectRayOriginNV: unaryOp = spv::Op::OpHitObjectGetObjectRayOriginNV; break; + case glslang::EOpHitObjectGetObjectRayOriginEXT: + unaryOp = spv::Op::OpHitObjectGetObjectRayOriginEXT; + break; + case glslang::EOpHitObjectGetObjectRayDirectionNV: unaryOp = spv::Op::OpHitObjectGetObjectRayDirectionNV; break; + case glslang::EOpHitObjectGetObjectRayDirectionEXT: + unaryOp = spv::Op::OpHitObjectGetObjectRayDirectionEXT; + break; + case glslang::EOpHitObjectGetWorldRayOriginNV: unaryOp = spv::Op::OpHitObjectGetWorldRayOriginNV; break; + case glslang::EOpHitObjectGetWorldRayOriginEXT: + unaryOp = spv::Op::OpHitObjectGetWorldRayOriginEXT; + break; + case glslang::EOpHitObjectGetWorldRayDirectionNV: unaryOp = spv::Op::OpHitObjectGetWorldRayDirectionNV; break; + case glslang::EOpHitObjectGetWorldRayDirectionEXT: + unaryOp = spv::Op::OpHitObjectGetWorldRayDirectionEXT; + break; + case glslang::EOpHitObjectGetObjectToWorldNV: unaryOp = spv::Op::OpHitObjectGetObjectToWorldNV; break; + case glslang::EOpHitObjectGetObjectToWorldEXT: + unaryOp = spv::Op::OpHitObjectGetObjectToWorldEXT; + break; + case glslang::EOpHitObjectGetWorldToObjectNV: unaryOp = spv::Op::OpHitObjectGetWorldToObjectNV; break; + case glslang::EOpHitObjectGetWorldToObjectEXT: + unaryOp = spv::Op::OpHitObjectGetWorldToObjectEXT; + break; + case glslang::EOpHitObjectGetRayTMinNV: unaryOp = spv::Op::OpHitObjectGetRayTMinNV; break; + case glslang::EOpHitObjectGetRayTMinEXT: + unaryOp = spv::Op::OpHitObjectGetRayTMinEXT; + break; + case glslang::EOpHitObjectGetRayTMaxNV: unaryOp = spv::Op::OpHitObjectGetRayTMaxNV; break; + case glslang::EOpHitObjectGetRayTMaxEXT: + unaryOp = spv::Op::OpHitObjectGetRayTMaxEXT; + break; + + case glslang::EOpHitObjectGetRayFlagsEXT: + unaryOp = spv::Op::OpHitObjectGetRayFlagsEXT; + break; + case glslang::EOpHitObjectGetPrimitiveIndexNV: unaryOp = spv::Op::OpHitObjectGetPrimitiveIndexNV; break; + case glslang::EOpHitObjectGetPrimitiveIndexEXT: + unaryOp = spv::Op::OpHitObjectGetPrimitiveIndexEXT; + break; + case glslang::EOpHitObjectGetInstanceIdNV: unaryOp = spv::Op::OpHitObjectGetInstanceIdNV; break; + case glslang::EOpHitObjectGetInstanceIdEXT: + unaryOp = spv::Op::OpHitObjectGetInstanceIdEXT; + break; + case glslang::EOpHitObjectGetInstanceCustomIndexNV: unaryOp = spv::Op::OpHitObjectGetInstanceCustomIndexNV; break; + case glslang::EOpHitObjectGetInstanceCustomIndexEXT: + unaryOp = spv::Op::OpHitObjectGetInstanceCustomIndexEXT; + break; + case glslang::EOpHitObjectGetGeometryIndexNV: unaryOp = spv::Op::OpHitObjectGetGeometryIndexNV; break; + case glslang::EOpHitObjectGetGeometryIndexEXT: + unaryOp = spv::Op::OpHitObjectGetGeometryIndexEXT; + break; + case glslang::EOpHitObjectGetHitKindNV: unaryOp = spv::Op::OpHitObjectGetHitKindNV; break; + case glslang::EOpHitObjectGetHitKindEXT: + unaryOp = spv::Op::OpHitObjectGetHitKindEXT; + break; + case glslang::EOpHitObjectGetCurrentTimeNV: unaryOp = spv::Op::OpHitObjectGetCurrentTimeNV; break; + case glslang::EOpHitObjectGetCurrentTimeEXT: + unaryOp = spv::Op::OpHitObjectGetCurrentTimeEXT; + break; + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: unaryOp = spv::Op::OpHitObjectGetShaderBindingTableRecordIndexNV; break; + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexEXT: + unaryOp = spv::Op::OpHitObjectGetShaderBindingTableRecordIndexEXT; + break; + case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: unaryOp = spv::Op::OpHitObjectGetShaderRecordBufferHandleNV; break; @@ -8182,6 +8450,10 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe builder.addCapability(spv::Capability::RayTracingLinearSweptSpheresGeometryNV); break; + case glslang::EOpHitObjectGetShaderRecordBufferHandleEXT: + unaryOp = spv::Op::OpHitObjectGetShaderRecordBufferHandleEXT; + break; + case glslang::EOpFetchMicroTriangleVertexPositionNV: unaryOp = spv::Op::OpFetchMicroTriangleVertexPositionNV; break; @@ -9819,9 +10091,15 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpHitObjectTraceRayNV: builder.createNoResultOp(spv::Op::OpHitObjectTraceRayNV, operands); return 0; + case glslang::EOpHitObjectTraceRayEXT: + builder.createNoResultOp(spv::Op::OpHitObjectTraceRayEXT, operands); + return 0; case glslang::EOpHitObjectTraceRayMotionNV: builder.createNoResultOp(spv::Op::OpHitObjectTraceRayMotionNV, operands); return 0; + case glslang::EOpHitObjectTraceRayMotionEXT: + builder.createNoResultOp(spv::Op::OpHitObjectTraceRayMotionEXT, operands); + return 0; case glslang::EOpHitObjectRecordHitNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordHitNV, operands); return 0; @@ -9837,20 +10115,37 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpHitObjectRecordMissNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordMissNV, operands); return 0; + case glslang::EOpHitObjectRecordMissEXT: + builder.createNoResultOp(spv::Op::OpHitObjectRecordMissEXT, operands); + return 0; case glslang::EOpHitObjectRecordMissMotionNV: builder.createNoResultOp(spv::Op::OpHitObjectRecordMissMotionNV, operands); return 0; + case glslang::EOpHitObjectRecordMissMotionEXT: + builder.createNoResultOp(spv::Op::OpHitObjectRecordMissMotionEXT, operands); + return 0; case glslang::EOpHitObjectExecuteShaderNV: builder.createNoResultOp(spv::Op::OpHitObjectExecuteShaderNV, operands); return 0; + case glslang::EOpHitObjectExecuteShaderEXT: + builder.createNoResultOp(spv::Op::OpHitObjectExecuteShaderEXT, operands); + return 0; case glslang::EOpHitObjectIsEmptyNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsEmptyNV; break; + case glslang::EOpHitObjectIsEmptyEXT: + typeId = builder.makeBoolType(); + opCode = spv::Op::OpHitObjectIsEmptyEXT; + break; case glslang::EOpHitObjectIsMissNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsMissNV; break; + case glslang::EOpHitObjectIsMissEXT: + typeId = builder.makeBoolType(); + opCode = spv::Op::OpHitObjectIsMissEXT; + break; case glslang::EOpHitObjectIsHitNV: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsHitNV; @@ -9863,69 +10158,143 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: typeId = builder.makeBoolType(); opCode = spv::Op::OpHitObjectIsLSSHitNV; break; + case glslang::EOpHitObjectIsHitEXT: + typeId = builder.makeBoolType(); + opCode = spv::Op::OpHitObjectIsHitEXT; + break; case glslang::EOpHitObjectGetRayTMinNV: typeId = builder.makeFloatType(32); opCode = spv::Op::OpHitObjectGetRayTMinNV; break; + case glslang::EOpHitObjectGetRayTMinEXT: + typeId = builder.makeFloatType(32); + opCode = spv::Op::OpHitObjectGetRayTMinEXT; + break; case glslang::EOpHitObjectGetRayTMaxNV: typeId = builder.makeFloatType(32); opCode = spv::Op::OpHitObjectGetRayTMaxNV; break; + case glslang::EOpHitObjectGetRayTMaxEXT: + typeId = builder.makeFloatType(32); + opCode = spv::Op::OpHitObjectGetRayTMaxEXT; + break; + case glslang::EOpHitObjectGetRayFlagsEXT: + typeId = builder.makeIntegerType(32, 0); + opCode = spv::Op::OpHitObjectGetRayFlagsEXT; + break; case glslang::EOpHitObjectGetObjectRayOriginNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpHitObjectGetObjectRayOriginNV; break; + case glslang::EOpHitObjectGetObjectRayOriginEXT: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::Op::OpHitObjectGetObjectRayOriginEXT; + break; case glslang::EOpHitObjectGetObjectRayDirectionNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpHitObjectGetObjectRayDirectionNV; break; + case glslang::EOpHitObjectGetObjectRayDirectionEXT: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::Op::OpHitObjectGetObjectRayDirectionEXT; + break; case glslang::EOpHitObjectGetWorldRayOriginNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpHitObjectGetWorldRayOriginNV; break; + case glslang::EOpHitObjectGetWorldRayOriginEXT: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::Op::OpHitObjectGetWorldRayOriginEXT; + break; case glslang::EOpHitObjectGetWorldRayDirectionNV: typeId = builder.makeVectorType(builder.makeFloatType(32), 3); opCode = spv::Op::OpHitObjectGetWorldRayDirectionNV; break; + case glslang::EOpHitObjectGetWorldRayDirectionEXT: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::Op::OpHitObjectGetWorldRayDirectionEXT; + break; case glslang::EOpHitObjectGetWorldToObjectNV: typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); opCode = spv::Op::OpHitObjectGetWorldToObjectNV; break; + case glslang::EOpHitObjectGetWorldToObjectEXT: + typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); + opCode = spv::Op::OpHitObjectGetWorldToObjectEXT; + break; case glslang::EOpHitObjectGetObjectToWorldNV: typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); opCode = spv::Op::OpHitObjectGetObjectToWorldNV; break; + case glslang::EOpHitObjectGetObjectToWorldEXT: + typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); + opCode = spv::Op::OpHitObjectGetObjectToWorldEXT; + break; case glslang::EOpHitObjectGetInstanceCustomIndexNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetInstanceCustomIndexNV; break; + case glslang::EOpHitObjectGetInstanceCustomIndexEXT: + typeId = builder.makeIntegerType(32, 1); + opCode = spv::Op::OpHitObjectGetInstanceCustomIndexEXT; + break; case glslang::EOpHitObjectGetInstanceIdNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetInstanceIdNV; break; + case glslang::EOpHitObjectGetInstanceIdEXT: + typeId = builder.makeIntegerType(32, 1); + opCode = spv::Op::OpHitObjectGetInstanceIdEXT; + break; case glslang::EOpHitObjectGetGeometryIndexNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetGeometryIndexNV; break; + case glslang::EOpHitObjectGetGeometryIndexEXT: + typeId = builder.makeIntegerType(32, 1); + opCode = spv::Op::OpHitObjectGetGeometryIndexEXT; + break; case glslang::EOpHitObjectGetPrimitiveIndexNV: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetPrimitiveIndexNV; break; + case glslang::EOpHitObjectGetPrimitiveIndexEXT: + typeId = builder.makeIntegerType(32, 1); + opCode = spv::Op::OpHitObjectGetPrimitiveIndexEXT; + break; case glslang::EOpHitObjectGetHitKindNV: typeId = builder.makeIntegerType(32, 0); opCode = spv::Op::OpHitObjectGetHitKindNV; break; + case glslang::EOpHitObjectGetHitKindEXT: + typeId = builder.makeIntegerType(32, 0); + opCode = spv::Op::OpHitObjectGetHitKindEXT; + break; case glslang::EOpHitObjectGetCurrentTimeNV: typeId = builder.makeFloatType(32); opCode = spv::Op::OpHitObjectGetCurrentTimeNV; break; + case glslang::EOpHitObjectGetCurrentTimeEXT: + typeId = builder.makeFloatType(32); + opCode = spv::Op::OpHitObjectGetCurrentTimeEXT; + break; case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: typeId = builder.makeIntegerType(32, 0); opCode = spv::Op::OpHitObjectGetShaderBindingTableRecordIndexNV; return 0; + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexEXT: + typeId = builder.makeIntegerType(32, 0); + opCode = spv::Op::OpHitObjectGetShaderBindingTableRecordIndexEXT; + return 0; case glslang::EOpHitObjectGetAttributesNV: builder.createNoResultOp(spv::Op::OpHitObjectGetAttributesNV, operands); return 0; + case glslang::EOpHitObjectGetAttributesEXT: + builder.createNoResultOp(spv::Op::OpHitObjectGetAttributesEXT, operands); + return 0; + case glslang::EOpHitObjectRecordFromQueryEXT: + builder.createNoResultOp(spv::Op::OpHitObjectRecordFromQueryEXT, operands); + return 0; case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: typeId = builder.makeVectorType(builder.makeUintType(32), 2); opCode = spv::Op::OpHitObjectGetShaderRecordBufferHandleNV; @@ -9934,6 +10303,13 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: typeId = builder.makeIntegerType(32, 1); opCode = spv::Op::OpHitObjectGetClusterIdNV; break; + case glslang::EOpHitObjectGetShaderRecordBufferHandleEXT: + typeId = builder.makeVectorType(builder.makeUintType(32), 2); + opCode = spv::Op::OpHitObjectGetShaderRecordBufferHandleEXT; + break; + case glslang::EOpHitObjectSetShaderBindingTableRecordIndexEXT: + builder.createNoResultOp(spv::Op::OpHitObjectSetShaderBindingTableRecordIndexEXT, operands); + return 0; case glslang::EOpReorderThreadNV: { if (operands.size() == 2) { builder.createNoResultOp(spv::Op::OpReorderThreadWithHintNV, operands); @@ -9941,9 +10317,54 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: builder.createNoResultOp(spv::Op::OpReorderThreadWithHitObjectNV, operands); } return 0; - + } + case glslang::EOpReorderThreadEXT: { + if (operands.size() == 2) { + builder.createNoResultOp(spv::Op::OpReorderThreadWithHintEXT, operands); + } else { + builder.createNoResultOp(spv::Op::OpReorderThreadWithHitObjectEXT, operands); + } + return 0; } + case glslang::EOpHitObjectReorderExecuteEXT: { + if (operands.size() == 2) { + builder.createNoResultOp(spv::Op::OpHitObjectReorderExecuteShaderEXT, operands); + } else { + // GLSL intrinsic is + // hitObjectReorderExecuteEXT(hitObjectEXT hitObject, uint hint, uint bits,int payload) while + // SPIRV is hitObject id , payload id, optional hint id, optional bits id hence reorder operands + builder.createNoResultOp(spv::Op::OpHitObjectReorderExecuteShaderEXT, {operands[0], operands[3], operands[1], operands[2]}); + } + return 0; + } + + case glslang::EOpHitObjectTraceReorderExecuteEXT: { + if (operands.size() == 12) { + builder.createNoResultOp(spv::Op::OpHitObjectTraceReorderExecuteEXT, operands); + } else { + std::vector argOperands; + std::copy(operands.begin(), operands.begin() + 11, std::back_inserter(argOperands)); + argOperands.push_back(operands[13]); + argOperands.push_back(operands[11]); + argOperands.push_back(operands[12]); + builder.createNoResultOp(spv::Op::OpHitObjectTraceReorderExecuteEXT, argOperands); + } + return 0; + } + case glslang::EOpHitObjectTraceMotionReorderExecuteEXT: { + if (operands.size() == 13) { + builder.createNoResultOp(spv::Op::OpHitObjectTraceMotionReorderExecuteEXT, operands); + } else { + std::vector argOperands; + std::copy(operands.begin(), operands.begin() + 12, std::back_inserter(argOperands)); + argOperands.push_back(operands[14]); + argOperands.push_back(operands[12]); + argOperands.push_back(operands[13]); + builder.createNoResultOp(spv::Op::OpHitObjectTraceMotionReorderExecuteEXT, argOperands); + } + return 0; + } case glslang::EOpImageSampleWeightedQCOM: typeId = builder.makeVectorType(builder.makeFloatType(32), 4); opCode = spv::Op::OpImageSampleWeightedQCOM; @@ -10367,11 +10788,13 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol if (symbol->getQualifier().hasLocation()) { if (!(glslangIntermediate->isRayTracingStage() && (glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_ray_tracing) || - glslangIntermediate->IsRequestedExtension(glslang::E_GL_NV_shader_invocation_reorder)) + glslangIntermediate->IsRequestedExtension(glslang::E_GL_NV_shader_invocation_reorder) || + glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_shader_invocation_reorder)) && (builder.getStorageClass(id) == spv::StorageClass::RayPayloadKHR || builder.getStorageClass(id) == spv::StorageClass::IncomingRayPayloadKHR || builder.getStorageClass(id) == spv::StorageClass::CallableDataKHR || builder.getStorageClass(id) == spv::StorageClass::IncomingCallableDataKHR || + builder.getStorageClass(id) == spv::StorageClass::HitObjectAttributeEXT || builder.getStorageClass(id) == spv::StorageClass::HitObjectAttributeNV))) { // Location values are used to link TraceRayKHR/ExecuteCallableKHR/HitObjectGetAttributesNV // to corresponding variables but are not valid in SPIRV since they are supported only @@ -10672,7 +11095,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n int nextConst = 0; result = createSpvConstantFromConstUnionArray(sn->getType(), *const_union_array, nextConst, true); } else { - logger->missingFunctionality("Invalid initializer for spec onstant."); + logger->missingFunctionality("Invalid initializer for spec constant."); return spv::NoResult; } builder.addName(result, sn->getName().c_str()); diff --git a/3rdparty/glslang/SPIRV/SpvBuilder.cpp b/3rdparty/glslang/SPIRV/SpvBuilder.cpp index 0d77fe676..6e7f3cc17 100644 --- a/3rdparty/glslang/SPIRV/SpvBuilder.cpp +++ b/3rdparty/glslang/SPIRV/SpvBuilder.cpp @@ -125,7 +125,7 @@ Id Builder::makeBoolType() return type->getResultId(); } -Id Builder::makeSamplerType() +Id Builder::makeSamplerType(const char* debugName) { Instruction* type; if (groupedTypes[enumCast(Op::OpTypeSampler)].size() == 0) { @@ -138,7 +138,7 @@ Id Builder::makeSamplerType() if (emitNonSemanticShaderDebugInfo) { - auto const debugResultId = makeOpaqueDebugType("type.sampler"); + auto const debugResultId = makeOpaqueDebugType(debugName); debugId[type->getResultId()] = debugResultId; } @@ -841,7 +841,7 @@ Id Builder::makeDebugFunctionType(Id returnType, const std::vector& paramTyp } Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, - ImageFormat format) + ImageFormat format, const char* debugName) { assert(sampled == 1 || sampled == 2); @@ -922,24 +922,14 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo if (emitNonSemanticShaderDebugInfo) { - auto TypeName = [&dim]() -> char const* { - switch (dim) { - case Dim::Dim1D: return "type.1d.image"; - case Dim::Dim2D: return "type.2d.image"; - case Dim::Dim3D: return "type.3d.image"; - case Dim::Cube: return "type.cube.image"; - default: return "type.image"; - } - }; - - auto const debugResultId = makeOpaqueDebugType(TypeName()); + auto const debugResultId = makeOpaqueDebugType(debugName); debugId[type->getResultId()] = debugResultId; } return type->getResultId(); } -Id Builder::makeSampledImageType(Id imageType) +Id Builder::makeSampledImageType(Id imageType, const char* debugName) { // try to find it Instruction* type; @@ -959,7 +949,7 @@ Id Builder::makeSampledImageType(Id imageType) if (emitNonSemanticShaderDebugInfo) { - auto const debugResultId = makeOpaqueDebugType("type.sampled.image"); + auto const debugResultId = makeOpaqueDebugType(debugName); debugId[type->getResultId()] = debugResultId; } @@ -1512,6 +1502,20 @@ Id Builder::makeRayQueryType() return type->getResultId(); } +Id Builder::makeHitObjectEXTType() +{ + Instruction *type; + if (groupedTypes[enumCast(Op::OpTypeHitObjectEXT)].size() == 0) { + type = new Instruction(getUniqueId(), NoType, Op::OpTypeHitObjectEXT); + groupedTypes[enumCast(Op::OpTypeHitObjectEXT)].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + } else { + type = groupedTypes[enumCast(Op::OpTypeHitObjectEXT)].back(); + } + + return type->getResultId(); +} Id Builder::makeHitObjectNVType() { Instruction *type; @@ -1520,6 +1524,10 @@ Id Builder::makeHitObjectNVType() groupedTypes[enumCast(Op::OpTypeHitObjectNV)].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) { + spv::Id debugType = makeOpaqueDebugType("hitObjectNV"); + debugId[type->getResultId()] = debugType; + } } else { type = groupedTypes[enumCast(Op::OpTypeHitObjectNV)].back(); } @@ -2658,7 +2666,7 @@ Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id type->addIdOperand(makeDebugCompilationUnit()); // scope type->addIdOperand(nameId); // linkage name type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); - type->addIdOperand(makeUintConstant(currentLine)); + type->addIdOperand(makeUintConstant(currentLine)); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); return funcId; @@ -2734,6 +2742,8 @@ void Builder::leaveLexicalBlock() // Comments in header void Builder::enterFunction(Function const* function) { + currentFunction = function; + // Save and disable debugInfo for HLSL entry point function. It is a wrapper // function with no user code in it. restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo; @@ -2784,6 +2794,9 @@ void Builder::leaveFunction() currentDebugScopeId.pop(); emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo; + + // Clear current function record + currentFunction = nullptr; } // Comments in header @@ -2803,6 +2816,20 @@ void Builder::makeStatementTerminator(spv::Op opcode, const std::vector& ope createAndSetNoPredecessorBlock(name); } +void Builder::createConstVariable(Id type, const char* name, Id constant, bool isGlobal) +{ + if (emitNonSemanticShaderDebugInfo) { + Id debugType = getDebugType(type); + if (isGlobal) { + createDebugGlobalVariable(debugType, name, constant); + } + else { + auto debugLocal = createDebugLocalVariable(debugType, name); + makeDebugValue(debugLocal, constant); + } + } +} + // Comments in header Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer, bool const compilerGenerated) @@ -2813,31 +2840,30 @@ Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id t if (initializer != NoResult) inst->addIdOperand(initializer); - switch (storageClass) { - case StorageClass::Function: + if (storageClass == StorageClass::Function) { // Validation rules require the declaration in the entry block buildPoint->getParent().addLocalVariable(std::unique_ptr(inst)); + } + else { + constantsTypesGlobals.push_back(std::unique_ptr(inst)); + module.mapInstruction(inst); + } - if (emitNonSemanticShaderDebugInfo && !compilerGenerated) - { + if (emitNonSemanticShaderDebugInfo && !compilerGenerated) + { + // For debug info, we prefer respecting how the variable is declared in source code. + // We may emulate some local variables as global variable with private storage in SPIR-V, but we still want to + // treat them as local variables in debug info. + if (storageClass == StorageClass::Function || (currentFunction && storageClass == StorageClass::Private)) { auto const debugLocalVariableId = createDebugLocalVariable(debugId[type], name); debugId[inst->getResultId()] = debugLocalVariableId; makeDebugDeclare(debugLocalVariableId, inst->getResultId()); } - - break; - - default: - constantsTypesGlobals.push_back(std::unique_ptr(inst)); - module.mapInstruction(inst); - - if (emitNonSemanticShaderDebugInfo) - { + else { auto const debugResultId = createDebugGlobalVariable(debugId[type], name, inst->getResultId()); debugId[inst->getResultId()] = debugResultId; } - break; } if (name) @@ -2942,9 +2968,9 @@ Id Builder::createAccessChain(StorageClass storageClass, Id base, const std::vec return chain->getResultId(); } -Id Builder::createArrayLength(Id base, unsigned int member) +Id Builder::createArrayLength(Id base, unsigned int member, unsigned int bits) { - spv::Id intType = makeUintType(32); + spv::Id intType = makeUintType(bits); Instruction* length = new Instruction(getUniqueId(), intType, Op::OpArrayLength); length->reserveOperands(2); length->addIdOperand(base); diff --git a/3rdparty/glslang/SPIRV/SpvBuilder.h b/3rdparty/glslang/SPIRV/SpvBuilder.h index 2ab7d02c2..68b4764c4 100644 --- a/3rdparty/glslang/SPIRV/SpvBuilder.h +++ b/3rdparty/glslang/SPIRV/SpvBuilder.h @@ -138,7 +138,7 @@ public: if (trackDebugInfo) { dirtyLineTracker = true; if (line != 0) { - // TODO: This is special handling of some AST nodes having (untracked) line 0. + // TODO: This is special handling of some AST nodes having (untracked) line 0. // But they should have a valid line number. currentLine = line; if (filename) { @@ -235,9 +235,9 @@ public: Id makeArrayType(Id element, Id sizeId, int stride); // 0 stride means no stride decoration Id makeRuntimeArray(Id element); Id makeFunctionType(Id returnType, const std::vector& paramTypes); - Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format); - Id makeSamplerType(); - Id makeSampledImageType(Id imageType); + Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format, const char* debugNames); + Id makeSamplerType(const char* debugName); + Id makeSampledImageType(Id imageType, const char* debugName); Id makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use); Id makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols); Id makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType); @@ -284,6 +284,8 @@ public: Id makeRayQueryType(); // hitObjectNV type Id makeHitObjectNVType(); + // hitObjectEXT type + Id makeHitObjectEXTType(); // For querying about types. Id getTypeId(Id resultId) const { return module.getTypeId(resultId); } @@ -511,6 +513,10 @@ public: // such as OpEmitMeshTasksEXT void makeStatementTerminator(spv::Op opcode, const std::vector& operands, const char* name); + // Create a global/local constant. Because OpConstant is automatically emitted by getting the constant + // ids, this function only handles debug info. + void createConstVariable(Id type, const char* name, Id constant, bool isGlobal); + // Create a global or function local or IO variable. Id createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name = nullptr, Id initializer = NoResult, bool const compilerGenerated = true); @@ -531,7 +537,7 @@ public: Id createAccessChain(StorageClass, Id base, const std::vector& offsets); // Create an OpArrayLength instruction - Id createArrayLength(Id base, unsigned int member); + Id createArrayLength(Id base, unsigned int member, unsigned int bits); // Create an OpCooperativeMatrixLengthKHR instruction Id createCooperativeMatrixLengthKHR(Id type); @@ -936,7 +942,11 @@ public: void setUseReplicatedComposites(bool use) { useReplicatedComposites = use; } - protected: +private: + // Helper to get size of a scalar (in bytes) + unsigned int postProcessGetLargestScalarSize(const Instruction& type); + +protected: Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned value); Id findScalarConstant(Op typeClass, Op opcode, Id typeId, unsigned v1, unsigned v2); Id findCompositeConstant(Op typeClass, Op opcode, Id typeId, const std::vector& comps, size_t numMembers); @@ -1002,6 +1012,8 @@ public: Block* buildPoint; Id uniqueId; Function* entryPointFunction; + // This tracks the current function being built, or nullptr if not in a function. + Function const* currentFunction { nullptr }; bool generatingOpCodeForSpecConst; bool useReplicatedComposites { false }; AccessChain accessChain; diff --git a/3rdparty/glslang/SPIRV/SpvPostProcess.cpp b/3rdparty/glslang/SPIRV/SpvPostProcess.cpp index 4f61864a8..068e33e82 100644 --- a/3rdparty/glslang/SPIRV/SpvPostProcess.cpp +++ b/3rdparty/glslang/SPIRV/SpvPostProcess.cpp @@ -43,6 +43,7 @@ #include #include +#include "SPIRV/spvIR.h" #include "SpvBuilder.h" #include "spirv.hpp11" #include "spvUtil.h" @@ -201,6 +202,37 @@ void Builder::postProcessType(const Instruction& inst, Id typeId) } } +unsigned int Builder::postProcessGetLargestScalarSize(const Instruction& type) +{ + switch (type.getOpCode()) { + case Op::OpTypeBool: + return 1; + case Op::OpTypeInt: + case Op::OpTypeFloat: + return type.getImmediateOperand(0) / 8; + case Op::OpTypePointer: + return 8; + case Op::OpTypeVector: + case Op::OpTypeMatrix: + case Op::OpTypeArray: + case Op::OpTypeRuntimeArray: { + const Instruction* elem_type = module.getInstruction(type.getIdOperand(0)); + return postProcessGetLargestScalarSize(*elem_type); + } + case Op::OpTypeStruct: { + unsigned int largest = 0; + for (int i = 0; i < type.getNumOperands(); ++i) { + const Instruction* elem_type = module.getInstruction(type.getIdOperand(i)); + unsigned int elem_size = postProcessGetLargestScalarSize(*elem_type); + largest = std::max(largest, elem_size); + } + return largest; + } + default: + return 0; + } +} + // Called for each instruction that resides in a block. void Builder::postProcess(Instruction& inst) { @@ -249,12 +281,12 @@ void Builder::postProcess(Instruction& inst) // and this function computes the rest from the SPIR-V Offset decorations. Instruction *accessChain = module.getInstruction(inst.getIdOperand(0)); if (accessChain->getOpCode() == Op::OpAccessChain) { - Instruction *base = module.getInstruction(accessChain->getIdOperand(0)); + const Instruction* base = module.getInstruction(accessChain->getIdOperand(0)); // Get the type of the base of the access chain. It must be a pointer type. Id typeId = base->getTypeId(); Instruction *type = module.getInstruction(typeId); assert(type->getOpCode() == Op::OpTypePointer); - if (type->getImmediateOperand(0) != StorageClass::PhysicalStorageBufferEXT) { + if (type->getImmediateOperand(0) != StorageClass::PhysicalStorageBuffer) { break; } // Get the pointee type. @@ -265,6 +297,7 @@ void Builder::postProcess(Instruction& inst) // Offset/ArrayStride/MatrixStride decorations, and bitwise OR them all // together. int alignment = 0; + bool first_struct_elem = false; for (int i = 1; i < accessChain->getNumOperands(); ++i) { Instruction *idx = module.getInstruction(accessChain->getIdOperand(i)); if (type->getOpCode() == Op::OpTypeStruct) { @@ -277,7 +310,12 @@ void Builder::postProcess(Instruction& inst) decoration.get()->getImmediateOperand(1) == c && (decoration.get()->getImmediateOperand(2) == Decoration::Offset || decoration.get()->getImmediateOperand(2) == Decoration::MatrixStride)) { - alignment |= decoration.get()->getImmediateOperand(3); + unsigned int opernad_value = decoration.get()->getImmediateOperand(3); + alignment |= opernad_value; + if (opernad_value == 0 && + decoration.get()->getImmediateOperand(2) == Decoration::Offset) { + first_struct_elem = true; + } } }; std::for_each(decorations.begin(), decorations.end(), function); @@ -303,18 +341,51 @@ void Builder::postProcess(Instruction& inst) } } assert(inst.getNumOperands() >= 3); - auto const memoryAccess = (MemoryAccessMask)inst.getImmediateOperand((inst.getOpCode() == Op::OpStore) ? 2 : 1); + const bool is_store = inst.getOpCode() == Op::OpStore; + auto const memoryAccess = (MemoryAccessMask)inst.getImmediateOperand(is_store ? 2 : 1); assert(anySet(memoryAccess, MemoryAccessMask::Aligned)); static_cast(memoryAccess); + // Compute the index of the alignment operand. int alignmentIdx = 2; - if (inst.getOpCode() == Op::OpStore) + if (is_store) alignmentIdx++; // Merge new and old (mis)alignment alignment |= inst.getImmediateOperand(alignmentIdx); + + if (!is_store) { + Instruction* inst_type = module.getInstruction(inst.getTypeId()); + if (inst_type->getOpCode() == Op::OpTypePointer && + inst_type->getImmediateOperand(0) == StorageClass::PhysicalStorageBuffer) { + // This means we are loading a pointer which means need to ensure it is at least 8-byte aligned + // See https://github.com/KhronosGroup/glslang/issues/4084 + // In case the alignment is currently 4, need to ensure it is 8 before grabbing the LSB + alignment |= 8; + alignment &= 8; + } + } + // Pick the LSB alignment = alignment & ~(alignment & (alignment-1)); + + // The edge case we find is when copying a struct to another struct, we never find the alignment anywhere, + // so in this case, fallback to doing a full size lookup on the type + if (alignment == 0 && first_struct_elem) { + // Quick get the struct type back + const Instruction* pointer_type = module.getInstruction(base->getTypeId()); + const Instruction* struct_type = module.getInstruction(pointer_type->getIdOperand(1)); + assert(struct_type->getOpCode() == Op::OpTypeStruct); + + const Instruction* elem_type = module.getInstruction(struct_type->getIdOperand(0)); + unsigned int largest_scalar = postProcessGetLargestScalarSize(*elem_type); + if (largest_scalar != 0) { + alignment = largest_scalar; + } else { + alignment = 16; // fallback if can't determine a godo alignment + } + } // update the Aligned operand + assert(alignment != 0); inst.setImmediateOperand(alignmentIdx, alignment); } break; diff --git a/3rdparty/glslang/SPIRV/doc.cpp b/3rdparty/glslang/SPIRV/doc.cpp index b0189a533..dcc9b4e1a 100644 --- a/3rdparty/glslang/SPIRV/doc.cpp +++ b/3rdparty/glslang/SPIRV/doc.cpp @@ -231,6 +231,8 @@ const char* ExecutionModeString(int mode) case (int)ExecutionMode::NonCoherentDepthAttachmentReadEXT: return "NonCoherentDepthAttachmentReadEXT"; case (int)ExecutionMode::NonCoherentStencilAttachmentReadEXT: return "NonCoherentStencilAttachmentReadEXT"; + case (int)ExecutionMode::Shader64BitIndexingEXT: return "Shader64BitIndexingEXT"; + case ExecutionModeCeiling: default: return "Bad"; } @@ -265,6 +267,7 @@ const char* StorageClassString(int StorageClass) case (int)StorageClass::TaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; case (int)StorageClass::HitObjectAttributeNV: return "HitObjectAttributeNV"; case (int)StorageClass::TileImageEXT: return "TileImageEXT"; + case (int)StorageClass::HitObjectAttributeEXT: return "HitObjectAttributeEXT"; default: return "Bad"; } } @@ -344,6 +347,7 @@ const char* DecorationString(int decoration) case (int)Decoration::AliasedPointerEXT: return "DecorationAliasedPointerEXT"; case (int)Decoration::HitObjectShaderRecordBufferNV: return "DecorationHitObjectShaderRecordBufferNV"; + case (int)Decoration::HitObjectShaderRecordBufferEXT: return "DecorationHitObjectShaderRecordBufferEXT"; case (int)Decoration::SaturatedToLargestFloat8NormalConversionEXT: return "DecorationSaturatedToLargestFloat8NormalConversionEXT"; } @@ -1107,6 +1111,7 @@ const char* CapabilityString(int info) case (int)Capability::CoreBuiltinsARM: return "CoreBuiltinsARM"; case (int)Capability::ShaderInvocationReorderNV: return "ShaderInvocationReorderNV"; + case (int)Capability::ShaderInvocationReorderEXT: return "ShaderInvocationReorderEXT"; case (int)Capability::TextureSampleWeightedQCOM: return "TextureSampleWeightedQCOM"; case (int)Capability::TextureBoxFilterQCOM: return "TextureBoxFilterQCOM"; @@ -1135,6 +1140,8 @@ const char* CapabilityString(int info) case (int)Capability::Float8EXT: return "Float8EXT"; case (int)Capability::Float8CooperativeMatrixEXT: return "Float8CooperativeMatrixEXT"; + case (int)Capability::Shader64BitIndexingEXT: return "CapabilityShader64BitIndexingEXT"; + default: return "Bad"; } } @@ -1718,6 +1725,43 @@ const char* OpcodeString(int op) case (int)Op::OpUDotAccSatKHR: return "OpUDotAccSatKHR"; case (int)Op::OpSUDotAccSatKHR: return "OpSUDotAccSatKHR"; + case (int)Op::OpTypeHitObjectEXT: return "OpTypeHitObjectEXT"; + case (int)Op::OpHitObjectTraceRayEXT: return "OpHitObjectTraceRayEXT"; + case (int)Op::OpHitObjectTraceRayMotionEXT: return "OpHitObjectTraceRayMotionEXT"; + case (int)Op::OpHitObjectRecordMissEXT: return "OpHitObjectRecordMissEXT"; + case (int)Op::OpHitObjectRecordMissMotionEXT: return "OpHitObjectRecordMissMotionEXT"; + case (int)Op::OpHitObjectRecordEmptyEXT: return "OpHitObjectRecordEmptyEXT"; + case (int)Op::OpHitObjectExecuteShaderEXT: return "OpHitObjectExecuteShaderEXT"; + case (int)Op::OpReorderThreadWithHintEXT: return "OpReorderThreadWithHintEXT"; + case (int)Op::OpReorderThreadWithHitObjectEXT: return "OpReorderThreadWithHitObjectEXT"; + case (int)Op::OpHitObjectGetCurrentTimeEXT: return "OpHitObjectGetCurrentTimeEXT"; + case (int)Op::OpHitObjectGetAttributesEXT: return "OpHitObjectGetAttributesEXT"; + case (int)Op::OpHitObjectGetHitKindEXT: return "OpHitObjectGetHitKindEXT"; + case (int)Op::OpHitObjectGetPrimitiveIndexEXT: return "OpHitObjectGetPrimitiveIndexEXT"; + case (int)Op::OpHitObjectGetGeometryIndexEXT: return "OpHitObjectGetGeometryIndexEXT"; + case (int)Op::OpHitObjectGetInstanceIdEXT: return "OpHitObjectGetInstanceIdEXT"; + case (int)Op::OpHitObjectGetInstanceCustomIndexEXT: return "OpHitObjectGetInstanceCustomIndexEXT"; + case (int)Op::OpHitObjectGetObjectRayDirectionEXT: return "OpHitObjectGetObjectRayDirectionEXT"; + case (int)Op::OpHitObjectGetObjectRayOriginEXT: return "OpHitObjectGetObjectRayOriginEXT"; + case (int)Op::OpHitObjectGetWorldRayDirectionEXT: return "OpHitObjectGetWorldRayDirectionEXT"; + case (int)Op::OpHitObjectGetWorldRayOriginEXT: return "OpHitObjectGetWorldRayOriginEXT"; + case (int)Op::OpHitObjectGetWorldToObjectEXT: return "OpHitObjectGetWorldToObjectEXT"; + case (int)Op::OpHitObjectGetObjectToWorldEXT: return "OpHitObjectGetObjectToWorldEXT"; + case (int)Op::OpHitObjectGetRayTMaxEXT: return "OpHitObjectGetRayTMaxEXT"; + case (int)Op::OpHitObjectGetRayTMinEXT: return "OpHitObjectGetRayTMinEXT"; + case (int)Op::OpHitObjectGetRayFlagsEXT: return "OpHitObjectGetRayFlagsEXT"; + case (int)Op::OpHitObjectIsEmptyEXT: return "OpHitObjectIsEmptyEXT"; + case (int)Op::OpHitObjectIsHitEXT: return "OpHitObjectIsHitEXT"; + case (int)Op::OpHitObjectIsMissEXT: return "OpHitObjectIsMissEXT"; + case (int)Op::OpHitObjectGetShaderBindingTableRecordIndexEXT: return "OpHitObjectGetShaderBindingTableRecordIndexEXT"; + case (int)Op::OpHitObjectGetShaderRecordBufferHandleEXT: return "OpHitObjectGetShaderRecordBufferHandleEXT"; + case (int)Op::OpHitObjectSetShaderBindingTableRecordIndexEXT: return "OpHitObjectSetShaderBindingTableRecordIndexEXT"; + case (int)Op::OpHitObjectReorderExecuteShaderEXT: return "OpHitObjectReorderExecuteEXT"; + case (int)Op::OpHitObjectTraceReorderExecuteEXT: return "OpHitObjectTraceReorderExecuteEXT"; + case (int)Op::OpHitObjectTraceMotionReorderExecuteEXT: return "OpHitObjectTraceMotionReorderExecuteEXT"; + case (int)Op::OpHitObjectRecordFromQueryEXT: return "OpHitObjectRecordFromQueryEXT"; + case (int)Op::OpHitObjectGetIntersectionTriangleVertexPositionsEXT: return "OpHitObjectGetIntersectionTriangleVertexPositionsEXT"; + default: return "Bad"; } @@ -3853,6 +3897,191 @@ void Parameterize() InstructionDesc[enumCast(Op::OpTensorQuerySizeARM)].operands.push(OperandId, "'Tensor'"); InstructionDesc[enumCast(Op::OpTensorQuerySizeARM)].operands.push(OperandId, "'Dimension'", true); + InstructionDesc[enumCast(Op::OpTypeHitObjectEXT)].setResultAndType(true, false); + + InstructionDesc[enumCast(Op::OpHitObjectGetShaderRecordBufferHandleNV)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetShaderRecordBufferHandleNV)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetShaderRecordBufferHandleEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetShaderRecordBufferHandleEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpReorderThreadWithHintEXT)].operands.push(OperandId, "'Hint'"); + InstructionDesc[enumCast(Op::OpReorderThreadWithHintEXT)].operands.push(OperandId, "'Bits'"); + InstructionDesc[enumCast(Op::OpReorderThreadWithHintEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpReorderThreadWithHitObjectEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpReorderThreadWithHitObjectEXT)].operands.push(OperandId, "'Hint'"); + InstructionDesc[enumCast(Op::OpReorderThreadWithHitObjectEXT)].operands.push(OperandId, "'Bits'"); + InstructionDesc[enumCast(Op::OpReorderThreadWithHitObjectEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectGetCurrentTimeEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetCurrentTimeEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetHitKindEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetHitKindEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetPrimitiveIndexEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetPrimitiveIndexEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetGeometryIndexEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetGeometryIndexEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetInstanceIdEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetInstanceIdEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetInstanceCustomIndexEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetInstanceCustomIndexEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetObjectRayDirectionEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetObjectRayDirectionEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetObjectRayOriginEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetObjectRayOriginEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetWorldRayDirectionEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetWorldRayDirectionEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetWorldRayOriginEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetWorldRayOriginEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetWorldToObjectEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetWorldToObjectEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetObjectToWorldEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetObjectToWorldEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetRayTMaxEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetRayTMaxEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetRayTMinEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetRayTMinEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetRayFlagsEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetRayFlagsEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetShaderBindingTableRecordIndexEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetShaderBindingTableRecordIndexEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectIsEmptyEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectIsEmptyEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectIsHitEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectIsHitEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectIsMissEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectIsMissEXT)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpHitObjectGetAttributesEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetAttributesEXT)].operands.push(OperandId, "'HitObjectAttribute'"); + InstructionDesc[enumCast(Op::OpHitObjectGetAttributesEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectExecuteShaderEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectExecuteShaderEXT)].operands.push(OperandId, "'Payload'"); + InstructionDesc[enumCast(Op::OpHitObjectExecuteShaderEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectRecordMissEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissEXT)].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissEXT)].operands.push(OperandId, "'SBT Index'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissEXT)].operands.push(OperandId, "'Origin'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissEXT)].operands.push(OperandId, "'TMin'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissEXT)].operands.push(OperandId, "'Direction'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissEXT)].operands.push(OperandId, "'TMax'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].operands.push(OperandId, "'SBT Index'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].operands.push(OperandId, "'Origin'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].operands.push(OperandId, "'TMin'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].operands.push(OperandId, "'Direction'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].operands.push(OperandId, "'TMax'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].operands.push(OperandId, "'Current Time'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordMissMotionEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectRecordEmptyEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordEmptyEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'Cullmask'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'Origin'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'TMin'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'Direction'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'TMax'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].operands.push(OperandId, "'Payload'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'Cullmask'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'Origin'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'TMin'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'Direction'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'TMax'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'Time'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].operands.push(OperandId, "'Payload'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceRayMotionEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectSetShaderBindingTableRecordIndexEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectSetShaderBindingTableRecordIndexEXT)].operands.push(OperandId, "'SBT Record Index'"); + InstructionDesc[enumCast(Op::OpHitObjectSetShaderBindingTableRecordIndexEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectReorderExecuteShaderEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectReorderExecuteShaderEXT)].operands.push(OperandId, "'Payload'"); + InstructionDesc[enumCast(Op::OpHitObjectReorderExecuteShaderEXT)].operands.push(OperandId, "'Hint'"); + InstructionDesc[enumCast(Op::OpHitObjectReorderExecuteShaderEXT)].operands.push(OperandId, "'Bits'"); + InstructionDesc[enumCast(Op::OpHitObjectReorderExecuteShaderEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'Cullmask'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'Origin'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'TMin'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'Direction'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'TMax'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'Payload'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'Hint'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].operands.push(OperandId, "'Bits'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceReorderExecuteEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Cullmask'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Origin'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'TMin'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Direction'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'TMax'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Time'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Payload'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Hint'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].operands.push(OperandId, "'Bits'"); + InstructionDesc[enumCast(Op::OpHitObjectTraceMotionReorderExecuteEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectRecordFromQueryEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordFromQueryEXT)].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordFromQueryEXT)].operands.push(OperandId, "'SBT Record Index'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordFromQueryEXT)].operands.push(OperandId, "'HitObjectAttribute'"); + InstructionDesc[enumCast(Op::OpHitObjectRecordFromQueryEXT)].setResultAndType(false, false); + + InstructionDesc[enumCast(Op::OpHitObjectGetIntersectionTriangleVertexPositionsEXT)].operands.push(OperandId, "'HitObject'"); + InstructionDesc[enumCast(Op::OpHitObjectGetIntersectionTriangleVertexPositionsEXT)].setResultAndType(true, true); + }); } diff --git a/3rdparty/glslang/SPIRV/spirv.hpp11 b/3rdparty/glslang/SPIRV/spirv.hpp11 index 2ad294db8..6f3021e9e 100644 --- a/3rdparty/glslang/SPIRV/spirv.hpp11 +++ b/3rdparty/glslang/SPIRV/spirv.hpp11 @@ -206,7 +206,8 @@ enum class ExecutionMode : unsigned { SampleInterlockOrderedEXT = 5368, SampleInterlockUnorderedEXT = 5369, ShadingRateInterlockOrderedEXT = 5370, - ShadingRateInterlockUnorderedEXT = 5371, + ShadingRateInterlockUnorderedEXT = 5371, + Shader64BitIndexingEXT = 5427, SharedLocalMemorySizeINTEL = 5618, RoundingModeRTPINTEL = 5620, RoundingModeRTNINTEL = 5621, @@ -261,6 +262,7 @@ enum class StorageClass : unsigned { PhysicalStorageBufferEXT = 5349, HitObjectAttributeNV = 5385, TaskPayloadWorkgroupEXT = 5402, + HitObjectAttributeEXT = 5411, CodeSectionINTEL = 5605, DeviceOnlyINTEL = 5936, HostOnlyINTEL = 5937, @@ -579,6 +581,7 @@ enum class Decoration : unsigned { AliasedPointer = 5356, AliasedPointerEXT = 5356, HitObjectShaderRecordBufferNV = 5386, + HitObjectShaderRecordBufferEXT = 5389, BindlessSamplerNV = 5398, BindlessImageNV = 5399, BoundSamplerNV = 5400, @@ -1188,6 +1191,7 @@ enum class Capability : unsigned { DisplacementMicromapNV = 5380, RayTracingOpacityMicromapEXT = 5381, ShaderInvocationReorderNV = 5383, + ShaderInvocationReorderEXT = 5388, BindlessTextureNV = 5390, RayQueryPositionFetchKHR = 5391, CooperativeVectorNV = 5394, @@ -1195,7 +1199,8 @@ enum class Capability : unsigned { RayTracingDisplacementMicromapNV = 5409, RawAccessChainsNV = 5414, RayTracingSpheresGeometryNV = 5418, - RayTracingLinearSweptSpheresGeometryNV = 5419, + RayTracingLinearSweptSpheresGeometryNV = 5419, + Shader64BitIndexingEXT = 5426, CooperativeMatrixReductionsNV = 5430, CooperativeMatrixConversionsNV = 5431, CooperativeMatrixPerElementOperationsNV = 5432, @@ -2074,6 +2079,36 @@ enum class Op : unsigned { OpFetchMicroTriangleVertexBarycentricNV = 5301, OpCooperativeVectorLoadNV = 5302, OpCooperativeVectorStoreNV = 5303, + OpHitObjectRecordFromQueryEXT = 5304, + OpHitObjectRecordMissEXT = 5305, + OpHitObjectRecordMissMotionEXT = 5306, + OpHitObjectGetIntersectionTriangleVertexPositionsEXT = 5307, + OpHitObjectGetRayFlagsEXT = 5308, + OpHitObjectSetShaderBindingTableRecordIndexEXT = 5309, + OpHitObjectReorderExecuteShaderEXT = 5310, + OpHitObjectTraceReorderExecuteEXT = 5311, + OpHitObjectTraceMotionReorderExecuteEXT = 5312, + OpTypeHitObjectEXT = 5313, + OpReorderThreadWithHintEXT = 5314, + OpReorderThreadWithHitObjectEXT = 5315, + OpHitObjectTraceRayEXT = 5316, + OpHitObjectTraceRayMotionEXT = 5317, + OpHitObjectRecordEmptyEXT = 5318, + OpHitObjectExecuteShaderEXT = 5319, + OpHitObjectGetCurrentTimeEXT = 5320, + OpHitObjectGetAttributesEXT = 5321, + OpHitObjectGetHitKindEXT = 5322, + OpHitObjectGetPrimitiveIndexEXT = 5323, + OpHitObjectGetGeometryIndexEXT = 5324, + OpHitObjectGetInstanceIdEXT = 5325, + OpHitObjectGetInstanceCustomIndexEXT = 5326, + OpHitObjectGetObjectRayOriginEXT = 5327, + OpHitObjectGetObjectRayDirectionEXT = 5328, + OpHitObjectGetWorldRayDirectionEXT = 5329, + OpHitObjectGetWorldRayOriginEXT = 5330, + OpHitObjectGetObjectToWorldEXT = 5331, + OpHitObjectGetWorldToObjectEXT = 5332, + OpHitObjectGetRayTMaxEXT = 5333, OpReportIntersectionKHR = 5334, OpReportIntersectionNV = 5334, OpIgnoreIntersectionNV = 5335, @@ -2087,6 +2122,12 @@ enum class Op : unsigned { OpExecuteCallableNV = 5344, OpRayQueryGetClusterIdNV = 5345, OpHitObjectGetClusterIdNV = 5346, + OpHitObjectGetRayTMinEXT = 5347, + OpHitObjectGetShaderBindingTableRecordIndexEXT = 5348, + OpHitObjectGetShaderRecordBufferHandleEXT = 5349, + OpHitObjectIsEmptyEXT = 5350, + OpHitObjectIsHitEXT = 5351, + OpHitObjectIsMissEXT = 5352, OpTypeCooperativeMatrixNV = 5358, OpCooperativeMatrixLoadNV = 5359, OpCooperativeMatrixStoreNV = 5360, @@ -2885,6 +2926,36 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case Op::OpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeVectorLoadNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeVectorStoreNV: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectRecordFromQueryEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectRecordMissEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectRecordMissMotionEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectGetIntersectionTriangleVertexPositionsEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetRayFlagsEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectSetShaderBindingTableRecordIndexEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectReorderExecuteShaderEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectTraceReorderExecuteEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectTraceMotionReorderExecuteEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpTypeHitObjectEXT: *hasResult = true; *hasResultType = false; break; + case Op::OpReorderThreadWithHintEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpReorderThreadWithHitObjectEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectTraceRayEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectTraceRayMotionEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectRecordEmptyEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectExecuteShaderEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectGetCurrentTimeEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetAttributesEXT: *hasResult = false; *hasResultType = false; break; + case Op::OpHitObjectGetHitKindEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetPrimitiveIndexEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetGeometryIndexEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetInstanceIdEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetInstanceCustomIndexEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetObjectRayOriginEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetObjectRayDirectionEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetWorldRayDirectionEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetWorldRayOriginEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetObjectToWorldEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetWorldToObjectEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetRayTMaxEXT: *hasResult = true; *hasResultType = true; break; case Op::OpReportIntersectionKHR: *hasResult = true; *hasResultType = true; break; case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break; @@ -2896,6 +2967,12 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; case Op::OpRayQueryGetClusterIdNV: *hasResult = true; *hasResultType = true; break; case Op::OpHitObjectGetClusterIdNV: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetRayTMinEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetShaderBindingTableRecordIndexEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectGetShaderRecordBufferHandleEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectIsEmptyEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectIsHitEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpHitObjectIsMissEXT: *hasResult = true; *hasResultType = true; break; case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; case Op::OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; case Op::OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; @@ -3349,7 +3426,8 @@ inline const char* ExecutionModeToString(ExecutionMode value) { case ExecutionMode::SampleInterlockOrderedEXT: return "SampleInterlockOrderedEXT"; case ExecutionMode::SampleInterlockUnorderedEXT: return "SampleInterlockUnorderedEXT"; case ExecutionMode::ShadingRateInterlockOrderedEXT: return "ShadingRateInterlockOrderedEXT"; - case ExecutionMode::ShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT"; + case ExecutionMode::ShadingRateInterlockUnorderedEXT: return "ShadingRateInterlockUnorderedEXT"; + case ExecutionMode::Shader64BitIndexingEXT: return "Shader64BitIndexingEXT"; case ExecutionMode::SharedLocalMemorySizeINTEL: return "SharedLocalMemorySizeINTEL"; case ExecutionMode::RoundingModeRTPINTEL: return "RoundingModeRTPINTEL"; case ExecutionMode::RoundingModeRTNINTEL: return "RoundingModeRTNINTEL"; @@ -3399,6 +3477,7 @@ inline const char* StorageClassToString(StorageClass value) { case StorageClass::PhysicalStorageBuffer: return "PhysicalStorageBuffer"; case StorageClass::HitObjectAttributeNV: return "HitObjectAttributeNV"; case StorageClass::TaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; + case StorageClass::HitObjectAttributeEXT: return "HitObjectAttributeEXT"; case StorageClass::CodeSectionINTEL: return "CodeSectionINTEL"; case StorageClass::DeviceOnlyINTEL: return "DeviceOnlyINTEL"; case StorageClass::HostOnlyINTEL: return "HostOnlyINTEL"; @@ -3658,6 +3737,7 @@ inline const char* DecorationToString(Decoration value) { case Decoration::RestrictPointer: return "RestrictPointer"; case Decoration::AliasedPointer: return "AliasedPointer"; case Decoration::HitObjectShaderRecordBufferNV: return "HitObjectShaderRecordBufferNV"; + case Decoration::HitObjectShaderRecordBufferEXT: return "HitObjectShaderRecordBufferEXT"; case Decoration::BindlessSamplerNV: return "BindlessSamplerNV"; case Decoration::BindlessImageNV: return "BindlessImageNV"; case Decoration::BoundSamplerNV: return "BoundSamplerNV"; @@ -4069,6 +4149,7 @@ inline const char* CapabilityToString(Capability value) { case Capability::DisplacementMicromapNV: return "DisplacementMicromapNV"; case Capability::RayTracingOpacityMicromapEXT: return "RayTracingOpacityMicromapEXT"; case Capability::ShaderInvocationReorderNV: return "ShaderInvocationReorderNV"; + case Capability::ShaderInvocationReorderEXT: return "ShaderInvocationReorderEXT"; case Capability::BindlessTextureNV: return "BindlessTextureNV"; case Capability::RayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR"; case Capability::CooperativeVectorNV: return "CooperativeVectorNV"; @@ -4076,7 +4157,8 @@ inline const char* CapabilityToString(Capability value) { case Capability::RayTracingDisplacementMicromapNV: return "RayTracingDisplacementMicromapNV"; case Capability::RawAccessChainsNV: return "RawAccessChainsNV"; case Capability::RayTracingSpheresGeometryNV: return "RayTracingSpheresGeometryNV"; - case Capability::RayTracingLinearSweptSpheresGeometryNV: return "RayTracingLinearSweptSpheresGeometryNV"; + case Capability::RayTracingLinearSweptSpheresGeometryNV: return "RayTracingLinearSweptSpheresGeometryNV"; + case Capability::Shader64BitIndexingEXT: return "Shader64BitIndexingEXT"; case Capability::CooperativeMatrixReductionsNV: return "CooperativeMatrixReductionsNV"; case Capability::CooperativeMatrixConversionsNV: return "CooperativeMatrixConversionsNV"; case Capability::CooperativeMatrixPerElementOperationsNV: return "CooperativeMatrixPerElementOperationsNV"; @@ -4831,6 +4913,36 @@ inline const char* OpToString(Op value) { case Op::OpFetchMicroTriangleVertexBarycentricNV: return "OpFetchMicroTriangleVertexBarycentricNV"; case Op::OpCooperativeVectorLoadNV: return "OpCooperativeVectorLoadNV"; case Op::OpCooperativeVectorStoreNV: return "OpCooperativeVectorStoreNV"; + case Op::OpHitObjectRecordFromQueryEXT: return "OpHitObjectRecordFromQueryEXT"; + case Op::OpHitObjectRecordMissEXT: return "OpHitObjectRecordMissEXT"; + case Op::OpHitObjectRecordMissMotionEXT: return "OpHitObjectRecordMissMotionEXT"; + case Op::OpHitObjectGetIntersectionTriangleVertexPositionsEXT: return "OpHitObjectGetIntersectionTriangleVertexPositionsEXT"; + case Op::OpHitObjectGetRayFlagsEXT: return "OpHitObjectGetRayFlagsEXT"; + case Op::OpHitObjectSetShaderBindingTableRecordIndexEXT: return "OpHitObjectSetShaderBindingTableRecordIndexEXT"; + case Op::OpHitObjectReorderExecuteShaderEXT: return "OpHitObjectReorderExecuteShaderEXT"; + case Op::OpHitObjectTraceReorderExecuteEXT: return "OpHitObjectTraceReorderExecuteEXT"; + case Op::OpHitObjectTraceMotionReorderExecuteEXT: return "OpHitObjectTraceMotionReorderExecuteEXT"; + case Op::OpTypeHitObjectEXT: return "OpTypeHitObjectEXT"; + case Op::OpReorderThreadWithHintEXT: return "OpReorderThreadWithHintEXT"; + case Op::OpReorderThreadWithHitObjectEXT: return "OpReorderThreadWithHitObjectEXT"; + case Op::OpHitObjectTraceRayEXT: return "OpHitObjectTraceRayEXT"; + case Op::OpHitObjectTraceRayMotionEXT: return "OpHitObjectTraceRayMotionEXT"; + case Op::OpHitObjectRecordEmptyEXT: return "OpHitObjectRecordEmptyEXT"; + case Op::OpHitObjectExecuteShaderEXT: return "OpHitObjectExecuteShaderEXT"; + case Op::OpHitObjectGetCurrentTimeEXT: return "OpHitObjectGetCurrentTimeEXT"; + case Op::OpHitObjectGetAttributesEXT: return "OpHitObjectGetAttributesEXT"; + case Op::OpHitObjectGetHitKindEXT: return "OpHitObjectGetHitKindEXT"; + case Op::OpHitObjectGetPrimitiveIndexEXT: return "OpHitObjectGetPrimitiveIndexEXT"; + case Op::OpHitObjectGetGeometryIndexEXT: return "OpHitObjectGetGeometryIndexEXT"; + case Op::OpHitObjectGetInstanceIdEXT: return "OpHitObjectGetInstanceIdEXT"; + case Op::OpHitObjectGetInstanceCustomIndexEXT: return "OpHitObjectGetInstanceCustomIndexEXT"; + case Op::OpHitObjectGetObjectRayOriginEXT: return "OpHitObjectGetObjectRayOriginEXT"; + case Op::OpHitObjectGetObjectRayDirectionEXT: return "OpHitObjectGetObjectRayDirectionEXT"; + case Op::OpHitObjectGetWorldRayDirectionEXT: return "OpHitObjectGetWorldRayDirectionEXT"; + case Op::OpHitObjectGetWorldRayOriginEXT: return "OpHitObjectGetWorldRayOriginEXT"; + case Op::OpHitObjectGetObjectToWorldEXT: return "OpHitObjectGetObjectToWorldEXT"; + case Op::OpHitObjectGetWorldToObjectEXT: return "OpHitObjectGetWorldToObjectEXT"; + case Op::OpHitObjectGetRayTMaxEXT: return "OpHitObjectGetRayTMaxEXT"; case Op::OpReportIntersectionKHR: return "OpReportIntersectionKHR"; case Op::OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; case Op::OpTerminateRayNV: return "OpTerminateRayNV"; @@ -4842,6 +4954,12 @@ inline const char* OpToString(Op value) { case Op::OpExecuteCallableNV: return "OpExecuteCallableNV"; case Op::OpRayQueryGetClusterIdNV: return "OpRayQueryGetClusterIdNV"; case Op::OpHitObjectGetClusterIdNV: return "OpHitObjectGetClusterIdNV"; + case Op::OpHitObjectGetRayTMinEXT: return "OpHitObjectGetRayTMinEXT"; + case Op::OpHitObjectGetShaderBindingTableRecordIndexEXT: return "OpHitObjectGetShaderBindingTableRecordIndexEXT"; + case Op::OpHitObjectGetShaderRecordBufferHandleEXT: return "OpHitObjectGetShaderRecordBufferHandleEXT"; + case Op::OpHitObjectIsEmptyEXT: return "OpHitObjectIsEmptyEXT"; + case Op::OpHitObjectIsHitEXT: return "OpHitObjectIsHitEXT"; + case Op::OpHitObjectIsMissEXT: return "OpHitObjectIsMissEXT"; case Op::OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV"; case Op::OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV"; case Op::OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; diff --git a/3rdparty/glslang/glslang/HLSL/hlslParseHelper.cpp b/3rdparty/glslang/glslang/HLSL/hlslParseHelper.cpp index 073233405..3dbdcb8b4 100644 --- a/3rdparty/glslang/glslang/HLSL/hlslParseHelper.cpp +++ b/3rdparty/glslang/glslang/HLSL/hlslParseHelper.cpp @@ -801,9 +801,16 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, return result; // it was handled as an operator[] bool flattened = false; - int indexValue = 0; - if (index->getQualifier().isFrontEndConstant()) - indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); + int64_t indexValue = 0; + if (index->getQualifier().isFrontEndConstant()) { + if (index->getType().contains64BitInt()) { + indexValue = index->getAsConstantUnion()->getConstArray()[0].getI64Const(); + } else if (index->getType().getBasicType() == EbtUint) { + indexValue = index->getAsConstantUnion()->getConstArray()[0].getUConst(); + } else { + indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); + } + } variableCheck(base); if (! base->isArray() && ! base->isMatrix() && ! base->isVector()) { diff --git a/3rdparty/glslang/glslang/Include/BaseTypes.h b/3rdparty/glslang/glslang/Include/BaseTypes.h index f0c871428..3678afe89 100644 --- a/3rdparty/glslang/glslang/Include/BaseTypes.h +++ b/3rdparty/glslang/glslang/Include/BaseTypes.h @@ -69,6 +69,7 @@ enum TBasicType { EbtReference, EbtRayQuery, EbtHitObjectNV, + EbtHitObjectEXT, EbtCoopmat, EbtFunction, EbtTensorLayoutNV, @@ -111,6 +112,7 @@ enum TStorageQualifier { EvqCallableData, EvqCallableDataIn, EvqHitObjectAttrNV, + EvqHitObjectAttrEXT, EvqtaskPayloadSharedEXT, @@ -398,7 +400,8 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqCallableData: return "callableDataNV"; break; case EvqCallableDataIn: return "callableDataInNV"; break; case EvqtaskPayloadSharedEXT: return "taskPayloadSharedEXT"; break; - case EvqHitObjectAttrNV:return "hitObjectAttributeNV"; break; + case EvqHitObjectAttrNV: return "hitObjectAttributeNV"; break; + case EvqHitObjectAttrEXT:return "hitObjectAttributeEXT"; break; default: return "unknown qualifier"; } } diff --git a/3rdparty/glslang/glslang/Include/Types.h b/3rdparty/glslang/glslang/Include/Types.h index faada175d..d3124ac8f 100644 --- a/3rdparty/glslang/glslang/Include/Types.h +++ b/3rdparty/glslang/glslang/Include/Types.h @@ -130,6 +130,13 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isTileAttachmentQCOM() const { return tileQCOM; } + // For combined sampler, returns the underlying texture. Otherwise, returns identity. + TSampler removeCombined() const { + TSampler result = *this; + result.combined = false; + return result; + } + void clear() { type = EbtVoid; @@ -238,9 +245,9 @@ struct TSampler { // misnomer now; includes images, textures without sampler, return ! operator==(right); } - TString getString() const + std::string getString() const { - TString s; + std::string s; if (isPureSampler()) { s.append("sampler"); @@ -818,6 +825,9 @@ public: bool isHitObjectAttrNV() const { return storage == EvqHitObjectAttrNV; } + bool isHitObjectAttrEXT() const { + return storage == EvqHitObjectAttrEXT; + } // True if this type of IO is supposed to be arrayed with extra level for per-vertex data bool isArrayedIo(EShLanguage language) const @@ -854,6 +864,7 @@ public: layoutFullQuads = false; layoutQuadDeriv = false; layoutHitObjectShaderRecordNV = false; + layoutHitObjectShaderRecordEXT = false; layoutBindlessSampler = false; layoutBindlessImage = false; layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd; @@ -954,6 +965,7 @@ public: bool layoutFullQuads; bool layoutQuadDeriv; bool layoutHitObjectShaderRecordNV; + bool layoutHitObjectShaderRecordEXT; // GL_EXT_spirv_intrinsics int spirvStorageClass; @@ -1065,6 +1077,7 @@ public: bool isFullQuads() const { return layoutFullQuads; } bool isQuadDeriv() const { return layoutQuadDeriv; } bool hasHitObjectShaderRecordNV() const { return layoutHitObjectShaderRecordNV; } + bool hasHitObjectShaderRecordEXT() const { return layoutHitObjectShaderRecordEXT; } bool hasBufferReference() const { return layoutBufferReference; } bool hasBufferReferenceAlign() const { @@ -1930,7 +1943,7 @@ public: } virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery - || basicType == EbtHitObjectNV || isTileAttachmentQCOM() + || basicType == EbtHitObjectNV || basicType == EbtHitObjectEXT || isTileAttachmentQCOM() || isTensorARM(); } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } @@ -2326,6 +2339,8 @@ public: appendStr(" quad_derivatives"); if (qualifier.layoutHitObjectShaderRecordNV) appendStr(" hitobjectshaderrecordnv"); + if (qualifier.layoutHitObjectShaderRecordEXT) + appendStr(" hitobjectshaderrecordext"); if (qualifier.layoutBindlessSampler) appendStr(" layoutBindlessSampler"); @@ -2595,7 +2610,7 @@ public: TString getBasicTypeString() const { if (basicType == EbtSampler) - return sampler.getString(); + return TString{sampler.getString()}; else return getBasicString(); } diff --git a/3rdparty/glslang/glslang/Include/arrays.h b/3rdparty/glslang/glslang/Include/arrays.h index 91e190835..261af6837 100644 --- a/3rdparty/glslang/glslang/Include/arrays.h +++ b/3rdparty/glslang/glslang/Include/arrays.h @@ -66,6 +66,7 @@ struct TArraySize { return SameSpecializationConstants(node, rhs.node); } + bool operator!=(const TArraySize& rhs) const { return !(*this == rhs); } }; // @@ -198,6 +199,12 @@ struct TSmallArrayVector { } bool operator!=(const TSmallArrayVector& rhs) const { return ! operator==(rhs); } + const TArraySize& operator[](int index) const + { + assert(sizes && index < (int)sizes->size()); + return (*sizes)[index]; + } + protected: TSmallArrayVector(const TSmallArrayVector&); @@ -336,6 +343,10 @@ struct TArraySizes { return true; } + const TArraySize& getArraySize(int index) const + { + return sizes[index]; + } void setVariablyIndexed() { variablyIndexed = true; } bool isVariablyIndexed() const { return variablyIndexed; } diff --git a/3rdparty/glslang/glslang/Include/intermediate.h b/3rdparty/glslang/glslang/Include/intermediate.h index 9508ad770..9e520dee7 100644 --- a/3rdparty/glslang/glslang/Include/intermediate.h +++ b/3rdparty/glslang/glslang/Include/intermediate.h @@ -875,6 +875,44 @@ enum TOperator { EOpFetchMicroTriangleVertexPositionNV, EOpFetchMicroTriangleVertexBarycentricNV, + // + // GL_EXT_shader_invocation_reorder + // + + EOpHitObjectTraceRayEXT, + EOpHitObjectTraceRayMotionEXT, + EOpHitObjectRecordMissEXT, + EOpHitObjectRecordMissMotionEXT, + EOpHitObjectRecordEmptyEXT, + EOpHitObjectExecuteShaderEXT, + EOpHitObjectIsEmptyEXT, + EOpHitObjectIsMissEXT, + EOpHitObjectIsHitEXT, + EOpHitObjectGetRayTMinEXT, + EOpHitObjectGetRayTMaxEXT, + EOpHitObjectGetRayFlagsEXT, + EOpHitObjectGetObjectRayOriginEXT, + EOpHitObjectGetObjectRayDirectionEXT, + EOpHitObjectGetWorldRayOriginEXT, + EOpHitObjectGetWorldRayDirectionEXT, + EOpHitObjectGetWorldToObjectEXT, + EOpHitObjectGetObjectToWorldEXT, + EOpHitObjectGetInstanceCustomIndexEXT, + EOpHitObjectGetInstanceIdEXT, + EOpHitObjectGetGeometryIndexEXT, + EOpHitObjectGetPrimitiveIndexEXT, + EOpHitObjectGetHitKindEXT, + EOpHitObjectGetShaderBindingTableRecordIndexEXT, + EOpHitObjectSetShaderBindingTableRecordIndexEXT, + EOpHitObjectGetShaderRecordBufferHandleEXT, + EOpHitObjectGetAttributesEXT, + EOpHitObjectGetCurrentTimeEXT, + EOpReorderThreadEXT, + EOpHitObjectReorderExecuteEXT, + EOpHitObjectTraceReorderExecuteEXT, + EOpHitObjectTraceMotionReorderExecuteEXT, + EOpHitObjectRecordFromQueryEXT, + EOpHitObjectGetIntersectionTriangleVertexPositionsEXT, // HLSL operations // @@ -1021,6 +1059,7 @@ enum TLinkType { }; class TIntermTraverser; +class TIntermVariableDecl; class TIntermOperator; class TIntermAggregate; class TIntermUnary; @@ -1049,6 +1088,7 @@ public: virtual const glslang::TSourceLoc& getLoc() const { return loc; } virtual void setLoc(const glslang::TSourceLoc& l) { loc = l; } virtual void traverse(glslang::TIntermTraverser*) = 0; + virtual glslang::TIntermVariableDecl* getAsVariableDecl() { return nullptr; } virtual glslang::TIntermTyped* getAsTyped() { return nullptr; } virtual glslang::TIntermOperator* getAsOperator() { return nullptr; } virtual glslang::TIntermConstantUnion* getAsConstantUnion() { return nullptr; } @@ -1062,6 +1102,7 @@ public: virtual glslang::TIntermBranch* getAsBranchNode() { return nullptr; } virtual glslang::TIntermLoop* getAsLoopNode() { return nullptr; } + virtual const glslang::TIntermVariableDecl* getAsVariableDecl() const { return nullptr; } virtual const glslang::TIntermTyped* getAsTyped() const { return nullptr; } virtual const glslang::TIntermOperator* getAsOperator() const { return nullptr; } virtual const glslang::TIntermConstantUnion* getAsConstantUnion() const { return nullptr; } @@ -1092,6 +1133,37 @@ struct TIntermNodePair { TIntermNode* node2; }; +// +// Represent declaration of a variable. +// +class TIntermVariableDecl : public TIntermNode { +public: + TIntermVariableDecl(TIntermSymbol* declSymbol, TIntermNode* initNode) : declSymbol(declSymbol), initNode(initNode) + { + } + TIntermVariableDecl(const TIntermVariableDecl&) = delete; + TIntermVariableDecl& operator=(const TIntermVariableDecl&) = delete; + + void traverse(glslang::TIntermTraverser* traverser) override; + + TIntermVariableDecl* getAsVariableDecl() override { return this; } + const TIntermVariableDecl* getAsVariableDecl() const override { return this; } + + TIntermSymbol* getDeclSymbol() { return declSymbol; } + const TIntermSymbol* getDeclSymbol() const { return declSymbol; } + + TIntermNode* getInitNode() { return initNode; } + const TIntermNode* getInitNode() const { return initNode; } + +private: + // This symbol represents the declared variable at its declaration point. + // It's not traversed by default. To traverse it, the visitor needs to have includeDeclSymbol enabled. + TIntermSymbol* declSymbol = nullptr; + + // The initializer + TIntermNode* initNode = nullptr; +}; + // // Intermediate class for nodes that have a type. // @@ -1136,7 +1208,7 @@ protected: // class TIntermLoop : public TIntermNode { public: - TIntermLoop(TIntermNode* aBody, TIntermTyped* aTest, TIntermTyped* aTerminal, bool testFirst) : + TIntermLoop(TIntermNode* aBody, TIntermNode* aTest, TIntermTyped* aTerminal, bool testFirst) : body(aBody), test(aTest), terminal(aTerminal), @@ -1155,10 +1227,20 @@ public: virtual const TIntermLoop* getAsLoopNode() const { return this; } virtual void traverse(TIntermTraverser*); TIntermNode* getBody() const { return body; } - TIntermTyped* getTest() const { return test; } + TIntermNode* getTest() const { return test; } TIntermTyped* getTerminal() const { return terminal; } bool testFirst() const { return first; } + // Because the test node can be a declaration in a while loop, this function unwraps it to get the actual expression. + TIntermTyped* getTestExpr() const { + if (auto decl = test->getAsVariableDecl()) { + return decl->getInitNode()->getAsTyped(); + } + else { + return test->getAsTyped(); + } + } + void setUnroll() { unroll = true; } void setDontUnroll() { dontUnroll = true; @@ -1192,7 +1274,7 @@ public: protected: TIntermNode* body; // code to loop over - TIntermTyped* test; // exit condition associated with loop, could be 0 for 'for' loops + TIntermNode* test; // exit condition associated with loop, could be 0 for 'for' loops TIntermTyped* terminal; // exists for for-loops bool first; // true for while and for, not for do-while bool unroll; // true if unroll requested @@ -1753,24 +1835,26 @@ enum TVisit class TIntermTraverser { public: POOL_ALLOCATOR_NEW_DELETE(glslang::GetThreadPoolAllocator()) - TIntermTraverser(bool preVisit = true, bool inVisit = false, bool postVisit = false, bool rightToLeft = false) : + TIntermTraverser(bool preVisit = true, bool inVisit = false, bool postVisit = false, bool rightToLeft = false, bool includeDeclSymbol = false) : preVisit(preVisit), inVisit(inVisit), postVisit(postVisit), rightToLeft(rightToLeft), + includeDeclSymbol(includeDeclSymbol), depth(0), maxDepth(0) { } virtual ~TIntermTraverser() { } - virtual void visitSymbol(TIntermSymbol*) { } - virtual void visitConstantUnion(TIntermConstantUnion*) { } - virtual bool visitBinary(TVisit, TIntermBinary*) { return true; } - virtual bool visitUnary(TVisit, TIntermUnary*) { return true; } - virtual bool visitSelection(TVisit, TIntermSelection*) { return true; } - virtual bool visitAggregate(TVisit, TIntermAggregate*) { return true; } - virtual bool visitLoop(TVisit, TIntermLoop*) { return true; } - virtual bool visitBranch(TVisit, TIntermBranch*) { return true; } - virtual bool visitSwitch(TVisit, TIntermSwitch*) { return true; } + virtual void visitSymbol(TIntermSymbol*) { } + virtual void visitConstantUnion(TIntermConstantUnion*) { } + virtual bool visitBinary(TVisit, TIntermBinary*) { return true; } + virtual bool visitUnary(TVisit, TIntermUnary*) { return true; } + virtual bool visitSelection(TVisit, TIntermSelection*) { return true; } + virtual bool visitAggregate(TVisit, TIntermAggregate*) { return true; } + virtual bool visitLoop(TVisit, TIntermLoop*) { return true; } + virtual bool visitBranch(TVisit, TIntermBranch*) { return true; } + virtual bool visitSwitch(TVisit, TIntermSwitch*) { return true; } + virtual bool visitVariableDecl(TVisit, TIntermVariableDecl*) { return true; } int getMaxDepth() const { return maxDepth; } @@ -1797,6 +1881,11 @@ public: const bool postVisit; const bool rightToLeft; + // Whether to traverse declaration symbols in the traversal. + // By default, declaration symbols are not visited in the traversal to avoid + // visiting them in SPIR-V generation where they are not needed. + const bool includeDeclSymbol; + protected: TIntermTraverser& operator=(TIntermTraverser&); diff --git a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp index 624296368..34bc52999 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp @@ -4830,17 +4830,19 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uint", "uvec2", "uvec4", "uint64_t", "u64vec2", "u64vec4", }; - for (auto t : allTypes) { - cooperativeMatrixFuncs << "void coopMatLoad(out coopmat m, volatile coherent nontemporal " << t << "[] buf, uint element, uint stride, int matrixLayout);\n"; - cooperativeMatrixFuncs << "void coopMatStore(coopmat m, volatile coherent nontemporal " << t << "[] buf, uint element, uint stride, int matrixLayout);\n"; + for (auto elemTy : {"uint", "uint64_t"}) { + for (auto t : allTypes) { + cooperativeMatrixFuncs << "void coopMatLoad(out coopmat m, volatile coherent nontemporal " << t << "[] buf, " << elemTy << " element, uint stride, int matrixLayout);\n"; + cooperativeMatrixFuncs << "void coopMatStore(coopmat m, volatile coherent nontemporal " << t << "[] buf, " << elemTy << " element, uint stride, int matrixLayout);\n"; + } + // Just use uint8_t for buffer type, we have special matching rules to allow any conversion + cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, " << elemTy << " element, tensorLayoutNV t);\n"; + cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, " << elemTy << " element, tensorLayoutNV t, tensorViewNV v);\n"; + cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, " << elemTy << " element, tensorLayoutNV t, __function f);\n"; + cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, " << elemTy << " element, tensorLayoutNV t, tensorViewNV v, __function f);\n"; + cooperativeMatrixFuncs << "void coopMatStoreTensorNV(coopmat m, volatile coherent nontemporal uint8_t[] buf, " << elemTy << " element, tensorLayoutNV t);\n"; + cooperativeMatrixFuncs << "void coopMatStoreTensorNV(coopmat m, volatile coherent nontemporal uint8_t[] buf, " << elemTy << " element, tensorLayoutNV t, tensorViewNV v);\n"; } - // Just use uint8_t for buffer type, we have special matching rules to allow any conversion - cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t);\n"; - cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t, tensorViewNV v);\n"; - cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t, __function f);\n"; - cooperativeMatrixFuncs << "void coopMatLoadTensorNV(inout coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t, tensorViewNV v, __function f);\n"; - cooperativeMatrixFuncs << "void coopMatStoreTensorNV(coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t);\n"; - cooperativeMatrixFuncs << "void coopMatStoreTensorNV(coopmat m, volatile coherent nontemporal uint8_t[] buf, uint element, tensorLayoutNV t, tensorViewNV v);\n"; } cooperativeMatrixFuncs << @@ -5001,49 +5003,54 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "float32_t", "float64_t", }; - for (uint32_t i = 0; i < sizeof(basicTypes)/sizeof(basicTypes[0]); ++i) { - std::string func = std::string("void coopVecMatMulNV(out coopvecNV result, ") + - std::string("coopvecNV v, ") + - std::string("int inputInterpretation, ") + - std::string(basicTypes[i]) + std::string("[] matrix, ") + - std::string("uint matrixOffset, ") + - std::string("int matrixInterpretation, ") + - std::string("uint M, ") + - std::string("uint K, ") + - std::string("int matrixLayout, ") + - std::string("bool transpose, ") + - std::string("uint matrixStride);\n"); - commonBuiltins.append(func.c_str()); + std::string coopVecOffsetTypes[] = { + "uint", + "uint64_t", + }; + for (auto offsetTy : coopVecOffsetTypes) { + for (uint32_t i = 0; i < sizeof(basicTypes)/sizeof(basicTypes[0]); ++i) { + std::string func = std::string("void coopVecMatMulNV(out coopvecNV result, ") + + std::string("coopvecNV v, ") + + std::string("int inputInterpretation, ") + + std::string(basicTypes[i]) + std::string("[] matrix, ") + + offsetTy + std::string(" matrixOffset, ") + + std::string("int matrixInterpretation, ") + + std::string("uint M, ") + + std::string("uint K, ") + + std::string("int matrixLayout, ") + + std::string("bool transpose, ") + + std::string("uint matrixStride);\n"); + commonBuiltins.append(func.c_str()); - for (uint32_t j = 0; j < sizeof(basicTypes)/sizeof(basicTypes[0]); ++j) { - func = std::string("void coopVecMatMulAddNV(out coopvecNV result, ") + - std::string("coopvecNV v, ") + - std::string("int inputInterpretation, ") + - std::string(basicTypes[i]) + std::string("[] matrix, ") + - std::string("uint matrixOffset, ") + - std::string("int matrixInterpretation, ") + - std::string(basicTypes[j]) + std::string("[] bias, ") + - std::string("uint biasOffset, ") + - std::string("int biasInterpretation, ") + - std::string("uint M, ") + - std::string("uint K, ") + - std::string("int matrixLayout, ") + - std::string("bool transpose, ") + - std::string("uint matrixStride);\n"); + for (uint32_t j = 0; j < sizeof(basicTypes)/sizeof(basicTypes[0]); ++j) { + func = std::string("void coopVecMatMulAddNV(out coopvecNV result, ") + + std::string("coopvecNV v, ") + + std::string("int inputInterpretation, ") + + std::string(basicTypes[i]) + std::string("[] matrix, ") + + offsetTy + std::string(" matrixOffset, ") + + std::string("int matrixInterpretation, ") + + std::string(basicTypes[j]) + std::string("[] bias, ") + + offsetTy + std::string(" biasOffset, ") + + std::string("int biasInterpretation, ") + + std::string("uint M, ") + + std::string("uint K, ") + + std::string("int matrixLayout, ") + + std::string("bool transpose, ") + + std::string("uint matrixStride);\n"); + commonBuiltins.append(func.c_str()); + } + + func = std::string("void coopVecOuterProductAccumulateNV(coopvecNV v1, coopvecNV v2, ") + + std::string(basicTypes[i]) + + std::string("[] buf, ") + offsetTy + std::string(" offset, uint stride, int matrixLayout, int matrixInterpretation);\n"); + commonBuiltins.append(func.c_str()); + + func = std::string("void coopVecReduceSumAccumulateNV(coopvecNV v, ") + + std::string(basicTypes[i]) + + std::string("[] buf, ") + offsetTy + std::string(" offset);\n"); commonBuiltins.append(func.c_str()); } - - func = std::string("void coopVecOuterProductAccumulateNV(coopvecNV v1, coopvecNV v2, ") + - std::string(basicTypes[i]) + - std::string("[] buf, uint offset, uint stride, int matrixLayout, int matrixInterpretation);\n"); - commonBuiltins.append(func.c_str()); - - func = std::string("void coopVecReduceSumAccumulateNV(coopvecNV v, ") + - std::string(basicTypes[i]) + - std::string("[] buf, uint offset);\n"); - commonBuiltins.append(func.c_str()); } - std::string cooperativeVectorFuncs = "coopvecNV fma(coopvecNV, coopvecNV, coopvecNV);\n" "coopvecNV min(coopvecNV, coopvecNV);\n" @@ -5105,13 +5112,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "f32vec4", "f64vec4", }; - for (uint32_t i = 0; i < sizeof(scalarAndVectorTypes)/sizeof(scalarAndVectorTypes[0]); ++i) { - std::string load = std::string("void coopVecLoadNV(out coopvecNV v, volatile coherent ") + - std::string(scalarAndVectorTypes[i]) + std::string("[] buf, uint offset);"); - std::string store = std::string("void coopVecStoreNV(coopvecNV v, volatile coherent ") + - std::string(scalarAndVectorTypes[i]) + std::string("[] buf, uint offset);"); - commonBuiltins.append(load.c_str()); - commonBuiltins.append(store.c_str()); + + for (auto offsetTy : coopVecOffsetTypes) { + for (uint32_t i = 0; i < sizeof(scalarAndVectorTypes)/sizeof(scalarAndVectorTypes[0]); ++i) { + std::string load = std::string("void coopVecLoadNV(out coopvecNV v, volatile coherent ") + + std::string(scalarAndVectorTypes[i]) + std::string("[] buf, ") + offsetTy + std::string(" offset);"); + std::string store = std::string("void coopVecStoreNV(coopvecNV v, volatile coherent ") + + std::string(scalarAndVectorTypes[i]) + std::string("[] buf, ") + offsetTy + std::string(" offset);"); + commonBuiltins.append(load.c_str()); + commonBuiltins.append(store.c_str()); + } } commonBuiltins.append( @@ -5397,6 +5407,45 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void hitObjectGetLSSRadiiNV(hitObjectNV, out float[2]);" "bool hitObjectIsSphereHitNV(hitObjectNV);" "bool hitObjectIsLSSHitNV(hitObjectNV);" + "void hitObjectTraceRayEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectTraceRayMotionEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordMissEXT(hitObjectEXT,uint,uint,vec3,float,vec3,float);" + "void hitObjectRecordMissMotionEXT(hitObjectEXT,uint,uint,vec3,float,vec3,float,float);" + "void hitObjectRecordEmptyEXT(hitObjectEXT);" + "void hitObjectExecuteShaderEXT(hitObjectEXT,int);" + "bool hitObjectIsEmptyEXT(hitObjectEXT);" + "bool hitObjectIsMissEXT(hitObjectEXT);" + "bool hitObjectIsHitEXT(hitObjectEXT);" + "float hitObjectGetRayTMinEXT(hitObjectEXT);" + "float hitObjectGetRayTMaxEXT(hitObjectEXT);" + "uint hitObjectGetRayFlagsEXT(hitObjectEXT);" + "vec3 hitObjectGetWorldRayOriginEXT(hitObjectEXT);" + "vec3 hitObjectGetWorldRayDirectionEXT(hitObjectEXT);" + "vec3 hitObjectGetObjectRayOriginEXT(hitObjectEXT);" + "vec3 hitObjectGetObjectRayDirectionEXT(hitObjectEXT);" + "mat4x3 hitObjectGetWorldToObjectEXT(hitObjectEXT);" + "mat4x3 hitObjectGetObjectToWorldEXT(hitObjectEXT);" + "int hitObjectGetInstanceCustomIndexEXT(hitObjectEXT);" + "int hitObjectGetInstanceIdEXT(hitObjectEXT);" + "int hitObjectGetGeometryIndexEXT(hitObjectEXT);" + "int hitObjectGetPrimitiveIndexEXT(hitObjectEXT);" + "uint hitObjectGetHitKindEXT(hitObjectEXT);" + "void hitObjectGetAttributesEXT(hitObjectEXT,int);" + "float hitObjectGetCurrentTimeEXT(hitObjectEXT);" + "uint hitObjectGetShaderBindingTableRecordIndexEXT(hitObjectEXT);" + "uvec2 hitObjectGetShaderRecordBufferHandleEXT(hitObjectEXT);" + "void hitObjectSetShaderBindingTableRecordIndexEXT(hitObjectEXT, uint);" + "void hitObjectReorderExecuteEXT(hitObjectEXT,int);" + "void hitObjectReorderExecuteEXT(hitObjectEXT,uint,uint,int);" + "void hitObjectTraceReorderExecuteEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectTraceReorderExecuteEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,uint,uint,int);" + "void hitObjectTraceMotionReorderExecuteEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectTraceMotionReorderExecuteEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,uint,uint,int);" + "void hitObjectRecordFromQueryEXT(hitObjectEXT, rayQueryEXT, uint, int);" + "void hitObjectGetIntersectionTriangleVertexPositionsEXT(hitObjectEXT, out vec3[3]);" + "void reorderThreadEXT(uint, uint);" + "void reorderThreadEXT(hitObjectEXT);" + "void reorderThreadEXT(hitObjectEXT, uint, uint);" "\n"); stageBuiltins[EShLangIntersect].append( "bool reportIntersectionNV(float, uint);" @@ -5449,6 +5498,36 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void hitObjectGetLSSRadiiNV(hitObjectNV, out float[2]);" "bool hitObjectIsSphereHitNV(hitObjectNV);" "bool hitObjectIsLSSHitNV(hitObjectNV);" + "void hitObjectTraceRayEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectTraceRayMotionEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordMissEXT(hitObjectEXT,uint,uint,vec3,float,vec3,float);" + "void hitObjectRecordMissMotionEXT(hitObjectEXT,uint,uint,vec3,float,vec3,float,float);" + "void hitObjectRecordEmptyEXT(hitObjectEXT);" + "void hitObjectExecuteShaderEXT(hitObjectEXT,int);" + "bool hitObjectIsEmptyEXT(hitObjectEXT);" + "bool hitObjectIsMissEXT(hitObjectEXT);" + "bool hitObjectIsHitEXT(hitObjectEXT);" + "float hitObjectGetRayTMinEXT(hitObjectEXT);" + "float hitObjectGetRayTMaxEXT(hitObjectEXT);" + "uint hitObjectGetRayFlagsEXT(hitObjectEXT);" + "vec3 hitObjectGetWorldRayOriginEXT(hitObjectEXT);" + "vec3 hitObjectGetWorldRayDirectionEXT(hitObjectEXT);" + "vec3 hitObjectGetObjectRayOriginEXT(hitObjectEXT);" + "vec3 hitObjectGetObjectRayDirectionEXT(hitObjectEXT);" + "mat4x3 hitObjectGetWorldToObjectEXT(hitObjectEXT);" + "mat4x3 hitObjectGetObjectToWorldEXT(hitObjectEXT);" + "int hitObjectGetInstanceCustomIndexEXT(hitObjectEXT);" + "int hitObjectGetInstanceIdEXT(hitObjectEXT);" + "int hitObjectGetGeometryIndexEXT(hitObjectEXT);" + "int hitObjectGetPrimitiveIndexEXT(hitObjectEXT);" + "uint hitObjectGetHitKindEXT(hitObjectEXT);" + "void hitObjectGetAttributesEXT(hitObjectEXT,int);" + "float hitObjectGetCurrentTimeEXT(hitObjectEXT);" + "uint hitObjectGetShaderBindingTableRecordIndexEXT(hitObjectEXT);" + "uvec2 hitObjectGetShaderRecordBufferHandleEXT(hitObjectEXT);" + "void hitObjectSetShaderBindingTableRecordIndexEXT(hitObjectEXT, uint);" + "void hitObjectRecordFromQueryEXT(hitObjectEXT, rayQueryEXT,uint, int);" + "void hitObjectGetIntersectionTriangleVertexPositionsEXT(hitObjectEXT, out vec3[3]);" "\n"); stageBuiltins[EShLangMiss].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" @@ -5493,6 +5572,36 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void hitObjectGetLSSRadiiNV(hitObjectNV, out float[2]);" "bool hitObjectIsSphereHitNV(hitObjectNV);" "bool hitObjectIsLSSHitNV(hitObjectNV);" + "void hitObjectTraceRayEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectTraceRayMotionEXT(hitObjectEXT,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordMissEXT(hitObjectEXT,uint,uint,vec3,float,vec3,float);" + "void hitObjectRecordMissMotionEXT(hitObjectEXT,uint,uint,vec3,float,vec3,float,float);" + "void hitObjectRecordEmptyEXT(hitObjectEXT);" + "void hitObjectExecuteShaderEXT(hitObjectEXT,int);" + "bool hitObjectIsEmptyEXT(hitObjectEXT);" + "bool hitObjectIsMissEXT(hitObjectEXT);" + "bool hitObjectIsHitEXT(hitObjectEXT);" + "float hitObjectGetRayTMinEXT(hitObjectEXT);" + "float hitObjectGetRayTMaxEXT(hitObjectEXT);" + "uint hitObjectGetRayFlagsEXT(hitObjectEXT);" + "vec3 hitObjectGetWorldRayOriginEXT(hitObjectEXT);" + "vec3 hitObjectGetWorldRayDirectionEXT(hitObjectEXT);" + "vec3 hitObjectGetObjectRayOriginEXT(hitObjectEXT);" + "vec3 hitObjectGetObjectRayDirectionEXT(hitObjectEXT);" + "mat4x3 hitObjectGetWorldToObjectEXT(hitObjectEXT);" + "mat4x3 hitObjectGetObjectToWorldEXT(hitObjectEXT);" + "int hitObjectGetInstanceCustomIndexEXT(hitObjectEXT);" + "int hitObjectGetInstanceIdEXT(hitObjectEXT);" + "int hitObjectGetGeometryIndexEXT(hitObjectEXT);" + "int hitObjectGetPrimitiveIndexEXT(hitObjectEXT);" + "uint hitObjectGetHitKindEXT(hitObjectEXT);" + "void hitObjectGetAttributesEXT(hitObjectEXT,int);" + "float hitObjectGetCurrentTimeEXT(hitObjectEXT);" + "uint hitObjectGetShaderBindingTableRecordIndexEXT(hitObjectEXT);" + "uvec2 hitObjectGetShaderRecordBufferHandleEXT(hitObjectEXT);" + "void hitObjectSetShaderBindingTableRecordIndexEXT(hitObjectEXT, uint);" + "void hitObjectRecordFromQueryEXT(hitObjectEXT, rayQueryEXT, uint, int);" + "void hitObjectGetIntersectionTriangleVertexPositionsEXT(hitObjectEXT, out vec3[3]);" "\n"); stageBuiltins[EShLangCallable].append( "void executeCallableNV(uint, int);" @@ -6965,7 +7074,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV false, ms ? true : false); - TString typeName = sampler.getString(); + TString typeName = TString{sampler.getString()}; addQueryFunctions(sampler, typeName, version, profile); addImageFunctions(sampler, typeName, version, profile); @@ -7068,7 +7177,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c ms ? true : false); } - TString typeName = sampler.getString(); + TString typeName = TString{sampler.getString()}; if (dim == EsdSubpass) { addSubpassSampling(sampler, typeName, version, profile); @@ -7092,7 +7201,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c // texture types. sampler.setTexture(sampler.type, sampler.dim, sampler.arrayed, sampler.shadow, sampler.ms); - TString textureTypeName = sampler.getString(); + TString textureTypeName = TString{sampler.getString()}; addSamplingFunctions(sampler, textureTypeName, version, profile); addQueryFunctions(sampler, textureTypeName, version, profile); } @@ -9782,10 +9891,32 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } { - symbolTable.setFunctionExtensions("coopMatLoad", 1, &E_GL_KHR_cooperative_matrix); - symbolTable.setFunctionExtensions("coopMatStore", 1, &E_GL_KHR_cooperative_matrix); + auto coopMatKHRCallback = [](const char *name) -> std::vector { + std::vector ret; + if (strstr(name, "u64") != nullptr) { + ret.push_back(E_GL_EXT_shader_64bit_indexing); + } else { + ret.push_back(E_GL_KHR_cooperative_matrix); + } + return ret; + }; + auto coopMat2NVCallback = [](const char *name) -> std::vector { + std::vector ret; + if (strstr(name, "u64") != nullptr) { + ret.push_back(E_GL_EXT_shader_64bit_indexing); + } else { + ret.push_back(E_GL_NV_cooperative_matrix2); + } + return ret; + }; + + symbolTable.setFunctionExtensionsCallback("coopMatLoad", coopMatKHRCallback); + symbolTable.setFunctionExtensionsCallback("coopMatStore", coopMatKHRCallback); symbolTable.setFunctionExtensions("coopMatMulAdd", 1, &E_GL_KHR_cooperative_matrix); + symbolTable.setFunctionExtensionsCallback("coopMatLoadTensorNV", coopMat2NVCallback); + symbolTable.setFunctionExtensionsCallback("coopMatStoreTensorNV", coopMat2NVCallback); + symbolTable.setFunctionExtensions("coopMatReduceNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("coopMatPerElementNV", 1, &E_GL_NV_cooperative_matrix2); symbolTable.setFunctionExtensions("coopMatTransposeNV", 1, &E_GL_NV_cooperative_matrix2); @@ -9808,12 +9939,23 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("tensorWriteARM", 1, &E_GL_ARM_tensors); symbolTable.setFunctionExtensions("tensorSizeARM", 1, &E_GL_ARM_tensors); } - { - symbolTable.setFunctionExtensions("coopVecMatMulNV", 1, &E_GL_NV_cooperative_vector); - symbolTable.setFunctionExtensions("coopVecMatMulAddNV", 1, &E_GL_NV_cooperative_vector); - symbolTable.setFunctionExtensions("coopVecOuterProductAccumulateNV", 1, &E_GL_NV_cooperative_vector); - symbolTable.setFunctionExtensions("coopVecReduceSumAccumulateNV", 1, &E_GL_NV_cooperative_vector); + auto coopVecCallback = [](const char *name) -> std::vector { + std::vector ret; + // This looks for u64 as the last parameter (the offset) + if (strstr(name, "u641;") != nullptr) { + ret.push_back(E_GL_EXT_shader_64bit_indexing); + } else { + ret.push_back(E_GL_NV_cooperative_vector); + } + return ret; + }; + symbolTable.setFunctionExtensionsCallback("coopVecMatMulNV", coopVecCallback); + symbolTable.setFunctionExtensionsCallback("coopVecMatMulAddNV", coopVecCallback); + symbolTable.setFunctionExtensionsCallback("coopVecLoadNV", coopVecCallback); + symbolTable.setFunctionExtensionsCallback("coopVecStoreNV", coopVecCallback); + symbolTable.setFunctionExtensionsCallback("coopVecOuterProductAccumulateNV", coopVecCallback); + symbolTable.setFunctionExtensionsCallback("coopVecReduceSumAccumulateNV", coopVecCallback); } { @@ -9997,6 +10139,40 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("hitObjectGetLSSRadiiNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("hitObjectIsSphereHitNV", 1, &E_GL_NV_linear_swept_spheres); symbolTable.setFunctionExtensions("hitObjectIsLSSHitNV", 1, &E_GL_NV_linear_swept_spheres); + symbolTable.setFunctionExtensions("hitObjectTraceRayEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectTraceRayMotionEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordMissEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordMissMotionEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordEmptyEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectExecuteShaderEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectIsEmptyEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectIsMissEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectIsHitEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetRayTMinEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetRayTMaxEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetRayFlagsEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetObjectRayOriginEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetObjectRayDirectionEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetWorldRayOriginEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetWorldRayDirectionEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetWorldToObjectEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetObjectToWorldEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetInstanceCustomIndexEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetInstanceIdEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetGeometryIndexEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetPrimitiveIndexEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetHitKindEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetAttributesEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetCurrentTimeEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetShaderBindingTableRecordIndexEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetShaderRecordBufferHandleEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectSetShaderBindingTableRecordIndexEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("reorderThreadEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectReorderExecuteEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectTraceReorderExecuteEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectTraceMotionReorderExecuteEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordFromQueryEXT", 1, &E_GL_EXT_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetIntersectionTriangleVertexPositionsEXT", 1, &E_GL_EXT_shader_invocation_reorder); BuiltInVariable("gl_LaunchIDNV", EbvLaunchId, symbolTable); @@ -11200,6 +11376,40 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("hitObjectGetLSSRadiiNV", EOpHitObjectGetLSSRadiiNV); symbolTable.relateToOperator("hitObjectIsSphereHitNV", EOpHitObjectIsSphereHitNV); symbolTable.relateToOperator("hitObjectIsLSSHitNV", EOpHitObjectIsLSSHitNV); + symbolTable.relateToOperator("hitObjectTraceRayEXT", EOpHitObjectTraceRayEXT); + symbolTable.relateToOperator("hitObjectTraceRayMotionEXT", EOpHitObjectTraceRayMotionEXT); + symbolTable.relateToOperator("hitObjectRecordMissEXT", EOpHitObjectRecordMissEXT); + symbolTable.relateToOperator("hitObjectRecordMissMotionEXT", EOpHitObjectRecordMissMotionEXT); + symbolTable.relateToOperator("hitObjectRecordEmptyEXT", EOpHitObjectRecordEmptyEXT); + symbolTable.relateToOperator("hitObjectExecuteShaderEXT", EOpHitObjectExecuteShaderEXT); + symbolTable.relateToOperator("hitObjectIsEmptyEXT", EOpHitObjectIsEmptyEXT); + symbolTable.relateToOperator("hitObjectIsMissEXT", EOpHitObjectIsMissEXT); + symbolTable.relateToOperator("hitObjectIsHitEXT", EOpHitObjectIsHitEXT); + symbolTable.relateToOperator("hitObjectGetRayTMinEXT", EOpHitObjectGetRayTMinEXT); + symbolTable.relateToOperator("hitObjectGetRayTMaxEXT", EOpHitObjectGetRayTMaxEXT); + symbolTable.relateToOperator("hitObjectGetRayFlagsEXT", EOpHitObjectGetRayFlagsEXT); + symbolTable.relateToOperator("hitObjectGetObjectRayOriginEXT", EOpHitObjectGetObjectRayOriginEXT); + symbolTable.relateToOperator("hitObjectGetObjectRayDirectionEXT", EOpHitObjectGetObjectRayDirectionEXT); + symbolTable.relateToOperator("hitObjectGetWorldRayOriginEXT", EOpHitObjectGetWorldRayOriginEXT); + symbolTable.relateToOperator("hitObjectGetWorldRayDirectionEXT", EOpHitObjectGetWorldRayDirectionEXT); + symbolTable.relateToOperator("hitObjectGetWorldToObjectEXT", EOpHitObjectGetWorldToObjectEXT); + symbolTable.relateToOperator("hitObjectGetObjectToWorldEXT", EOpHitObjectGetObjectToWorldEXT); + symbolTable.relateToOperator("hitObjectGetInstanceCustomIndexEXT", EOpHitObjectGetInstanceCustomIndexEXT); + symbolTable.relateToOperator("hitObjectGetInstanceIdEXT", EOpHitObjectGetInstanceIdEXT); + symbolTable.relateToOperator("hitObjectGetGeometryIndexEXT", EOpHitObjectGetGeometryIndexEXT); + symbolTable.relateToOperator("hitObjectGetPrimitiveIndexEXT", EOpHitObjectGetPrimitiveIndexEXT); + symbolTable.relateToOperator("hitObjectGetHitKindEXT", EOpHitObjectGetHitKindEXT); + symbolTable.relateToOperator("hitObjectGetAttributesEXT", EOpHitObjectGetAttributesEXT); + symbolTable.relateToOperator("hitObjectGetCurrentTimeEXT", EOpHitObjectGetCurrentTimeEXT); + symbolTable.relateToOperator("hitObjectGetShaderBindingTableRecordIndexEXT", EOpHitObjectGetShaderBindingTableRecordIndexEXT); + symbolTable.relateToOperator("hitObjectGetShaderRecordBufferHandleEXT", EOpHitObjectGetShaderRecordBufferHandleEXT); + symbolTable.relateToOperator("hitObjectSetShaderBindingTableRecordIndexEXT", EOpHitObjectSetShaderBindingTableRecordIndexEXT); + symbolTable.relateToOperator("reorderThreadEXT", EOpReorderThreadEXT); + symbolTable.relateToOperator("hitObjectReorderExecuteEXT", EOpHitObjectReorderExecuteEXT); + symbolTable.relateToOperator("hitObjectTraceReorderExecuteEXT", EOpHitObjectTraceReorderExecuteEXT); + symbolTable.relateToOperator("hitObjectTraceMotionReorderExecuteEXT", EOpHitObjectTraceMotionReorderExecuteEXT); + symbolTable.relateToOperator("hitObjectRecordFromQueryEXT", EOpHitObjectRecordFromQueryEXT); + symbolTable.relateToOperator("hitObjectGetIntersectionTriangleVertexPositionsEXT", EOpHitObjectGetIntersectionTriangleVertexPositionsEXT); } break; case EShLangIntersect: diff --git a/3rdparty/glslang/glslang/MachineIndependent/IntermTraverse.cpp b/3rdparty/glslang/glslang/MachineIndependent/IntermTraverse.cpp index 553b1b5ff..447e8cb6c 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/IntermTraverse.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/IntermTraverse.cpp @@ -306,4 +306,35 @@ void TIntermSwitch::traverse(TIntermTraverser* it) it->visitSwitch(EvPostVisit, this); } +// +// Traverse a variable declaration. +// +void TIntermVariableDecl::traverse(TIntermTraverser *it) +{ + bool visit = true; + + if (it->preVisit) + visit = it->visitVariableDecl(EvPreVisit, this); + + if (visit) { + it->incrementDepth(this); + if (it->rightToLeft) { + if (it->includeDeclSymbol) + declSymbol->traverse(it); + if (initNode) + initNode->traverse(it); + } + else { + if (initNode) + initNode->traverse(it); + if (it->includeDeclSymbol) + declSymbol->traverse(it); + } + it->decrementDepth(); + } + + if (visit && it->postVisit) + it->visitVariableDecl(EvPostVisit, this); +} + } // end namespace glslang diff --git a/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp b/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp index 60116efcb..90410f0c1 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp @@ -118,7 +118,8 @@ TIntermSymbol* TIntermediate::addSymbol(const TType& type, const TSourceLoc& loc TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, const TSourceLoc& loc) { // No operations work on blocks - if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock) + if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock || + left->getType().getBasicType() == EbtString || right->getType().getBasicType() == EbtString) return nullptr; // Convert "reference +/- int" and "reference - reference" to integer math @@ -2382,7 +2383,8 @@ TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* true trueBlock = std::get<0>(children); falseBlock = std::get<1>(children); - if (trueBlock == nullptr || falseBlock == nullptr) + if (trueBlock == nullptr || falseBlock == nullptr || + trueBlock->getBasicType() == EbtString || falseBlock->getBasicType() == EbtString) return nullptr; // Handle a vector condition as a mix @@ -2650,7 +2652,7 @@ const TIntermTyped* TIntermediate::traverseLValueBase(const TIntermTyped* node, // // Create while and do-while loop nodes. // -TIntermLoop* TIntermediate::addLoop(TIntermNode* body, TIntermTyped* test, TIntermTyped* terminal, bool testFirst, +TIntermLoop* TIntermediate::addLoop(TIntermNode* body, TIntermNode* test, TIntermTyped* terminal, bool testFirst, const TSourceLoc& loc) { TIntermLoop* node = new TIntermLoop(body, test, terminal, testFirst); @@ -2662,7 +2664,7 @@ TIntermLoop* TIntermediate::addLoop(TIntermNode* body, TIntermTyped* test, TInte // // Create a for-loop sequence. // -TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* initializer, TIntermTyped* test, +TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* initializer, TIntermNode* test, TIntermTyped* terminal, bool testFirst, const TSourceLoc& loc, TIntermLoop*& node) { node = new TIntermLoop(body, test, terminal, testFirst); diff --git a/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h b/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h index 0e9d748ca..76ccfec12 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h +++ b/3rdparty/glslang/glslang/MachineIndependent/LiveTraverser.h @@ -59,8 +59,8 @@ namespace glslang { class TLiveTraverser : public TIntermTraverser { public: TLiveTraverser(const TIntermediate& i, bool traverseAll = false, - bool preVisit = true, bool inVisit = false, bool postVisit = false) : - TIntermTraverser(preVisit, inVisit, postVisit), + bool preVisit = true, bool inVisit = false, bool postVisit = false, bool includeDeclSymbol = false) : + TIntermTraverser(preVisit, inVisit, postVisit, false, includeDeclSymbol), intermediate(i), traverseAll(traverseAll) { } diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp index 95c7f0053..45ada17db 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp @@ -171,6 +171,9 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, case EbtHitObjectNV: message = "can't modify hitObjectNV"; break; + case EbtHitObjectEXT: + message = "can't modify hitObjectEXT"; + break; default: break; } @@ -279,7 +282,7 @@ void TParseContextBase::trackLinkage(TSymbol& symbol) // Ensure index is in bounds, correct if necessary. // Give an error if not. -void TParseContextBase::checkIndex(const TSourceLoc& loc, const TType& type, int& index) +void TParseContextBase::checkIndex(const TSourceLoc& loc, const TType& type, int64_t& index) { const auto sizeIsSpecializationExpression = [&type]() { return type.containsSpecializationSize() && @@ -484,6 +487,16 @@ const TFunction* TParseContextBase::selectFunction( return true; }; + const auto enabled = [this](const TFunction& candidate) -> bool { + bool enabled = candidate.getNumExtensions() == 0; + for (int i = 0; i < candidate.getNumExtensions(); ++i) { + TExtensionBehavior behavior = getExtensionBehavior(candidate.getExtensions()[i]); + if (behavior == EBhEnable || behavior == EBhRequire) + enabled = true; + } + return enabled; + }; + const TFunction* incumbent = viableCandidates.front(); for (auto it = viableCandidates.begin() + 1; it != viableCandidates.end(); ++it) { const TFunction& candidate = *(*it); @@ -499,7 +512,7 @@ const TFunction* TParseContextBase::selectFunction( // In the case of default parameters, it may have an identical initial set, which is // also ambiguous - if (betterParam(*incumbent, candidate) || equivalentParams(*incumbent, candidate)) + if ((betterParam(*incumbent, candidate) || equivalentParams(*incumbent, candidate)) && enabled(candidate)) tie = true; } diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp index b9bd7640d..667ed6780 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp @@ -43,6 +43,7 @@ #include "Scan.h" #include +#include #include "Versions.h" #include "preprocessor/PpContext.h" @@ -404,6 +405,14 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& if (tokens.size() != 1) error(loc, "extra tokens", "#pragma", ""); intermediate.setReplicatedComposites(); + } else if (spvVersion.spv > 0 && tokens[0].compare("promote_uint32_indices") == 0) { + if (tokens.size() != 1) + error(loc, "extra tokens", "#pragma", ""); + intermediate.setPromoteUint32Indices(); + } else if (spvVersion.spv > 0 && tokens[0].compare("shader_64bit_indexing") == 0) { + if (tokens.size() != 1) + error(loc, "extra tokens", "#pragma", ""); + intermediate.setShader64BitIndexing(); } else if (tokens[0].compare("once") == 0) { warn(loc, "not implemented", "#pragma once", ""); } else if (tokens[0].compare("glslang_binary_double_output") == 0) { @@ -542,10 +551,16 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb // TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index) { - int indexValue = 0; - if (index->getQualifier().isFrontEndConstant()) - indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); - + int64_t indexValue = 0; + if (index->getQualifier().isFrontEndConstant()) { + if (index->getType().contains64BitInt()) { + indexValue = index->getAsConstantUnion()->getConstArray()[0].getI64Const(); + } else if (index->getType().getBasicType() == EbtUint) { + indexValue = index->getAsConstantUnion()->getConstArray()[0].getUConst(); + } else { + indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); + } + } // basic type checks... variableCheck(base); @@ -624,7 +639,8 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn TType& leftType = binaryNode->getLeft()->getWritableType(); TArraySizes& arraySizes = *leftType.getArraySizes(); assert(arraySizes.getNumDims() == 2); - arraySizes.setDimSize(1, std::max(arraySizes.getDimSize(1), indexValue + 1)); + assert(indexValue < std::numeric_limits::max()); + arraySizes.setDimSize(1, std::max(arraySizes.getDimSize(1), (int)indexValue + 1)); } } } else @@ -972,10 +988,10 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm // Save away the name in the AST for now. Processing is completed in // handleLengthMethod(). // - if (field == "length") { + if (field == "length" || field == "length64") { if (base->isArray()) { - profileRequires(loc, ENoProfile, 120, E_GL_3DL_array_objects, ".length"); - profileRequires(loc, EEsProfile, 300, nullptr, ".length"); + profileRequires(loc, ENoProfile, 120, E_GL_3DL_array_objects, (TString(".") + field).c_str()); + profileRequires(loc, EEsProfile, 300, nullptr, (TString(".") + field).c_str()); } else if (base->isVector() || base->isMatrix()) { const char* feature = ".length() on vectors and matrices"; requireProfile(loc, ~EEsProfile, feature); @@ -986,7 +1002,12 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm return base; } - return intermediate.addMethod(base, TType(EbtInt), &field, loc); + if (field == "length") { + return intermediate.addMethod(base, TType(EbtInt), &field, loc); + } else { + requireExtensions(loc, 1, &E_GL_EXT_shader_64bit_indexing, "length64"); + return intermediate.addMethod(base, TType(EbtInt64), &field, loc); + } } // It's not .length() if we get to here. @@ -1484,6 +1505,17 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction i == 1 && arg->getAsTyped()->getType().getBasicType() != aggregate->getSequence()[0]->getAsTyped()->getType().getBasicType()) error(arguments->getLoc(), "cooperative vector basic types must match", fnCandidate->getName().c_str(), ""); + // Check that coopVecLoadNV and coopVecStoreNV buffer parameter is in buffer or shared storage + if (builtIn && (fnCandidate->getBuiltInOp() == EOpCooperativeVectorLoadNV || + fnCandidate->getBuiltInOp() == EOpCooperativeVectorStoreNV) && + i == 1) { + TStorageQualifier storage = arg->getAsTyped()->getType().getQualifier().storage; + if (storage != EvqBuffer && storage != EvqShared) { + error(arguments->getLoc(), "buffer argument must be in buffer or shared storage", + fnCandidate->getName().c_str(), ""); + } + } + // TODO 4.5 functionality: A shader will fail to compile // if the value passed to the memargument of an atomic memory function does not correspond to a buffer or // shared variable. It is acceptable to pass an element of an array or a single component of a vector to the @@ -1777,7 +1809,81 @@ void TParseContext::handleCoopMat2FunctionCall(const TSourceLoc& loc, const TFun // Set result type to match type of first parameter result->setType(result->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()); } else { - // For MulAdd, set result type to match type of C parameter + // The only remaining operation is MulAdd + assert(fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAdd || + fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAddNV); + + // Validate that the matrix sizes are compatible for multiplication and addition + const auto &sequence = arguments->getAsAggregate()->getSequence(); + + using ArrayDim = const TArraySize&; + auto getDim = [](const TIntermSequence& seq, int idx) -> std::tuple { + const auto &type = seq[idx]->getAsTyped()->getType(); + const auto *size = type.getTypeParameters()->arraySizes; + + if (type.isCoopMatNV()) { + // coopmatNV don't encode usage, so provide the correct usage by default + return {size->getArraySize(2), size->getArraySize(3), idx}; + } else { + assert(type.isCoopMatKHR()); + return {size->getArraySize(1), size->getArraySize(2), size->getDimSize(3)}; + } + }; + + // sizes look like: [scope, rows, cols, use] + auto [aRows, aCols, aUse] = getDim(sequence, 0); + auto [bRows, bCols, bUse] = getDim(sequence, 1); + auto [cRows, cCols, cUse] = getDim(sequence, 2); + + auto toString = [](ArrayDim dim) -> std::string { + std::stringstream buf; + if (dim.node == nullptr) { + buf << dim.size; + } else { + buf << "spec_const"; + } + return buf.str(); + }; + + if (aCols != bRows) { + auto aRowsStr = toString(aRows); + auto aColsStr = toString(aCols); + auto bRowsStr = toString(bRows); + auto bColsStr = toString(bCols); + error(loc, "cannot multiply coop matrices with incompatible sizes", + sequence[0]->getAsSymbolNode()->getMangledName().c_str(), + "%s x %s with %s x %s", + aRowsStr.c_str(), + aColsStr.c_str(), + bRowsStr.c_str(), + bColsStr.c_str()); + } else if (aRows != cRows || bCols != cCols) { + auto aRowsStr = toString(aRows); + auto bColsStr = toString(bCols); + auto cRowsStr = toString(cRows); + auto cColsStr = toString(cCols); + error(loc, "cannot add coop matrices with incompatible sizes", + sequence[2]->getAsSymbolNode()->getMangledName().c_str(), + "%s x %s with %s x %s", + aRowsStr.c_str(), + bColsStr.c_str(), + cRowsStr.c_str(), + cColsStr.c_str()); + } else if (aUse != 0) { + error(loc, "coop matrix A in MulAdd operation has incompatible usage property,", + sequence[0]->getAsSymbolNode()->getMangledName().c_str(), + "found %d, but needed 0", aUse); + } else if (bUse != 1) { + error(loc, "coop matrix B in MulAdd operation has incompatible usage property,", + sequence[1]->getAsSymbolNode()->getMangledName().c_str(), + "found %d, but needed 1", bUse); + } else if (cUse != 2) { + error(loc, "coop matrix C in MulAdd operation has incompatible usage property,", + sequence[2]->getAsSymbolNode()->getMangledName().c_str(), + "found %d, but needed 2", cUse); + } + + // Set result type to match type of C parameter result->setType(result->getAsAggregate()->getSequence()[2]->getAsTyped()->getType()); } } @@ -1789,9 +1895,9 @@ static const uint32_t spv_Scope_Subgroup = 3; void TParseContext::handleVector2CoopMatConversionCall(const TSourceLoc& loc, const TFunction* fnCandidate, TIntermTyped*& result, TIntermNode* arguments) { - const int CM_MatrixUseA = 0; // == gl_MatrixUseA - const int CM_MatrixUseB = 1; // == gl_MatrixUseB - const int CM_MatrixUseAccumulator = 2; // == gl_MatrixUseAccumulator + const uint32_t CM_MatrixUseA = 0; // == gl_MatrixUseA + const uint32_t CM_MatrixUseB = 1; // == gl_MatrixUseB + const uint32_t CM_MatrixUseAccumulator = 2; // == gl_MatrixUseAccumulator TOperator builtinOp = fnCandidate->getBuiltInOp(); @@ -1883,7 +1989,7 @@ void TParseContext::handleVector2CoopMatConversionCall(const TSourceLoc& loc, co error(loc, "cooperative matrix has unsupported scope; gl_SubgroupScope is expected", "", ""); } - if (coopMatKHRuse < CM_MatrixUseA || coopMatKHRuse > CM_MatrixUseAccumulator) { + if (coopMatKHRuse > CM_MatrixUseAccumulator) { coopMatKHRuse = CM_MatrixUseA; error(loc, "cooperative matrix use must be one of gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator", "", ""); @@ -1961,7 +2067,7 @@ void TParseContext::handleVector2CoopMatConversionCall(const TSourceLoc& loc, co error(loc, "cooperative matrix has unsupported scope; gl_SubgroupScope is expected", "", ""); } - if (coopMatKHRuse < CM_MatrixUseA || coopMatKHRuse > CM_MatrixUseAccumulator) { + if (coopMatKHRuse > CM_MatrixUseAccumulator) { coopMatKHRuse = CM_MatrixUseA; error(loc, "cooperative matrix use must be one of gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator", "", ""); @@ -2354,7 +2460,7 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction error(loc, "", function->getName().c_str(), "array must first be sized by a redeclaration or layout qualifier"); else if (isRuntimeLength(*intermNode->getAsTyped())) { // Create a unary op and let the back end handle it - return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt)); + return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, function->getType()); } else error(loc, "", function->getName().c_str(), "array must be declared with a size before using this method"); } @@ -2737,6 +2843,19 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan TString featureString; const char* feature = nullptr; + + auto checkConstantArgWithLocation = [&](int argIndex, const char* argDescription, + const char* errMsg, int ioRTLocationSet) { + //ioRTLocationSet refers to grouping of locations of RT input/outputs as defined in TIntermediate::usedIoRT + if (!(*argp)[argIndex]->getAsConstantUnion()) { + error(loc, "argument must be compile-time constant", argDescription, argIndex == 10 ? "a" : ""); + } else if (ioRTLocationSet >= 0) { + unsigned int location = (*argp)[argIndex]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(ioRTLocationSet, location) < 0) + error(loc, "with layout(location =", errMsg, "%d)", location); + } + }; + switch (callNode.getOp()) { case EOpTextureGather: case EOpTextureGatherOffset: @@ -3026,108 +3145,46 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; } + case EOpTraceNV: - if (!(*argp)[10]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "payload number", "a"); + checkConstantArgWithLocation(10, "payload number", nullptr, -1); break; case EOpTraceRayMotionNV: - if (!(*argp)[11]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "payload number", "a"); + checkConstantArgWithLocation(11, "payload number", nullptr, -1); break; case EOpTraceKHR: - if (!(*argp)[10]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "payload number", "a"); - else { - unsigned int location = (*argp)[10]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) - error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); - } + checkConstantArgWithLocation(10, "payload number", "no rayPayloadEXT/rayPayloadInEXT declared", 0); break; case EOpExecuteCallableNV: - if (!(*argp)[1]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "callable data number", ""); + checkConstantArgWithLocation(1, "callable data number", nullptr, -1); break; case EOpExecuteCallableKHR: - if (!(*argp)[1]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "callable data number", ""); - else { - unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(1, location) < 0) - error(loc, "with layout(location =", "no callableDataEXT/callableDataInEXT declared", "%d)", location); - } + checkConstantArgWithLocation(1, "callable data number", "no callableDataEXT/callableDataInEXT declared", 1); break; case EOpHitObjectTraceRayNV: - if (!(*argp)[11]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "payload number", ""); - else { - unsigned int location = (*argp)[11]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) - error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); - } + checkConstantArgWithLocation(11, "payload number", "no rayPayloadEXT/rayPayloadInEXT declared", 0); break; case EOpHitObjectTraceRayMotionNV: - if (!(*argp)[12]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "payload number", ""); - else { - unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) - error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); - } + checkConstantArgWithLocation(12, "payload number", "no rayPayloadEXT/rayPayloadInEXT declared", 0); break; case EOpHitObjectExecuteShaderNV: - if (!(*argp)[1]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "payload number", ""); - else { - unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) - error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); - } + checkConstantArgWithLocation(1, "payload number", "no rayPayloadEXT/rayPayloadInEXT declared", 0); break; case EOpHitObjectRecordHitNV: - if (!(*argp)[12]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); - else { - unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) - error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); - } + checkConstantArgWithLocation(12, "hitobjectattribute number", "no hitObjectAttributeNV declared", 2); break; case EOpHitObjectRecordHitMotionNV: - if (!(*argp)[13]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); - else { - unsigned int location = (*argp)[13]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) - error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); - } + checkConstantArgWithLocation(13, "hitobjectattribute number", "no hitObjectAttributeNV declared", 2); break; case EOpHitObjectRecordHitWithIndexNV: - if (!(*argp)[11]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); - else { - unsigned int location = (*argp)[11]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) - error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); - } + checkConstantArgWithLocation(11, "hitobjectattribute number", "no hitObjectAttributeNV declared", 2); break; case EOpHitObjectRecordHitWithIndexMotionNV: - if (!(*argp)[12]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); - else { - unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) - error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); - } + checkConstantArgWithLocation(12, "hitobjectattribute number", "no hitObjectAttributeNV declared", 2); break; case EOpHitObjectGetAttributesNV: - if (!(*argp)[1]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); - else { - unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) - error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); - } + checkConstantArgWithLocation(1, "hitobjectattribute number", "no hitObjectAttributeNV declared", 2); break; case EOpRayQueryGetIntersectionType: @@ -4098,6 +4155,21 @@ void TParseContext::integerCheck(const TIntermTyped* node, const char* token) error(node->getLoc(), "scalar integer expression required", token, ""); } +// +// Both test, and if necessary spit out an error, to see if the node is really +// supported as an array index. +// +void TParseContext::arrayIndexCheck(const TIntermTyped* node, const char* token) +{ + auto from_type = node->getBasicType(); + + if ((from_type == EbtInt64 || from_type == EbtUint64) && + extensionTurnedOn(E_GL_EXT_shader_64bit_indexing)) + return; + + integerCheck(node, token); +} + // // Both test, and if necessary spit out an error, to see if we are currently // globally scoped. @@ -4773,11 +4845,22 @@ void TParseContext::accStructCheck(const TSourceLoc& loc, const TType& type, con } +void TParseContext::hitObjectEXTCheck(const TSourceLoc & loc, const TType & type, const TString & identifier) +{ + if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtHitObjectEXT)) { + error(loc, "struct is not allowed to contain hitObjectEXT:", type.getTypeName().c_str(), identifier.c_str()); + } else if (type.getBasicType() == EbtHitObjectEXT) { + TStorageQualifier qualifier = type.getQualifier().storage; + if (qualifier != EvqGlobal && qualifier != EvqTemporary) { + error(loc, "hitObjectEXT can only be declared in global or function scope with no storage qualifier:", "hitObjectEXT", identifier.c_str()); + } + } +} void TParseContext::hitObjectNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier) { - if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtHitObjectNV)) { + if (type.getBasicType() == EbtStruct && ( containsFieldWithBasicType(type, EbtHitObjectNV))) { error(loc, "struct is not allowed to contain hitObjectNV:", type.getTypeName().c_str(), identifier.c_str()); - } else if (type.getBasicType() == EbtHitObjectNV) { + } else if ((type.getBasicType() == EbtHitObjectNV)) { TStorageQualifier qualifier = type.getQualifier().storage; if (qualifier != EvqGlobal && qualifier != EvqTemporary) { error(loc, "hitObjectNV can only be declared in global or function scope with no storage qualifier:", "hitObjectNV", identifier.c_str()); @@ -5502,6 +5585,9 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua if (qualifier.storage == EvqBuffer && lastMember) return; + if (qualifier.storage == EvqUniform && lastMember && extensionTurnedOn(E_GL_EXT_uniform_buffer_unsized_array)) + return; + arraySizeRequiredCheck(loc, *arraySizes); } @@ -5626,6 +5712,20 @@ void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermType } } + // Check for last member of a uniform block, which can be runtime sizeable + // when using GL_EXT_uniform_buffer_unsized_array + if (base.getType().getQualifier().storage == EvqUniform && extensionTurnedOn(E_GL_EXT_uniform_buffer_unsized_array)) { + const TIntermBinary* binary = base.getAsBinaryNode(); + if (binary != nullptr && + binary->getOp() == EOpIndexDirectStruct) { + + const int index = binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst(); + const int memberCount = (int)binary->getLeft()->getType().getStruct()->size(); + if (index == memberCount - 1) + return; + } + } + // check for additional things allowed by GL_EXT_nonuniform_qualifier if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStruct || base.getBasicType() == EbtRayQuery || base.getBasicType() == EbtHitObjectNV || (base.getBasicType() == EbtBlock && base.getType().getQualifier().isUniformOrBuffer())) @@ -6334,9 +6434,9 @@ void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, inductiveLoopIds.insert(loopIndex); // condition's form must be "loop-index relational-operator constant-expression" - bool badCond = ! loop->getTest(); + bool badCond = ! loop->getTestExpr(); if (! badCond) { - TIntermBinary* binaryCond = loop->getTest()->getAsBinaryNode(); + TIntermBinary* binaryCond = loop->getTestExpr()->getAsBinaryNode(); badCond = ! binaryCond; if (! badCond) { switch (binaryCond->getOp()) { @@ -6736,8 +6836,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } for (TLayoutDepth depth = (TLayoutDepth)(EldNone + 1); depth < EldCount; depth = (TLayoutDepth)(depth+1)) { if (id == TQualifier::getLayoutDepthString(depth)) { - requireProfile(loc, ECoreProfile | ECompatibilityProfile, "depth layout qualifier"); - profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, nullptr, "depth layout qualifier"); + const char* feature = "depth layout qualifier"; + requireProfile(loc, ECoreProfile | ECompatibilityProfile | EEsProfile, feature); + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, E_GL_ARB_conservative_depth, feature); + profileRequires(loc, EEsProfile, 0, E_GL_EXT_conservative_depth, feature); publicType.shaderQualifiers.layoutDepth = depth; return; } @@ -6827,6 +6929,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi requireExtensions(loc, 1, &E_GL_NV_shader_invocation_reorder, "hitobject shader record NV"); publicType.qualifier.layoutHitObjectShaderRecordNV = true; return; + } else if (id == "hitobjectshaderrecordext") { + requireExtensions(loc, 1, &E_GL_EXT_shader_invocation_reorder, "hitobject shader record EXT"); + publicType.qualifier.layoutHitObjectShaderRecordEXT = true; + return; } } @@ -7342,6 +7448,8 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie if (src.layoutHitObjectShaderRecordNV) dst.layoutHitObjectShaderRecordNV = true; dst.layoutTileAttachmentQCOM |= src.layoutTileAttachmentQCOM; + if (src.layoutHitObjectShaderRecordEXT) + dst.layoutHitObjectShaderRecordEXT = true; } } @@ -7508,6 +7616,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EvqCallableData: case EvqCallableDataIn: case EvqHitObjectAttrNV: + case EvqHitObjectAttrEXT: case EvqSpirvStorageClass: break; case EvqTileImageEXT: @@ -8905,7 +9014,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden if (initializer) { if (type.getBasicType() == EbtRayQuery) { error(loc, "ray queries can only be initialized by using the rayQueryInitializeEXT intrinsic:", "=", identifier.c_str()); - } else if (type.getBasicType() == EbtHitObjectNV) { + } else if ((type.getBasicType() == EbtHitObjectNV) || (type.getBasicType() == EbtHitObjectEXT)) { error(loc, "hit objects cannot be initialized using initializers", "=", identifier.c_str()); } @@ -9005,6 +9114,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden atomicUintCheck(loc, type, identifier); accStructCheck(loc, type, identifier); hitObjectNVCheck(loc, type, identifier); + hitObjectEXTCheck(loc, type, identifier); checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false); if (type.getQualifier().storage == EvqConst && type.containsReference()) { error(loc, "variables with reference type can't have qualifier 'const'", "qualifier", ""); @@ -9109,7 +9219,22 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden // fix up fixOffset(loc, *symbol); - return initNode; + // TODO: The decl AST is turned on based on debug info right now. We should expose it as an explicit option. + if (intermediate.getDebugInfo()) { + TVariable* variable = symbol->getAsVariable(); + if (variable) { + auto decl = new TIntermVariableDecl(intermediate.addSymbol(*variable, loc), initNode); + decl->setLoc(loc); + return decl; + } + else { + // We ignore builtins redeclarations + return nullptr; + } + } + else { + return initNode; + } } // Pick up global defaults from the provide global defaults into dst. @@ -10030,9 +10155,9 @@ void TParseContext::updateBindlessQualifier(TType& memberType) } // -// Do everything needed to add an interface block. +// Do everything needed to add an interface block. Returns the declarator node if there's an instance declaration. // -void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, const TString* instanceName, +TIntermNode* TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, const TString* instanceName, TArraySizes* arraySizes) { if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) @@ -10098,7 +10223,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con // do all the rest. if (! symbolTable.atBuiltInLevel() && builtInName(*blockName)) { redeclareBuiltinBlock(loc, typeList, *blockName, instanceName, arraySizes); - return; + return nullptr; } // Not a redeclaration of a built-in; check that all names are user names. @@ -10264,7 +10389,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con } } if (!instanceName) { - return; + return nullptr; } } else { // @@ -10287,11 +10412,11 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (existingName->getType().getBasicType() == EbtBlock) { if (existingName->getType().getQualifier().storage == blockType.getQualifier().storage) { error(loc, "Cannot reuse block name within the same interface:", blockName->c_str(), blockType.getStorageQualifierString()); - return; + return nullptr; } } else { error(loc, "block name cannot redefine a non-block name", blockName->c_str(), ""); - return; + return nullptr; } } } @@ -10308,7 +10433,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con else error(loc, "block instance name redefinition", variable.getName().c_str(), ""); - return; + return nullptr; } // Check for general layout qualifier errors @@ -10323,6 +10448,17 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con // Save it in the AST for linker use. trackLinkage(variable); + + TIntermAggregate* declNode = nullptr; + if (intermediate.getDebugInfo()) { + auto blockDeclNode = new TIntermVariableDecl(intermediate.addSymbol(variable, loc), nullptr); + blockDeclNode->setLoc(loc); + + // We have to wrap the declaration with a sequence to fit the same processing logic with variables. + declNode = new TIntermAggregate(EOpSequence); + declNode->getSequence().push_back(blockDeclNode); + } + return declNode; } // @@ -10411,6 +10547,10 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q profileRequires(loc, ~EEsProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV block"); requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV block"); break; + case EvqHitObjectAttrEXT: + profileRequires(loc, ~EEsProfile, 460, E_GL_EXT_shader_invocation_reorder, "hitObjectAttributeEXT block"); + requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeEXT block"); + break; default: error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), ""); break; diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h index 2bb82ebc2..bf5cab2aa 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h @@ -115,7 +115,7 @@ public: virtual void setLimits(const TBuiltInResource&) = 0; - void checkIndex(const TSourceLoc&, const TType&, int& index); + void checkIndex(const TSourceLoc&, const TType&, int64_t& index); EShLanguage getLanguage() const { return language; } void setScanContext(TScanContext* c) { scanContext = c; } @@ -381,6 +381,7 @@ public: void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; void constantValueCheck(TIntermTyped* node, const char* token); void integerCheck(const TIntermTyped* node, const char* token); + void arrayIndexCheck(const TIntermTyped* node, const char* token); void globalCheck(const TSourceLoc&, const char* token); bool constructorError(const TSourceLoc&, TIntermNode*, TFunction&, TOperator, TType&); bool constructorTextureSamplerError(const TSourceLoc&, const TFunction&); @@ -397,6 +398,7 @@ public: void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer); void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier); void accStructCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); + void hitObjectEXTCheck(const TSourceLoc& loc, const TType& type, const TString& identifier); void hitObjectNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier); void memberQualifierCheck(glslang::TPublicType&); @@ -454,7 +456,7 @@ public: TParameter getParamWithDefault(const TPublicType& ty, TString* identifier, TIntermTyped* initializer, const TSourceLoc& loc); void inheritMemoryQualifiers(const TQualifier& from, TQualifier& to); - void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = nullptr, TArraySizes* arraySizes = nullptr); + TIntermNode* declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = nullptr, TArraySizes* arraySizes = nullptr); void blockStorageRemap(const TSourceLoc&, const TString*, TQualifier&); void blockStageIoCheck(const TSourceLoc&, const TQualifier&); void blockQualifierCheck(const TSourceLoc&, const TQualifier&, bool instanceName); diff --git a/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.cpp b/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.cpp index 1d33bfd20..29baf1f1a 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/RemoveTree.cpp @@ -43,7 +43,7 @@ namespace glslang { // Code to recursively delete the intermediate tree. // struct TRemoveTraverser : TIntermTraverser { - TRemoveTraverser() : TIntermTraverser(false, false, true, false) {} + TRemoveTraverser() : TIntermTraverser(false, false, true, false, true) {} virtual void visitSymbol(TIntermSymbol* node) { @@ -103,6 +103,12 @@ struct TRemoveTraverser : TIntermTraverser { return true; } + + virtual bool visitVariableDecl(TVisit /* visit */, TIntermVariableDecl* decl) + { + delete decl; + return true; + } }; // diff --git a/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp b/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp index 28b1fe13b..8a08a3c87 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp @@ -771,6 +771,9 @@ const std::unordered_map KeywordMap { {"tensorARM",TENSORARM}, + {"hitObjectEXT",HITOBJECTEXT}, + {"hitObjectAttributeEXT",HITOBJECTATTREXT}, + {"__function",FUNCTION}, {"tensorLayoutNV",TENSORLAYOUTNV}, {"tensorViewNV",TENSORVIEWNV}, @@ -1917,6 +1920,13 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); + case HITOBJECTEXT: + if (parseContext.symbolTable.atBuiltInLevel() || + (!parseContext.isEsProfile() && parseContext.version >= 460 + && parseContext.extensionTurnedOn(E_GL_EXT_shader_invocation_reorder))) + return keyword; + return identifierOrType(); + case HITOBJECTATTRNV: if (parseContext.symbolTable.atBuiltInLevel() || (!parseContext.isEsProfile() && parseContext.version >= 460 @@ -1924,6 +1934,13 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); + case HITOBJECTATTREXT: + if (parseContext.symbolTable.atBuiltInLevel() || + (!parseContext.isEsProfile() && parseContext.version >= 460 + && parseContext.extensionTurnedOn(E_GL_EXT_shader_invocation_reorder))) + return keyword; + return identifierOrType(); + case FUNCTION: case TENSORLAYOUTNV: case TENSORVIEWNV: diff --git a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp index dbcd575ec..fd8a690f2 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp @@ -86,6 +86,7 @@ void TType::buildMangledName(TString& mangledName) const case EbtRayQuery: mangledName += "rq"; break; case EbtSpirvType: mangledName += "spv-t"; break; case EbtHitObjectNV: mangledName += "ho"; break; + case EbtHitObjectEXT: mangledName += "ho"; break; case EbtTensorLayoutNV: mangledName += "tl"; break; case EbtTensorViewNV: mangledName += "tv"; break; case EbtSampler: @@ -346,6 +347,24 @@ void TSymbolTableLevel::setFunctionExtensions(const char* name, int num, const c } } +// Call the callback function to determine the required extensions +void TSymbolTableLevel::setFunctionExtensionsCallback(const char* name, std::function(const char *)> const &func) +{ + tLevel::const_iterator candidate = level.lower_bound(name); + while (candidate != level.end()) { + const TString& candidateName = (*candidate).first; + TString::size_type parenAt = candidateName.find_first_of('('); + if (parenAt != candidateName.npos && candidateName.compare(0, parenAt, name) == 0) { + TSymbol* symbol = candidate->second; + + auto exts = func(candidateName.c_str()); + symbol->setExtensions(exts.size(), exts.data()); + } else + break; + ++candidate; + } +} + // Make a single function require an extension(s). i.e., this will only set the extensions for the symbol that matches 'name' exactly. // This is different from setFunctionExtensions, which uses std::map::lower_bound to effectively set all symbols that start with 'name'. // Should only be used for a version/profile that actually needs the extension(s). diff --git a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h index c2f5ccf15..edeb8d540 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h +++ b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h @@ -69,6 +69,8 @@ #include "../Include/intermediate.h" #include "../Include/InfoSink.h" +#include + namespace glslang { // @@ -596,6 +598,7 @@ public: void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); + void setFunctionExtensionsCallback(const char* name, std::function(const char *)> const &func); void setSingleFunctionExtensions(const char* name, int num, const char* const extensions[]); void dump(TInfoSink& infoSink, bool complete = false) const; TSymbolTableLevel* clone() const; @@ -898,6 +901,12 @@ public: table[level]->setFunctionExtensions(name, num, extensions); } + void setFunctionExtensionsCallback(const char* name, std::function(const char *)> const &func) + { + for (unsigned int level = 0; level < table.size(); ++level) + table[level]->setFunctionExtensionsCallback(name, func); + } + void setSingleFunctionExtensions(const char* name, int num, const char* const extensions[]) { for (unsigned int level = 0; level < table.size(); ++level) diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp index 59628b742..e8ce15097 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp @@ -229,6 +229,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_ARB_draw_instanced] = EBhDisable; extensionBehavior[E_GL_ARB_bindless_texture] = EBhDisable; extensionBehavior[E_GL_ARB_fragment_coord_conventions] = EBhDisable; + extensionBehavior[E_GL_ARB_conservative_depth] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable; @@ -385,6 +386,9 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_bfloat16] = EBhDisable; extensionBehavior[E_GL_EXT_float_e4m3] = EBhDisable; extensionBehavior[E_GL_EXT_float_e5m2] = EBhDisable; + extensionBehavior[E_GL_EXT_uniform_buffer_unsized_array] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_64bit_indexing] = EBhDisable; + extensionBehavior[E_GL_EXT_conservative_depth] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -410,6 +414,8 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_integer_dot_product] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_invocation_reorder] = EBhDisable; + // Record extensions not for spv. spvUnsupportedExt.push_back(E_GL_ARB_bindless_texture); } @@ -431,6 +437,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_texture_lod 1\n" "#define GL_EXT_shadow_samplers 1\n" "#define GL_EXT_fragment_shading_rate 1\n" + "#define GL_EXT_conservative_depth 1\n" // AEP "#define GL_ANDROID_extension_pack_es31a 1\n" @@ -520,6 +527,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_NV_gpu_shader5 1\n" "#define GL_ARB_draw_instanced 1\n" "#define GL_ARB_fragment_coord_conventions 1\n" + "#define GL_ARB_conservative_depth 1\n" "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_EXT_shader_image_load_formatted 1\n" @@ -627,6 +635,10 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_bfloat16 1\n" "#define GL_EXT_float_e5m2 1\n" "#define GL_EXT_float_e4m3 1\n" + "#define GL_EXT_uniform_buffer_unsized_array 1\n" + "#define GL_EXT_shader_64bit_indexing 1\n" + + "#define GL_EXT_shader_invocation_reorder 1\n" ; if (spvVersion.spv == 0) { diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.h b/3rdparty/glslang/glslang/MachineIndependent/Versions.h index 8bc4f7132..48a7c5b6b 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.h +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.h @@ -165,6 +165,7 @@ const char* const E_GL_ARB_vertex_attrib_64bit = "GL_ARB_vertex_attrib_ const char* const E_GL_ARB_draw_instanced = "GL_ARB_draw_instanced"; const char* const E_GL_ARB_fragment_coord_conventions = "GL_ARB_fragment_coord_conventions"; const char* const E_GL_ARB_bindless_texture = "GL_ARB_bindless_texture"; +const char* const E_GL_ARB_conservative_depth = "GL_ARB_conservative_depth"; 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"; @@ -226,6 +227,8 @@ const char* const E_GL_EXT_control_flow_attributes2 = "GL_EXT_control_fl const char* const E_GL_EXT_spec_constant_composites = "GL_EXT_spec_constant_composites"; const char* const E_GL_EXT_texture_offset_non_const = "GL_EXT_texture_offset_non_const"; const char* const E_GL_EXT_nontemporal_keyword = "GL_EXT_nontemporal_keyword"; +const char* const E_GL_EXT_uniform_buffer_unsized_array = "GL_EXT_uniform_buffer_unsized_array"; +const char* const E_GL_EXT_conservative_depth = "GL_EXT_conservative_depth"; // Arrays of extensions for the above viewportEXTs duplications @@ -364,6 +367,10 @@ const char* const E_GL_EXT_bfloat16 = "GL_EXT_bfloat16"; const char* const E_GL_EXT_float_e5m2 = "GL_EXT_float_e5m2"; const char* const E_GL_EXT_float_e4m3 = "GL_EXT_float_e4m3"; +const char* const E_GL_EXT_shader_64bit_indexing = "GL_EXT_shader_64bit_indexing"; + +const char* const E_GL_EXT_shader_invocation_reorder = "GL_EXT_shader_invocation_reorder"; + // Arrays of extensions for the above AEP duplications const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader }; diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang.y b/3rdparty/glslang/glslang/MachineIndependent/glslang.y index e9b1aac15..9758048df 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang.y +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang.y @@ -182,7 +182,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token FCOOPMATNV ICOOPMATNV UCOOPMATNV %token COOPMAT %token COOPVECNV -%token HITOBJECTNV HITOBJECTATTRNV +%token HITOBJECTNV HITOBJECTATTRNV HITOBJECTEXT HITOBJECTATTREXT %token TENSORLAYOUTNV TENSORVIEWNV %token TENSORARM @@ -298,7 +298,8 @@ extern int yylex(YYSTYPE*, TParseContext&); %type conditional_expression constant_expression %type logical_or_expression logical_xor_expression logical_and_expression %type shift_expression and_expression exclusive_or_expression inclusive_or_expression -%type function_call initializer condition conditionopt +%type function_call initializer +%type condition conditionopt %type translation_unit function_definition %type statement simple_statement @@ -451,7 +452,7 @@ postfix_expression integer_expression : expression { - parseContext.integerCheck($1, "[]"); + parseContext.arrayIndexCheck($1, "[]"); $$ = $1; } ; @@ -555,7 +556,7 @@ function_identifier TIntermMethod* method = $1->getAsMethodNode(); if (method) { - $$.function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); + $$.function = new TFunction(&method->getMethodName(), method->getType(), EOpArrayLength); $$.intermNode = method->getObject(); } else { TIntermSymbol* symbol = $1->getAsSymbolNode(); @@ -912,16 +913,13 @@ declaration $$ = 0; } | block_structure SEMICOLON { - parseContext.declareBlock($1.loc, *$1.typeList); - $$ = 0; + $$ = parseContext.declareBlock($1.loc, *$1.typeList); } | block_structure IDENTIFIER SEMICOLON { - parseContext.declareBlock($1.loc, *$1.typeList, $2.string); - $$ = 0; + $$ = parseContext.declareBlock($1.loc, *$1.typeList, $2.string); } | block_structure IDENTIFIER array_specifier SEMICOLON { - parseContext.declareBlock($1.loc, *$1.typeList, $2.string, $3.arraySizes); - $$ = 0; + $$ = parseContext.declareBlock($1.loc, *$1.typeList, $2.string, $3.arraySizes); } | type_qualifier SEMICOLON { parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); @@ -1164,21 +1162,23 @@ init_declarator_list } | init_declarator_list COMMA IDENTIFIER { $$ = $1; - parseContext.declareVariable($3.loc, *$3.string, $1.type); + TIntermNode* declNode = parseContext.declareVariable($3.loc, *$3.string, $1.type); + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, declNode, $3.loc); } | init_declarator_list COMMA IDENTIFIER array_specifier { $$ = $1; - parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes); + TIntermNode* declNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes); + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, declNode, $3.loc); } | init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer { $$.type = $1.type; - TIntermNode* initNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes, $6); - $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, initNode, $5.loc); + TIntermNode* declNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes, $6); + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, declNode, $5.loc); } | init_declarator_list COMMA IDENTIFIER EQUAL initializer { $$.type = $1.type; - TIntermNode* initNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, 0, $5); - $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, initNode, $4.loc); + TIntermNode* declNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, 0, $5); + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, declNode, $4.loc); } ; @@ -1190,23 +1190,24 @@ single_declaration } | fully_specified_type IDENTIFIER { $$.type = $1; - $$.intermNode = 0; - parseContext.declareVariable($2.loc, *$2.string, $1); + TIntermNode* declNode = parseContext.declareVariable($2.loc, *$2.string, $1); + $$.intermNode = parseContext.intermediate.growAggregate(nullptr, declNode, $2.loc); + } | fully_specified_type IDENTIFIER array_specifier { $$.type = $1; - $$.intermNode = 0; - parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes); + TIntermNode* declNode = parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes); + $$.intermNode = parseContext.intermediate.growAggregate(nullptr, declNode, $2.loc); } | fully_specified_type IDENTIFIER array_specifier EQUAL initializer { $$.type = $1; - TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes, $5); - $$.intermNode = parseContext.intermediate.growAggregate(0, initNode, $4.loc); + TIntermNode* declNode = parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes, $5); + $$.intermNode = parseContext.intermediate.growAggregate(nullptr, declNode, $2.loc); } | fully_specified_type IDENTIFIER EQUAL initializer { $$.type = $1; - TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); - $$.intermNode = parseContext.intermediate.growAggregate(0, initNode, $3.loc); + TIntermNode* declNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); + $$.intermNode = parseContext.intermediate.growAggregate(nullptr, declNode, $2.loc); } // Grammar Note: No 'enum', or 'typedef'. @@ -1537,14 +1538,22 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqHitAttr; } - | HITOBJECTATTRNV { + | HITOBJECTATTRNV { parseContext.globalCheck($1.loc, "hitAttributeNV"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV"); parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV"); $$.init($1.loc); $$.qualifier.storage = EvqHitObjectAttrNV; - } + } + | HITOBJECTATTREXT { + parseContext.globalCheck($1.loc, "hitAttributeEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask + | EShLangMissMask), "hitObjectAttributeEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_shader_invocation_reorder, "hitObjectAttributeEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqHitObjectAttrEXT; + } | HITATTREXT { parseContext.globalCheck($1.loc, "hitAttributeEXT"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -3647,10 +3656,14 @@ type_specifier_nonarray parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); $$ = $1; } - | HITOBJECTNV { + | HITOBJECTNV { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtHitObjectNV; - } + } + | HITOBJECTEXT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtHitObjectEXT; + } | struct_specifier { $$ = $1; $$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; @@ -3990,11 +4003,7 @@ condition parseContext.boolCheck($2.loc, $1); TType type($1); - TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); - if (initNode) - $$ = initNode->getAsTyped(); - else - $$ = 0; + $$ = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); } ; @@ -4084,6 +4093,10 @@ iteration_statement_nonattributed condition RIGHT_PAREN statement_no_new_scope { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); $$ = parseContext.intermediate.addLoop($6, $4, 0, true, $1.loc); + if (parseContext.intermediate.getDebugInfo()) { + $$ = parseContext.intermediate.makeAggregate($$, $1.loc); + $$->getAsAggregate()->setOperator(EOpScope); + } --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; @@ -4101,6 +4114,10 @@ iteration_statement_nonattributed parseContext.boolCheck($8.loc, $6); $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc); + if (parseContext.intermediate.getDebugInfo()) { + $$ = parseContext.intermediate.makeAggregate($$, $4.loc); + $$->getAsAggregate()->setOperator(EOpScope); + } parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; @@ -4119,7 +4136,7 @@ iteration_statement_nonattributed if (! parseContext.limits.nonInductiveForLoops) parseContext.inductiveLoopCheck($1.loc, $4, forLoop); $$ = parseContext.intermediate.growAggregate($$, forLoop, $1.loc); - $$->getAsAggregate()->setOperator(EOpSequence); + $$->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp index a08410bc4..f0ec8c6a0 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp @@ -303,439 +303,441 @@ enum yysymbol_kind_t YYSYMBOL_COOPVECNV = 179, /* COOPVECNV */ YYSYMBOL_HITOBJECTNV = 180, /* HITOBJECTNV */ YYSYMBOL_HITOBJECTATTRNV = 181, /* HITOBJECTATTRNV */ - YYSYMBOL_TENSORLAYOUTNV = 182, /* TENSORLAYOUTNV */ - YYSYMBOL_TENSORVIEWNV = 183, /* TENSORVIEWNV */ - YYSYMBOL_TENSORARM = 184, /* TENSORARM */ - YYSYMBOL_SAMPLERCUBEARRAY = 185, /* SAMPLERCUBEARRAY */ - YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 186, /* SAMPLERCUBEARRAYSHADOW */ - YYSYMBOL_ISAMPLERCUBEARRAY = 187, /* ISAMPLERCUBEARRAY */ - YYSYMBOL_USAMPLERCUBEARRAY = 188, /* USAMPLERCUBEARRAY */ - YYSYMBOL_SAMPLER1D = 189, /* SAMPLER1D */ - YYSYMBOL_SAMPLER1DARRAY = 190, /* SAMPLER1DARRAY */ - YYSYMBOL_SAMPLER1DARRAYSHADOW = 191, /* SAMPLER1DARRAYSHADOW */ - YYSYMBOL_ISAMPLER1D = 192, /* ISAMPLER1D */ - YYSYMBOL_SAMPLER1DSHADOW = 193, /* SAMPLER1DSHADOW */ - YYSYMBOL_SAMPLER2DRECT = 194, /* SAMPLER2DRECT */ - YYSYMBOL_SAMPLER2DRECTSHADOW = 195, /* SAMPLER2DRECTSHADOW */ - YYSYMBOL_ISAMPLER2DRECT = 196, /* ISAMPLER2DRECT */ - YYSYMBOL_USAMPLER2DRECT = 197, /* USAMPLER2DRECT */ - YYSYMBOL_SAMPLERBUFFER = 198, /* SAMPLERBUFFER */ - YYSYMBOL_ISAMPLERBUFFER = 199, /* ISAMPLERBUFFER */ - YYSYMBOL_USAMPLERBUFFER = 200, /* USAMPLERBUFFER */ - YYSYMBOL_SAMPLER2DMS = 201, /* SAMPLER2DMS */ - YYSYMBOL_ISAMPLER2DMS = 202, /* ISAMPLER2DMS */ - YYSYMBOL_USAMPLER2DMS = 203, /* USAMPLER2DMS */ - YYSYMBOL_SAMPLER2DMSARRAY = 204, /* SAMPLER2DMSARRAY */ - YYSYMBOL_ISAMPLER2DMSARRAY = 205, /* ISAMPLER2DMSARRAY */ - YYSYMBOL_USAMPLER2DMSARRAY = 206, /* USAMPLER2DMSARRAY */ - YYSYMBOL_SAMPLEREXTERNALOES = 207, /* SAMPLEREXTERNALOES */ - YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 208, /* SAMPLEREXTERNAL2DY2YEXT */ - YYSYMBOL_ISAMPLER1DARRAY = 209, /* ISAMPLER1DARRAY */ - YYSYMBOL_USAMPLER1D = 210, /* USAMPLER1D */ - YYSYMBOL_USAMPLER1DARRAY = 211, /* USAMPLER1DARRAY */ - YYSYMBOL_F16SAMPLER1D = 212, /* F16SAMPLER1D */ - YYSYMBOL_F16SAMPLER2D = 213, /* F16SAMPLER2D */ - YYSYMBOL_F16SAMPLER3D = 214, /* F16SAMPLER3D */ - YYSYMBOL_F16SAMPLER2DRECT = 215, /* F16SAMPLER2DRECT */ - YYSYMBOL_F16SAMPLERCUBE = 216, /* F16SAMPLERCUBE */ - YYSYMBOL_F16SAMPLER1DARRAY = 217, /* F16SAMPLER1DARRAY */ - YYSYMBOL_F16SAMPLER2DARRAY = 218, /* F16SAMPLER2DARRAY */ - YYSYMBOL_F16SAMPLERCUBEARRAY = 219, /* F16SAMPLERCUBEARRAY */ - YYSYMBOL_F16SAMPLERBUFFER = 220, /* F16SAMPLERBUFFER */ - YYSYMBOL_F16SAMPLER2DMS = 221, /* F16SAMPLER2DMS */ - YYSYMBOL_F16SAMPLER2DMSARRAY = 222, /* F16SAMPLER2DMSARRAY */ - YYSYMBOL_F16SAMPLER1DSHADOW = 223, /* F16SAMPLER1DSHADOW */ - YYSYMBOL_F16SAMPLER2DSHADOW = 224, /* F16SAMPLER2DSHADOW */ - YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 225, /* F16SAMPLER1DARRAYSHADOW */ - YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 226, /* F16SAMPLER2DARRAYSHADOW */ - YYSYMBOL_F16SAMPLER2DRECTSHADOW = 227, /* F16SAMPLER2DRECTSHADOW */ - YYSYMBOL_F16SAMPLERCUBESHADOW = 228, /* F16SAMPLERCUBESHADOW */ - YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 229, /* F16SAMPLERCUBEARRAYSHADOW */ - YYSYMBOL_IMAGE1D = 230, /* IMAGE1D */ - YYSYMBOL_IIMAGE1D = 231, /* IIMAGE1D */ - YYSYMBOL_UIMAGE1D = 232, /* UIMAGE1D */ - YYSYMBOL_IMAGE2D = 233, /* IMAGE2D */ - YYSYMBOL_IIMAGE2D = 234, /* IIMAGE2D */ - YYSYMBOL_UIMAGE2D = 235, /* UIMAGE2D */ - YYSYMBOL_IMAGE3D = 236, /* IMAGE3D */ - YYSYMBOL_IIMAGE3D = 237, /* IIMAGE3D */ - YYSYMBOL_UIMAGE3D = 238, /* UIMAGE3D */ - YYSYMBOL_IMAGE2DRECT = 239, /* IMAGE2DRECT */ - YYSYMBOL_IIMAGE2DRECT = 240, /* IIMAGE2DRECT */ - YYSYMBOL_UIMAGE2DRECT = 241, /* UIMAGE2DRECT */ - YYSYMBOL_IMAGECUBE = 242, /* IMAGECUBE */ - YYSYMBOL_IIMAGECUBE = 243, /* IIMAGECUBE */ - YYSYMBOL_UIMAGECUBE = 244, /* UIMAGECUBE */ - YYSYMBOL_IMAGEBUFFER = 245, /* IMAGEBUFFER */ - YYSYMBOL_IIMAGEBUFFER = 246, /* IIMAGEBUFFER */ - YYSYMBOL_UIMAGEBUFFER = 247, /* UIMAGEBUFFER */ - YYSYMBOL_IMAGE1DARRAY = 248, /* IMAGE1DARRAY */ - YYSYMBOL_IIMAGE1DARRAY = 249, /* IIMAGE1DARRAY */ - YYSYMBOL_UIMAGE1DARRAY = 250, /* UIMAGE1DARRAY */ - YYSYMBOL_IMAGE2DARRAY = 251, /* IMAGE2DARRAY */ - YYSYMBOL_IIMAGE2DARRAY = 252, /* IIMAGE2DARRAY */ - YYSYMBOL_UIMAGE2DARRAY = 253, /* UIMAGE2DARRAY */ - YYSYMBOL_IMAGECUBEARRAY = 254, /* IMAGECUBEARRAY */ - YYSYMBOL_IIMAGECUBEARRAY = 255, /* IIMAGECUBEARRAY */ - YYSYMBOL_UIMAGECUBEARRAY = 256, /* UIMAGECUBEARRAY */ - YYSYMBOL_IMAGE2DMS = 257, /* IMAGE2DMS */ - YYSYMBOL_IIMAGE2DMS = 258, /* IIMAGE2DMS */ - YYSYMBOL_UIMAGE2DMS = 259, /* UIMAGE2DMS */ - YYSYMBOL_IMAGE2DMSARRAY = 260, /* IMAGE2DMSARRAY */ - YYSYMBOL_IIMAGE2DMSARRAY = 261, /* IIMAGE2DMSARRAY */ - YYSYMBOL_UIMAGE2DMSARRAY = 262, /* UIMAGE2DMSARRAY */ - YYSYMBOL_F16IMAGE1D = 263, /* F16IMAGE1D */ - YYSYMBOL_F16IMAGE2D = 264, /* F16IMAGE2D */ - YYSYMBOL_F16IMAGE3D = 265, /* F16IMAGE3D */ - YYSYMBOL_F16IMAGE2DRECT = 266, /* F16IMAGE2DRECT */ - YYSYMBOL_F16IMAGECUBE = 267, /* F16IMAGECUBE */ - YYSYMBOL_F16IMAGE1DARRAY = 268, /* F16IMAGE1DARRAY */ - YYSYMBOL_F16IMAGE2DARRAY = 269, /* F16IMAGE2DARRAY */ - YYSYMBOL_F16IMAGECUBEARRAY = 270, /* F16IMAGECUBEARRAY */ - YYSYMBOL_F16IMAGEBUFFER = 271, /* F16IMAGEBUFFER */ - YYSYMBOL_F16IMAGE2DMS = 272, /* F16IMAGE2DMS */ - YYSYMBOL_F16IMAGE2DMSARRAY = 273, /* F16IMAGE2DMSARRAY */ - YYSYMBOL_I64IMAGE1D = 274, /* I64IMAGE1D */ - YYSYMBOL_U64IMAGE1D = 275, /* U64IMAGE1D */ - YYSYMBOL_I64IMAGE2D = 276, /* I64IMAGE2D */ - YYSYMBOL_U64IMAGE2D = 277, /* U64IMAGE2D */ - YYSYMBOL_I64IMAGE3D = 278, /* I64IMAGE3D */ - YYSYMBOL_U64IMAGE3D = 279, /* U64IMAGE3D */ - YYSYMBOL_I64IMAGE2DRECT = 280, /* I64IMAGE2DRECT */ - YYSYMBOL_U64IMAGE2DRECT = 281, /* U64IMAGE2DRECT */ - YYSYMBOL_I64IMAGECUBE = 282, /* I64IMAGECUBE */ - YYSYMBOL_U64IMAGECUBE = 283, /* U64IMAGECUBE */ - YYSYMBOL_I64IMAGEBUFFER = 284, /* I64IMAGEBUFFER */ - YYSYMBOL_U64IMAGEBUFFER = 285, /* U64IMAGEBUFFER */ - YYSYMBOL_I64IMAGE1DARRAY = 286, /* I64IMAGE1DARRAY */ - YYSYMBOL_U64IMAGE1DARRAY = 287, /* U64IMAGE1DARRAY */ - YYSYMBOL_I64IMAGE2DARRAY = 288, /* I64IMAGE2DARRAY */ - YYSYMBOL_U64IMAGE2DARRAY = 289, /* U64IMAGE2DARRAY */ - YYSYMBOL_I64IMAGECUBEARRAY = 290, /* I64IMAGECUBEARRAY */ - YYSYMBOL_U64IMAGECUBEARRAY = 291, /* U64IMAGECUBEARRAY */ - YYSYMBOL_I64IMAGE2DMS = 292, /* I64IMAGE2DMS */ - YYSYMBOL_U64IMAGE2DMS = 293, /* U64IMAGE2DMS */ - YYSYMBOL_I64IMAGE2DMSARRAY = 294, /* I64IMAGE2DMSARRAY */ - YYSYMBOL_U64IMAGE2DMSARRAY = 295, /* U64IMAGE2DMSARRAY */ - YYSYMBOL_TEXTURECUBEARRAY = 296, /* TEXTURECUBEARRAY */ - YYSYMBOL_ITEXTURECUBEARRAY = 297, /* ITEXTURECUBEARRAY */ - YYSYMBOL_UTEXTURECUBEARRAY = 298, /* UTEXTURECUBEARRAY */ - YYSYMBOL_TEXTURE1D = 299, /* TEXTURE1D */ - YYSYMBOL_ITEXTURE1D = 300, /* ITEXTURE1D */ - YYSYMBOL_UTEXTURE1D = 301, /* UTEXTURE1D */ - YYSYMBOL_TEXTURE1DARRAY = 302, /* TEXTURE1DARRAY */ - YYSYMBOL_ITEXTURE1DARRAY = 303, /* ITEXTURE1DARRAY */ - YYSYMBOL_UTEXTURE1DARRAY = 304, /* UTEXTURE1DARRAY */ - YYSYMBOL_TEXTURE2DRECT = 305, /* TEXTURE2DRECT */ - YYSYMBOL_ITEXTURE2DRECT = 306, /* ITEXTURE2DRECT */ - YYSYMBOL_UTEXTURE2DRECT = 307, /* UTEXTURE2DRECT */ - YYSYMBOL_TEXTUREBUFFER = 308, /* TEXTUREBUFFER */ - YYSYMBOL_ITEXTUREBUFFER = 309, /* ITEXTUREBUFFER */ - YYSYMBOL_UTEXTUREBUFFER = 310, /* UTEXTUREBUFFER */ - YYSYMBOL_TEXTURE2DMS = 311, /* TEXTURE2DMS */ - YYSYMBOL_ITEXTURE2DMS = 312, /* ITEXTURE2DMS */ - YYSYMBOL_UTEXTURE2DMS = 313, /* UTEXTURE2DMS */ - YYSYMBOL_TEXTURE2DMSARRAY = 314, /* TEXTURE2DMSARRAY */ - YYSYMBOL_ITEXTURE2DMSARRAY = 315, /* ITEXTURE2DMSARRAY */ - YYSYMBOL_UTEXTURE2DMSARRAY = 316, /* UTEXTURE2DMSARRAY */ - YYSYMBOL_F16TEXTURE1D = 317, /* F16TEXTURE1D */ - YYSYMBOL_F16TEXTURE2D = 318, /* F16TEXTURE2D */ - YYSYMBOL_F16TEXTURE3D = 319, /* F16TEXTURE3D */ - YYSYMBOL_F16TEXTURE2DRECT = 320, /* F16TEXTURE2DRECT */ - YYSYMBOL_F16TEXTURECUBE = 321, /* F16TEXTURECUBE */ - YYSYMBOL_F16TEXTURE1DARRAY = 322, /* F16TEXTURE1DARRAY */ - YYSYMBOL_F16TEXTURE2DARRAY = 323, /* F16TEXTURE2DARRAY */ - YYSYMBOL_F16TEXTURECUBEARRAY = 324, /* F16TEXTURECUBEARRAY */ - YYSYMBOL_F16TEXTUREBUFFER = 325, /* F16TEXTUREBUFFER */ - YYSYMBOL_F16TEXTURE2DMS = 326, /* F16TEXTURE2DMS */ - YYSYMBOL_F16TEXTURE2DMSARRAY = 327, /* F16TEXTURE2DMSARRAY */ - YYSYMBOL_SUBPASSINPUT = 328, /* SUBPASSINPUT */ - YYSYMBOL_SUBPASSINPUTMS = 329, /* SUBPASSINPUTMS */ - YYSYMBOL_ISUBPASSINPUT = 330, /* ISUBPASSINPUT */ - YYSYMBOL_ISUBPASSINPUTMS = 331, /* ISUBPASSINPUTMS */ - YYSYMBOL_USUBPASSINPUT = 332, /* USUBPASSINPUT */ - YYSYMBOL_USUBPASSINPUTMS = 333, /* USUBPASSINPUTMS */ - YYSYMBOL_F16SUBPASSINPUT = 334, /* F16SUBPASSINPUT */ - YYSYMBOL_F16SUBPASSINPUTMS = 335, /* F16SUBPASSINPUTMS */ - YYSYMBOL_SPIRV_INSTRUCTION = 336, /* SPIRV_INSTRUCTION */ - YYSYMBOL_SPIRV_EXECUTION_MODE = 337, /* SPIRV_EXECUTION_MODE */ - YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 338, /* SPIRV_EXECUTION_MODE_ID */ - YYSYMBOL_SPIRV_DECORATE = 339, /* SPIRV_DECORATE */ - YYSYMBOL_SPIRV_DECORATE_ID = 340, /* SPIRV_DECORATE_ID */ - YYSYMBOL_SPIRV_DECORATE_STRING = 341, /* SPIRV_DECORATE_STRING */ - YYSYMBOL_SPIRV_TYPE = 342, /* SPIRV_TYPE */ - YYSYMBOL_SPIRV_STORAGE_CLASS = 343, /* SPIRV_STORAGE_CLASS */ - YYSYMBOL_SPIRV_BY_REFERENCE = 344, /* SPIRV_BY_REFERENCE */ - YYSYMBOL_SPIRV_LITERAL = 345, /* SPIRV_LITERAL */ - YYSYMBOL_ATTACHMENTEXT = 346, /* ATTACHMENTEXT */ - YYSYMBOL_IATTACHMENTEXT = 347, /* IATTACHMENTEXT */ - YYSYMBOL_UATTACHMENTEXT = 348, /* UATTACHMENTEXT */ - YYSYMBOL_LEFT_OP = 349, /* LEFT_OP */ - YYSYMBOL_RIGHT_OP = 350, /* RIGHT_OP */ - YYSYMBOL_INC_OP = 351, /* INC_OP */ - YYSYMBOL_DEC_OP = 352, /* DEC_OP */ - YYSYMBOL_LE_OP = 353, /* LE_OP */ - YYSYMBOL_GE_OP = 354, /* GE_OP */ - YYSYMBOL_EQ_OP = 355, /* EQ_OP */ - YYSYMBOL_NE_OP = 356, /* NE_OP */ - YYSYMBOL_AND_OP = 357, /* AND_OP */ - YYSYMBOL_OR_OP = 358, /* OR_OP */ - YYSYMBOL_XOR_OP = 359, /* XOR_OP */ - YYSYMBOL_MUL_ASSIGN = 360, /* MUL_ASSIGN */ - YYSYMBOL_DIV_ASSIGN = 361, /* DIV_ASSIGN */ - YYSYMBOL_ADD_ASSIGN = 362, /* ADD_ASSIGN */ - YYSYMBOL_MOD_ASSIGN = 363, /* MOD_ASSIGN */ - YYSYMBOL_LEFT_ASSIGN = 364, /* LEFT_ASSIGN */ - YYSYMBOL_RIGHT_ASSIGN = 365, /* RIGHT_ASSIGN */ - YYSYMBOL_AND_ASSIGN = 366, /* AND_ASSIGN */ - YYSYMBOL_XOR_ASSIGN = 367, /* XOR_ASSIGN */ - YYSYMBOL_OR_ASSIGN = 368, /* OR_ASSIGN */ - YYSYMBOL_SUB_ASSIGN = 369, /* SUB_ASSIGN */ - YYSYMBOL_STRING_LITERAL = 370, /* STRING_LITERAL */ - YYSYMBOL_LEFT_PAREN = 371, /* LEFT_PAREN */ - YYSYMBOL_RIGHT_PAREN = 372, /* RIGHT_PAREN */ - YYSYMBOL_LEFT_BRACKET = 373, /* LEFT_BRACKET */ - YYSYMBOL_RIGHT_BRACKET = 374, /* RIGHT_BRACKET */ - YYSYMBOL_LEFT_BRACE = 375, /* LEFT_BRACE */ - YYSYMBOL_RIGHT_BRACE = 376, /* RIGHT_BRACE */ - YYSYMBOL_DOT = 377, /* DOT */ - YYSYMBOL_COMMA = 378, /* COMMA */ - YYSYMBOL_COLON = 379, /* COLON */ - YYSYMBOL_EQUAL = 380, /* EQUAL */ - YYSYMBOL_SEMICOLON = 381, /* SEMICOLON */ - YYSYMBOL_BANG = 382, /* BANG */ - YYSYMBOL_DASH = 383, /* DASH */ - YYSYMBOL_TILDE = 384, /* TILDE */ - YYSYMBOL_PLUS = 385, /* PLUS */ - YYSYMBOL_STAR = 386, /* STAR */ - YYSYMBOL_SLASH = 387, /* SLASH */ - YYSYMBOL_PERCENT = 388, /* PERCENT */ - YYSYMBOL_LEFT_ANGLE = 389, /* LEFT_ANGLE */ - YYSYMBOL_RIGHT_ANGLE = 390, /* RIGHT_ANGLE */ - YYSYMBOL_VERTICAL_BAR = 391, /* VERTICAL_BAR */ - YYSYMBOL_CARET = 392, /* CARET */ - YYSYMBOL_AMPERSAND = 393, /* AMPERSAND */ - YYSYMBOL_QUESTION = 394, /* QUESTION */ - YYSYMBOL_INVARIANT = 395, /* INVARIANT */ - YYSYMBOL_HIGH_PRECISION = 396, /* HIGH_PRECISION */ - YYSYMBOL_MEDIUM_PRECISION = 397, /* MEDIUM_PRECISION */ - YYSYMBOL_LOW_PRECISION = 398, /* LOW_PRECISION */ - YYSYMBOL_PRECISION = 399, /* PRECISION */ - YYSYMBOL_PACKED = 400, /* PACKED */ - YYSYMBOL_RESOURCE = 401, /* RESOURCE */ - YYSYMBOL_SUPERP = 402, /* SUPERP */ - YYSYMBOL_FLOATCONSTANT = 403, /* FLOATCONSTANT */ - YYSYMBOL_INTCONSTANT = 404, /* INTCONSTANT */ - YYSYMBOL_UINTCONSTANT = 405, /* UINTCONSTANT */ - YYSYMBOL_BOOLCONSTANT = 406, /* BOOLCONSTANT */ - YYSYMBOL_IDENTIFIER = 407, /* IDENTIFIER */ - YYSYMBOL_TYPE_NAME = 408, /* TYPE_NAME */ - YYSYMBOL_CENTROID = 409, /* CENTROID */ - YYSYMBOL_IN = 410, /* IN */ - YYSYMBOL_OUT = 411, /* OUT */ - YYSYMBOL_INOUT = 412, /* INOUT */ - YYSYMBOL_STRUCT = 413, /* STRUCT */ - YYSYMBOL_VOID = 414, /* VOID */ - YYSYMBOL_WHILE = 415, /* WHILE */ - YYSYMBOL_BREAK = 416, /* BREAK */ - YYSYMBOL_CONTINUE = 417, /* CONTINUE */ - YYSYMBOL_DO = 418, /* DO */ - YYSYMBOL_ELSE = 419, /* ELSE */ - YYSYMBOL_FOR = 420, /* FOR */ - YYSYMBOL_IF = 421, /* IF */ - YYSYMBOL_DISCARD = 422, /* DISCARD */ - YYSYMBOL_RETURN = 423, /* RETURN */ - YYSYMBOL_SWITCH = 424, /* SWITCH */ - YYSYMBOL_CASE = 425, /* CASE */ - YYSYMBOL_DEFAULT = 426, /* DEFAULT */ - YYSYMBOL_TERMINATE_INVOCATION = 427, /* TERMINATE_INVOCATION */ - YYSYMBOL_TERMINATE_RAY = 428, /* TERMINATE_RAY */ - YYSYMBOL_IGNORE_INTERSECTION = 429, /* IGNORE_INTERSECTION */ - YYSYMBOL_UNIFORM = 430, /* UNIFORM */ - YYSYMBOL_SHARED = 431, /* SHARED */ - YYSYMBOL_BUFFER = 432, /* BUFFER */ - YYSYMBOL_TILEIMAGEEXT = 433, /* TILEIMAGEEXT */ - YYSYMBOL_FLAT = 434, /* FLAT */ - YYSYMBOL_SMOOTH = 435, /* SMOOTH */ - YYSYMBOL_LAYOUT = 436, /* LAYOUT */ - YYSYMBOL_DOUBLECONSTANT = 437, /* DOUBLECONSTANT */ - YYSYMBOL_INT16CONSTANT = 438, /* INT16CONSTANT */ - YYSYMBOL_UINT16CONSTANT = 439, /* UINT16CONSTANT */ - YYSYMBOL_FLOAT16CONSTANT = 440, /* FLOAT16CONSTANT */ - YYSYMBOL_INT32CONSTANT = 441, /* INT32CONSTANT */ - YYSYMBOL_UINT32CONSTANT = 442, /* UINT32CONSTANT */ - YYSYMBOL_INT64CONSTANT = 443, /* INT64CONSTANT */ - YYSYMBOL_UINT64CONSTANT = 444, /* UINT64CONSTANT */ - YYSYMBOL_SUBROUTINE = 445, /* SUBROUTINE */ - YYSYMBOL_DEMOTE = 446, /* DEMOTE */ - YYSYMBOL_FUNCTION = 447, /* FUNCTION */ - YYSYMBOL_PAYLOADNV = 448, /* PAYLOADNV */ - YYSYMBOL_PAYLOADINNV = 449, /* PAYLOADINNV */ - YYSYMBOL_HITATTRNV = 450, /* HITATTRNV */ - YYSYMBOL_CALLDATANV = 451, /* CALLDATANV */ - YYSYMBOL_CALLDATAINNV = 452, /* CALLDATAINNV */ - YYSYMBOL_PAYLOADEXT = 453, /* PAYLOADEXT */ - YYSYMBOL_PAYLOADINEXT = 454, /* PAYLOADINEXT */ - YYSYMBOL_HITATTREXT = 455, /* HITATTREXT */ - YYSYMBOL_CALLDATAEXT = 456, /* CALLDATAEXT */ - YYSYMBOL_CALLDATAINEXT = 457, /* CALLDATAINEXT */ - YYSYMBOL_PATCH = 458, /* PATCH */ - YYSYMBOL_SAMPLE = 459, /* SAMPLE */ - YYSYMBOL_NONUNIFORM = 460, /* NONUNIFORM */ - YYSYMBOL_COHERENT = 461, /* COHERENT */ - YYSYMBOL_VOLATILE = 462, /* VOLATILE */ - YYSYMBOL_RESTRICT = 463, /* RESTRICT */ - YYSYMBOL_READONLY = 464, /* READONLY */ - YYSYMBOL_WRITEONLY = 465, /* WRITEONLY */ - YYSYMBOL_NONTEMPORAL = 466, /* NONTEMPORAL */ - YYSYMBOL_DEVICECOHERENT = 467, /* DEVICECOHERENT */ - YYSYMBOL_QUEUEFAMILYCOHERENT = 468, /* QUEUEFAMILYCOHERENT */ - YYSYMBOL_WORKGROUPCOHERENT = 469, /* WORKGROUPCOHERENT */ - YYSYMBOL_SUBGROUPCOHERENT = 470, /* SUBGROUPCOHERENT */ - YYSYMBOL_NONPRIVATE = 471, /* NONPRIVATE */ - YYSYMBOL_SHADERCALLCOHERENT = 472, /* SHADERCALLCOHERENT */ - YYSYMBOL_NOPERSPECTIVE = 473, /* NOPERSPECTIVE */ - YYSYMBOL_EXPLICITINTERPAMD = 474, /* EXPLICITINTERPAMD */ - YYSYMBOL_PERVERTEXEXT = 475, /* PERVERTEXEXT */ - YYSYMBOL_PERVERTEXNV = 476, /* PERVERTEXNV */ - YYSYMBOL_PERPRIMITIVENV = 477, /* PERPRIMITIVENV */ - YYSYMBOL_PERVIEWNV = 478, /* PERVIEWNV */ - YYSYMBOL_PERTASKNV = 479, /* PERTASKNV */ - YYSYMBOL_PERPRIMITIVEEXT = 480, /* PERPRIMITIVEEXT */ - YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 481, /* TASKPAYLOADWORKGROUPEXT */ - YYSYMBOL_PRECISE = 482, /* PRECISE */ - YYSYMBOL_YYACCEPT = 483, /* $accept */ - YYSYMBOL_variable_identifier = 484, /* variable_identifier */ - YYSYMBOL_primary_expression = 485, /* primary_expression */ - YYSYMBOL_postfix_expression = 486, /* postfix_expression */ - YYSYMBOL_integer_expression = 487, /* integer_expression */ - YYSYMBOL_function_call = 488, /* function_call */ - YYSYMBOL_function_call_or_method = 489, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 490, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 491, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 492, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 493, /* function_call_header */ - YYSYMBOL_function_identifier = 494, /* function_identifier */ - YYSYMBOL_unary_expression = 495, /* unary_expression */ - YYSYMBOL_unary_operator = 496, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 497, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 498, /* additive_expression */ - YYSYMBOL_shift_expression = 499, /* shift_expression */ - YYSYMBOL_relational_expression = 500, /* relational_expression */ - YYSYMBOL_equality_expression = 501, /* equality_expression */ - YYSYMBOL_and_expression = 502, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 503, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 504, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 505, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 506, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 507, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 508, /* conditional_expression */ - YYSYMBOL_509_1 = 509, /* $@1 */ - YYSYMBOL_assignment_expression = 510, /* assignment_expression */ - YYSYMBOL_assignment_operator = 511, /* assignment_operator */ - YYSYMBOL_expression = 512, /* expression */ - YYSYMBOL_constant_expression = 513, /* constant_expression */ - YYSYMBOL_declaration = 514, /* declaration */ - YYSYMBOL_block_structure = 515, /* block_structure */ - YYSYMBOL_516_2 = 516, /* $@2 */ - YYSYMBOL_identifier_list = 517, /* identifier_list */ - YYSYMBOL_function_prototype = 518, /* function_prototype */ - YYSYMBOL_function_declarator = 519, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 520, /* function_header_with_parameters */ - YYSYMBOL_function_header = 521, /* function_header */ - YYSYMBOL_parameter_declarator = 522, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 523, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 524, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 525, /* init_declarator_list */ - YYSYMBOL_single_declaration = 526, /* single_declaration */ - YYSYMBOL_fully_specified_type = 527, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 528, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 529, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 530, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 531, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 532, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 533, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 534, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 535, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 536, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 537, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 538, /* type_name_list */ - YYSYMBOL_type_specifier = 539, /* type_specifier */ - YYSYMBOL_array_specifier = 540, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 541, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 542, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 543, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 544, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 545, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 546, /* struct_specifier */ - YYSYMBOL_547_3 = 547, /* $@3 */ - YYSYMBOL_548_4 = 548, /* $@4 */ - YYSYMBOL_struct_declaration_list = 549, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 550, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 551, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 552, /* struct_declarator */ - YYSYMBOL_initializer = 553, /* initializer */ - YYSYMBOL_initializer_list = 554, /* initializer_list */ - YYSYMBOL_declaration_statement = 555, /* declaration_statement */ - YYSYMBOL_statement = 556, /* statement */ - YYSYMBOL_simple_statement = 557, /* simple_statement */ - YYSYMBOL_demote_statement = 558, /* demote_statement */ - YYSYMBOL_compound_statement = 559, /* compound_statement */ - YYSYMBOL_560_5 = 560, /* $@5 */ - YYSYMBOL_561_6 = 561, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 562, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 563, /* statement_scoped */ - YYSYMBOL_564_7 = 564, /* $@7 */ - YYSYMBOL_565_8 = 565, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 566, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 567, /* statement_list */ - YYSYMBOL_expression_statement = 568, /* expression_statement */ - YYSYMBOL_selection_statement = 569, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 570, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 571, /* selection_rest_statement */ - YYSYMBOL_condition = 572, /* condition */ - YYSYMBOL_switch_statement = 573, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 574, /* switch_statement_nonattributed */ - YYSYMBOL_575_9 = 575, /* $@9 */ - YYSYMBOL_switch_statement_list = 576, /* switch_statement_list */ - YYSYMBOL_case_label = 577, /* case_label */ - YYSYMBOL_iteration_statement = 578, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 579, /* iteration_statement_nonattributed */ - YYSYMBOL_580_10 = 580, /* $@10 */ - YYSYMBOL_581_11 = 581, /* $@11 */ - YYSYMBOL_582_12 = 582, /* $@12 */ - YYSYMBOL_for_init_statement = 583, /* for_init_statement */ - YYSYMBOL_conditionopt = 584, /* conditionopt */ - YYSYMBOL_for_rest_statement = 585, /* for_rest_statement */ - YYSYMBOL_jump_statement = 586, /* jump_statement */ - YYSYMBOL_translation_unit = 587, /* translation_unit */ - YYSYMBOL_external_declaration = 588, /* external_declaration */ - YYSYMBOL_function_definition = 589, /* function_definition */ - YYSYMBOL_590_13 = 590, /* $@13 */ - YYSYMBOL_attribute = 591, /* attribute */ - YYSYMBOL_attribute_list = 592, /* attribute_list */ - YYSYMBOL_single_attribute = 593, /* single_attribute */ - YYSYMBOL_spirv_requirements_list = 594, /* spirv_requirements_list */ - YYSYMBOL_spirv_requirements_parameter = 595, /* spirv_requirements_parameter */ - YYSYMBOL_spirv_extension_list = 596, /* spirv_extension_list */ - YYSYMBOL_spirv_capability_list = 597, /* spirv_capability_list */ - YYSYMBOL_spirv_execution_mode_qualifier = 598, /* spirv_execution_mode_qualifier */ - YYSYMBOL_spirv_execution_mode_parameter_list = 599, /* spirv_execution_mode_parameter_list */ - YYSYMBOL_spirv_execution_mode_parameter = 600, /* spirv_execution_mode_parameter */ - YYSYMBOL_spirv_execution_mode_id_parameter_list = 601, /* spirv_execution_mode_id_parameter_list */ - YYSYMBOL_spirv_storage_class_qualifier = 602, /* spirv_storage_class_qualifier */ - YYSYMBOL_spirv_decorate_qualifier = 603, /* spirv_decorate_qualifier */ - YYSYMBOL_spirv_decorate_parameter_list = 604, /* spirv_decorate_parameter_list */ - YYSYMBOL_spirv_decorate_parameter = 605, /* spirv_decorate_parameter */ - YYSYMBOL_spirv_decorate_id_parameter_list = 606, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_id_parameter = 607, /* spirv_decorate_id_parameter */ - YYSYMBOL_spirv_decorate_string_parameter_list = 608, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 609, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 610, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 611, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 612, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 613, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 614 /* spirv_instruction_qualifier_id */ + YYSYMBOL_HITOBJECTEXT = 182, /* HITOBJECTEXT */ + YYSYMBOL_HITOBJECTATTREXT = 183, /* HITOBJECTATTREXT */ + YYSYMBOL_TENSORLAYOUTNV = 184, /* TENSORLAYOUTNV */ + YYSYMBOL_TENSORVIEWNV = 185, /* TENSORVIEWNV */ + YYSYMBOL_TENSORARM = 186, /* TENSORARM */ + YYSYMBOL_SAMPLERCUBEARRAY = 187, /* SAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 188, /* SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_ISAMPLERCUBEARRAY = 189, /* ISAMPLERCUBEARRAY */ + YYSYMBOL_USAMPLERCUBEARRAY = 190, /* USAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLER1D = 191, /* SAMPLER1D */ + YYSYMBOL_SAMPLER1DARRAY = 192, /* SAMPLER1DARRAY */ + YYSYMBOL_SAMPLER1DARRAYSHADOW = 193, /* SAMPLER1DARRAYSHADOW */ + YYSYMBOL_ISAMPLER1D = 194, /* ISAMPLER1D */ + YYSYMBOL_SAMPLER1DSHADOW = 195, /* SAMPLER1DSHADOW */ + YYSYMBOL_SAMPLER2DRECT = 196, /* SAMPLER2DRECT */ + YYSYMBOL_SAMPLER2DRECTSHADOW = 197, /* SAMPLER2DRECTSHADOW */ + YYSYMBOL_ISAMPLER2DRECT = 198, /* ISAMPLER2DRECT */ + YYSYMBOL_USAMPLER2DRECT = 199, /* USAMPLER2DRECT */ + YYSYMBOL_SAMPLERBUFFER = 200, /* SAMPLERBUFFER */ + YYSYMBOL_ISAMPLERBUFFER = 201, /* ISAMPLERBUFFER */ + YYSYMBOL_USAMPLERBUFFER = 202, /* USAMPLERBUFFER */ + YYSYMBOL_SAMPLER2DMS = 203, /* SAMPLER2DMS */ + YYSYMBOL_ISAMPLER2DMS = 204, /* ISAMPLER2DMS */ + YYSYMBOL_USAMPLER2DMS = 205, /* USAMPLER2DMS */ + YYSYMBOL_SAMPLER2DMSARRAY = 206, /* SAMPLER2DMSARRAY */ + YYSYMBOL_ISAMPLER2DMSARRAY = 207, /* ISAMPLER2DMSARRAY */ + YYSYMBOL_USAMPLER2DMSARRAY = 208, /* USAMPLER2DMSARRAY */ + YYSYMBOL_SAMPLEREXTERNALOES = 209, /* SAMPLEREXTERNALOES */ + YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 210, /* SAMPLEREXTERNAL2DY2YEXT */ + YYSYMBOL_ISAMPLER1DARRAY = 211, /* ISAMPLER1DARRAY */ + YYSYMBOL_USAMPLER1D = 212, /* USAMPLER1D */ + YYSYMBOL_USAMPLER1DARRAY = 213, /* USAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER1D = 214, /* F16SAMPLER1D */ + YYSYMBOL_F16SAMPLER2D = 215, /* F16SAMPLER2D */ + YYSYMBOL_F16SAMPLER3D = 216, /* F16SAMPLER3D */ + YYSYMBOL_F16SAMPLER2DRECT = 217, /* F16SAMPLER2DRECT */ + YYSYMBOL_F16SAMPLERCUBE = 218, /* F16SAMPLERCUBE */ + YYSYMBOL_F16SAMPLER1DARRAY = 219, /* F16SAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER2DARRAY = 220, /* F16SAMPLER2DARRAY */ + YYSYMBOL_F16SAMPLERCUBEARRAY = 221, /* F16SAMPLERCUBEARRAY */ + YYSYMBOL_F16SAMPLERBUFFER = 222, /* F16SAMPLERBUFFER */ + YYSYMBOL_F16SAMPLER2DMS = 223, /* F16SAMPLER2DMS */ + YYSYMBOL_F16SAMPLER2DMSARRAY = 224, /* F16SAMPLER2DMSARRAY */ + YYSYMBOL_F16SAMPLER1DSHADOW = 225, /* F16SAMPLER1DSHADOW */ + YYSYMBOL_F16SAMPLER2DSHADOW = 226, /* F16SAMPLER2DSHADOW */ + YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 227, /* F16SAMPLER1DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 228, /* F16SAMPLER2DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DRECTSHADOW = 229, /* F16SAMPLER2DRECTSHADOW */ + YYSYMBOL_F16SAMPLERCUBESHADOW = 230, /* F16SAMPLERCUBESHADOW */ + YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 231, /* F16SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_IMAGE1D = 232, /* IMAGE1D */ + YYSYMBOL_IIMAGE1D = 233, /* IIMAGE1D */ + YYSYMBOL_UIMAGE1D = 234, /* UIMAGE1D */ + YYSYMBOL_IMAGE2D = 235, /* IMAGE2D */ + YYSYMBOL_IIMAGE2D = 236, /* IIMAGE2D */ + YYSYMBOL_UIMAGE2D = 237, /* UIMAGE2D */ + YYSYMBOL_IMAGE3D = 238, /* IMAGE3D */ + YYSYMBOL_IIMAGE3D = 239, /* IIMAGE3D */ + YYSYMBOL_UIMAGE3D = 240, /* UIMAGE3D */ + YYSYMBOL_IMAGE2DRECT = 241, /* IMAGE2DRECT */ + YYSYMBOL_IIMAGE2DRECT = 242, /* IIMAGE2DRECT */ + YYSYMBOL_UIMAGE2DRECT = 243, /* UIMAGE2DRECT */ + YYSYMBOL_IMAGECUBE = 244, /* IMAGECUBE */ + YYSYMBOL_IIMAGECUBE = 245, /* IIMAGECUBE */ + YYSYMBOL_UIMAGECUBE = 246, /* UIMAGECUBE */ + YYSYMBOL_IMAGEBUFFER = 247, /* IMAGEBUFFER */ + YYSYMBOL_IIMAGEBUFFER = 248, /* IIMAGEBUFFER */ + YYSYMBOL_UIMAGEBUFFER = 249, /* UIMAGEBUFFER */ + YYSYMBOL_IMAGE1DARRAY = 250, /* IMAGE1DARRAY */ + YYSYMBOL_IIMAGE1DARRAY = 251, /* IIMAGE1DARRAY */ + YYSYMBOL_UIMAGE1DARRAY = 252, /* UIMAGE1DARRAY */ + YYSYMBOL_IMAGE2DARRAY = 253, /* IMAGE2DARRAY */ + YYSYMBOL_IIMAGE2DARRAY = 254, /* IIMAGE2DARRAY */ + YYSYMBOL_UIMAGE2DARRAY = 255, /* UIMAGE2DARRAY */ + YYSYMBOL_IMAGECUBEARRAY = 256, /* IMAGECUBEARRAY */ + YYSYMBOL_IIMAGECUBEARRAY = 257, /* IIMAGECUBEARRAY */ + YYSYMBOL_UIMAGECUBEARRAY = 258, /* UIMAGECUBEARRAY */ + YYSYMBOL_IMAGE2DMS = 259, /* IMAGE2DMS */ + YYSYMBOL_IIMAGE2DMS = 260, /* IIMAGE2DMS */ + YYSYMBOL_UIMAGE2DMS = 261, /* UIMAGE2DMS */ + YYSYMBOL_IMAGE2DMSARRAY = 262, /* IMAGE2DMSARRAY */ + YYSYMBOL_IIMAGE2DMSARRAY = 263, /* IIMAGE2DMSARRAY */ + YYSYMBOL_UIMAGE2DMSARRAY = 264, /* UIMAGE2DMSARRAY */ + YYSYMBOL_F16IMAGE1D = 265, /* F16IMAGE1D */ + YYSYMBOL_F16IMAGE2D = 266, /* F16IMAGE2D */ + YYSYMBOL_F16IMAGE3D = 267, /* F16IMAGE3D */ + YYSYMBOL_F16IMAGE2DRECT = 268, /* F16IMAGE2DRECT */ + YYSYMBOL_F16IMAGECUBE = 269, /* F16IMAGECUBE */ + YYSYMBOL_F16IMAGE1DARRAY = 270, /* F16IMAGE1DARRAY */ + YYSYMBOL_F16IMAGE2DARRAY = 271, /* F16IMAGE2DARRAY */ + YYSYMBOL_F16IMAGECUBEARRAY = 272, /* F16IMAGECUBEARRAY */ + YYSYMBOL_F16IMAGEBUFFER = 273, /* F16IMAGEBUFFER */ + YYSYMBOL_F16IMAGE2DMS = 274, /* F16IMAGE2DMS */ + YYSYMBOL_F16IMAGE2DMSARRAY = 275, /* F16IMAGE2DMSARRAY */ + YYSYMBOL_I64IMAGE1D = 276, /* I64IMAGE1D */ + YYSYMBOL_U64IMAGE1D = 277, /* U64IMAGE1D */ + YYSYMBOL_I64IMAGE2D = 278, /* I64IMAGE2D */ + YYSYMBOL_U64IMAGE2D = 279, /* U64IMAGE2D */ + YYSYMBOL_I64IMAGE3D = 280, /* I64IMAGE3D */ + YYSYMBOL_U64IMAGE3D = 281, /* U64IMAGE3D */ + YYSYMBOL_I64IMAGE2DRECT = 282, /* I64IMAGE2DRECT */ + YYSYMBOL_U64IMAGE2DRECT = 283, /* U64IMAGE2DRECT */ + YYSYMBOL_I64IMAGECUBE = 284, /* I64IMAGECUBE */ + YYSYMBOL_U64IMAGECUBE = 285, /* U64IMAGECUBE */ + YYSYMBOL_I64IMAGEBUFFER = 286, /* I64IMAGEBUFFER */ + YYSYMBOL_U64IMAGEBUFFER = 287, /* U64IMAGEBUFFER */ + YYSYMBOL_I64IMAGE1DARRAY = 288, /* I64IMAGE1DARRAY */ + YYSYMBOL_U64IMAGE1DARRAY = 289, /* U64IMAGE1DARRAY */ + YYSYMBOL_I64IMAGE2DARRAY = 290, /* I64IMAGE2DARRAY */ + YYSYMBOL_U64IMAGE2DARRAY = 291, /* U64IMAGE2DARRAY */ + YYSYMBOL_I64IMAGECUBEARRAY = 292, /* I64IMAGECUBEARRAY */ + YYSYMBOL_U64IMAGECUBEARRAY = 293, /* U64IMAGECUBEARRAY */ + YYSYMBOL_I64IMAGE2DMS = 294, /* I64IMAGE2DMS */ + YYSYMBOL_U64IMAGE2DMS = 295, /* U64IMAGE2DMS */ + YYSYMBOL_I64IMAGE2DMSARRAY = 296, /* I64IMAGE2DMSARRAY */ + YYSYMBOL_U64IMAGE2DMSARRAY = 297, /* U64IMAGE2DMSARRAY */ + YYSYMBOL_TEXTURECUBEARRAY = 298, /* TEXTURECUBEARRAY */ + YYSYMBOL_ITEXTURECUBEARRAY = 299, /* ITEXTURECUBEARRAY */ + YYSYMBOL_UTEXTURECUBEARRAY = 300, /* UTEXTURECUBEARRAY */ + YYSYMBOL_TEXTURE1D = 301, /* TEXTURE1D */ + YYSYMBOL_ITEXTURE1D = 302, /* ITEXTURE1D */ + YYSYMBOL_UTEXTURE1D = 303, /* UTEXTURE1D */ + YYSYMBOL_TEXTURE1DARRAY = 304, /* TEXTURE1DARRAY */ + YYSYMBOL_ITEXTURE1DARRAY = 305, /* ITEXTURE1DARRAY */ + YYSYMBOL_UTEXTURE1DARRAY = 306, /* UTEXTURE1DARRAY */ + YYSYMBOL_TEXTURE2DRECT = 307, /* TEXTURE2DRECT */ + YYSYMBOL_ITEXTURE2DRECT = 308, /* ITEXTURE2DRECT */ + YYSYMBOL_UTEXTURE2DRECT = 309, /* UTEXTURE2DRECT */ + YYSYMBOL_TEXTUREBUFFER = 310, /* TEXTUREBUFFER */ + YYSYMBOL_ITEXTUREBUFFER = 311, /* ITEXTUREBUFFER */ + YYSYMBOL_UTEXTUREBUFFER = 312, /* UTEXTUREBUFFER */ + YYSYMBOL_TEXTURE2DMS = 313, /* TEXTURE2DMS */ + YYSYMBOL_ITEXTURE2DMS = 314, /* ITEXTURE2DMS */ + YYSYMBOL_UTEXTURE2DMS = 315, /* UTEXTURE2DMS */ + YYSYMBOL_TEXTURE2DMSARRAY = 316, /* TEXTURE2DMSARRAY */ + YYSYMBOL_ITEXTURE2DMSARRAY = 317, /* ITEXTURE2DMSARRAY */ + YYSYMBOL_UTEXTURE2DMSARRAY = 318, /* UTEXTURE2DMSARRAY */ + YYSYMBOL_F16TEXTURE1D = 319, /* F16TEXTURE1D */ + YYSYMBOL_F16TEXTURE2D = 320, /* F16TEXTURE2D */ + YYSYMBOL_F16TEXTURE3D = 321, /* F16TEXTURE3D */ + YYSYMBOL_F16TEXTURE2DRECT = 322, /* F16TEXTURE2DRECT */ + YYSYMBOL_F16TEXTURECUBE = 323, /* F16TEXTURECUBE */ + YYSYMBOL_F16TEXTURE1DARRAY = 324, /* F16TEXTURE1DARRAY */ + YYSYMBOL_F16TEXTURE2DARRAY = 325, /* F16TEXTURE2DARRAY */ + YYSYMBOL_F16TEXTURECUBEARRAY = 326, /* F16TEXTURECUBEARRAY */ + YYSYMBOL_F16TEXTUREBUFFER = 327, /* F16TEXTUREBUFFER */ + YYSYMBOL_F16TEXTURE2DMS = 328, /* F16TEXTURE2DMS */ + YYSYMBOL_F16TEXTURE2DMSARRAY = 329, /* F16TEXTURE2DMSARRAY */ + YYSYMBOL_SUBPASSINPUT = 330, /* SUBPASSINPUT */ + YYSYMBOL_SUBPASSINPUTMS = 331, /* SUBPASSINPUTMS */ + YYSYMBOL_ISUBPASSINPUT = 332, /* ISUBPASSINPUT */ + YYSYMBOL_ISUBPASSINPUTMS = 333, /* ISUBPASSINPUTMS */ + YYSYMBOL_USUBPASSINPUT = 334, /* USUBPASSINPUT */ + YYSYMBOL_USUBPASSINPUTMS = 335, /* USUBPASSINPUTMS */ + YYSYMBOL_F16SUBPASSINPUT = 336, /* F16SUBPASSINPUT */ + YYSYMBOL_F16SUBPASSINPUTMS = 337, /* F16SUBPASSINPUTMS */ + YYSYMBOL_SPIRV_INSTRUCTION = 338, /* SPIRV_INSTRUCTION */ + YYSYMBOL_SPIRV_EXECUTION_MODE = 339, /* SPIRV_EXECUTION_MODE */ + YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 340, /* SPIRV_EXECUTION_MODE_ID */ + YYSYMBOL_SPIRV_DECORATE = 341, /* SPIRV_DECORATE */ + YYSYMBOL_SPIRV_DECORATE_ID = 342, /* SPIRV_DECORATE_ID */ + YYSYMBOL_SPIRV_DECORATE_STRING = 343, /* SPIRV_DECORATE_STRING */ + YYSYMBOL_SPIRV_TYPE = 344, /* SPIRV_TYPE */ + YYSYMBOL_SPIRV_STORAGE_CLASS = 345, /* SPIRV_STORAGE_CLASS */ + YYSYMBOL_SPIRV_BY_REFERENCE = 346, /* SPIRV_BY_REFERENCE */ + YYSYMBOL_SPIRV_LITERAL = 347, /* SPIRV_LITERAL */ + YYSYMBOL_ATTACHMENTEXT = 348, /* ATTACHMENTEXT */ + YYSYMBOL_IATTACHMENTEXT = 349, /* IATTACHMENTEXT */ + YYSYMBOL_UATTACHMENTEXT = 350, /* UATTACHMENTEXT */ + YYSYMBOL_LEFT_OP = 351, /* LEFT_OP */ + YYSYMBOL_RIGHT_OP = 352, /* RIGHT_OP */ + YYSYMBOL_INC_OP = 353, /* INC_OP */ + YYSYMBOL_DEC_OP = 354, /* DEC_OP */ + YYSYMBOL_LE_OP = 355, /* LE_OP */ + YYSYMBOL_GE_OP = 356, /* GE_OP */ + YYSYMBOL_EQ_OP = 357, /* EQ_OP */ + YYSYMBOL_NE_OP = 358, /* NE_OP */ + YYSYMBOL_AND_OP = 359, /* AND_OP */ + YYSYMBOL_OR_OP = 360, /* OR_OP */ + YYSYMBOL_XOR_OP = 361, /* XOR_OP */ + YYSYMBOL_MUL_ASSIGN = 362, /* MUL_ASSIGN */ + YYSYMBOL_DIV_ASSIGN = 363, /* DIV_ASSIGN */ + YYSYMBOL_ADD_ASSIGN = 364, /* ADD_ASSIGN */ + YYSYMBOL_MOD_ASSIGN = 365, /* MOD_ASSIGN */ + YYSYMBOL_LEFT_ASSIGN = 366, /* LEFT_ASSIGN */ + YYSYMBOL_RIGHT_ASSIGN = 367, /* RIGHT_ASSIGN */ + YYSYMBOL_AND_ASSIGN = 368, /* AND_ASSIGN */ + YYSYMBOL_XOR_ASSIGN = 369, /* XOR_ASSIGN */ + YYSYMBOL_OR_ASSIGN = 370, /* OR_ASSIGN */ + YYSYMBOL_SUB_ASSIGN = 371, /* SUB_ASSIGN */ + YYSYMBOL_STRING_LITERAL = 372, /* STRING_LITERAL */ + YYSYMBOL_LEFT_PAREN = 373, /* LEFT_PAREN */ + YYSYMBOL_RIGHT_PAREN = 374, /* RIGHT_PAREN */ + YYSYMBOL_LEFT_BRACKET = 375, /* LEFT_BRACKET */ + YYSYMBOL_RIGHT_BRACKET = 376, /* RIGHT_BRACKET */ + YYSYMBOL_LEFT_BRACE = 377, /* LEFT_BRACE */ + YYSYMBOL_RIGHT_BRACE = 378, /* RIGHT_BRACE */ + YYSYMBOL_DOT = 379, /* DOT */ + YYSYMBOL_COMMA = 380, /* COMMA */ + YYSYMBOL_COLON = 381, /* COLON */ + YYSYMBOL_EQUAL = 382, /* EQUAL */ + YYSYMBOL_SEMICOLON = 383, /* SEMICOLON */ + YYSYMBOL_BANG = 384, /* BANG */ + YYSYMBOL_DASH = 385, /* DASH */ + YYSYMBOL_TILDE = 386, /* TILDE */ + YYSYMBOL_PLUS = 387, /* PLUS */ + YYSYMBOL_STAR = 388, /* STAR */ + YYSYMBOL_SLASH = 389, /* SLASH */ + YYSYMBOL_PERCENT = 390, /* PERCENT */ + YYSYMBOL_LEFT_ANGLE = 391, /* LEFT_ANGLE */ + YYSYMBOL_RIGHT_ANGLE = 392, /* RIGHT_ANGLE */ + YYSYMBOL_VERTICAL_BAR = 393, /* VERTICAL_BAR */ + YYSYMBOL_CARET = 394, /* CARET */ + YYSYMBOL_AMPERSAND = 395, /* AMPERSAND */ + YYSYMBOL_QUESTION = 396, /* QUESTION */ + YYSYMBOL_INVARIANT = 397, /* INVARIANT */ + YYSYMBOL_HIGH_PRECISION = 398, /* HIGH_PRECISION */ + YYSYMBOL_MEDIUM_PRECISION = 399, /* MEDIUM_PRECISION */ + YYSYMBOL_LOW_PRECISION = 400, /* LOW_PRECISION */ + YYSYMBOL_PRECISION = 401, /* PRECISION */ + YYSYMBOL_PACKED = 402, /* PACKED */ + YYSYMBOL_RESOURCE = 403, /* RESOURCE */ + YYSYMBOL_SUPERP = 404, /* SUPERP */ + YYSYMBOL_FLOATCONSTANT = 405, /* FLOATCONSTANT */ + YYSYMBOL_INTCONSTANT = 406, /* INTCONSTANT */ + YYSYMBOL_UINTCONSTANT = 407, /* UINTCONSTANT */ + YYSYMBOL_BOOLCONSTANT = 408, /* BOOLCONSTANT */ + YYSYMBOL_IDENTIFIER = 409, /* IDENTIFIER */ + YYSYMBOL_TYPE_NAME = 410, /* TYPE_NAME */ + YYSYMBOL_CENTROID = 411, /* CENTROID */ + YYSYMBOL_IN = 412, /* IN */ + YYSYMBOL_OUT = 413, /* OUT */ + YYSYMBOL_INOUT = 414, /* INOUT */ + YYSYMBOL_STRUCT = 415, /* STRUCT */ + YYSYMBOL_VOID = 416, /* VOID */ + YYSYMBOL_WHILE = 417, /* WHILE */ + YYSYMBOL_BREAK = 418, /* BREAK */ + YYSYMBOL_CONTINUE = 419, /* CONTINUE */ + YYSYMBOL_DO = 420, /* DO */ + YYSYMBOL_ELSE = 421, /* ELSE */ + YYSYMBOL_FOR = 422, /* FOR */ + YYSYMBOL_IF = 423, /* IF */ + YYSYMBOL_DISCARD = 424, /* DISCARD */ + YYSYMBOL_RETURN = 425, /* RETURN */ + YYSYMBOL_SWITCH = 426, /* SWITCH */ + YYSYMBOL_CASE = 427, /* CASE */ + YYSYMBOL_DEFAULT = 428, /* DEFAULT */ + YYSYMBOL_TERMINATE_INVOCATION = 429, /* TERMINATE_INVOCATION */ + YYSYMBOL_TERMINATE_RAY = 430, /* TERMINATE_RAY */ + YYSYMBOL_IGNORE_INTERSECTION = 431, /* IGNORE_INTERSECTION */ + YYSYMBOL_UNIFORM = 432, /* UNIFORM */ + YYSYMBOL_SHARED = 433, /* SHARED */ + YYSYMBOL_BUFFER = 434, /* BUFFER */ + YYSYMBOL_TILEIMAGEEXT = 435, /* TILEIMAGEEXT */ + YYSYMBOL_FLAT = 436, /* FLAT */ + YYSYMBOL_SMOOTH = 437, /* SMOOTH */ + YYSYMBOL_LAYOUT = 438, /* LAYOUT */ + YYSYMBOL_DOUBLECONSTANT = 439, /* DOUBLECONSTANT */ + YYSYMBOL_INT16CONSTANT = 440, /* INT16CONSTANT */ + YYSYMBOL_UINT16CONSTANT = 441, /* UINT16CONSTANT */ + YYSYMBOL_FLOAT16CONSTANT = 442, /* FLOAT16CONSTANT */ + YYSYMBOL_INT32CONSTANT = 443, /* INT32CONSTANT */ + YYSYMBOL_UINT32CONSTANT = 444, /* UINT32CONSTANT */ + YYSYMBOL_INT64CONSTANT = 445, /* INT64CONSTANT */ + YYSYMBOL_UINT64CONSTANT = 446, /* UINT64CONSTANT */ + YYSYMBOL_SUBROUTINE = 447, /* SUBROUTINE */ + YYSYMBOL_DEMOTE = 448, /* DEMOTE */ + YYSYMBOL_FUNCTION = 449, /* FUNCTION */ + YYSYMBOL_PAYLOADNV = 450, /* PAYLOADNV */ + YYSYMBOL_PAYLOADINNV = 451, /* PAYLOADINNV */ + YYSYMBOL_HITATTRNV = 452, /* HITATTRNV */ + YYSYMBOL_CALLDATANV = 453, /* CALLDATANV */ + YYSYMBOL_CALLDATAINNV = 454, /* CALLDATAINNV */ + YYSYMBOL_PAYLOADEXT = 455, /* PAYLOADEXT */ + YYSYMBOL_PAYLOADINEXT = 456, /* PAYLOADINEXT */ + YYSYMBOL_HITATTREXT = 457, /* HITATTREXT */ + YYSYMBOL_CALLDATAEXT = 458, /* CALLDATAEXT */ + YYSYMBOL_CALLDATAINEXT = 459, /* CALLDATAINEXT */ + YYSYMBOL_PATCH = 460, /* PATCH */ + YYSYMBOL_SAMPLE = 461, /* SAMPLE */ + YYSYMBOL_NONUNIFORM = 462, /* NONUNIFORM */ + YYSYMBOL_COHERENT = 463, /* COHERENT */ + YYSYMBOL_VOLATILE = 464, /* VOLATILE */ + YYSYMBOL_RESTRICT = 465, /* RESTRICT */ + YYSYMBOL_READONLY = 466, /* READONLY */ + YYSYMBOL_WRITEONLY = 467, /* WRITEONLY */ + YYSYMBOL_NONTEMPORAL = 468, /* NONTEMPORAL */ + YYSYMBOL_DEVICECOHERENT = 469, /* DEVICECOHERENT */ + YYSYMBOL_QUEUEFAMILYCOHERENT = 470, /* QUEUEFAMILYCOHERENT */ + YYSYMBOL_WORKGROUPCOHERENT = 471, /* WORKGROUPCOHERENT */ + YYSYMBOL_SUBGROUPCOHERENT = 472, /* SUBGROUPCOHERENT */ + YYSYMBOL_NONPRIVATE = 473, /* NONPRIVATE */ + YYSYMBOL_SHADERCALLCOHERENT = 474, /* SHADERCALLCOHERENT */ + YYSYMBOL_NOPERSPECTIVE = 475, /* NOPERSPECTIVE */ + YYSYMBOL_EXPLICITINTERPAMD = 476, /* EXPLICITINTERPAMD */ + YYSYMBOL_PERVERTEXEXT = 477, /* PERVERTEXEXT */ + YYSYMBOL_PERVERTEXNV = 478, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 479, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 480, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 481, /* PERTASKNV */ + YYSYMBOL_PERPRIMITIVEEXT = 482, /* PERPRIMITIVEEXT */ + YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 483, /* TASKPAYLOADWORKGROUPEXT */ + YYSYMBOL_PRECISE = 484, /* PRECISE */ + YYSYMBOL_YYACCEPT = 485, /* $accept */ + YYSYMBOL_variable_identifier = 486, /* variable_identifier */ + YYSYMBOL_primary_expression = 487, /* primary_expression */ + YYSYMBOL_postfix_expression = 488, /* postfix_expression */ + YYSYMBOL_integer_expression = 489, /* integer_expression */ + YYSYMBOL_function_call = 490, /* function_call */ + YYSYMBOL_function_call_or_method = 491, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 492, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 493, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 494, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 495, /* function_call_header */ + YYSYMBOL_function_identifier = 496, /* function_identifier */ + YYSYMBOL_unary_expression = 497, /* unary_expression */ + YYSYMBOL_unary_operator = 498, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 499, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 500, /* additive_expression */ + YYSYMBOL_shift_expression = 501, /* shift_expression */ + YYSYMBOL_relational_expression = 502, /* relational_expression */ + YYSYMBOL_equality_expression = 503, /* equality_expression */ + YYSYMBOL_and_expression = 504, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 505, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 506, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 507, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 508, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 509, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 510, /* conditional_expression */ + YYSYMBOL_511_1 = 511, /* $@1 */ + YYSYMBOL_assignment_expression = 512, /* assignment_expression */ + YYSYMBOL_assignment_operator = 513, /* assignment_operator */ + YYSYMBOL_expression = 514, /* expression */ + YYSYMBOL_constant_expression = 515, /* constant_expression */ + YYSYMBOL_declaration = 516, /* declaration */ + YYSYMBOL_block_structure = 517, /* block_structure */ + YYSYMBOL_518_2 = 518, /* $@2 */ + YYSYMBOL_identifier_list = 519, /* identifier_list */ + YYSYMBOL_function_prototype = 520, /* function_prototype */ + YYSYMBOL_function_declarator = 521, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 522, /* function_header_with_parameters */ + YYSYMBOL_function_header = 523, /* function_header */ + YYSYMBOL_parameter_declarator = 524, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 525, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 526, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 527, /* init_declarator_list */ + YYSYMBOL_single_declaration = 528, /* single_declaration */ + YYSYMBOL_fully_specified_type = 529, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 530, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 531, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 532, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 533, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 534, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 535, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 536, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 537, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 538, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 539, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 540, /* type_name_list */ + YYSYMBOL_type_specifier = 541, /* type_specifier */ + YYSYMBOL_array_specifier = 542, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 543, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 544, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 545, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 546, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 547, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 548, /* struct_specifier */ + YYSYMBOL_549_3 = 549, /* $@3 */ + YYSYMBOL_550_4 = 550, /* $@4 */ + YYSYMBOL_struct_declaration_list = 551, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 552, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 553, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 554, /* struct_declarator */ + YYSYMBOL_initializer = 555, /* initializer */ + YYSYMBOL_initializer_list = 556, /* initializer_list */ + YYSYMBOL_declaration_statement = 557, /* declaration_statement */ + YYSYMBOL_statement = 558, /* statement */ + YYSYMBOL_simple_statement = 559, /* simple_statement */ + YYSYMBOL_demote_statement = 560, /* demote_statement */ + YYSYMBOL_compound_statement = 561, /* compound_statement */ + YYSYMBOL_562_5 = 562, /* $@5 */ + YYSYMBOL_563_6 = 563, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 564, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 565, /* statement_scoped */ + YYSYMBOL_566_7 = 566, /* $@7 */ + YYSYMBOL_567_8 = 567, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 568, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 569, /* statement_list */ + YYSYMBOL_expression_statement = 570, /* expression_statement */ + YYSYMBOL_selection_statement = 571, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 572, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 573, /* selection_rest_statement */ + YYSYMBOL_condition = 574, /* condition */ + YYSYMBOL_switch_statement = 575, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 576, /* switch_statement_nonattributed */ + YYSYMBOL_577_9 = 577, /* $@9 */ + YYSYMBOL_switch_statement_list = 578, /* switch_statement_list */ + YYSYMBOL_case_label = 579, /* case_label */ + YYSYMBOL_iteration_statement = 580, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 581, /* iteration_statement_nonattributed */ + YYSYMBOL_582_10 = 582, /* $@10 */ + YYSYMBOL_583_11 = 583, /* $@11 */ + YYSYMBOL_584_12 = 584, /* $@12 */ + YYSYMBOL_for_init_statement = 585, /* for_init_statement */ + YYSYMBOL_conditionopt = 586, /* conditionopt */ + YYSYMBOL_for_rest_statement = 587, /* for_rest_statement */ + YYSYMBOL_jump_statement = 588, /* jump_statement */ + YYSYMBOL_translation_unit = 589, /* translation_unit */ + YYSYMBOL_external_declaration = 590, /* external_declaration */ + YYSYMBOL_function_definition = 591, /* function_definition */ + YYSYMBOL_592_13 = 592, /* $@13 */ + YYSYMBOL_attribute = 593, /* attribute */ + YYSYMBOL_attribute_list = 594, /* attribute_list */ + YYSYMBOL_single_attribute = 595, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 596, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 597, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 598, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 599, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 600, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 601, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 602, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 603, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 604, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 605, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 606, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 607, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 608, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_id_parameter = 609, /* spirv_decorate_id_parameter */ + YYSYMBOL_spirv_decorate_string_parameter_list = 610, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 611, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 612, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 613, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 614, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 615, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 616 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -750,7 +752,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 754 "MachineIndependent/glslang_tab.cpp" +#line 756 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1072,21 +1074,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 471 +#define YYFINAL 473 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 13688 +#define YYLAST 13744 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 483 +#define YYNTOKENS 485 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 132 /* YYNRULES -- Number of rules. */ -#define YYNRULES 719 +#define YYNRULES 721 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 966 +#define YYNSTATES 968 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 737 +#define YYMAXUTOK 739 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1173,85 +1175,86 @@ static const yytype_int16 yytranslate[] = 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482 + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 361, 361, 367, 370, 375, 378, 381, 385, 388, - 391, 395, 399, 403, 407, 411, 415, 421, 428, 431, - 434, 437, 440, 445, 453, 460, 467, 473, 477, 484, - 487, 493, 511, 536, 544, 549, 576, 584, 590, 594, - 598, 618, 619, 620, 621, 627, 628, 633, 638, 647, - 648, 653, 661, 662, 668, 677, 678, 683, 688, 693, - 701, 702, 711, 723, 724, 733, 734, 743, 744, 753, - 754, 762, 763, 771, 772, 780, 781, 781, 799, 800, - 816, 820, 824, 828, 833, 837, 841, 845, 849, 853, - 857, 864, 867, 878, 885, 890, 897, 902, 907, 914, - 918, 922, 926, 931, 939, 939, 950, 954, 961, 966, - 974, 982, 994, 997, 1004, 1017, 1037, 1044, 1067, 1082, - 1101, 1112, 1123, 1133, 1143, 1153, 1162, 1165, 1169, 1173, - 1178, 1186, 1191, 1196, 1201, 1206, 1215, 1225, 1252, 1261, - 1268, 1275, 1282, 1289, 1297, 1305, 1315, 1325, 1332, 1342, - 1348, 1351, 1358, 1362, 1366, 1374, 1383, 1386, 1397, 1400, - 1403, 1407, 1411, 1415, 1419, 1422, 1427, 1431, 1436, 1444, - 1448, 1453, 1459, 1465, 1472, 1477, 1482, 1490, 1495, 1507, - 1521, 1527, 1532, 1540, 1548, 1556, 1564, 1572, 1580, 1588, - 1596, 1604, 1611, 1618, 1622, 1627, 1632, 1637, 1642, 1647, - 1652, 1656, 1660, 1664, 1668, 1672, 1678, 1684, 1694, 1701, - 1704, 1712, 1719, 1730, 1735, 1743, 1747, 1757, 1760, 1766, - 1772, 1778, 1786, 1796, 1800, 1804, 1808, 1813, 1817, 1822, - 1827, 1832, 1837, 1842, 1847, 1852, 1857, 1862, 1868, 1874, - 1880, 1885, 1890, 1895, 1900, 1905, 1910, 1915, 1920, 1925, - 1930, 1935, 1940, 1947, 1952, 1957, 1962, 1967, 1972, 1977, - 1982, 1987, 1992, 1997, 2002, 2007, 2012, 2017, 2025, 2033, - 2041, 2047, 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, - 2101, 2107, 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, - 2161, 2167, 2173, 2179, 2185, 2191, 2197, 2203, 2209, 2215, - 2221, 2227, 2233, 2239, 2245, 2251, 2257, 2263, 2269, 2275, - 2281, 2287, 2293, 2301, 2309, 2317, 2325, 2333, 2341, 2349, - 2357, 2365, 2373, 2381, 2389, 2395, 2401, 2407, 2413, 2419, - 2425, 2431, 2437, 2443, 2449, 2455, 2461, 2467, 2473, 2479, - 2485, 2491, 2497, 2503, 2509, 2515, 2521, 2527, 2533, 2539, - 2545, 2551, 2557, 2563, 2569, 2575, 2581, 2587, 2593, 2599, - 2605, 2609, 2613, 2617, 2622, 2627, 2632, 2637, 2642, 2647, - 2652, 2657, 2662, 2667, 2672, 2677, 2682, 2687, 2693, 2699, - 2705, 2711, 2717, 2723, 2729, 2735, 2741, 2747, 2753, 2759, - 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, - 2815, 2820, 2825, 2830, 2835, 2840, 2845, 2850, 2855, 2860, - 2865, 2870, 2875, 2880, 2885, 2890, 2895, 2900, 2905, 2910, - 2915, 2920, 2925, 2930, 2936, 2942, 2947, 2952, 2957, 2963, - 2968, 2973, 2978, 2984, 2989, 2994, 2999, 3005, 3010, 3015, - 3020, 3026, 3032, 3038, 3044, 3049, 3055, 3061, 3067, 3072, - 3077, 3082, 3087, 3092, 3098, 3103, 3108, 3113, 3119, 3124, - 3129, 3134, 3140, 3145, 3150, 3155, 3161, 3166, 3171, 3176, - 3182, 3187, 3192, 3197, 3203, 3208, 3213, 3218, 3224, 3229, - 3234, 3239, 3245, 3250, 3255, 3260, 3266, 3271, 3276, 3281, - 3287, 3292, 3297, 3302, 3308, 3313, 3318, 3323, 3329, 3334, - 3339, 3344, 3350, 3355, 3360, 3365, 3371, 3376, 3381, 3386, - 3392, 3397, 3402, 3407, 3412, 3417, 3422, 3427, 3432, 3437, - 3442, 3447, 3452, 3457, 3462, 3467, 3472, 3477, 3482, 3487, - 3492, 3497, 3502, 3507, 3512, 3518, 3524, 3530, 3536, 3542, - 3548, 3554, 3561, 3568, 3574, 3580, 3586, 3592, 3599, 3606, - 3613, 3620, 3625, 3630, 3634, 3640, 3646, 3650, 3654, 3659, - 3675, 3680, 3685, 3693, 3693, 3710, 3710, 3720, 3723, 3736, - 3758, 3785, 3789, 3795, 3800, 3811, 3814, 3820, 3826, 3835, - 3838, 3844, 3848, 3849, 3855, 3856, 3857, 3858, 3859, 3860, - 3861, 3862, 3866, 3874, 3875, 3879, 3875, 3893, 3894, 3898, - 3898, 3905, 3905, 3919, 3922, 3932, 3940, 3951, 3952, 3956, - 3959, 3966, 3973, 3977, 3985, 3989, 4002, 4005, 4012, 4012, - 4032, 4035, 4041, 4053, 4065, 4068, 4076, 4076, 4091, 4091, - 4109, 4109, 4130, 4133, 4139, 4142, 4148, 4152, 4159, 4164, - 4169, 4176, 4179, 4183, 4187, 4191, 4200, 4204, 4213, 4216, - 4219, 4227, 4227, 4269, 4274, 4277, 4282, 4285, 4290, 4293, - 4298, 4301, 4306, 4309, 4314, 4317, 4322, 4326, 4331, 4335, - 4340, 4344, 4351, 4354, 4359, 4362, 4365, 4368, 4371, 4376, - 4385, 4396, 4401, 4409, 4413, 4418, 4422, 4427, 4431, 4436, - 4440, 4447, 4450, 4455, 4458, 4461, 4464, 4469, 4472, 4477, - 4483, 4486, 4489, 4492, 4497, 4501, 4506, 4510, 4515, 4519, - 4526, 4529, 4534, 4537, 4542, 4545, 4551, 4554, 4559, 4562 + 0, 362, 362, 368, 371, 376, 379, 382, 386, 389, + 392, 396, 400, 404, 408, 412, 416, 422, 429, 432, + 435, 438, 441, 446, 454, 461, 468, 474, 478, 485, + 488, 494, 512, 537, 545, 550, 577, 585, 591, 595, + 599, 619, 620, 621, 622, 628, 629, 634, 639, 648, + 649, 654, 662, 663, 669, 678, 679, 684, 689, 694, + 702, 703, 712, 724, 725, 734, 735, 744, 745, 754, + 755, 763, 764, 772, 773, 781, 782, 782, 800, 801, + 817, 821, 825, 829, 834, 838, 842, 846, 850, 854, + 858, 865, 868, 879, 886, 891, 898, 903, 908, 915, + 918, 921, 924, 929, 937, 937, 948, 952, 959, 964, + 972, 980, 992, 995, 1002, 1015, 1035, 1042, 1065, 1080, + 1099, 1110, 1121, 1131, 1141, 1151, 1160, 1163, 1168, 1173, + 1178, 1186, 1191, 1197, 1202, 1207, 1216, 1226, 1253, 1262, + 1269, 1276, 1283, 1290, 1298, 1306, 1316, 1326, 1333, 1343, + 1349, 1352, 1359, 1363, 1367, 1375, 1384, 1387, 1398, 1401, + 1404, 1408, 1412, 1416, 1420, 1423, 1428, 1432, 1437, 1445, + 1449, 1454, 1460, 1466, 1473, 1478, 1483, 1491, 1496, 1508, + 1522, 1528, 1533, 1541, 1549, 1557, 1565, 1573, 1581, 1589, + 1597, 1605, 1613, 1620, 1627, 1631, 1636, 1641, 1646, 1651, + 1656, 1661, 1665, 1669, 1673, 1677, 1681, 1687, 1693, 1703, + 1710, 1713, 1721, 1728, 1739, 1744, 1752, 1756, 1766, 1769, + 1775, 1781, 1787, 1795, 1805, 1809, 1813, 1817, 1822, 1826, + 1831, 1836, 1841, 1846, 1851, 1856, 1861, 1866, 1871, 1877, + 1883, 1889, 1894, 1899, 1904, 1909, 1914, 1919, 1924, 1929, + 1934, 1939, 1944, 1949, 1956, 1961, 1966, 1971, 1976, 1981, + 1986, 1991, 1996, 2001, 2006, 2011, 2016, 2021, 2026, 2034, + 2042, 2050, 2056, 2062, 2068, 2074, 2080, 2086, 2092, 2098, + 2104, 2110, 2116, 2122, 2128, 2134, 2140, 2146, 2152, 2158, + 2164, 2170, 2176, 2182, 2188, 2194, 2200, 2206, 2212, 2218, + 2224, 2230, 2236, 2242, 2248, 2254, 2260, 2266, 2272, 2278, + 2284, 2290, 2296, 2302, 2310, 2318, 2326, 2334, 2342, 2350, + 2358, 2366, 2374, 2382, 2390, 2398, 2404, 2410, 2416, 2422, + 2428, 2434, 2440, 2446, 2452, 2458, 2464, 2470, 2476, 2482, + 2488, 2494, 2500, 2506, 2512, 2518, 2524, 2530, 2536, 2542, + 2548, 2554, 2560, 2566, 2572, 2578, 2584, 2590, 2596, 2602, + 2608, 2614, 2618, 2622, 2626, 2631, 2636, 2641, 2646, 2651, + 2656, 2661, 2666, 2671, 2676, 2681, 2686, 2691, 2696, 2702, + 2708, 2714, 2720, 2726, 2732, 2738, 2744, 2750, 2756, 2762, + 2768, 2774, 2779, 2784, 2789, 2794, 2799, 2804, 2809, 2814, + 2819, 2824, 2829, 2834, 2839, 2844, 2849, 2854, 2859, 2864, + 2869, 2874, 2879, 2884, 2889, 2894, 2899, 2904, 2909, 2914, + 2919, 2924, 2929, 2934, 2939, 2945, 2951, 2956, 2961, 2966, + 2972, 2977, 2982, 2987, 2993, 2998, 3003, 3008, 3014, 3019, + 3024, 3029, 3035, 3041, 3047, 3053, 3058, 3064, 3070, 3076, + 3081, 3086, 3091, 3096, 3101, 3107, 3112, 3117, 3122, 3128, + 3133, 3138, 3143, 3149, 3154, 3159, 3164, 3170, 3175, 3180, + 3185, 3191, 3196, 3201, 3206, 3212, 3217, 3222, 3227, 3233, + 3238, 3243, 3248, 3254, 3259, 3264, 3269, 3275, 3280, 3285, + 3290, 3296, 3301, 3306, 3311, 3317, 3322, 3327, 3332, 3338, + 3343, 3348, 3353, 3359, 3364, 3369, 3374, 3380, 3385, 3390, + 3395, 3401, 3406, 3411, 3416, 3421, 3426, 3431, 3436, 3441, + 3446, 3451, 3456, 3461, 3466, 3471, 3476, 3481, 3486, 3491, + 3496, 3501, 3506, 3511, 3516, 3521, 3527, 3533, 3539, 3545, + 3551, 3557, 3563, 3570, 3577, 3583, 3589, 3595, 3601, 3608, + 3615, 3622, 3629, 3634, 3639, 3643, 3649, 3655, 3659, 3663, + 3667, 3672, 3688, 3693, 3698, 3706, 3706, 3723, 3723, 3733, + 3736, 3749, 3771, 3798, 3802, 3808, 3813, 3824, 3827, 3833, + 3839, 3848, 3851, 3857, 3861, 3862, 3868, 3869, 3870, 3871, + 3872, 3873, 3874, 3875, 3879, 3887, 3888, 3892, 3888, 3906, + 3907, 3911, 3911, 3918, 3918, 3932, 3935, 3945, 3953, 3964, + 3965, 3969, 3972, 3979, 3986, 3990, 3998, 4002, 4011, 4014, + 4021, 4021, 4041, 4044, 4050, 4062, 4074, 4077, 4085, 4085, + 4104, 4104, 4126, 4126, 4147, 4150, 4156, 4159, 4165, 4169, + 4176, 4181, 4186, 4193, 4196, 4200, 4204, 4208, 4217, 4221, + 4230, 4233, 4236, 4244, 4244, 4286, 4291, 4294, 4299, 4302, + 4307, 4310, 4315, 4318, 4323, 4326, 4331, 4334, 4339, 4343, + 4348, 4352, 4357, 4361, 4368, 4371, 4376, 4379, 4382, 4385, + 4388, 4393, 4402, 4413, 4418, 4426, 4430, 4435, 4439, 4444, + 4448, 4453, 4457, 4464, 4467, 4472, 4475, 4478, 4481, 4486, + 4489, 4494, 4500, 4503, 4506, 4509, 4514, 4518, 4523, 4527, + 4532, 4536, 4543, 4546, 4551, 4554, 4559, 4562, 4568, 4571, + 4576, 4579 }; #endif @@ -1299,17 +1302,17 @@ static const char *const yytname[] = "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", - "COOPMAT", "COOPVECNV", "HITOBJECTNV", "HITOBJECTATTRNV", - "TENSORLAYOUTNV", "TENSORVIEWNV", "TENSORARM", "SAMPLERCUBEARRAY", - "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", - "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", - "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", - "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", - "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", - "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", - "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY", - "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D", - "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", + "COOPMAT", "COOPVECNV", "HITOBJECTNV", "HITOBJECTATTRNV", "HITOBJECTEXT", + "HITOBJECTATTREXT", "TENSORLAYOUTNV", "TENSORVIEWNV", "TENSORARM", + "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", + "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", + "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", + "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", + "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", + "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", + "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", + "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", + "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", @@ -1432,12 +1435,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-893) +#define YYPACT_NINF (-894) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-714) +#define YYTABLE_NINF (-716) #define yytable_value_is_error(Yyn) \ 0 @@ -1446,103 +1449,103 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 4809, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -330, -285, -276, -250, -225, -198, - -107, -96, -893, -893, -893, -893, -893, -64, -893, -893, - -893, -893, -893, -93, -893, -893, -893, -893, -893, -329, - -893, -893, -893, -893, -893, -893, -893, -41, -31, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -327, -40, -30, -143, - 8649, -244, -893, -62, -893, -893, -893, -893, 5769, -893, - -893, -893, -893, -46, -893, -893, 969, -893, -893, 8649, - -34, -893, -893, -893, 6249, -59, -251, -153, -152, -148, - -147, -59, -146, -58, 13241, -893, -25, -370, -56, -893, - -326, -893, -23, -20, 6729, -893, -893, -893, 8649, -53, - -52, -893, -279, -893, -19, -134, -893, -893, 11870, -16, - -893, -893, -893, -14, -48, 8649, -893, -21, -18, -17, - -893, -231, -893, -230, -15, -12, -11, -10, -228, -9, - -8, -7, -5, -4, -2, -227, 6, -1, 8, -293, - -893, 1, 8649, -893, 3, -893, -218, -893, -893, -200, - 10042, -893, -322, 1449, -893, -893, -13, -893, -893, -893, - -291, -256, -893, 10499, -255, -893, -44, -893, 11870, 11870, - -893, 11870, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -294, -893, -893, -893, 12, -196, 12327, 14, -893, - 11870, -893, 15, -334, 7, -20, 16, -893, -337, -59, - -893, -6, -893, -341, 17, -142, 11870, -138, -893, -306, - -137, -174, -136, 18, -128, -59, -893, 12784, -893, -127, - 11870, 19, -58, -893, 8649, -3, 7209, -893, 8649, 11870, - -893, -370, -893, 10, -893, -893, -80, -95, -297, -315, - -55, 13, 11, 21, 32, 33, -324, 20, -893, 10956, - -893, 22, -893, -893, 24, 27, 35, -893, 28, 29, - 39, 11413, 31, 11870, 26, 40, 41, 43, 44, -257, - -893, -893, -92, -893, -40, 42, 15, -893, -893, -893, - -893, -893, 1929, -893, -893, -893, -893, -893, -893, -893, - -893, -893, 5289, 37, 10499, 7, 10499, -241, 9128, -893, - -893, 10499, 8649, -893, -893, -893, -195, -893, -893, 11870, - 34, -893, -893, 11870, 61, -893, -893, -893, 11870, -893, - -893, -893, -338, -893, -893, -192, 60, -893, -893, -893, - -893, -893, -893, -188, -893, -187, -893, -893, -184, 64, - -893, -893, -893, -893, -180, -893, -179, -893, -893, -893, - -893, -893, -177, -893, 67, -893, -176, 68, -175, 60, - -893, -259, -172, -893, 76, 77, -893, -893, -3, -16, - -84, -893, -893, -893, 7689, -893, -893, -893, 11870, 11870, - 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, - 11870, 11870, 11870, 11870, 11870, 11870, 11870, -893, -893, -893, - 78, -893, 2409, -893, -893, -893, 2409, -893, 11870, -893, - -893, -83, 11870, -264, -893, -893, -893, -893, -893, -893, - -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, - 11870, 11870, -893, -893, -893, -893, -893, -893, -893, -893, - -893, 10499, -893, -893, -130, -893, 8169, -893, 82, 72, - -893, -893, -893, -893, -893, -150, -140, -893, -328, -893, - -341, -893, -341, -893, 11870, 11870, -893, -306, -893, -306, - -893, -174, -174, -893, 81, 18, -893, 12784, -893, 11870, - -893, -893, -82, 7, -3, -893, -893, -893, -893, -893, - -80, -80, -95, -95, -297, -297, -297, -297, -315, -315, - -55, 13, 11, 21, 32, 33, 11870, -893, 2409, 4329, - -24, 3849, -168, -893, -167, -893, -893, -893, -893, -893, - 9585, -893, -893, -893, 87, -893, 55, -893, -163, -893, - -160, -893, -159, -893, -158, -893, -156, -155, -893, -893, - -893, -45, 84, 72, 54, 90, 93, -893, -893, 4329, - 91, -893, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, 11870, -893, 85, 2889, 11870, -893, 88, 99, - 53, 98, 3369, -893, 101, -893, 10499, -893, -893, -893, - -151, 11870, 2889, 91, -893, -893, 2409, -893, 96, 72, - -893, -893, 2409, 102, -893, -893 + 4827, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -305, -284, -273, -250, + -220, -203, -187, -131, -894, -894, -894, -894, -894, -227, + -894, -894, -894, -894, -894, -59, -894, -894, -894, -894, + -894, -328, -894, -894, -894, -894, -894, -894, -894, -102, + -100, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -342, -217, + -319, -177, 8683, -225, -894, -153, -894, -894, -894, -894, + 5791, -894, -894, -894, -894, -106, -894, -894, 971, -894, + -894, 8683, -92, -894, -894, -894, 6273, -128, -219, -156, + -155, -127, -123, -128, -119, -75, 13295, -894, -68, -369, + -64, -894, -330, -894, -41, -22, 6755, -894, -894, -894, + 8683, -55, -54, -894, -285, -894, -21, -140, -894, -894, + 11918, -18, -894, -894, -894, -16, -50, 8683, -894, -23, + -20, -19, -894, -318, -894, -259, -17, -14, -13, -12, + -231, -11, -10, -9, -8, -7, -5, -230, 6, -4, + 8, -322, -894, -1, 8683, -894, -3, -894, -228, -894, + -894, -212, 10082, -894, -323, 1453, -894, -894, -15, -894, + -894, -894, -281, -256, -894, 10541, -255, -894, -46, -894, + 11918, 11918, -894, 11918, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -316, -894, -894, -894, 10, -209, 12377, + 12, -894, 11918, -894, 13, -294, 3, -22, 14, -894, + -341, -128, -894, -6, -894, -329, 15, -117, 11918, -110, + -894, -139, -109, -148, -108, 16, -104, -128, -894, 12836, + -894, -103, 11918, 17, -75, -894, 8683, -2, 7237, -894, + 8683, 11918, -894, -369, -894, 1, -894, -894, -126, -251, + -234, -320, -130, 7, 11, 21, 30, 31, -321, 18, + -894, 11000, -894, 19, -894, -894, 22, 23, 25, -894, + 27, 28, 32, 11459, 43, 11918, 37, 36, 39, 40, + 41, -257, -894, -894, -136, -894, -217, 53, 13, -894, + -894, -894, -894, -894, 1935, -894, -894, -894, -894, -894, + -894, -894, -894, -894, 5309, 48, 10541, 3, 10541, -243, + 9164, -894, -894, 10541, 8683, -894, -894, -894, -207, -894, + -894, 11918, 26, -894, -894, 11918, 68, -894, -894, -894, + 11918, -894, -894, -894, -326, -894, -894, -200, 61, -894, + -894, -894, -894, -894, -894, -199, -894, -196, -894, -894, + -195, 24, -894, -894, -894, -894, -192, -894, -175, -894, + -894, -894, -894, -894, -174, -894, 64, -894, -173, 67, + -170, 61, -894, -289, -166, -894, 74, 76, -894, -894, + -2, -18, -73, -894, -894, -894, 7719, -894, -894, -894, + 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, + 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, -894, + -894, -894, 20, -894, 2417, -894, -894, -894, 2417, -894, + 11918, -894, -894, -72, 11918, -38, -894, -894, -894, -894, + -894, -894, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, 11918, 11918, -894, -894, -894, -894, -894, -894, + -894, -894, -894, 10541, -894, -894, -132, -894, 8201, -894, + 77, 72, -894, -894, -894, -894, -894, -277, -235, -894, + -324, -894, -329, -894, -329, -894, 11918, 11918, -894, -139, + -894, -139, -894, -148, -148, -894, 82, 16, -894, 12836, + -894, 11918, -894, -894, -45, 3, -2, -894, -894, -894, + -894, -894, -126, -126, -251, -251, -234, -234, -234, -234, + -320, -320, -130, 7, 11, 21, 30, 31, 11918, -894, + 2417, 4345, -26, 3863, -163, -894, -162, -894, -894, -894, + -894, -894, 9623, -894, -894, -894, 83, -894, 52, -894, + -161, -894, -159, -894, -158, -894, -154, -894, -151, -150, + -894, -894, -894, -33, 81, 72, 54, 87, 89, -894, + -894, 4345, 90, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -894, -894, 11918, -894, 84, 2899, 11918, -894, + 85, 97, 55, 96, 3381, -894, 98, -894, 10541, -894, + -894, -894, -149, 11918, 2899, 90, -894, -894, 2417, -894, + 91, 72, -894, -894, 2417, 86, -894, -894 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1550,141 +1553,141 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 169, 227, 225, 226, 224, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 228, 229, 230, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 365, 366, 367, 368, 369, 370, 371, 391, 392, 393, - 394, 395, 396, 397, 406, 419, 420, 407, 408, 410, - 409, 411, 412, 413, 414, 415, 416, 417, 418, 178, - 179, 254, 255, 253, 256, 257, 252, 258, 265, 266, - 263, 264, 261, 262, 259, 260, 297, 298, 299, 309, - 310, 311, 294, 295, 296, 306, 307, 308, 291, 292, - 293, 303, 304, 305, 288, 289, 290, 300, 301, 302, - 267, 268, 269, 312, 313, 314, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 324, 325, - 326, 282, 283, 284, 336, 337, 338, 285, 286, 287, - 348, 349, 350, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 363, - 360, 361, 362, 547, 548, 549, 550, 554, 557, 183, - 551, 552, 555, 375, 376, 399, 402, 364, 373, 374, - 390, 372, 421, 422, 425, 426, 427, 429, 430, 431, - 433, 434, 435, 437, 438, 534, 535, 398, 400, 401, - 377, 378, 379, 423, 380, 384, 385, 388, 428, 432, - 436, 381, 382, 386, 387, 424, 383, 389, 468, 470, - 471, 472, 474, 475, 476, 478, 479, 480, 482, 483, - 484, 486, 487, 488, 490, 491, 492, 494, 495, 496, - 498, 499, 500, 502, 503, 504, 506, 507, 508, 510, - 511, 469, 473, 477, 481, 485, 493, 497, 501, 489, - 505, 509, 512, 513, 514, 515, 516, 517, 518, 519, - 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 403, 404, 405, 439, 448, 450, - 444, 449, 451, 452, 454, 455, 456, 458, 459, 460, - 462, 463, 464, 466, 467, 440, 441, 442, 453, 443, - 445, 446, 447, 457, 461, 465, 539, 540, 543, 544, - 545, 546, 541, 542, 0, 0, 0, 0, 0, 0, - 0, 0, 167, 168, 536, 537, 538, 0, 650, 138, - 560, 561, 562, 0, 559, 173, 171, 172, 170, 0, - 223, 174, 176, 177, 175, 140, 139, 0, 205, 553, - 185, 187, 182, 189, 191, 186, 188, 184, 190, 192, - 180, 181, 208, 193, 200, 201, 202, 203, 204, 194, - 195, 196, 197, 198, 199, 141, 142, 144, 143, 145, - 147, 148, 146, 207, 155, 649, 0, 651, 0, 113, - 112, 0, 126, 131, 162, 161, 159, 163, 0, 156, - 158, 164, 136, 218, 160, 558, 0, 646, 648, 0, - 0, 165, 166, 556, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 565, 0, 0, 0, 99, - 0, 94, 0, 108, 0, 122, 114, 124, 0, 125, - 0, 97, 132, 102, 106, 0, 157, 137, 0, 211, - 217, 1, 647, 0, 0, 0, 96, 0, 0, 0, - 658, 0, 716, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 656, 0, - 654, 0, 0, 563, 152, 154, 0, 150, 209, 0, - 0, 100, 0, 0, 652, 109, 0, 115, 121, 123, - 118, 127, 117, 0, 133, 104, 0, 103, 0, 0, - 9, 0, 43, 42, 44, 41, 5, 6, 7, 8, - 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, - 18, 37, 20, 25, 26, 0, 0, 30, 0, 221, - 0, 36, 220, 0, 212, 110, 0, 95, 0, 0, - 714, 0, 666, 0, 0, 0, 0, 0, 683, 0, - 0, 0, 0, 0, 0, 0, 708, 0, 681, 0, - 0, 0, 0, 98, 0, 0, 0, 567, 0, 0, - 149, 0, 206, 0, 213, 45, 49, 52, 55, 60, - 63, 65, 67, 69, 71, 73, 75, 0, 34, 0, - 101, 594, 603, 607, 0, 0, 0, 628, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, - 78, 91, 0, 581, 0, 164, 136, 584, 605, 583, - 591, 582, 0, 585, 586, 609, 587, 616, 588, 589, - 624, 590, 0, 0, 0, 119, 0, 128, 0, 575, - 135, 0, 0, 107, 38, 39, 0, 22, 23, 0, - 0, 28, 27, 0, 223, 31, 33, 40, 0, 219, - 111, 718, 0, 719, 659, 0, 0, 717, 678, 674, - 675, 676, 677, 0, 672, 0, 93, 679, 0, 0, - 693, 694, 695, 696, 0, 691, 0, 700, 701, 702, - 703, 699, 0, 697, 0, 704, 0, 0, 0, 2, - 712, 218, 0, 710, 0, 0, 653, 655, 0, 573, - 0, 571, 566, 568, 0, 153, 151, 210, 0, 0, + 0, 169, 228, 226, 227, 225, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 229, 230, 231, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 366, 367, 368, 369, 370, 371, 372, 392, 393, 394, + 395, 396, 397, 398, 407, 420, 421, 408, 409, 411, + 410, 412, 413, 414, 415, 416, 417, 418, 419, 178, + 179, 255, 256, 254, 257, 258, 253, 259, 266, 267, + 264, 265, 262, 263, 260, 261, 298, 299, 300, 310, + 311, 312, 295, 296, 297, 307, 308, 309, 292, 293, + 294, 304, 305, 306, 289, 290, 291, 301, 302, 303, + 268, 269, 270, 313, 314, 315, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 325, 326, + 327, 283, 284, 285, 337, 338, 339, 286, 287, 288, + 349, 350, 351, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 328, 329, 330, 331, 332, 333, 334, 335, + 336, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 364, + 361, 362, 363, 548, 549, 550, 551, 555, 558, 183, + 559, 184, 552, 553, 556, 376, 377, 400, 403, 365, + 374, 375, 391, 373, 422, 423, 426, 427, 428, 430, + 431, 432, 434, 435, 436, 438, 439, 535, 536, 399, + 401, 402, 378, 379, 380, 424, 381, 385, 386, 389, + 429, 433, 437, 382, 383, 387, 388, 425, 384, 390, + 469, 471, 472, 473, 475, 476, 477, 479, 480, 481, + 483, 484, 485, 487, 488, 489, 491, 492, 493, 495, + 496, 497, 499, 500, 501, 503, 504, 505, 507, 508, + 509, 511, 512, 470, 474, 478, 482, 486, 494, 498, + 502, 490, 506, 510, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 404, 405, 406, 440, + 449, 451, 445, 450, 452, 453, 455, 456, 457, 459, + 460, 461, 463, 464, 465, 467, 468, 441, 442, 443, + 454, 444, 446, 447, 448, 458, 462, 466, 540, 541, + 544, 545, 546, 547, 542, 543, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 168, 537, 538, 539, 0, + 652, 138, 562, 563, 564, 0, 561, 173, 171, 172, + 170, 0, 224, 174, 176, 177, 175, 140, 139, 0, + 206, 554, 186, 188, 182, 190, 192, 187, 189, 185, + 191, 193, 180, 181, 209, 194, 201, 202, 203, 204, + 205, 195, 196, 197, 198, 199, 200, 141, 142, 144, + 143, 145, 147, 148, 146, 208, 155, 651, 0, 653, + 0, 113, 112, 0, 126, 131, 162, 161, 159, 163, + 0, 156, 158, 164, 136, 219, 160, 560, 0, 648, + 650, 0, 0, 165, 166, 557, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 567, 0, 0, + 0, 99, 0, 94, 0, 108, 0, 122, 114, 124, + 0, 125, 0, 97, 132, 102, 106, 0, 157, 137, + 0, 212, 218, 1, 649, 0, 0, 0, 96, 0, + 0, 0, 660, 0, 718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 76, 214, 215, - 0, 593, 0, 626, 639, 638, 0, 630, 0, 642, - 640, 0, 0, 0, 623, 643, 644, 645, 592, 81, - 82, 84, 83, 86, 87, 88, 89, 90, 85, 80, - 0, 0, 608, 604, 606, 610, 617, 625, 116, 120, - 130, 0, 578, 579, 0, 134, 0, 4, 0, 24, - 21, 32, 222, 662, 664, 0, 0, 715, 0, 668, - 0, 667, 0, 670, 0, 0, 685, 0, 684, 0, - 687, 0, 0, 689, 0, 0, 709, 0, 706, 0, - 682, 657, 0, 574, 0, 569, 564, 46, 47, 48, - 51, 50, 53, 54, 58, 59, 56, 57, 61, 62, - 64, 66, 68, 70, 72, 74, 0, 216, 595, 0, - 0, 0, 0, 641, 0, 622, 79, 92, 129, 576, - 0, 105, 19, 660, 0, 661, 0, 673, 0, 680, - 0, 692, 0, 698, 0, 705, 0, 0, 711, 570, - 572, 0, 0, 614, 0, 0, 0, 633, 632, 635, - 601, 618, 577, 580, 663, 665, 669, 671, 686, 688, - 690, 707, 0, 596, 0, 0, 0, 634, 0, 0, - 613, 0, 0, 611, 0, 77, 0, 598, 627, 597, - 0, 636, 0, 601, 600, 602, 620, 615, 0, 637, - 631, 612, 621, 0, 629, 619 + 658, 0, 656, 0, 0, 565, 152, 154, 0, 150, + 210, 0, 0, 100, 0, 0, 654, 109, 0, 115, + 121, 123, 118, 127, 117, 0, 133, 104, 0, 103, + 0, 0, 9, 0, 43, 42, 44, 41, 5, 6, + 7, 8, 2, 16, 14, 15, 17, 10, 11, 12, + 13, 3, 18, 37, 20, 25, 26, 0, 0, 30, + 0, 222, 0, 36, 221, 0, 213, 110, 0, 95, + 0, 0, 716, 0, 668, 0, 0, 0, 0, 0, + 685, 0, 0, 0, 0, 0, 0, 0, 710, 0, + 683, 0, 0, 0, 0, 98, 0, 0, 0, 569, + 0, 0, 149, 0, 207, 0, 214, 45, 49, 52, + 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, + 34, 0, 101, 596, 605, 609, 0, 0, 0, 630, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 45, 78, 91, 0, 583, 0, 164, 136, 586, + 607, 585, 593, 584, 0, 587, 588, 611, 589, 618, + 590, 591, 626, 592, 0, 0, 0, 119, 0, 128, + 0, 577, 135, 0, 0, 107, 38, 39, 0, 22, + 23, 0, 0, 28, 27, 0, 224, 31, 33, 40, + 0, 220, 111, 720, 0, 721, 661, 0, 0, 719, + 680, 676, 677, 678, 679, 0, 674, 0, 93, 681, + 0, 0, 695, 696, 697, 698, 0, 693, 0, 702, + 703, 704, 705, 701, 0, 699, 0, 706, 0, 0, + 0, 2, 714, 219, 0, 712, 0, 0, 655, 657, + 0, 575, 0, 573, 568, 570, 0, 153, 151, 211, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, + 215, 216, 0, 595, 0, 628, 641, 640, 0, 632, + 0, 644, 642, 0, 0, 0, 625, 645, 646, 647, + 594, 81, 82, 84, 83, 86, 87, 88, 89, 90, + 85, 80, 0, 0, 610, 606, 608, 612, 619, 627, + 116, 120, 130, 0, 580, 581, 0, 134, 0, 4, + 0, 24, 21, 32, 223, 664, 666, 0, 0, 717, + 0, 670, 0, 669, 0, 672, 0, 0, 687, 0, + 686, 0, 689, 0, 0, 691, 0, 0, 711, 0, + 708, 0, 684, 659, 0, 576, 0, 571, 566, 46, + 47, 48, 51, 50, 53, 54, 58, 59, 56, 57, + 61, 62, 64, 66, 68, 70, 72, 74, 0, 217, + 597, 0, 0, 0, 0, 643, 0, 624, 79, 92, + 129, 578, 0, 105, 19, 662, 0, 663, 0, 675, + 0, 682, 0, 694, 0, 700, 0, 707, 0, 0, + 713, 572, 574, 0, 0, 616, 0, 0, 0, 635, + 634, 637, 603, 620, 579, 582, 665, 667, 671, 673, + 688, 690, 692, 709, 0, 598, 0, 0, 0, 636, + 0, 0, 615, 0, 0, 613, 0, 77, 0, 600, + 629, 599, 0, 638, 0, 603, 602, 604, 622, 617, + 0, 639, 633, 614, 623, 0, 631, 621 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -893, -569, -893, -893, -893, -893, -893, -893, -893, -893, - -893, -893, -438, -893, -526, -417, -516, -421, -287, -283, - -282, -284, -280, -278, -893, -503, -893, -509, -893, -504, - -550, 4, -893, -893, -893, 5, -413, -893, -893, 25, - 36, 38, -893, -893, -426, -893, -893, -893, -893, -119, - -893, -409, -387, -893, 9, -893, 0, -452, -893, -893, - -893, -566, 133, -893, -893, -893, -570, -573, -249, -367, - -653, -893, -390, -633, -892, -893, -447, -893, -893, -460, - -458, -893, -893, 45, -748, -383, -893, -162, -893, -420, - -893, -161, -893, -893, -893, -893, -157, -893, -893, -893, - -893, -893, -893, -893, -893, 80, -893, -893, 2, -893, - -89, -272, -449, -893, -893, -893, -325, -321, -331, -893, - -893, -323, -320, -319, -333, -318, -893, -335, -317, -893, - -406, -565 + -894, -569, -894, -894, -894, -894, -894, -894, -894, -894, + -894, -894, -438, -894, -521, -406, -522, -410, -283, -286, + -282, -287, -280, -279, -894, -505, -894, -509, -894, -504, + -559, 4, -894, -894, -894, 5, -419, -894, -894, 33, + 29, 34, -894, -894, -430, -894, -894, -894, -894, -122, + -894, -409, -394, -894, 9, -894, 0, -453, -894, -894, + -894, -579, 127, -894, -894, -894, -570, -577, -252, -372, + -653, -894, -393, -631, -893, -894, -451, -894, -894, -459, + -458, -894, -894, 42, -749, -385, -894, -165, -894, -421, + -894, -157, -894, -894, -894, -894, -147, -894, -894, -894, + -894, -894, -894, -894, -894, 73, -894, -894, 2, -894, + -91, -246, -449, -894, -894, -894, -332, -327, -331, -894, + -894, -333, -325, -335, -317, -337, -894, -338, -315, -894, + -415, -565 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 549, 550, 551, 818, 552, 553, 554, 555, 556, - 557, 558, 639, 560, 606, 607, 608, 609, 610, 611, - 612, 613, 614, 615, 616, 640, 876, 641, 800, 642, - 730, 643, 406, 672, 465, 644, 408, 409, 410, 455, - 456, 457, 411, 412, 413, 414, 415, 416, 506, 507, - 417, 418, 419, 420, 561, 509, 618, 512, 469, 470, - 563, 423, 424, 425, 598, 502, 596, 597, 740, 741, - 670, 814, 647, 648, 649, 650, 651, 772, 912, 948, - 940, 941, 942, 949, 652, 653, 654, 655, 943, 915, - 656, 657, 944, 963, 658, 659, 660, 879, 776, 881, - 919, 938, 939, 661, 426, 427, 428, 452, 662, 499, - 500, 479, 480, 825, 826, 430, 703, 704, 708, 431, - 432, 714, 715, 722, 723, 726, 433, 732, 733, 434, - 481, 482 + 0, 551, 552, 553, 820, 554, 555, 556, 557, 558, + 559, 560, 641, 562, 608, 609, 610, 611, 612, 613, + 614, 615, 616, 617, 618, 642, 878, 643, 802, 644, + 732, 645, 408, 674, 467, 646, 410, 411, 412, 457, + 458, 459, 413, 414, 415, 416, 417, 418, 508, 509, + 419, 420, 421, 422, 563, 511, 620, 514, 471, 472, + 565, 425, 426, 427, 600, 504, 598, 599, 742, 743, + 672, 816, 649, 650, 651, 652, 653, 774, 914, 950, + 942, 943, 944, 951, 654, 655, 656, 657, 945, 917, + 658, 659, 946, 965, 660, 661, 662, 881, 778, 883, + 921, 940, 941, 663, 428, 429, 430, 454, 664, 501, + 502, 481, 482, 827, 828, 432, 705, 706, 710, 433, + 434, 716, 717, 724, 725, 728, 435, 734, 735, 436, + 483, 484 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1692,971 +1695,206 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 422, 458, 429, 474, 405, 407, 697, 617, 474, 421, - 524, 809, 721, 810, 669, 813, 473, 564, 815, 804, - 475, 731, 697, 743, 878, 475, 707, 676, 744, 698, - 559, 466, 823, 691, 766, 495, 692, 504, 755, 756, - 735, 435, 691, 947, 688, 458, 445, 510, 685, 745, - 955, 619, 753, 754, 449, 511, 689, 677, 678, 620, - 947, 505, 699, 700, 701, 702, 824, 693, 665, 667, - 767, 466, 605, 706, 757, 758, 693, -35, 446, 679, - 450, 591, 510, 680, 706, 592, 436, 706, 466, 664, - 674, 675, 522, 594, 510, 437, 706, 710, 711, 712, - 713, 523, 816, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, -713, 801, 885, 770, 510, 619, -713, - 694, 438, 687, 799, 666, 671, 694, 781, 694, 783, - 468, 694, 619, 694, 460, 694, 694, 461, 605, 811, - 694, 570, 572, 880, 578, 586, 439, 571, 573, 605, - 579, 587, 605, 483, 600, 669, 484, 669, 888, 669, - 601, 605, 669, 695, 485, 487, 489, 491, 493, 494, - 497, 743, 602, 440, 821, 819, 682, 817, 603, 728, - 827, 605, 683, 801, 829, 831, 571, 594, 833, 594, - 830, 832, 836, 838, 834, 840, 843, 846, 837, 839, - 848, 841, 844, 847, 920, 921, 849, 466, 962, 926, - 801, 801, 927, 928, 929, 830, 930, 931, 834, 837, - 841, 958, 844, 849, 893, 860, 861, 801, 894, 717, - 718, 719, 720, 540, 895, 454, 474, 923, 896, 864, - 865, 866, 867, 743, 526, 804, 889, 527, 890, 473, - 822, 486, 488, 475, 484, 484, 490, 492, 496, 484, - 484, 484, 705, 594, 441, 484, 709, 716, 724, 484, - 484, 484, 721, 721, 882, 442, 727, 734, 884, 484, - 484, 731, 697, 731, 899, 707, 801, 853, 751, 802, - 752, 886, 887, 957, 854, 801, 854, 855, 883, 909, - 759, 760, 669, 350, 351, 352, 748, 749, 750, 443, - 857, 858, 859, 605, 605, 605, 605, 605, 605, 605, - 605, 605, 605, 605, 605, 605, 605, 605, 605, 804, - 447, 706, 706, 801, 932, 594, 862, 863, 868, 869, - 448, 451, 453, 468, 706, 462, 706, 476, 478, 498, - 503, 508, 513, 347, 520, 521, 525, 510, 565, 566, - 567, 569, 568, 673, 663, 574, 575, 576, 577, 580, - 581, 582, 911, 583, 584, 913, 585, 589, 588, 590, - 619, 669, 593, 599, 681, 686, -34, 522, 725, 764, - 692, 916, 765, 736, 768, 773, 605, 605, 771, 777, - 778, 696, 782, 762, 739, 784, 761, 594, 774, 605, - 459, 605, 763, -36, 808, 913, 775, 747, 467, 421, - 779, 785, 786, 945, 787, 788, 422, 421, 429, 422, - 405, 407, 950, -29, 422, 421, 429, 669, 421, 477, - 828, 820, 835, 421, 501, 842, 845, 959, 850, 851, - 801, 905, 877, 914, 459, 515, 892, 924, 459, 925, - 933, 934, 935, 421, 936, 946, -599, 421, 562, 951, - 475, 952, 953, 621, 870, 467, 956, 964, 965, 871, - 873, 872, 746, 518, 421, 874, 444, 910, 875, 852, - 517, 917, 960, 914, 954, 961, 519, 514, 918, 937, - 805, 806, 595, 737, 900, 807, 472, 898, 903, 897, - 475, 421, 907, 646, 0, 0, 902, 901, 0, 0, - 0, 0, 645, 904, 0, 0, 0, 906, 0, 0, - 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, + 424, 476, 431, 460, 407, 409, 476, 619, 699, 423, + 733, 526, 475, 811, 723, 812, 671, 815, 566, 709, + 817, 745, 477, 806, 699, 880, 468, 477, 497, 678, + 746, 693, 561, 737, 694, 757, 758, 679, 680, 768, + 506, 451, 747, 700, 949, 512, 825, 460, 693, 447, + 687, 957, 621, 513, 593, 455, 572, -35, 594, 681, + 622, 949, 573, 682, 507, 695, 468, 452, 437, 667, + 669, 759, 760, 708, 607, 769, 701, 702, 703, 704, + 826, 448, 695, 468, 708, -715, 690, 708, 524, 438, + 512, -715, 676, 677, 512, 596, 708, 525, 691, 895, + 439, 666, 470, 896, 818, 791, 792, 793, 794, 795, + 796, 797, 798, 799, 800, 574, 772, 755, 756, 512, + 621, 575, 696, 440, 689, 801, 668, 673, 696, 783, + 696, 785, 621, 696, 753, 696, 754, 696, 696, 813, + 607, 897, 696, 580, 588, 898, 602, 882, 445, 581, + 589, 607, 603, 441, 607, 462, 697, 671, 463, 671, + 890, 671, 604, 607, 671, 684, 453, 819, 605, 745, + 442, 685, 730, 803, 829, 831, 823, 821, 833, 835, + 573, 832, 838, 607, 834, 836, 443, 485, 839, 596, + 486, 596, 487, 489, 491, 493, 495, 496, 499, 840, + 842, 845, 468, 456, 848, 841, 843, 846, 850, 964, + 849, 922, 923, 928, 851, 929, 930, 803, 803, 832, + 931, 836, 839, 932, 933, 960, 843, 761, 762, 846, + 851, 803, 862, 863, 476, 866, 867, 868, 869, 925, + 528, 745, 444, 529, 803, 475, 891, 804, 892, 806, + 488, 490, 824, 486, 486, 477, 464, 719, 720, 721, + 722, 542, 750, 751, 752, 596, 712, 713, 714, 715, + 733, 449, 733, 450, 723, 723, 884, 901, 709, 492, + 886, 480, 486, 494, 699, 470, 486, 498, 855, 707, + 486, 478, 486, 888, 889, 959, 711, 718, 726, 486, + 486, 486, 729, 736, 671, 486, 486, 856, 803, 505, + 857, 885, 859, 860, 861, 607, 607, 607, 607, 607, + 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, + 607, 708, 708, 806, 500, 856, 515, 596, 911, 352, + 353, 354, 803, 887, 708, 510, 708, 803, 934, 864, + 865, 870, 871, 349, 522, 523, 527, 512, 567, 568, + 569, 571, 570, 675, 665, 576, 577, 578, 579, 582, + 583, 584, 585, 586, 913, 587, 591, 915, 621, 601, + 590, 592, 595, 671, 683, 688, -34, 524, 727, 766, + 694, 918, 767, 738, 770, 775, 879, 773, 607, 607, + 779, 780, 763, 698, 837, 764, 776, 741, 777, 596, + 749, 607, 461, 607, 765, 781, 784, 915, 786, 787, + 469, 423, 788, 789, 790, 947, -36, 810, 424, 423, + 431, 424, 407, 409, 952, 822, 424, 423, 431, 671, + 423, 479, -29, 830, 844, 423, 503, 847, 852, 961, + 853, 916, 803, 894, 907, 926, 461, 517, 927, 935, + 461, 937, 938, 936, 967, 423, 948, -601, 953, 423, + 564, 954, 477, 623, 966, 958, 955, 469, 873, 875, + 872, 748, 446, 874, 912, 519, 423, 876, 854, 877, + 919, 916, 956, 520, 521, 962, 516, 963, 920, 807, + 939, 474, 900, 739, 597, 899, 902, 808, 904, 906, + 908, 909, 477, 423, 903, 648, 0, 809, 0, 0, + 0, 0, 0, 0, 647, 0, 905, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 690, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 738, 0, 595, 0, 595, 0, - 0, 0, 0, 421, 0, 421, 0, 421, 0, 0, + 0, 0, 0, 0, 0, 0, 740, 0, 597, 0, + 597, 0, 0, 0, 0, 423, 0, 423, 0, 423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, - 0, 645, 422, 0, 0, 0, 0, 0, 0, 0, - 0, 421, 595, 0, 0, 0, 0, 0, 0, 0, - 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 648, 0, 0, 0, 0, 0, + 0, 0, 0, 647, 424, 0, 0, 0, 0, 0, + 0, 0, 0, 423, 597, 0, 0, 0, 0, 0, + 0, 0, 0, 423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 595, 0, 0, 0, 0, 0, - 0, 0, 0, 421, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 597, 0, 0, 0, + 0, 0, 0, 0, 0, 423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 646, 0, 0, 0, 646, 0, 0, 0, - 0, 645, 0, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 648, 0, 0, 0, 648, 0, + 0, 0, 0, 647, 0, 0, 0, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 595, 0, 0, 0, - 0, 0, 0, 0, 0, 421, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 597, 0, + 0, 0, 0, 0, 0, 0, 0, 423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 646, 646, - 0, 646, 0, 429, 0, 0, 0, 645, 645, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, - 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, - 0, 0, 646, 0, 645, 0, 0, 0, 0, 0, - 0, 645, 646, 0, 0, 0, 646, 0, 0, 0, - 0, 645, 646, 0, 0, 645, 0, 0, 0, 471, - 0, 645, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, + 648, 648, 0, 648, 0, 431, 0, 0, 0, 647, + 647, 0, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, - 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 531, 0, 347, 0, 621, 622, 0, 0, 0, 0, - 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, - 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, - 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, - 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, - 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, - 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 531, 0, 347, 0, 621, 803, 0, 0, 0, 0, - 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, - 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, - 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, - 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, - 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, - 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 531, 0, 347, 0, 621, 0, 0, 0, 0, 0, - 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, - 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, - 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, - 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, - 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, - 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 531, 0, 347, 0, 513, 0, 0, 0, 0, 0, - 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, - 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, - 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, - 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, - 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, - 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 531, 0, 347, 0, 0, 0, 0, 0, 0, 0, - 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, - 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, - 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, - 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, - 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, - 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 531, 0, 347, 0, 0, 0, 0, 0, 0, 0, - 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, - 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, - 545, 546, 547, 548, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, - 545, 546, 547, 548, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, + 0, 648, 0, 0, 0, 0, 0, 0, 0, 0, + 647, 0, 0, 0, 0, 0, 0, 648, 0, 0, + 0, 0, 0, 0, 648, 0, 647, 0, 0, 0, + 0, 0, 0, 647, 648, 0, 0, 0, 648, 0, + 0, 0, 0, 647, 648, 0, 0, 647, 0, 0, + 0, 473, 0, 647, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, + 0, 0, 0, 0, 350, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 351, 352, + 353, 354, 355, 0, 0, 0, 0, 0, 0, 0, + 0, 356, 357, 358, 359, 360, 361, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, - 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 363, 364, 365, 366, 367, 368, 369, + 0, 0, 0, 0, 0, 0, 0, 0, 370, 0, + 371, 372, 373, 374, 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, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 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, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 624, 0, 0, 627, 0, 628, - 629, 0, 0, 632, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 0, 0, 0, 0, 464, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 516, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 742, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 891, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 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, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, - 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 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, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 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, 0, - 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, 0, 0, 0, 0, 0, 0, - 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, - 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, - 0, 0, 0, 668, 812, 0, 0, 0, 0, 0, - 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, - 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, - 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, + 0, 0, 0, 0, 0, 532, 533, 0, 349, 0, + 623, 624, 0, 0, 0, 0, 625, 534, 535, 536, + 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 351, 352, 353, 354, 355, 0, 0, 0, 538, 539, + 540, 541, 542, 356, 357, 358, 359, 360, 361, 362, + 626, 627, 628, 629, 0, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 363, 364, 365, 366, 367, + 368, 369, 543, 544, 545, 546, 547, 548, 549, 550, + 370, 640, 371, 372, 373, 374, 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, + 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, @@ -2668,7 +1906,7 @@ static const yytype_int16 yytable[] = 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, 0, 180, 181, 182, + 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, @@ -2684,253 +1922,27 @@ static const yytype_int16 yytable[] = 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, 0, 0, 0, 0, 0, 0, 340, 0, 0, - 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, - 668, 922, 0, 0, 0, 0, 0, 532, 533, 534, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, - 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, - 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 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, 0, 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, 0, 0, - 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, - 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 530, 531, 0, 0, 604, 0, 0, 0, - 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, - 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, - 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 0, 0, 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, - 0, 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, 0, 0, 0, 0, 0, - 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 531, 0, 0, 0, 668, 0, 0, 0, 0, 0, - 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, - 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, - 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0, 340, 0, - 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, - 769, 0, 0, 0, 0, 0, 0, 0, 532, 533, - 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, - 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, - 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, - 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 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, 0, 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, 0, - 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, - 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 530, 531, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 780, 532, 533, 534, 535, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, - 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, - 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 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, 0, 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, 0, 0, 0, 0, - 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, - 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, - 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, - 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 0, 0, 0, 0, 0, 0, 0, 532, 533, 0, + 349, 0, 623, 805, 0, 0, 0, 0, 625, 534, + 535, 536, 537, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 351, 352, 353, 354, 355, 0, 0, 0, + 538, 539, 540, 541, 542, 356, 357, 358, 359, 360, + 361, 362, 626, 627, 628, 629, 0, 630, 631, 632, + 633, 634, 635, 636, 637, 638, 639, 363, 364, 365, + 366, 367, 368, 369, 543, 544, 545, 546, 547, 548, + 549, 550, 370, 640, 371, 372, 373, 374, 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, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, + 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, @@ -2942,7 +1954,7 @@ static const yytype_int16 yytable[] = 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, 0, 180, + 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, @@ -2958,19 +1970,648 @@ static const yytype_int16 yytable[] = 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, 0, 0, 0, 0, 0, 0, 340, - 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 0, 0, + 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, - 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, + 533, 0, 349, 0, 623, 0, 0, 0, 0, 0, + 625, 534, 535, 536, 537, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 351, 352, 353, 354, 355, 0, + 0, 0, 538, 539, 540, 541, 542, 356, 357, 358, + 359, 360, 361, 362, 626, 627, 628, 629, 0, 630, + 631, 632, 633, 634, 635, 636, 637, 638, 639, 363, + 364, 365, 366, 367, 368, 369, 543, 544, 545, 546, + 547, 548, 549, 550, 370, 640, 371, 372, 373, 374, + 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, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 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, + 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, - 359, 684, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 532, 533, 0, 349, 0, 515, 0, 0, 0, + 0, 0, 625, 534, 535, 536, 537, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 351, 352, 353, 354, + 355, 0, 0, 0, 538, 539, 540, 541, 542, 356, + 357, 358, 359, 360, 361, 362, 626, 627, 628, 629, + 0, 630, 631, 632, 633, 634, 635, 636, 637, 638, + 639, 363, 364, 365, 366, 367, 368, 369, 543, 544, + 545, 546, 547, 548, 549, 550, 370, 640, 371, 372, + 373, 374, 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, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 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, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, - 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, + 0, 0, 0, 532, 533, 0, 349, 0, 0, 0, + 0, 0, 0, 0, 625, 534, 535, 536, 537, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 351, 352, + 353, 354, 355, 0, 0, 0, 538, 539, 540, 541, + 542, 356, 357, 358, 359, 360, 361, 362, 626, 627, + 628, 629, 0, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 639, 363, 364, 365, 366, 367, 368, 369, + 543, 544, 545, 546, 547, 548, 549, 550, 370, 640, + 371, 372, 373, 374, 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, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 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, 0, 0, 530, 531, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 532, 533, 0, 349, 0, + 0, 0, 0, 0, 0, 0, 625, 534, 535, 536, + 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 351, 352, 353, 354, 355, 0, 0, 0, 538, 539, + 540, 541, 542, 356, 357, 358, 359, 360, 361, 362, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 363, 364, 365, 366, 367, + 368, 369, 543, 544, 545, 546, 547, 548, 549, 550, + 370, 0, 371, 372, 373, 374, 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, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 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, 0, 0, 0, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 0, 0, 530, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 532, 533, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, + 535, 536, 537, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 351, 352, 353, 354, 0, 0, 0, 0, + 538, 539, 540, 541, 542, 356, 357, 358, 359, 360, + 361, 362, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 363, 364, 365, + 366, 367, 368, 369, 543, 544, 545, 546, 547, 548, + 549, 550, 370, 0, 371, 372, 373, 374, 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, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 349, 0, 0, 0, 0, 0, 0, 0, + 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 351, 352, 353, 354, 355, 0, + 0, 0, 0, 0, 0, 0, 0, 356, 357, 358, + 359, 360, 361, 362, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, + 364, 365, 366, 367, 368, 369, 0, 0, 0, 0, + 0, 0, 0, 0, 370, 0, 371, 372, 373, 374, + 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, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 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, 0, 0, 0, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 351, 352, 353, 354, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, + 357, 358, 359, 360, 361, 362, 626, 0, 0, 629, + 0, 630, 631, 0, 0, 634, 0, 0, 0, 0, + 0, 363, 364, 365, 366, 367, 368, 369, 0, 0, + 0, 0, 0, 0, 0, 0, 370, 0, 371, 372, + 373, 374, 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, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 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, 0, + 0, 0, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 465, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 351, 352, + 353, 354, 0, 0, 0, 0, 0, 0, 0, 0, + 466, 356, 357, 358, 359, 360, 361, 362, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 363, 364, 365, 366, 367, 368, 369, + 0, 0, 0, 0, 0, 0, 0, 0, 370, 0, + 371, 372, 373, 374, 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, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 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, 0, 0, 0, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 351, 352, 353, 354, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 356, 357, 358, 359, 360, 361, 362, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 363, 364, 365, 366, 367, + 368, 369, 0, 0, 0, 0, 0, 0, 0, 0, + 370, 0, 371, 372, 373, 374, 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, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 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, 0, 0, 0, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 518, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 351, 352, 353, 354, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 356, 357, 358, 359, 360, + 361, 362, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 363, 364, 365, + 366, 367, 368, 369, 0, 0, 0, 0, 0, 0, + 0, 0, 370, 0, 371, 372, 373, 374, 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, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 744, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 351, 352, 353, 354, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 356, 357, 358, + 359, 360, 361, 362, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, + 364, 365, 366, 367, 368, 369, 0, 0, 0, 0, + 0, 0, 0, 0, 370, 0, 371, 372, 373, 374, + 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, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 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, 0, 0, 0, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 858, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 351, 352, 353, 354, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, + 357, 358, 359, 360, 361, 362, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 363, 364, 365, 366, 367, 368, 369, 0, 0, + 0, 0, 0, 0, 0, 0, 370, 0, 371, 372, + 373, 374, 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, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 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, 0, + 0, 0, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 893, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 351, 352, + 353, 354, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 356, 357, 358, 359, 360, 361, 362, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 363, 364, 365, 366, 367, 368, 369, + 0, 0, 0, 0, 0, 0, 0, 0, 370, 0, + 371, 372, 373, 374, 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, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 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, 0, 0, 0, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 351, 352, 353, 354, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 356, 357, 358, 359, 360, 361, 362, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 363, 364, 365, 366, 367, + 368, 369, 0, 0, 0, 0, 0, 0, 0, 0, + 370, 0, 371, 372, 373, 374, 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, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -2988,7 +2629,7 @@ static const yytype_int16 yytable[] = 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, 0, 180, 181, 182, 183, + 174, 175, 176, 177, 178, 0, 180, 0, 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, @@ -3004,19 +2645,111 @@ static const yytype_int16 yytable[] = 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, - 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, - 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, + 334, 335, 0, 0, 0, 0, 0, 0, 342, 0, + 0, 0, 346, 347, 348, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 530, 531, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, + 0, 0, 0, 0, 0, 0, 532, 533, 0, 0, + 0, 670, 814, 0, 0, 0, 0, 0, 534, 535, + 536, 537, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 538, + 539, 540, 541, 542, 356, 0, 0, 0, 0, 361, + 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, - 539, 729, 354, 0, 0, 0, 0, 359, 360, 0, + 0, 0, 0, 543, 544, 545, 546, 547, 548, 549, + 550, 0, 0, 371, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 384, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 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, 0, 180, 0, 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, 0, 0, 0, 0, 0, 0, 342, 0, 0, + 0, 346, 347, 348, 0, 0, 530, 531, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 532, 533, 0, 0, 0, + 670, 924, 0, 0, 0, 0, 0, 534, 535, 536, + 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 538, 539, + 540, 541, 542, 356, 0, 0, 0, 0, 361, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, - 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, + 0, 0, 543, 544, 545, 546, 547, 548, 549, 550, + 0, 0, 371, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 384, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 0, 0, 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, 0, 180, 0, 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, + 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, + 346, 347, 348, 0, 0, 530, 531, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 532, 533, 0, 0, 606, 0, + 0, 0, 0, 0, 0, 0, 534, 535, 536, 537, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 538, 539, 540, + 541, 542, 356, 0, 0, 0, 0, 361, 362, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 543, 544, 545, 546, 547, 548, 549, 550, 0, + 0, 371, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 384, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -3034,7 +2767,7 @@ static const yytype_int16 yytable[] = 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, 0, 180, 181, 182, 183, 184, 185, 186, + 177, 178, 0, 180, 0, 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, @@ -3049,125 +2782,163 @@ static const yytype_int16 yytable[] = 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, 0, 0, 0, - 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 0, + 0, 0, 0, 0, 0, 342, 0, 0, 0, 346, + 347, 348, 0, 0, 530, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 532, 533, 0, 0, 0, 670, 0, + 0, 0, 0, 0, 0, 534, 535, 536, 537, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 538, 539, 540, 541, + 542, 356, 0, 0, 0, 0, 361, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 543, 544, 545, 546, 547, 548, 549, 550, 0, 0, + 371, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 384, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 0, 0, 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, 0, 180, 0, 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, 0, 0, + 0, 0, 0, 0, 342, 0, 0, 0, 346, 347, + 348, 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 532, 533, 0, 0, 771, 0, 0, 0, + 0, 0, 0, 0, 534, 535, 536, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 538, 539, 540, 541, 542, + 356, 0, 0, 0, 0, 361, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, - 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 543, + 544, 545, 546, 547, 548, 549, 550, 0, 0, 371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 384, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 0, 0, 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, + 0, 180, 0, 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, 0, 0, 0, + 0, 0, 0, 342, 0, 0, 0, 346, 347, 348, + 0, 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 369 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 410, 0, 429, 0, 0, 571, 510, 434, 0, - 462, 664, 581, 666, 523, 668, 429, 469, 671, 652, - 429, 587, 587, 596, 772, 434, 576, 531, 598, 370, - 468, 418, 370, 370, 358, 441, 373, 407, 353, 354, - 590, 371, 370, 935, 378, 454, 375, 373, 557, 599, - 942, 373, 349, 350, 381, 381, 390, 351, 352, 381, - 952, 431, 403, 404, 405, 406, 404, 404, 520, 521, - 394, 458, 510, 576, 389, 390, 404, 371, 407, 373, - 407, 374, 373, 377, 587, 378, 371, 590, 475, 380, - 528, 529, 371, 502, 373, 371, 599, 403, 404, 405, - 406, 380, 672, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 372, 378, 379, 619, 373, 373, 378, - 569, 371, 560, 380, 380, 380, 575, 631, 577, 633, - 389, 580, 373, 582, 378, 584, 585, 381, 576, 380, - 589, 372, 372, 776, 372, 372, 371, 378, 378, 587, - 378, 378, 590, 404, 372, 664, 407, 666, 811, 668, - 378, 599, 671, 569, 436, 437, 438, 439, 440, 441, - 442, 744, 372, 371, 683, 679, 372, 372, 378, 585, - 372, 619, 378, 378, 372, 372, 378, 596, 372, 598, - 378, 378, 372, 372, 378, 372, 372, 372, 378, 378, - 372, 378, 378, 378, 372, 372, 378, 594, 956, 372, - 378, 378, 372, 372, 372, 378, 372, 372, 378, 378, - 378, 372, 378, 378, 374, 751, 752, 378, 378, 403, - 404, 405, 406, 407, 374, 378, 662, 890, 378, 755, - 756, 757, 758, 816, 378, 878, 376, 381, 378, 662, - 688, 404, 404, 662, 407, 407, 404, 404, 404, 407, - 407, 407, 404, 672, 371, 407, 404, 404, 404, 407, - 407, 407, 841, 842, 778, 371, 404, 404, 782, 407, - 407, 847, 847, 849, 834, 835, 378, 739, 383, 381, - 385, 800, 801, 946, 378, 378, 378, 381, 381, 381, - 355, 356, 811, 396, 397, 398, 386, 387, 388, 373, - 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 962, - 371, 834, 835, 378, 379, 744, 753, 754, 759, 760, - 371, 381, 372, 389, 847, 407, 849, 381, 407, 407, - 375, 407, 375, 373, 407, 407, 375, 373, 372, 407, - 381, 378, 380, 407, 377, 380, 378, 378, 378, 378, - 378, 378, 876, 378, 378, 879, 378, 378, 372, 371, - 373, 890, 381, 380, 372, 371, 371, 371, 370, 357, - 373, 415, 359, 374, 374, 371, 834, 835, 376, 371, - 371, 407, 371, 392, 407, 379, 393, 816, 381, 847, - 410, 849, 391, 371, 377, 919, 381, 407, 418, 410, - 381, 381, 381, 932, 381, 381, 426, 418, 426, 429, - 426, 426, 936, 372, 434, 426, 434, 946, 429, 434, - 380, 407, 378, 434, 444, 378, 378, 951, 372, 372, - 378, 370, 374, 879, 454, 453, 374, 370, 458, 404, - 376, 407, 372, 454, 371, 380, 375, 458, 468, 381, - 879, 372, 419, 375, 761, 475, 375, 381, 376, 762, - 764, 763, 601, 458, 475, 765, 353, 854, 766, 738, - 454, 881, 952, 919, 941, 953, 458, 452, 881, 919, - 662, 662, 502, 592, 835, 662, 426, 832, 841, 830, - 919, 502, 847, 513, -1, -1, 839, 837, -1, -1, - -1, -1, 513, 842, -1, -1, -1, 845, -1, -1, - -1, -1, 849, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 565, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 594, -1, 596, -1, 598, -1, - -1, -1, -1, 594, -1, 596, -1, 598, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 652, -1, -1, -1, -1, -1, -1, -1, - -1, 652, 662, -1, -1, -1, -1, -1, -1, -1, - -1, 662, 672, -1, -1, -1, -1, -1, -1, -1, - -1, 672, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 744, -1, -1, -1, -1, -1, - -1, -1, -1, 744, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 772, -1, -1, -1, 776, -1, -1, -1, - -1, 772, -1, -1, -1, 776, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 816, -1, -1, -1, - -1, -1, -1, -1, -1, 816, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 878, 879, - -1, 881, -1, 881, -1, -1, -1, 878, 879, -1, - 881, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 919, - -1, -1, -1, -1, -1, -1, -1, -1, 919, -1, - -1, -1, -1, -1, -1, 935, -1, -1, -1, -1, - -1, -1, 942, -1, 935, -1, -1, -1, -1, -1, - -1, 942, 952, -1, -1, -1, 956, -1, -1, -1, - -1, 952, 962, -1, -1, 956, -1, -1, -1, 0, - -1, 962, 3, 4, 5, 6, 7, 8, 9, 10, + 0, 532, 533, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 782, 534, 535, 536, 537, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 538, 539, 540, 541, 542, 356, + 0, 0, 0, 0, 361, 362, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 543, 544, + 545, 546, 547, 548, 549, 550, 0, 0, 371, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 384, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 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, 0, + 180, 0, 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, 0, 0, 0, 0, + 0, 0, 342, 0, 0, 0, 346, 347, 348, 0, + 0, 530, 531, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 532, 533, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 534, 535, 536, 537, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 538, 539, 540, 541, 542, 356, 0, + 0, 0, 0, 361, 362, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 543, 544, 545, + 546, 547, 548, 549, 550, 0, 0, 371, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 384, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 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, @@ -3179,8 +2950,8 @@ static const yytype_int16 yycheck[] = 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, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 180, + 0, 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, @@ -3195,796 +2966,26 @@ static const yytype_int16 yycheck[] = 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, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, -1, -1, -1, -1, -1, -1, -1, - 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, - 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 371, -1, 373, -1, 375, 376, -1, -1, -1, -1, - 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, - -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, - 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 371, -1, 373, -1, 375, 376, -1, -1, -1, -1, - 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, - -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, - 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 371, -1, 373, -1, 375, -1, -1, -1, -1, -1, - 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, - -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, - 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 371, -1, 373, -1, 375, -1, -1, -1, -1, -1, - 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, - -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, - 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 371, -1, 373, -1, -1, -1, -1, -1, -1, -1, - 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, - -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, - 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 371, -1, 373, -1, -1, -1, -1, -1, -1, -1, - 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, - -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, - -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, -1, -1, -1, -1, -1, -1, -1, - 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, 415, -1, -1, 418, -1, 420, - 421, -1, -1, 424, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - -1, -1, -1, -1, -1, -1, -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, 395, 396, 397, 398, -1, -1, - -1, -1, -1, -1, -1, -1, 407, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 377, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, - 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, - -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 4, 5, 6, 7, 8, 9, 10, 11, + 331, 332, 333, 334, 335, 0, 0, 0, 0, 0, + 0, 342, 0, 0, 0, 346, 347, 348, 0, 0, + 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, + 533, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 534, 535, 536, 537, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 538, 539, 540, 541, 542, 356, 0, 0, + 0, 0, 361, 686, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 543, 544, 545, 546, + 547, 548, 549, 550, 0, 0, 371, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 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, @@ -3995,7 +2996,7 @@ static const yytype_int16 yycheck[] = 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, -1, + 172, 173, 174, 175, 176, 177, 178, 0, 180, 0, 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, @@ -4011,299 +3012,25 @@ static const yytype_int16 yycheck[] = 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, - 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, - 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, - -1, -1, -1, 375, 376, -1, -1, -1, -1, -1, - 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, - -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, - 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, -1, -1, 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, -1, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, - -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, - 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, - 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, - 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, - -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, -1, 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, -1, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, - -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, - 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 370, 371, -1, -1, 374, -1, -1, -1, - -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, - 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, - 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - -1, -1, 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, - -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, - -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, - 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, - 371, -1, -1, -1, 375, -1, -1, -1, -1, -1, - -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, - -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, - 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 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, -1, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, - -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, - 374, -1, -1, -1, -1, -1, -1, -1, 382, 383, - 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, - 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, - 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, - 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, -1, -1, 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, -1, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, - -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, - 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 370, 371, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, - 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, - 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, -1, 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, -1, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, - -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, - -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 370, 371, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, - -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, - 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 332, 333, 334, 335, 0, 0, 0, 0, 0, 0, + 342, 0, 0, 0, 346, 347, 348, 0, 0, 530, + 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 532, 533, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 534, 535, 536, 537, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 538, 539, 540, 541, 731, 356, 0, 0, 0, + 0, 361, 362, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 543, 544, 545, 546, 547, + 548, 549, 550, 0, 0, 371, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 384, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, + 53, 54, 55, 56, 57, 58, 0, 0, 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, @@ -4315,7 +3042,7 @@ static const yytype_int16 yycheck[] = 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, -1, 182, + 173, 174, 175, 176, 177, 178, 0, 180, 0, 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, @@ -4331,19 +3058,939 @@ static const yytype_int16 yycheck[] = 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, - -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, + 333, 334, 335, 0, 0, 0, 0, 0, 0, 342, + 0, 0, 0, 346, 347, 348, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 356, 0, 0, 0, 0, + 361, 362, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 371 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 431, 0, 412, 0, 0, 436, 512, 573, 0, + 589, 464, 431, 666, 583, 668, 525, 670, 471, 578, + 673, 598, 431, 654, 589, 774, 420, 436, 443, 533, + 600, 372, 470, 592, 375, 355, 356, 353, 354, 360, + 409, 383, 601, 372, 937, 375, 372, 456, 372, 377, + 559, 944, 375, 383, 376, 374, 374, 373, 380, 375, + 383, 954, 380, 379, 433, 406, 460, 409, 373, 522, + 523, 391, 392, 578, 512, 396, 405, 406, 407, 408, + 406, 409, 406, 477, 589, 374, 380, 592, 373, 373, + 375, 380, 530, 531, 375, 504, 601, 382, 392, 376, + 373, 382, 391, 380, 674, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 374, 621, 351, 352, 375, + 375, 380, 571, 373, 562, 382, 382, 382, 577, 633, + 579, 635, 375, 582, 385, 584, 387, 586, 587, 382, + 578, 376, 591, 374, 374, 380, 374, 778, 375, 380, + 380, 589, 380, 373, 592, 380, 571, 666, 383, 668, + 813, 670, 374, 601, 673, 374, 383, 374, 380, 746, + 373, 380, 587, 380, 374, 374, 685, 681, 374, 374, + 380, 380, 374, 621, 380, 380, 373, 406, 380, 598, + 409, 600, 438, 439, 440, 441, 442, 443, 444, 374, + 374, 374, 596, 380, 374, 380, 380, 380, 374, 958, + 380, 374, 374, 374, 380, 374, 374, 380, 380, 380, + 374, 380, 380, 374, 374, 374, 380, 357, 358, 380, + 380, 380, 753, 754, 664, 757, 758, 759, 760, 892, + 380, 818, 373, 383, 380, 664, 378, 383, 380, 880, + 406, 406, 690, 409, 409, 664, 409, 405, 406, 407, + 408, 409, 388, 389, 390, 674, 405, 406, 407, 408, + 849, 373, 851, 373, 843, 844, 780, 836, 837, 406, + 784, 409, 409, 406, 849, 391, 409, 406, 741, 406, + 409, 383, 409, 802, 803, 948, 406, 406, 406, 409, + 409, 409, 406, 406, 813, 409, 409, 380, 380, 377, + 383, 383, 750, 751, 752, 753, 754, 755, 756, 757, + 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, + 768, 836, 837, 964, 409, 380, 377, 746, 383, 398, + 399, 400, 380, 381, 849, 409, 851, 380, 381, 755, + 756, 761, 762, 375, 409, 409, 377, 375, 374, 409, + 383, 380, 382, 409, 379, 382, 380, 380, 380, 380, + 380, 380, 380, 380, 878, 380, 380, 881, 375, 382, + 374, 373, 383, 892, 374, 373, 373, 373, 372, 359, + 375, 417, 361, 376, 376, 373, 376, 378, 836, 837, + 373, 373, 395, 409, 380, 394, 383, 409, 383, 818, + 409, 849, 412, 851, 393, 383, 373, 921, 381, 383, + 420, 412, 383, 383, 383, 934, 373, 379, 428, 420, + 428, 431, 428, 428, 938, 409, 436, 428, 436, 948, + 431, 436, 374, 382, 380, 436, 446, 380, 374, 953, + 374, 881, 380, 376, 372, 372, 456, 455, 406, 378, + 460, 374, 373, 409, 378, 456, 382, 377, 383, 460, + 470, 374, 881, 377, 383, 377, 421, 477, 764, 766, + 763, 603, 355, 765, 856, 456, 477, 767, 740, 768, + 883, 921, 943, 460, 460, 954, 454, 955, 883, 664, + 921, 428, 834, 594, 504, 832, 837, 664, 841, 844, + 847, 849, 921, 504, 839, 515, -1, 664, -1, -1, + -1, -1, -1, -1, 515, -1, 843, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 851, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, - 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, - 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 567, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, - 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 596, -1, 598, -1, + 600, -1, -1, -1, -1, 596, -1, 598, -1, 600, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 654, -1, -1, -1, -1, -1, + -1, -1, -1, 654, 664, -1, -1, -1, -1, -1, + -1, -1, -1, 664, 674, -1, -1, -1, -1, -1, + -1, -1, -1, 674, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 746, -1, -1, -1, + -1, -1, -1, -1, -1, 746, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 774, -1, -1, -1, 778, -1, + -1, -1, -1, 774, -1, -1, -1, 778, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 818, -1, + -1, -1, -1, -1, -1, -1, -1, 818, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 880, 881, -1, 883, -1, 883, -1, -1, -1, 880, + 881, -1, 883, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 921, -1, -1, -1, -1, -1, -1, -1, -1, + 921, -1, -1, -1, -1, -1, -1, 937, -1, -1, + -1, -1, -1, -1, 944, -1, 937, -1, -1, -1, + -1, -1, -1, 944, 954, -1, -1, -1, 958, -1, + -1, -1, -1, 954, 964, -1, -1, 958, -1, -1, + -1, 0, -1, 964, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 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, -1, -1, -1, -1, -1, -1, -1, -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, 383, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 397, 398, + 399, 400, 401, -1, -1, -1, -1, -1, -1, -1, + -1, 410, 411, 412, 413, 414, 415, 416, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 432, 433, 434, 435, 436, 437, 438, + -1, -1, -1, -1, -1, -1, -1, -1, 447, -1, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 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, -1, -1, 353, 354, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 372, 373, -1, 375, -1, + 377, 378, -1, -1, -1, -1, 383, 384, 385, 386, + 387, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 397, 398, 399, 400, 401, -1, -1, -1, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, -1, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 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, -1, -1, 353, 354, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 372, 373, -1, + 375, -1, 377, 378, -1, -1, -1, -1, 383, 384, + 385, 386, 387, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 397, 398, 399, 400, 401, -1, -1, -1, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, -1, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, + 353, 354, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, + 373, -1, 375, -1, 377, -1, -1, -1, -1, -1, + 383, 384, 385, 386, 387, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 397, 398, 399, 400, 401, -1, + -1, -1, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, -1, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, + -1, -1, 353, 354, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 372, 373, -1, 375, -1, 377, -1, -1, -1, + -1, -1, 383, 384, 385, 386, 387, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 397, 398, 399, 400, + 401, -1, -1, -1, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + -1, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 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, -1, -1, 353, 354, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 372, 373, -1, 375, -1, -1, -1, + -1, -1, -1, -1, 383, 384, 385, 386, 387, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 397, 398, + 399, 400, 401, -1, -1, -1, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, -1, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 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, -1, -1, 353, 354, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 372, 373, -1, 375, -1, + -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, + 387, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 397, 398, 399, 400, 401, -1, -1, -1, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 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, -1, -1, -1, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, -1, -1, 353, 354, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 372, 373, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 384, + 385, 386, 387, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 397, 398, 399, 400, -1, -1, -1, -1, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, -1, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, + -1, -1, -1, -1, -1, -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, + 383, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 397, 398, 399, 400, 401, -1, + -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, + 413, 414, 415, 416, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 432, + 433, 434, 435, 436, 437, 438, -1, -1, -1, -1, + -1, -1, -1, -1, 447, -1, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, -1, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 397, 398, 399, 400, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 410, + 411, 412, 413, 414, 415, 416, 417, -1, -1, 420, + -1, 422, 423, -1, -1, 426, -1, -1, -1, -1, + -1, 432, 433, 434, 435, 436, 437, 438, -1, -1, + -1, -1, -1, -1, -1, -1, 447, -1, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 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, -1, + -1, -1, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 383, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 397, 398, + 399, 400, -1, -1, -1, -1, -1, -1, -1, -1, + 409, 410, 411, 412, 413, 414, 415, 416, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 432, 433, 434, 435, 436, 437, 438, + -1, -1, -1, -1, -1, -1, -1, -1, 447, -1, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 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, -1, -1, -1, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, -1, -1, -1, -1, -1, -1, + -1, -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, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 397, 398, 399, 400, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 410, 411, 412, 413, 414, 415, 416, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 432, 433, 434, 435, 436, + 437, 438, -1, -1, -1, -1, -1, -1, -1, -1, + 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 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, -1, -1, -1, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 379, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 397, 398, 399, 400, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 410, 411, 412, 413, 414, + 415, 416, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 432, 433, 434, + 435, 436, 437, 438, -1, -1, -1, -1, -1, -1, + -1, -1, 447, -1, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, -1, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 378, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 397, 398, 399, 400, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, + 413, 414, 415, 416, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 432, + 433, 434, 435, 436, 437, 438, -1, -1, -1, -1, + -1, -1, -1, -1, 447, -1, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 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, -1, -1, -1, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 378, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 397, 398, 399, 400, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 410, + 411, 412, 413, 414, 415, 416, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 432, 433, 434, 435, 436, 437, 438, -1, -1, + -1, -1, -1, -1, -1, -1, 447, -1, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 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, -1, + -1, -1, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 397, 398, + 399, 400, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 410, 411, 412, 413, 414, 415, 416, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 432, 433, 434, 435, 436, 437, 438, + -1, -1, -1, -1, -1, -1, -1, -1, 447, -1, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 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, -1, -1, -1, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 397, 398, 399, 400, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 410, 411, 412, 413, 414, 415, 416, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 432, 433, 434, 435, 436, + 437, 438, -1, -1, -1, -1, -1, -1, -1, -1, + 447, -1, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -4361,7 +4008,7 @@ static const yytype_int16 yycheck[] = 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, -1, 182, 183, 184, 185, + 176, 177, 178, 179, 180, -1, 182, -1, 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, @@ -4377,19 +4024,111 @@ static const yytype_int16 yycheck[] = 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, - 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, + 336, 337, -1, -1, -1, -1, -1, -1, 344, -1, + -1, -1, 348, 349, 350, -1, -1, 353, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 370, 371, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, + -1, -1, -1, -1, -1, -1, 372, 373, -1, -1, + -1, 377, 378, -1, -1, -1, -1, -1, 384, 385, + 386, 387, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 405, + 406, 407, 408, 409, 410, -1, -1, -1, -1, 415, + 416, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, - 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, + -1, -1, -1, 439, 440, 441, 442, 443, 444, 445, + 446, -1, -1, 449, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 462, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 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, -1, 182, -1, 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, -1, -1, -1, -1, -1, -1, 344, -1, -1, + -1, 348, 349, 350, -1, -1, 353, 354, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 372, 373, -1, -1, -1, + 377, 378, -1, -1, -1, -1, -1, 384, 385, 386, + 387, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 405, 406, + 407, 408, 409, 410, -1, -1, -1, -1, 415, 416, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, - -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, + -1, -1, 439, 440, 441, 442, 443, 444, 445, 446, + -1, -1, 449, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 462, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, -1, -1, 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, -1, 182, -1, 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, + -1, -1, -1, -1, -1, -1, 344, -1, -1, -1, + 348, 349, 350, -1, -1, 353, 354, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 372, 373, -1, -1, 376, -1, + -1, -1, -1, -1, -1, -1, 384, 385, 386, 387, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 405, 406, 407, + 408, 409, 410, -1, -1, -1, -1, 415, 416, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 439, 440, 441, 442, 443, 444, 445, 446, -1, + -1, 449, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 462, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, @@ -4407,7 +4146,7 @@ static const yytype_int16 yycheck[] = 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, -1, 182, 183, 184, 185, 186, 187, 188, + 179, 180, -1, 182, -1, 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, @@ -4422,18 +4161,294 @@ static const yytype_int16 yycheck[] = 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, - -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, + 329, 330, 331, 332, 333, 334, 335, 336, 337, -1, + -1, -1, -1, -1, -1, 344, -1, -1, -1, 348, + 349, 350, -1, -1, 353, 354, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 372, 373, -1, -1, -1, 377, -1, + -1, -1, -1, -1, -1, 384, 385, 386, 387, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 405, 406, 407, 408, + 409, 410, -1, -1, -1, -1, 415, 416, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, + 449, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 462, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, -1, -1, 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, -1, 182, -1, 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, -1, -1, + -1, -1, -1, -1, 344, -1, -1, -1, 348, 349, + 350, -1, -1, 353, 354, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 372, 373, -1, -1, 376, -1, -1, -1, + -1, -1, -1, -1, 384, 385, 386, 387, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 405, 406, 407, 408, 409, + 410, -1, -1, -1, -1, 415, 416, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 439, + 440, 441, 442, 443, 444, 445, 446, -1, -1, 449, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 462, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + -1, -1, 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, + -1, 182, -1, 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, -1, -1, -1, + -1, -1, -1, 344, -1, -1, -1, 348, 349, 350, + -1, -1, 353, 354, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 372, 373, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 383, 384, 385, 386, 387, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 405, 406, 407, 408, 409, 410, + -1, -1, -1, -1, 415, 416, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 439, 440, + 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 462, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 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, -1, + 182, -1, 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, -1, -1, -1, -1, + -1, -1, 344, -1, -1, -1, 348, 349, 350, -1, + -1, 353, 354, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 372, 373, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 384, 385, 386, 387, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 405, 406, 407, 408, 409, 410, -1, + -1, -1, -1, 415, 416, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 439, 440, 441, + 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 462, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, + 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, -1, 182, + -1, 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, -1, -1, -1, -1, -1, + -1, 344, -1, -1, -1, 348, 349, 350, -1, -1, + 353, 354, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, + 373, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 384, 385, 386, 387, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 405, 406, 407, 408, 409, 410, -1, -1, + -1, -1, 415, 416, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 439, 440, 441, 442, + 443, 444, 445, 446, -1, -1, 449, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 462, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 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, -1, 182, -1, + 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, -1, -1, -1, -1, -1, -1, + 344, -1, -1, -1, 348, 349, 350, -1, -1, 353, + 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 372, 373, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 384, 385, 386, 387, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 405, 406, 407, 408, 409, 410, -1, -1, -1, + -1, 415, 416, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 439, 440, 441, 442, 443, + 444, 445, 446, -1, -1, 449, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 462, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, -1, -1, 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, -1, 182, -1, 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, -1, -1, -1, -1, -1, -1, 344, + -1, -1, -1, 348, 349, 350, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, - -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 410, -1, -1, -1, -1, + 415, 416, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 447 + -1, -1, -1, -1, 449 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -4474,146 +4489,147 @@ static const yytype_int16 yystos[] = 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, 373, 381, 395, - 396, 397, 398, 399, 408, 409, 410, 411, 412, 413, - 414, 430, 431, 432, 433, 434, 435, 436, 445, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 375, + 383, 397, 398, 399, 400, 401, 410, 411, 412, 413, + 414, 415, 416, 432, 433, 434, 435, 436, 437, 438, + 447, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 514, 515, 518, 519, 520, - 521, 525, 526, 527, 528, 529, 530, 533, 534, 535, - 536, 537, 539, 544, 545, 546, 587, 588, 589, 591, - 598, 602, 603, 609, 612, 371, 371, 371, 371, 371, - 371, 371, 371, 373, 545, 375, 407, 371, 371, 381, - 407, 381, 590, 372, 378, 522, 523, 524, 534, 539, - 378, 381, 407, 381, 407, 517, 535, 539, 389, 541, - 542, 0, 588, 519, 527, 534, 381, 518, 407, 594, - 595, 613, 614, 404, 407, 594, 404, 594, 404, 594, - 404, 594, 404, 594, 594, 613, 404, 594, 407, 592, - 593, 539, 548, 375, 407, 431, 531, 532, 407, 538, - 373, 381, 540, 375, 566, 591, 377, 523, 522, 524, - 407, 407, 371, 380, 540, 375, 378, 381, 351, 352, - 370, 371, 382, 383, 384, 385, 403, 404, 405, 406, - 407, 437, 438, 439, 440, 441, 442, 443, 444, 484, - 485, 486, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 537, 539, 543, 540, 372, 407, 381, 380, 378, - 372, 378, 372, 378, 380, 378, 378, 378, 372, 378, - 378, 378, 378, 378, 378, 378, 372, 378, 372, 378, - 371, 374, 378, 381, 534, 539, 549, 550, 547, 380, - 372, 378, 372, 378, 374, 495, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 539, 373, - 381, 375, 376, 381, 415, 416, 417, 418, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 446, 495, - 508, 510, 512, 514, 518, 537, 539, 555, 556, 557, - 558, 559, 567, 568, 569, 570, 573, 574, 577, 578, - 579, 586, 591, 377, 380, 540, 380, 540, 375, 510, - 553, 380, 516, 407, 495, 495, 512, 351, 352, 373, - 377, 372, 372, 378, 414, 510, 371, 495, 378, 390, - 591, 370, 373, 404, 595, 613, 407, 614, 370, 403, - 404, 405, 406, 599, 600, 404, 508, 513, 601, 404, - 403, 404, 405, 406, 604, 605, 404, 403, 404, 405, - 406, 484, 606, 607, 404, 370, 608, 404, 613, 407, - 513, 544, 610, 611, 404, 513, 374, 593, 539, 407, - 551, 552, 376, 550, 549, 513, 532, 407, 386, 387, - 388, 383, 385, 349, 350, 353, 354, 389, 390, 355, - 356, 393, 392, 391, 357, 359, 358, 394, 374, 374, - 508, 376, 560, 371, 381, 381, 581, 371, 371, 381, - 381, 512, 371, 512, 379, 381, 381, 381, 381, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 380, - 511, 378, 381, 376, 556, 570, 574, 579, 377, 553, - 553, 380, 376, 553, 554, 553, 549, 372, 487, 512, - 407, 510, 495, 370, 404, 596, 597, 372, 380, 372, - 378, 372, 378, 372, 378, 378, 372, 378, 372, 378, - 372, 378, 378, 372, 378, 378, 372, 378, 372, 378, - 372, 372, 551, 540, 378, 381, 376, 495, 495, 495, - 497, 497, 498, 498, 499, 499, 499, 499, 500, 500, - 501, 502, 503, 504, 505, 506, 509, 374, 567, 580, - 556, 582, 512, 381, 512, 379, 510, 510, 553, 376, - 378, 376, 374, 374, 378, 374, 378, 600, 599, 513, - 601, 605, 604, 607, 606, 370, 608, 610, 611, 381, - 552, 512, 561, 512, 527, 572, 415, 555, 568, 583, - 372, 372, 376, 553, 370, 404, 372, 372, 372, 372, - 372, 372, 379, 376, 407, 372, 371, 572, 584, 585, - 563, 564, 565, 571, 575, 510, 380, 557, 562, 566, - 512, 381, 372, 419, 559, 557, 375, 553, 372, 512, - 562, 563, 567, 576, 381, 376 + 478, 479, 480, 481, 482, 483, 484, 516, 517, 520, + 521, 522, 523, 527, 528, 529, 530, 531, 532, 535, + 536, 537, 538, 539, 541, 546, 547, 548, 589, 590, + 591, 593, 600, 604, 605, 611, 614, 373, 373, 373, + 373, 373, 373, 373, 373, 375, 547, 377, 409, 373, + 373, 383, 409, 383, 592, 374, 380, 524, 525, 526, + 536, 541, 380, 383, 409, 383, 409, 519, 537, 541, + 391, 543, 544, 0, 590, 521, 529, 536, 383, 520, + 409, 596, 597, 615, 616, 406, 409, 596, 406, 596, + 406, 596, 406, 596, 406, 596, 596, 615, 406, 596, + 409, 594, 595, 541, 550, 377, 409, 433, 533, 534, + 409, 540, 375, 383, 542, 377, 568, 593, 379, 525, + 524, 526, 409, 409, 373, 382, 542, 377, 380, 383, + 353, 354, 372, 373, 384, 385, 386, 387, 405, 406, + 407, 408, 409, 439, 440, 441, 442, 443, 444, 445, + 446, 486, 487, 488, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 539, 541, 545, 542, 374, 409, 383, + 382, 380, 374, 380, 374, 380, 382, 380, 380, 380, + 374, 380, 380, 380, 380, 380, 380, 380, 374, 380, + 374, 380, 373, 376, 380, 383, 536, 541, 551, 552, + 549, 382, 374, 380, 374, 380, 376, 497, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, + 541, 375, 383, 377, 378, 383, 417, 418, 419, 420, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 448, 497, 510, 512, 514, 516, 520, 539, 541, 557, + 558, 559, 560, 561, 569, 570, 571, 572, 575, 576, + 579, 580, 581, 588, 593, 379, 382, 542, 382, 542, + 377, 512, 555, 382, 518, 409, 497, 497, 514, 353, + 354, 375, 379, 374, 374, 380, 416, 512, 373, 497, + 380, 392, 593, 372, 375, 406, 597, 615, 409, 616, + 372, 405, 406, 407, 408, 601, 602, 406, 510, 515, + 603, 406, 405, 406, 407, 408, 606, 607, 406, 405, + 406, 407, 408, 486, 608, 609, 406, 372, 610, 406, + 615, 409, 515, 546, 612, 613, 406, 515, 376, 595, + 541, 409, 553, 554, 378, 552, 551, 515, 534, 409, + 388, 389, 390, 385, 387, 351, 352, 355, 356, 391, + 392, 357, 358, 395, 394, 393, 359, 361, 360, 396, + 376, 376, 510, 378, 562, 373, 383, 383, 583, 373, + 373, 383, 383, 514, 373, 514, 381, 383, 383, 383, + 383, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 382, 513, 380, 383, 378, 558, 572, 576, 581, + 379, 555, 555, 382, 378, 555, 556, 555, 551, 374, + 489, 514, 409, 512, 497, 372, 406, 598, 599, 374, + 382, 374, 380, 374, 380, 374, 380, 380, 374, 380, + 374, 380, 374, 380, 380, 374, 380, 380, 374, 380, + 374, 380, 374, 374, 553, 542, 380, 383, 378, 497, + 497, 497, 499, 499, 500, 500, 501, 501, 501, 501, + 502, 502, 503, 504, 505, 506, 507, 508, 511, 376, + 569, 582, 558, 584, 514, 383, 514, 381, 512, 512, + 555, 378, 380, 378, 376, 376, 380, 376, 380, 602, + 601, 515, 603, 607, 606, 609, 608, 372, 610, 612, + 613, 383, 554, 514, 563, 514, 529, 574, 417, 557, + 570, 585, 374, 374, 378, 555, 372, 406, 374, 374, + 374, 374, 374, 374, 381, 378, 409, 374, 373, 574, + 586, 587, 565, 566, 567, 573, 577, 512, 382, 559, + 564, 568, 514, 383, 374, 421, 561, 559, 377, 555, + 374, 514, 564, 565, 569, 578, 383, 378 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 483, 484, 485, 485, 485, 485, 485, 485, 485, - 485, 485, 485, 485, 485, 485, 485, 485, 486, 486, - 486, 486, 486, 486, 487, 488, 489, 490, 490, 491, - 491, 492, 492, 493, 494, 494, 494, 495, 495, 495, - 495, 496, 496, 496, 496, 497, 497, 497, 497, 498, - 498, 498, 499, 499, 499, 500, 500, 500, 500, 500, - 501, 501, 501, 502, 502, 503, 503, 504, 504, 505, - 505, 506, 506, 507, 507, 508, 509, 508, 510, 510, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 512, 512, 513, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 516, 515, 517, 517, 518, 518, - 518, 518, 519, 519, 520, 520, 520, 521, 522, 522, - 522, 523, 523, 523, 523, 524, 525, 525, 525, 525, - 525, 526, 526, 526, 526, 526, 527, 527, 528, 529, - 529, 529, 529, 529, 529, 529, 529, 529, 529, 530, - 531, 531, 532, 532, 532, 533, 534, 534, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 537, 538, - 538, 539, 539, 540, 540, 540, 540, 541, 541, 542, - 543, 543, 543, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 545, 545, 545, 547, 546, 548, 546, 549, 549, 550, - 550, 551, 551, 552, 552, 553, 553, 553, 553, 554, - 554, 555, 556, 556, 557, 557, 557, 557, 557, 557, - 557, 557, 558, 559, 560, 561, 559, 562, 562, 564, - 563, 565, 563, 566, 566, 567, 567, 568, 568, 569, - 569, 570, 571, 571, 572, 572, 573, 573, 575, 574, - 576, 576, 577, 577, 578, 578, 580, 579, 581, 579, - 582, 579, 583, 583, 584, 584, 585, 585, 586, 586, - 586, 586, 586, 586, 586, 586, 587, 587, 588, 588, - 588, 590, 589, 591, 592, 592, 593, 593, 594, 594, - 595, 595, 596, 596, 597, 597, 598, 598, 598, 598, - 598, 598, 599, 599, 600, 600, 600, 600, 600, 601, - 601, 602, 602, 603, 603, 603, 603, 603, 603, 603, - 603, 604, 604, 605, 605, 605, 605, 606, 606, 607, - 607, 607, 607, 607, 608, 608, 609, 609, 609, 609, - 610, 610, 611, 611, 612, 612, 613, 613, 614, 614 + 0, 485, 486, 487, 487, 487, 487, 487, 487, 487, + 487, 487, 487, 487, 487, 487, 487, 487, 488, 488, + 488, 488, 488, 488, 489, 490, 491, 492, 492, 493, + 493, 494, 494, 495, 496, 496, 496, 497, 497, 497, + 497, 498, 498, 498, 498, 499, 499, 499, 499, 500, + 500, 500, 501, 501, 501, 502, 502, 502, 502, 502, + 503, 503, 503, 504, 504, 505, 505, 506, 506, 507, + 507, 508, 508, 509, 509, 510, 511, 510, 512, 512, + 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 513, 514, 514, 515, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 518, 517, 519, 519, 520, 520, + 520, 520, 521, 521, 522, 522, 522, 523, 524, 524, + 524, 525, 525, 525, 525, 526, 527, 527, 527, 527, + 527, 528, 528, 528, 528, 528, 529, 529, 530, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 532, + 533, 533, 534, 534, 534, 535, 536, 536, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 539, + 540, 540, 541, 541, 542, 542, 542, 542, 543, 543, + 544, 545, 545, 545, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 547, 547, 547, 549, 548, 550, 548, 551, + 551, 552, 552, 553, 553, 554, 554, 555, 555, 555, + 555, 556, 556, 557, 558, 558, 559, 559, 559, 559, + 559, 559, 559, 559, 560, 561, 562, 563, 561, 564, + 564, 566, 565, 567, 565, 568, 568, 569, 569, 570, + 570, 571, 571, 572, 573, 573, 574, 574, 575, 575, + 577, 576, 578, 578, 579, 579, 580, 580, 582, 581, + 583, 581, 584, 581, 585, 585, 586, 586, 587, 587, + 588, 588, 588, 588, 588, 588, 588, 588, 589, 589, + 590, 590, 590, 592, 591, 593, 594, 594, 595, 595, + 596, 596, 597, 597, 598, 598, 599, 599, 600, 600, + 600, 600, 600, 600, 601, 601, 602, 602, 602, 602, + 602, 603, 603, 604, 604, 605, 605, 605, 605, 605, + 605, 605, 605, 606, 606, 607, 607, 607, 607, 608, + 608, 609, 609, 609, 609, 609, 610, 610, 611, 611, + 611, 611, 612, 612, 613, 613, 614, 614, 615, 615, + 616, 616 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -4639,9 +4655,9 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, - 3, 2, 3, 2, 3, 3, 4, 1, 0, 3, - 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, + 1, 3, 2, 3, 2, 3, 3, 4, 1, 0, + 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4675,22 +4691,23 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 1, - 3, 1, 1, 1, 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, 2, 2, 2, 1, 2, 1, 1, - 1, 0, 3, 5, 1, 3, 1, 4, 1, 3, - 5, 5, 1, 3, 1, 3, 4, 6, 6, 8, - 6, 8, 1, 3, 1, 1, 1, 1, 1, 1, - 3, 4, 6, 4, 6, 6, 8, 6, 8, 6, - 8, 1, 3, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 1, 1, 3, 6, 8, 4, 6, - 1, 3, 1, 1, 4, 6, 1, 3, 3, 3 + 1, 1, 1, 1, 1, 0, 6, 0, 5, 1, + 2, 3, 4, 1, 3, 1, 2, 1, 3, 4, + 2, 1, 3, 1, 1, 1, 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, 2, 2, 2, 1, 2, + 1, 1, 1, 0, 3, 5, 1, 3, 1, 4, + 1, 3, 5, 5, 1, 3, 1, 3, 4, 6, + 6, 8, 6, 8, 1, 3, 1, 1, 1, 1, + 1, 1, 3, 4, 6, 4, 6, 6, 8, 6, + 8, 6, 8, 1, 3, 1, 1, 1, 1, 1, + 3, 1, 1, 1, 1, 1, 1, 3, 6, 8, + 4, 6, 1, 3, 1, 1, 4, 6, 1, 3, + 3, 3 }; @@ -5432,260 +5449,260 @@ yyreduce: switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ -#line 361 "MachineIndependent/glslang.y" +#line 362 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5440 "MachineIndependent/glslang_tab.cpp" +#line 5457 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ -#line 367 "MachineIndependent/glslang.y" +#line 368 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5448 "MachineIndependent/glslang_tab.cpp" +#line 5465 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ -#line 370 "MachineIndependent/glslang.y" +#line 371 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5458 "MachineIndependent/glslang_tab.cpp" +#line 5475 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ -#line 375 "MachineIndependent/glslang.y" +#line 376 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5466 "MachineIndependent/glslang_tab.cpp" - break; - - case 6: /* primary_expression: INTCONSTANT */ -#line 378 "MachineIndependent/glslang.y" - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); - } -#line 5474 "MachineIndependent/glslang_tab.cpp" - break; - - case 7: /* primary_expression: UINTCONSTANT */ -#line 381 "MachineIndependent/glslang.y" - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); - } #line 5483 "MachineIndependent/glslang_tab.cpp" break; - case 8: /* primary_expression: BOOLCONSTANT */ -#line 385 "MachineIndependent/glslang.y" - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); + case 6: /* primary_expression: INTCONSTANT */ +#line 379 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } #line 5491 "MachineIndependent/glslang_tab.cpp" break; - case 9: /* primary_expression: STRING_LITERAL */ -#line 388 "MachineIndependent/glslang.y" - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); + case 7: /* primary_expression: UINTCONSTANT */ +#line 382 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5499 "MachineIndependent/glslang_tab.cpp" +#line 5500 "MachineIndependent/glslang_tab.cpp" break; - case 10: /* primary_expression: INT32CONSTANT */ -#line 391 "MachineIndependent/glslang.y" - { - 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); + case 8: /* primary_expression: BOOLCONSTANT */ +#line 386 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } #line 5508 "MachineIndependent/glslang_tab.cpp" break; + case 9: /* primary_expression: STRING_LITERAL */ +#line 389 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); + } +#line 5516 "MachineIndependent/glslang_tab.cpp" + break; + + case 10: /* primary_expression: INT32CONSTANT */ +#line 392 "MachineIndependent/glslang.y" + { + 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 5525 "MachineIndependent/glslang_tab.cpp" + break; + case 11: /* primary_expression: UINT32CONSTANT */ -#line 395 "MachineIndependent/glslang.y" +#line 396 "MachineIndependent/glslang.y" { 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 5517 "MachineIndependent/glslang_tab.cpp" +#line 5534 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ -#line 399 "MachineIndependent/glslang.y" +#line 400 "MachineIndependent/glslang.y" { 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 5526 "MachineIndependent/glslang_tab.cpp" +#line 5543 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ -#line 403 "MachineIndependent/glslang.y" +#line 404 "MachineIndependent/glslang.y" { 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 5535 "MachineIndependent/glslang_tab.cpp" +#line 5552 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ -#line 407 "MachineIndependent/glslang.y" +#line 408 "MachineIndependent/glslang.y" { 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 5544 "MachineIndependent/glslang_tab.cpp" +#line 5561 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ -#line 411 "MachineIndependent/glslang.y" +#line 412 "MachineIndependent/glslang.y" { 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 5553 "MachineIndependent/glslang_tab.cpp" +#line 5570 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ -#line 415 "MachineIndependent/glslang.y" +#line 416 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) 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 5564 "MachineIndependent/glslang_tab.cpp" +#line 5581 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ -#line 421 "MachineIndependent/glslang.y" +#line 422 "MachineIndependent/glslang.y" { 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 5573 "MachineIndependent/glslang_tab.cpp" +#line 5590 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ -#line 428 "MachineIndependent/glslang.y" +#line 429 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5581 "MachineIndependent/glslang_tab.cpp" +#line 5598 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ -#line 431 "MachineIndependent/glslang.y" +#line 432 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5589 "MachineIndependent/glslang_tab.cpp" +#line 5606 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ -#line 434 "MachineIndependent/glslang.y" +#line 435 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5597 "MachineIndependent/glslang_tab.cpp" +#line 5614 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ -#line 437 "MachineIndependent/glslang.y" +#line 438 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5605 "MachineIndependent/glslang_tab.cpp" +#line 5622 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ -#line 440 "MachineIndependent/glslang.y" +#line 441 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5615 "MachineIndependent/glslang_tab.cpp" +#line 5632 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ -#line 445 "MachineIndependent/glslang.y" +#line 446 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5625 "MachineIndependent/glslang_tab.cpp" +#line 5642 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ -#line 453 "MachineIndependent/glslang.y" +#line 454 "MachineIndependent/glslang.y" { - parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); + parseContext.arrayIndexCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5634 "MachineIndependent/glslang_tab.cpp" - break; - - case 25: /* function_call: function_call_or_method */ -#line 460 "MachineIndependent/glslang.y" - { - (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); - delete (yyvsp[0].interm).function; - } -#line 5643 "MachineIndependent/glslang_tab.cpp" - break; - - case 26: /* function_call_or_method: function_call_generic */ -#line 467 "MachineIndependent/glslang.y" - { - (yyval.interm) = (yyvsp[0].interm); - } #line 5651 "MachineIndependent/glslang_tab.cpp" break; - case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ -#line 473 "MachineIndependent/glslang.y" - { - (yyval.interm) = (yyvsp[-1].interm); - (yyval.interm).loc = (yyvsp[0].lex).loc; + case 25: /* function_call: function_call_or_method */ +#line 461 "MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); + delete (yyvsp[0].interm).function; } #line 5660 "MachineIndependent/glslang_tab.cpp" break; - case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ -#line 477 "MachineIndependent/glslang.y" - { - (yyval.interm) = (yyvsp[-1].interm); - (yyval.interm).loc = (yyvsp[0].lex).loc; + case 26: /* function_call_or_method: function_call_generic */ +#line 468 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[0].interm); } -#line 5669 "MachineIndependent/glslang_tab.cpp" +#line 5668 "MachineIndependent/glslang_tab.cpp" break; - case 29: /* function_call_header_no_parameters: function_call_header VOID */ -#line 484 "MachineIndependent/glslang.y" - { + case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ +#line 474 "MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-1].interm); + (yyval.interm).loc = (yyvsp[0].lex).loc; } #line 5677 "MachineIndependent/glslang_tab.cpp" break; + case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ +#line 478 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-1].interm); + (yyval.interm).loc = (yyvsp[0].lex).loc; + } +#line 5686 "MachineIndependent/glslang_tab.cpp" + break; + + case 29: /* function_call_header_no_parameters: function_call_header VOID */ +#line 485 "MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[-1].interm); + } +#line 5694 "MachineIndependent/glslang_tab.cpp" + break; + case 30: /* function_call_header_no_parameters: function_call_header */ -#line 487 "MachineIndependent/glslang.y" +#line 488 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5685 "MachineIndependent/glslang_tab.cpp" +#line 5702 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ -#line 493 "MachineIndependent/glslang.y" +#line 494 "MachineIndependent/glslang.y" { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed @@ -5704,11 +5721,11 @@ yyreduce: (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } } -#line 5708 "MachineIndependent/glslang_tab.cpp" +#line 5725 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 511 "MachineIndependent/glslang.y" +#line 512 "MachineIndependent/glslang.y" { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed @@ -5731,29 +5748,29 @@ yyreduce: (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } } -#line 5735 "MachineIndependent/glslang_tab.cpp" +#line 5752 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 536 "MachineIndependent/glslang.y" +#line 537 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5743 "MachineIndependent/glslang_tab.cpp" +#line 5760 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 544 "MachineIndependent/glslang.y" +#line 545 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5753 "MachineIndependent/glslang_tab.cpp" +#line 5770 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 549 "MachineIndependent/glslang.y" +#line 550 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -5763,7 +5780,7 @@ yyreduce: TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode(); if (method) { - (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); + (yyval.interm).function = new TFunction(&method->getMethodName(), method->getType(), EOpArrayLength); (yyval.interm).intermNode = method->getObject(); } else { TIntermSymbol* symbol = (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode(); @@ -5781,50 +5798,50 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5785 "MachineIndependent/glslang_tab.cpp" +#line 5802 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 576 "MachineIndependent/glslang.y" +#line 577 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5795 "MachineIndependent/glslang_tab.cpp" +#line 5812 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 584 "MachineIndependent/glslang.y" +#line 585 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5806 "MachineIndependent/glslang_tab.cpp" +#line 5823 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 590 "MachineIndependent/glslang.y" +#line 591 "MachineIndependent/glslang.y" { 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 5815 "MachineIndependent/glslang_tab.cpp" +#line 5832 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 594 "MachineIndependent/glslang.y" +#line 595 "MachineIndependent/glslang.y" { 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 5824 "MachineIndependent/glslang_tab.cpp" +#line 5841 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 598 "MachineIndependent/glslang.y" +#line 599 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5841,179 +5858,179 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5845 "MachineIndependent/glslang_tab.cpp" +#line 5862 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 618 "MachineIndependent/glslang.y" +#line 619 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5851 "MachineIndependent/glslang_tab.cpp" +#line 5868 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 619 "MachineIndependent/glslang.y" +#line 620 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5857 "MachineIndependent/glslang_tab.cpp" +#line 5874 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 620 "MachineIndependent/glslang.y" +#line 621 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5863 "MachineIndependent/glslang_tab.cpp" +#line 5880 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 621 "MachineIndependent/glslang.y" +#line 622 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5870 "MachineIndependent/glslang_tab.cpp" +#line 5887 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 627 "MachineIndependent/glslang.y" +#line 628 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5876 "MachineIndependent/glslang_tab.cpp" +#line 5893 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 628 "MachineIndependent/glslang.y" +#line 629 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5886 "MachineIndependent/glslang_tab.cpp" +#line 5903 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 633 "MachineIndependent/glslang.y" +#line 634 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5896 "MachineIndependent/glslang_tab.cpp" +#line 5913 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 638 "MachineIndependent/glslang.y" +#line 639 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5907 "MachineIndependent/glslang_tab.cpp" +#line 5924 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 647 "MachineIndependent/glslang.y" +#line 648 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5913 "MachineIndependent/glslang_tab.cpp" +#line 5930 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 648 "MachineIndependent/glslang.y" +#line 649 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5923 "MachineIndependent/glslang_tab.cpp" +#line 5940 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 653 "MachineIndependent/glslang.y" +#line 654 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5933 "MachineIndependent/glslang_tab.cpp" - break; - - case 52: /* shift_expression: additive_expression */ -#line 661 "MachineIndependent/glslang.y" - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5939 "MachineIndependent/glslang_tab.cpp" - break; - - case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 662 "MachineIndependent/glslang.y" - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } #line 5950 "MachineIndependent/glslang_tab.cpp" break; + case 52: /* shift_expression: additive_expression */ +#line 662 "MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5956 "MachineIndependent/glslang_tab.cpp" + break; + + case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ +#line 663 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 5967 "MachineIndependent/glslang_tab.cpp" + break; + case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 668 "MachineIndependent/glslang.y" +#line 669 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5961 "MachineIndependent/glslang_tab.cpp" +#line 5978 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 677 "MachineIndependent/glslang.y" +#line 678 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5967 "MachineIndependent/glslang_tab.cpp" +#line 5984 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 678 "MachineIndependent/glslang.y" +#line 679 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5977 "MachineIndependent/glslang_tab.cpp" +#line 5994 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 683 "MachineIndependent/glslang.y" +#line 684 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5987 "MachineIndependent/glslang_tab.cpp" +#line 6004 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 688 "MachineIndependent/glslang.y" +#line 689 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5997 "MachineIndependent/glslang_tab.cpp" +#line 6014 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 693 "MachineIndependent/glslang.y" +#line 694 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 6007 "MachineIndependent/glslang_tab.cpp" +#line 6024 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 701 "MachineIndependent/glslang.y" +#line 702 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6013 "MachineIndependent/glslang_tab.cpp" +#line 6030 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 702 "MachineIndependent/glslang.y" +#line 703 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -6023,11 +6040,11 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 6027 "MachineIndependent/glslang_tab.cpp" +#line 6044 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 711 "MachineIndependent/glslang.y" +#line 712 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -6037,124 +6054,124 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 6041 "MachineIndependent/glslang_tab.cpp" +#line 6058 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 723 "MachineIndependent/glslang.y" +#line 724 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6047 "MachineIndependent/glslang_tab.cpp" +#line 6064 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 724 "MachineIndependent/glslang.y" +#line 725 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 6058 "MachineIndependent/glslang_tab.cpp" +#line 6075 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 733 "MachineIndependent/glslang.y" +#line 734 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6064 "MachineIndependent/glslang_tab.cpp" +#line 6081 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 734 "MachineIndependent/glslang.y" +#line 735 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 6075 "MachineIndependent/glslang_tab.cpp" +#line 6092 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 743 "MachineIndependent/glslang.y" +#line 744 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6081 "MachineIndependent/glslang_tab.cpp" +#line 6098 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 744 "MachineIndependent/glslang.y" +#line 745 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 6092 "MachineIndependent/glslang_tab.cpp" +#line 6109 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 753 "MachineIndependent/glslang.y" +#line 754 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6098 "MachineIndependent/glslang_tab.cpp" +#line 6115 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 754 "MachineIndependent/glslang.y" +#line 755 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 6108 "MachineIndependent/glslang_tab.cpp" +#line 6125 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 762 "MachineIndependent/glslang.y" +#line 763 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6114 "MachineIndependent/glslang_tab.cpp" +#line 6131 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 763 "MachineIndependent/glslang.y" +#line 764 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 6124 "MachineIndependent/glslang_tab.cpp" +#line 6141 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 771 "MachineIndependent/glslang.y" +#line 772 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6130 "MachineIndependent/glslang_tab.cpp" +#line 6147 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 772 "MachineIndependent/glslang.y" +#line 773 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 6140 "MachineIndependent/glslang_tab.cpp" +#line 6157 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 780 "MachineIndependent/glslang.y" +#line 781 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6146 "MachineIndependent/glslang_tab.cpp" +#line 6163 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 781 "MachineIndependent/glslang.y" +#line 782 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 6154 "MachineIndependent/glslang_tab.cpp" +#line 6171 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 784 "MachineIndependent/glslang.y" +#line 785 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -6167,17 +6184,17 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6171 "MachineIndependent/glslang_tab.cpp" +#line 6188 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 799 "MachineIndependent/glslang.y" +#line 800 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6177 "MachineIndependent/glslang_tab.cpp" +#line 6194 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 800 "MachineIndependent/glslang.y" +#line 801 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -6191,119 +6208,119 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 6195 "MachineIndependent/glslang_tab.cpp" +#line 6212 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 816 "MachineIndependent/glslang.y" +#line 817 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 6204 "MachineIndependent/glslang_tab.cpp" +#line 6221 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 820 "MachineIndependent/glslang.y" +#line 821 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 6213 "MachineIndependent/glslang_tab.cpp" +#line 6230 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 824 "MachineIndependent/glslang.y" +#line 825 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 6222 "MachineIndependent/glslang_tab.cpp" +#line 6239 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 828 "MachineIndependent/glslang.y" +#line 829 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 6232 "MachineIndependent/glslang_tab.cpp" +#line 6249 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 833 "MachineIndependent/glslang.y" +#line 834 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 6241 "MachineIndependent/glslang_tab.cpp" +#line 6258 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 837 "MachineIndependent/glslang.y" +#line 838 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 6250 "MachineIndependent/glslang_tab.cpp" +#line 6267 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 841 "MachineIndependent/glslang.y" +#line 842 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6259 "MachineIndependent/glslang_tab.cpp" +#line 6276 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 845 "MachineIndependent/glslang.y" +#line 846 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6268 "MachineIndependent/glslang_tab.cpp" +#line 6285 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 849 "MachineIndependent/glslang.y" +#line 850 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6277 "MachineIndependent/glslang_tab.cpp" +#line 6294 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 853 "MachineIndependent/glslang.y" +#line 854 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6286 "MachineIndependent/glslang_tab.cpp" +#line 6303 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 857 "MachineIndependent/glslang.y" +#line 858 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6295 "MachineIndependent/glslang_tab.cpp" +#line 6312 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 864 "MachineIndependent/glslang.y" +#line 865 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6303 "MachineIndependent/glslang_tab.cpp" +#line 6320 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 867 "MachineIndependent/glslang.y" +#line 868 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -6312,30 +6329,30 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6316 "MachineIndependent/glslang_tab.cpp" +#line 6333 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 878 "MachineIndependent/glslang.y" +#line 879 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6325 "MachineIndependent/glslang_tab.cpp" +#line 6342 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 885 "MachineIndependent/glslang.y" +#line 886 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6335 "MachineIndependent/glslang_tab.cpp" +#line 6352 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 890 "MachineIndependent/glslang.y" +#line 891 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier @@ -6343,31 +6360,31 @@ yyreduce: (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6347 "MachineIndependent/glslang_tab.cpp" +#line 6364 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 897 "MachineIndependent/glslang.y" +#line 898 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6357 "MachineIndependent/glslang_tab.cpp" +#line 6374 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 902 "MachineIndependent/glslang.y" +#line 903 "MachineIndependent/glslang.y" { 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 6367 "MachineIndependent/glslang_tab.cpp" +#line 6384 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 907 "MachineIndependent/glslang.y" +#line 908 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -6375,64 +6392,61 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6379 "MachineIndependent/glslang_tab.cpp" +#line 6396 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ -#line 914 "MachineIndependent/glslang.y" +#line 915 "MachineIndependent/glslang.y" { - parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); } -#line 6388 "MachineIndependent/glslang_tab.cpp" +#line 6404 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ #line 918 "MachineIndependent/glslang.y" { - parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); } -#line 6397 "MachineIndependent/glslang_tab.cpp" +#line 6412 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 922 "MachineIndependent/glslang.y" +#line 921 "MachineIndependent/glslang.y" { - parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); } -#line 6406 "MachineIndependent/glslang_tab.cpp" +#line 6420 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 926 "MachineIndependent/glslang.y" +#line 924 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6416 "MachineIndependent/glslang_tab.cpp" +#line 6430 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier identifier_list SEMICOLON */ -#line 931 "MachineIndependent/glslang.y" +#line 929 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6426 "MachineIndependent/glslang_tab.cpp" +#line 6440 "MachineIndependent/glslang_tab.cpp" break; case 104: /* $@2: %empty */ -#line 939 "MachineIndependent/glslang.y" +#line 937 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6432 "MachineIndependent/glslang_tab.cpp" +#line 6446 "MachineIndependent/glslang_tab.cpp" break; case 105: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 939 "MachineIndependent/glslang.y" +#line 937 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6442,39 +6456,39 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6446 "MachineIndependent/glslang_tab.cpp" +#line 6460 "MachineIndependent/glslang_tab.cpp" break; case 106: /* identifier_list: IDENTIFIER */ -#line 950 "MachineIndependent/glslang.y" +#line 948 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6455 "MachineIndependent/glslang_tab.cpp" +#line 6469 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 954 "MachineIndependent/glslang.y" +#line 952 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6464 "MachineIndependent/glslang_tab.cpp" +#line 6478 "MachineIndependent/glslang_tab.cpp" break; case 108: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 961 "MachineIndependent/glslang.y" +#line 959 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6474 "MachineIndependent/glslang_tab.cpp" +#line 6488 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 966 "MachineIndependent/glslang.y" +#line 964 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6483,11 +6497,11 @@ yyreduce: parseContext.requireExtensions((yyvsp[-1].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6487 "MachineIndependent/glslang_tab.cpp" +#line 6501 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 974 "MachineIndependent/glslang.y" +#line 972 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6496,11 +6510,11 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6500 "MachineIndependent/glslang_tab.cpp" +#line 6514 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 982 "MachineIndependent/glslang.y" +#line 980 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6510,27 +6524,27 @@ yyreduce: parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6514 "MachineIndependent/glslang_tab.cpp" +#line 6528 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_declarator: function_header */ -#line 994 "MachineIndependent/glslang.y" +#line 992 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6522 "MachineIndependent/glslang_tab.cpp" +#line 6536 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header_with_parameters */ -#line 997 "MachineIndependent/glslang.y" +#line 995 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6530 "MachineIndependent/glslang_tab.cpp" +#line 6544 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_header_with_parameters: function_header parameter_declaration */ -#line 1004 "MachineIndependent/glslang.y" +#line 1002 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6544,11 +6558,11 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 6548 "MachineIndependent/glslang_tab.cpp" +#line 6562 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1017 "MachineIndependent/glslang.y" +#line 1015 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6569,20 +6583,20 @@ yyreduce: parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-2].interm.function), (yyvsp[0].interm).param); } } -#line 6573 "MachineIndependent/glslang_tab.cpp" +#line 6587 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA DOT DOT DOT */ -#line 1037 "MachineIndependent/glslang.y" +#line 1035 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[-4].interm.function); parseContext.makeVariadic((yyvsp[-4].interm.function), (yyvsp[-2].lex).loc); } -#line 6582 "MachineIndependent/glslang_tab.cpp" +#line 6596 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1044 "MachineIndependent/glslang.y" +#line 1042 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6602,11 +6616,11 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6606 "MachineIndependent/glslang_tab.cpp" +#line 6620 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1067 "MachineIndependent/glslang.y" +#line 1065 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6622,11 +6636,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6626 "MachineIndependent/glslang_tab.cpp" +#line 6640 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1082 "MachineIndependent/glslang.y" +#line 1080 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6646,21 +6660,21 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6650 "MachineIndependent/glslang_tab.cpp" +#line 6664 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declarator: type_specifier IDENTIFIER EQUAL initializer */ -#line 1101 "MachineIndependent/glslang.y" +#line 1099 "MachineIndependent/glslang.y" { TParameter param = parseContext.getParamWithDefault((yyvsp[-3].interm.type), (yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).param = param; } -#line 6660 "MachineIndependent/glslang_tab.cpp" +#line 6674 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1112 "MachineIndependent/glslang.y" +#line 1110 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6672,11 +6686,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6676 "MachineIndependent/glslang_tab.cpp" +#line 6690 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: parameter_declarator */ -#line 1123 "MachineIndependent/glslang.y" +#line 1121 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6684,11 +6698,11 @@ 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(), (yyval.interm).param.type->hasTypeParameter()); } -#line 6688 "MachineIndependent/glslang_tab.cpp" +#line 6702 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1133 "MachineIndependent/glslang.y" +#line 1131 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6699,11 +6713,11 @@ 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 6703 "MachineIndependent/glslang_tab.cpp" +#line 6717 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_declaration: parameter_type_specifier */ -#line 1143 "MachineIndependent/glslang.y" +#line 1141 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6711,64 +6725,66 @@ 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(), (yyval.interm).param.type->hasTypeParameter()); } -#line 6715 "MachineIndependent/glslang_tab.cpp" +#line 6729 "MachineIndependent/glslang_tab.cpp" break; case 125: /* parameter_type_specifier: type_specifier */ -#line 1153 "MachineIndependent/glslang.y" +#line 1151 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)), {} }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6726 "MachineIndependent/glslang_tab.cpp" +#line 6740 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: single_declaration */ -#line 1162 "MachineIndependent/glslang.y" +#line 1160 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6734 "MachineIndependent/glslang_tab.cpp" +#line 6748 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1165 "MachineIndependent/glslang.y" +#line 1163 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); - parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); + TIntermNode* declNode = parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, declNode, (yyvsp[0].lex).loc); } -#line 6743 "MachineIndependent/glslang_tab.cpp" +#line 6758 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1169 "MachineIndependent/glslang.y" +#line 1168 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); - parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); + TIntermNode* declNode = parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-3].interm).intermNode, declNode, (yyvsp[-1].lex).loc); } -#line 6752 "MachineIndependent/glslang_tab.cpp" +#line 6768 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ #line 1173 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); + TIntermNode* declNode = 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, declNode, (yyvsp[-1].lex).loc); } -#line 6762 "MachineIndependent/glslang_tab.cpp" +#line 6778 "MachineIndependent/glslang_tab.cpp" break; case 130: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ #line 1178 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); + TIntermNode* declNode = 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, declNode, (yyvsp[-1].lex).loc); } -#line 6772 "MachineIndependent/glslang_tab.cpp" +#line 6788 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type */ @@ -6778,51 +6794,52 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6782 "MachineIndependent/glslang_tab.cpp" +#line 6798 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER */ #line 1191 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); - (yyval.interm).intermNode = 0; - parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); + TIntermNode* declNode = parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(nullptr, declNode, (yyvsp[0].lex).loc); + } -#line 6792 "MachineIndependent/glslang_tab.cpp" +#line 6809 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1196 "MachineIndependent/glslang.y" +#line 1197 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); - (yyval.interm).intermNode = 0; - parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); + TIntermNode* declNode = parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(nullptr, declNode, (yyvsp[-1].lex).loc); } -#line 6802 "MachineIndependent/glslang_tab.cpp" +#line 6819 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1201 "MachineIndependent/glslang.y" +#line 1202 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + TIntermNode* declNode = 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(nullptr, declNode, (yyvsp[-3].lex).loc); } -#line 6812 "MachineIndependent/glslang_tab.cpp" +#line 6829 "MachineIndependent/glslang_tab.cpp" break; case 135: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1206 "MachineIndependent/glslang.y" +#line 1207 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + TIntermNode* declNode = 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(nullptr, declNode, (yyvsp[-2].lex).loc); } -#line 6822 "MachineIndependent/glslang_tab.cpp" +#line 6839 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_specifier */ -#line 1215 "MachineIndependent/glslang.y" +#line 1216 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6833,11 +6850,11 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).hasTypeParameter()); } -#line 6837 "MachineIndependent/glslang_tab.cpp" +#line 6854 "MachineIndependent/glslang_tab.cpp" break; case 137: /* fully_specified_type: type_qualifier type_specifier */ -#line 1225 "MachineIndependent/glslang.y" +#line 1226 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6862,22 +6879,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6866 "MachineIndependent/glslang_tab.cpp" +#line 6883 "MachineIndependent/glslang_tab.cpp" break; case 138: /* invariant_qualifier: INVARIANT */ -#line 1252 "MachineIndependent/glslang.y" +#line 1253 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6877 "MachineIndependent/glslang_tab.cpp" +#line 6894 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: SMOOTH */ -#line 1261 "MachineIndependent/glslang.y" +#line 1262 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6885,11 +6902,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6889 "MachineIndependent/glslang_tab.cpp" +#line 6906 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: FLAT */ -#line 1268 "MachineIndependent/glslang.y" +#line 1269 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6897,11 +6914,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6901 "MachineIndependent/glslang_tab.cpp" +#line 6918 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1275 "MachineIndependent/glslang.y" +#line 1276 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6909,11 +6926,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6913 "MachineIndependent/glslang_tab.cpp" +#line 6930 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1282 "MachineIndependent/glslang.y" +#line 1283 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6921,11 +6938,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6925 "MachineIndependent/glslang_tab.cpp" +#line 6942 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXNV */ -#line 1289 "MachineIndependent/glslang.y" +#line 1290 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6934,11 +6951,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6938 "MachineIndependent/glslang_tab.cpp" +#line 6955 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1297 "MachineIndependent/glslang.y" +#line 1298 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6947,11 +6964,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6951 "MachineIndependent/glslang_tab.cpp" +#line 6968 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1305 "MachineIndependent/glslang.y" +#line 1306 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6962,11 +6979,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6966 "MachineIndependent/glslang_tab.cpp" +#line 6983 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1315 "MachineIndependent/glslang.y" +#line 1316 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6977,11 +6994,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6981 "MachineIndependent/glslang_tab.cpp" +#line 6998 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERVIEWNV */ -#line 1325 "MachineIndependent/glslang.y" +#line 1326 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6989,11 +7006,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6993 "MachineIndependent/glslang_tab.cpp" +#line 7010 "MachineIndependent/glslang_tab.cpp" break; case 148: /* interpolation_qualifier: PERTASKNV */ -#line 1332 "MachineIndependent/glslang.y" +#line 1333 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -7001,84 +7018,84 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 7005 "MachineIndependent/glslang_tab.cpp" +#line 7022 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1342 "MachineIndependent/glslang.y" +#line 1343 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 7013 "MachineIndependent/glslang_tab.cpp" +#line 7030 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1348 "MachineIndependent/glslang.y" +#line 1349 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 7021 "MachineIndependent/glslang_tab.cpp" +#line 7038 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1351 "MachineIndependent/glslang.y" +#line 1352 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 7031 "MachineIndependent/glslang_tab.cpp" +#line 7048 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER */ -#line 1358 "MachineIndependent/glslang.y" +#line 1359 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 7040 "MachineIndependent/glslang_tab.cpp" +#line 7057 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1362 "MachineIndependent/glslang.y" +#line 1363 "MachineIndependent/glslang.y" { (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 7049 "MachineIndependent/glslang_tab.cpp" +#line 7066 "MachineIndependent/glslang_tab.cpp" break; case 154: /* layout_qualifier_id: SHARED */ -#line 1366 "MachineIndependent/glslang.y" +#line 1367 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 7059 "MachineIndependent/glslang_tab.cpp" +#line 7076 "MachineIndependent/glslang_tab.cpp" break; case 155: /* precise_qualifier: PRECISE */ -#line 1374 "MachineIndependent/glslang.y" +#line 1375 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 7070 "MachineIndependent/glslang_tab.cpp" +#line 7087 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: single_type_qualifier */ -#line 1383 "MachineIndependent/glslang.y" +#line 1384 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 7078 "MachineIndependent/glslang_tab.cpp" +#line 7095 "MachineIndependent/glslang_tab.cpp" break; case 157: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1386 "MachineIndependent/glslang.y" +#line 1387 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -7087,151 +7104,151 @@ 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 7091 "MachineIndependent/glslang_tab.cpp" +#line 7108 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: storage_qualifier */ -#line 1397 "MachineIndependent/glslang.y" +#line 1398 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 7099 "MachineIndependent/glslang_tab.cpp" - break; - - case 159: /* single_type_qualifier: layout_qualifier */ -#line 1400 "MachineIndependent/glslang.y" - { - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 7107 "MachineIndependent/glslang_tab.cpp" - break; - - case 160: /* single_type_qualifier: precision_qualifier */ -#line 1403 "MachineIndependent/glslang.y" - { - parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); - (yyval.interm.type) = (yyvsp[0].interm.type); - } #line 7116 "MachineIndependent/glslang_tab.cpp" break; + case 159: /* single_type_qualifier: layout_qualifier */ +#line 1401 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 7124 "MachineIndependent/glslang_tab.cpp" + break; + + case 160: /* single_type_qualifier: precision_qualifier */ +#line 1404 "MachineIndependent/glslang.y" + { + parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 7133 "MachineIndependent/glslang_tab.cpp" + break; + case 161: /* single_type_qualifier: interpolation_qualifier */ -#line 1407 "MachineIndependent/glslang.y" +#line 1408 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 7125 "MachineIndependent/glslang_tab.cpp" +#line 7142 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: invariant_qualifier */ -#line 1411 "MachineIndependent/glslang.y" +#line 1412 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 7134 "MachineIndependent/glslang_tab.cpp" - break; - - case 163: /* single_type_qualifier: precise_qualifier */ -#line 1415 "MachineIndependent/glslang.y" - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 7143 "MachineIndependent/glslang_tab.cpp" - break; - - case 164: /* single_type_qualifier: non_uniform_qualifier */ -#line 1419 "MachineIndependent/glslang.y" - { - (yyval.interm.type) = (yyvsp[0].interm.type); - } #line 7151 "MachineIndependent/glslang_tab.cpp" break; + case 163: /* single_type_qualifier: precise_qualifier */ +#line 1416 "MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 7160 "MachineIndependent/glslang_tab.cpp" + break; + + case 164: /* single_type_qualifier: non_uniform_qualifier */ +#line 1420 "MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 7168 "MachineIndependent/glslang_tab.cpp" + break; + case 165: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1422 "MachineIndependent/glslang.y" +#line 1423 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 7161 "MachineIndependent/glslang_tab.cpp" +#line 7178 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1427 "MachineIndependent/glslang.y" +#line 1428 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 7170 "MachineIndependent/glslang_tab.cpp" +#line 7187 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1431 "MachineIndependent/glslang.y" +#line 1432 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 7180 "MachineIndependent/glslang_tab.cpp" +#line 7197 "MachineIndependent/glslang_tab.cpp" break; case 168: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1436 "MachineIndependent/glslang.y" +#line 1437 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 7190 "MachineIndependent/glslang_tab.cpp" +#line 7207 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: CONST */ -#line 1444 "MachineIndependent/glslang.y" +#line 1445 "MachineIndependent/glslang.y" { (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 7199 "MachineIndependent/glslang_tab.cpp" +#line 7216 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: INOUT */ -#line 1448 "MachineIndependent/glslang.y" +#line 1449 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 7209 "MachineIndependent/glslang_tab.cpp" +#line 7226 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: IN */ -#line 1453 "MachineIndependent/glslang.y" +#line 1454 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 7220 "MachineIndependent/glslang_tab.cpp" +#line 7237 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: OUT */ -#line 1459 "MachineIndependent/glslang.y" +#line 1460 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 7231 "MachineIndependent/glslang_tab.cpp" +#line 7248 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: CENTROID */ -#line 1465 "MachineIndependent/glslang.y" +#line 1466 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -7239,31 +7256,31 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 7243 "MachineIndependent/glslang_tab.cpp" +#line 7260 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: UNIFORM */ -#line 1472 "MachineIndependent/glslang.y" +#line 1473 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 7253 "MachineIndependent/glslang_tab.cpp" +#line 7270 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: TILEIMAGEEXT */ -#line 1477 "MachineIndependent/glslang.y" +#line 1478 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 7263 "MachineIndependent/glslang_tab.cpp" +#line 7280 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: SHARED */ -#line 1482 "MachineIndependent/glslang.y" +#line 1483 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -7272,21 +7289,21 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7276 "MachineIndependent/glslang_tab.cpp" +#line 7293 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: BUFFER */ -#line 1490 "MachineIndependent/glslang.y" +#line 1491 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7286 "MachineIndependent/glslang_tab.cpp" +#line 7303 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: ATTRIBUTE */ -#line 1495 "MachineIndependent/glslang.y" +#line 1496 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7299,11 +7316,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7303 "MachineIndependent/glslang_tab.cpp" +#line 7320 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: VARYING */ -#line 1507 "MachineIndependent/glslang.y" +#line 1508 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7318,32 +7335,32 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7322 "MachineIndependent/glslang_tab.cpp" +#line 7339 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: PATCH */ -#line 1521 "MachineIndependent/glslang.y" +#line 1522 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7333 "MachineIndependent/glslang_tab.cpp" +#line 7350 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: SAMPLE */ -#line 1527 "MachineIndependent/glslang.y" +#line 1528 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7343 "MachineIndependent/glslang_tab.cpp" +#line 7360 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITATTRNV */ -#line 1532 "MachineIndependent/glslang.y" +#line 1533 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7352,24 +7369,37 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7356 "MachineIndependent/glslang_tab.cpp" +#line 7373 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1540 "MachineIndependent/glslang.y" - { +#line 1541 "MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; - } -#line 7369 "MachineIndependent/glslang_tab.cpp" + } +#line 7386 "MachineIndependent/glslang_tab.cpp" break; - case 184: /* storage_qualifier: HITATTREXT */ -#line 1548 "MachineIndependent/glslang.y" + case 184: /* storage_qualifier: HITOBJECTATTREXT */ +#line 1549 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask + | EShLangMissMask), "hitObjectAttributeEXT"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_shader_invocation_reorder, "hitObjectAttributeEXT"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqHitObjectAttrEXT; + } +#line 7399 "MachineIndependent/glslang_tab.cpp" + break; + + case 185: /* storage_qualifier: HITATTREXT */ +#line 1557 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7378,11 +7408,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7382 "MachineIndependent/glslang_tab.cpp" +#line 7412 "MachineIndependent/glslang_tab.cpp" break; - case 185: /* storage_qualifier: PAYLOADNV */ -#line 1556 "MachineIndependent/glslang.y" + case 186: /* storage_qualifier: PAYLOADNV */ +#line 1565 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7391,11 +7421,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7395 "MachineIndependent/glslang_tab.cpp" +#line 7425 "MachineIndependent/glslang_tab.cpp" break; - case 186: /* storage_qualifier: PAYLOADEXT */ -#line 1564 "MachineIndependent/glslang.y" + case 187: /* storage_qualifier: PAYLOADEXT */ +#line 1573 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7404,11 +7434,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7408 "MachineIndependent/glslang_tab.cpp" +#line 7438 "MachineIndependent/glslang_tab.cpp" break; - case 187: /* storage_qualifier: PAYLOADINNV */ -#line 1572 "MachineIndependent/glslang.y" + case 188: /* storage_qualifier: PAYLOADINNV */ +#line 1581 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7417,11 +7447,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7421 "MachineIndependent/glslang_tab.cpp" +#line 7451 "MachineIndependent/glslang_tab.cpp" break; - case 188: /* storage_qualifier: PAYLOADINEXT */ -#line 1580 "MachineIndependent/glslang.y" + case 189: /* storage_qualifier: PAYLOADINEXT */ +#line 1589 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7430,11 +7460,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7434 "MachineIndependent/glslang_tab.cpp" +#line 7464 "MachineIndependent/glslang_tab.cpp" break; - case 189: /* storage_qualifier: CALLDATANV */ -#line 1588 "MachineIndependent/glslang.y" + case 190: /* storage_qualifier: CALLDATANV */ +#line 1597 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7443,11 +7473,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7447 "MachineIndependent/glslang_tab.cpp" +#line 7477 "MachineIndependent/glslang_tab.cpp" break; - case 190: /* storage_qualifier: CALLDATAEXT */ -#line 1596 "MachineIndependent/glslang.y" + case 191: /* storage_qualifier: CALLDATAEXT */ +#line 1605 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7456,11 +7486,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7460 "MachineIndependent/glslang_tab.cpp" +#line 7490 "MachineIndependent/glslang_tab.cpp" break; - case 191: /* storage_qualifier: CALLDATAINNV */ -#line 1604 "MachineIndependent/glslang.y" + case 192: /* storage_qualifier: CALLDATAINNV */ +#line 1613 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7468,11 +7498,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7472 "MachineIndependent/glslang_tab.cpp" +#line 7502 "MachineIndependent/glslang_tab.cpp" break; - case 192: /* storage_qualifier: CALLDATAINEXT */ -#line 1611 "MachineIndependent/glslang.y" + case 193: /* storage_qualifier: CALLDATAINEXT */ +#line 1620 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7480,147 +7510,147 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7484 "MachineIndependent/glslang_tab.cpp" +#line 7514 "MachineIndependent/glslang_tab.cpp" break; - case 193: /* storage_qualifier: COHERENT */ -#line 1618 "MachineIndependent/glslang.y" + case 194: /* storage_qualifier: COHERENT */ +#line 1627 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7493 "MachineIndependent/glslang_tab.cpp" +#line 7523 "MachineIndependent/glslang_tab.cpp" break; - case 194: /* storage_qualifier: DEVICECOHERENT */ -#line 1622 "MachineIndependent/glslang.y" + case 195: /* storage_qualifier: DEVICECOHERENT */ +#line 1631 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7503 "MachineIndependent/glslang_tab.cpp" +#line 7533 "MachineIndependent/glslang_tab.cpp" break; - case 195: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1627 "MachineIndependent/glslang.y" + case 196: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1636 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7513 "MachineIndependent/glslang_tab.cpp" +#line 7543 "MachineIndependent/glslang_tab.cpp" break; - case 196: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1632 "MachineIndependent/glslang.y" + case 197: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1641 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7523 "MachineIndependent/glslang_tab.cpp" +#line 7553 "MachineIndependent/glslang_tab.cpp" break; - case 197: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1637 "MachineIndependent/glslang.y" + case 198: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1646 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7533 "MachineIndependent/glslang_tab.cpp" +#line 7563 "MachineIndependent/glslang_tab.cpp" break; - case 198: /* storage_qualifier: NONPRIVATE */ -#line 1642 "MachineIndependent/glslang.y" + case 199: /* storage_qualifier: NONPRIVATE */ +#line 1651 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7543 "MachineIndependent/glslang_tab.cpp" +#line 7573 "MachineIndependent/glslang_tab.cpp" break; - case 199: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1647 "MachineIndependent/glslang.y" + case 200: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1656 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7553 "MachineIndependent/glslang_tab.cpp" +#line 7583 "MachineIndependent/glslang_tab.cpp" break; - case 200: /* storage_qualifier: VOLATILE */ -#line 1652 "MachineIndependent/glslang.y" + case 201: /* storage_qualifier: VOLATILE */ +#line 1661 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7562 "MachineIndependent/glslang_tab.cpp" +#line 7592 "MachineIndependent/glslang_tab.cpp" break; - case 201: /* storage_qualifier: RESTRICT */ -#line 1656 "MachineIndependent/glslang.y" + case 202: /* storage_qualifier: RESTRICT */ +#line 1665 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7571 "MachineIndependent/glslang_tab.cpp" +#line 7601 "MachineIndependent/glslang_tab.cpp" break; - case 202: /* storage_qualifier: READONLY */ -#line 1660 "MachineIndependent/glslang.y" + case 203: /* storage_qualifier: READONLY */ +#line 1669 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7580 "MachineIndependent/glslang_tab.cpp" +#line 7610 "MachineIndependent/glslang_tab.cpp" break; - case 203: /* storage_qualifier: WRITEONLY */ -#line 1664 "MachineIndependent/glslang.y" + case 204: /* storage_qualifier: WRITEONLY */ +#line 1673 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7589 "MachineIndependent/glslang_tab.cpp" +#line 7619 "MachineIndependent/glslang_tab.cpp" break; - case 204: /* storage_qualifier: NONTEMPORAL */ -#line 1668 "MachineIndependent/glslang.y" + case 205: /* storage_qualifier: NONTEMPORAL */ +#line 1677 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nontemporal = true; } -#line 7598 "MachineIndependent/glslang_tab.cpp" +#line 7628 "MachineIndependent/glslang_tab.cpp" break; - case 205: /* storage_qualifier: SUBROUTINE */ -#line 1672 "MachineIndependent/glslang.y" + case 206: /* storage_qualifier: SUBROUTINE */ +#line 1681 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7609 "MachineIndependent/glslang_tab.cpp" +#line 7639 "MachineIndependent/glslang_tab.cpp" break; - case 206: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1678 "MachineIndependent/glslang.y" + case 207: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1687 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7620 "MachineIndependent/glslang_tab.cpp" +#line 7650 "MachineIndependent/glslang_tab.cpp" break; - case 207: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1684 "MachineIndependent/glslang.y" + case 208: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ +#line 1693 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7628,38 +7658,38 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7632 "MachineIndependent/glslang_tab.cpp" +#line 7662 "MachineIndependent/glslang_tab.cpp" break; - case 208: /* non_uniform_qualifier: NONUNIFORM */ -#line 1694 "MachineIndependent/glslang.y" + case 209: /* non_uniform_qualifier: NONUNIFORM */ +#line 1703 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7641 "MachineIndependent/glslang_tab.cpp" +#line 7671 "MachineIndependent/glslang_tab.cpp" break; - case 209: /* type_name_list: IDENTIFIER */ -#line 1701 "MachineIndependent/glslang.y" + case 210: /* type_name_list: IDENTIFIER */ +#line 1710 "MachineIndependent/glslang.y" { // TODO } -#line 7649 "MachineIndependent/glslang_tab.cpp" +#line 7679 "MachineIndependent/glslang_tab.cpp" break; - case 210: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1704 "MachineIndependent/glslang.y" + case 211: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1713 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7659 "MachineIndependent/glslang_tab.cpp" +#line 7689 "MachineIndependent/glslang_tab.cpp" break; - case 211: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1712 "MachineIndependent/glslang.y" + case 212: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1721 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); @@ -7667,11 +7697,11 @@ yyreduce: parseContext.typeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); } -#line 7671 "MachineIndependent/glslang_tab.cpp" +#line 7701 "MachineIndependent/glslang_tab.cpp" break; - case 212: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1719 "MachineIndependent/glslang.y" + case 213: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1728 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7680,21 +7710,21 @@ yyreduce: (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; parseContext.typeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } -#line 7684 "MachineIndependent/glslang_tab.cpp" +#line 7714 "MachineIndependent/glslang_tab.cpp" break; - case 213: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1730 "MachineIndependent/glslang.y" + case 214: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1739 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7694 "MachineIndependent/glslang_tab.cpp" +#line 7724 "MachineIndependent/glslang_tab.cpp" break; - case 214: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1735 "MachineIndependent/glslang.y" + case 215: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1744 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7703,20 +7733,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7707 "MachineIndependent/glslang_tab.cpp" +#line 7737 "MachineIndependent/glslang_tab.cpp" break; - case 215: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1743 "MachineIndependent/glslang.y" + case 216: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1752 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7716 "MachineIndependent/glslang_tab.cpp" +#line 7746 "MachineIndependent/glslang_tab.cpp" break; - case 216: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1747 "MachineIndependent/glslang.y" + case 217: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1756 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7724,46 +7754,46 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7728 "MachineIndependent/glslang_tab.cpp" +#line 7758 "MachineIndependent/glslang_tab.cpp" break; - case 217: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1757 "MachineIndependent/glslang.y" + case 218: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1766 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7736 "MachineIndependent/glslang_tab.cpp" +#line 7766 "MachineIndependent/glslang_tab.cpp" break; - case 218: /* type_parameter_specifier_opt: %empty */ -#line 1760 "MachineIndependent/glslang.y" + case 219: /* type_parameter_specifier_opt: %empty */ +#line 1769 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7744 "MachineIndependent/glslang_tab.cpp" +#line 7774 "MachineIndependent/glslang_tab.cpp" break; - case 219: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1766 "MachineIndependent/glslang.y" + case 220: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1775 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7752 "MachineIndependent/glslang_tab.cpp" +#line 7782 "MachineIndependent/glslang_tab.cpp" break; - case 220: /* type_parameter_specifier_list: type_specifier */ -#line 1772 "MachineIndependent/glslang.y" + case 221: /* type_parameter_specifier_list: type_specifier */ +#line 1781 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; (yyval.interm.typeParameters)->spirvType = (yyvsp[0].interm.type).spirvType; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } -#line 7763 "MachineIndependent/glslang_tab.cpp" +#line 7793 "MachineIndependent/glslang_tab.cpp" break; - case 221: /* type_parameter_specifier_list: unary_expression */ -#line 1778 "MachineIndependent/glslang.y" + case 222: /* type_parameter_specifier_list: unary_expression */ +#line 1787 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; @@ -7772,11 +7802,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7776 "MachineIndependent/glslang_tab.cpp" +#line 7806 "MachineIndependent/glslang_tab.cpp" break; - case 222: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1786 "MachineIndependent/glslang.y" + case 223: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1795 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7784,211 +7814,181 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7788 "MachineIndependent/glslang_tab.cpp" +#line 7818 "MachineIndependent/glslang_tab.cpp" break; - case 223: /* type_specifier_nonarray: VOID */ -#line 1796 "MachineIndependent/glslang.y" + case 224: /* type_specifier_nonarray: VOID */ +#line 1805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7797 "MachineIndependent/glslang_tab.cpp" +#line 7827 "MachineIndependent/glslang_tab.cpp" break; - case 224: /* type_specifier_nonarray: FLOAT */ -#line 1800 "MachineIndependent/glslang.y" + case 225: /* type_specifier_nonarray: FLOAT */ +#line 1809 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7806 "MachineIndependent/glslang_tab.cpp" +#line 7836 "MachineIndependent/glslang_tab.cpp" break; - case 225: /* type_specifier_nonarray: INT */ -#line 1804 "MachineIndependent/glslang.y" + case 226: /* type_specifier_nonarray: INT */ +#line 1813 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7815 "MachineIndependent/glslang_tab.cpp" +#line 7845 "MachineIndependent/glslang_tab.cpp" break; - case 226: /* type_specifier_nonarray: UINT */ -#line 1808 "MachineIndependent/glslang.y" + case 227: /* type_specifier_nonarray: UINT */ +#line 1817 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7825 "MachineIndependent/glslang_tab.cpp" +#line 7855 "MachineIndependent/glslang_tab.cpp" break; - case 227: /* type_specifier_nonarray: BOOL */ -#line 1813 "MachineIndependent/glslang.y" - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - } -#line 7834 "MachineIndependent/glslang_tab.cpp" - break; - - case 228: /* type_specifier_nonarray: VEC2 */ -#line 1817 "MachineIndependent/glslang.y" - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); - } -#line 7844 "MachineIndependent/glslang_tab.cpp" - break; - - case 229: /* type_specifier_nonarray: VEC3 */ + case 228: /* type_specifier_nonarray: BOOL */ #line 1822 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); - } -#line 7854 "MachineIndependent/glslang_tab.cpp" - break; - - case 230: /* type_specifier_nonarray: VEC4 */ -#line 1827 "MachineIndependent/glslang.y" - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtBool; } #line 7864 "MachineIndependent/glslang_tab.cpp" break; - case 231: /* type_specifier_nonarray: BVEC2 */ -#line 1832 "MachineIndependent/glslang.y" - { + case 229: /* type_specifier_nonarray: VEC2 */ +#line 1826 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } #line 7874 "MachineIndependent/glslang_tab.cpp" break; - case 232: /* type_specifier_nonarray: BVEC3 */ -#line 1837 "MachineIndependent/glslang.y" - { + case 230: /* type_specifier_nonarray: VEC3 */ +#line 1831 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } #line 7884 "MachineIndependent/glslang_tab.cpp" break; - case 233: /* type_specifier_nonarray: BVEC4 */ -#line 1842 "MachineIndependent/glslang.y" - { + case 231: /* type_specifier_nonarray: VEC4 */ +#line 1836 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } #line 7894 "MachineIndependent/glslang_tab.cpp" break; - case 234: /* type_specifier_nonarray: IVEC2 */ -#line 1847 "MachineIndependent/glslang.y" + case 232: /* type_specifier_nonarray: BVEC2 */ +#line 1841 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } #line 7904 "MachineIndependent/glslang_tab.cpp" break; - case 235: /* type_specifier_nonarray: IVEC3 */ -#line 1852 "MachineIndependent/glslang.y" + case 233: /* type_specifier_nonarray: BVEC3 */ +#line 1846 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } #line 7914 "MachineIndependent/glslang_tab.cpp" break; - case 236: /* type_specifier_nonarray: IVEC4 */ -#line 1857 "MachineIndependent/glslang.y" + case 234: /* type_specifier_nonarray: BVEC4 */ +#line 1851 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } #line 7924 "MachineIndependent/glslang_tab.cpp" break; - case 237: /* type_specifier_nonarray: UVEC2 */ -#line 1862 "MachineIndependent/glslang.y" + case 235: /* type_specifier_nonarray: IVEC2 */ +#line 1856 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } +#line 7934 "MachineIndependent/glslang_tab.cpp" + break; + + case 236: /* type_specifier_nonarray: IVEC3 */ +#line 1861 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); + } +#line 7944 "MachineIndependent/glslang_tab.cpp" + break; + + case 237: /* type_specifier_nonarray: IVEC4 */ +#line 1866 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); + } +#line 7954 "MachineIndependent/glslang_tab.cpp" + break; + + case 238: /* type_specifier_nonarray: UVEC2 */ +#line 1871 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7935 "MachineIndependent/glslang_tab.cpp" +#line 7965 "MachineIndependent/glslang_tab.cpp" break; - case 238: /* type_specifier_nonarray: UVEC3 */ -#line 1868 "MachineIndependent/glslang.y" + case 239: /* type_specifier_nonarray: UVEC3 */ +#line 1877 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7946 "MachineIndependent/glslang_tab.cpp" +#line 7976 "MachineIndependent/glslang_tab.cpp" break; - case 239: /* type_specifier_nonarray: UVEC4 */ -#line 1874 "MachineIndependent/glslang.y" + case 240: /* type_specifier_nonarray: UVEC4 */ +#line 1883 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7957 "MachineIndependent/glslang_tab.cpp" - break; - - case 240: /* type_specifier_nonarray: MAT2 */ -#line 1880 "MachineIndependent/glslang.y" - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7967 "MachineIndependent/glslang_tab.cpp" - break; - - case 241: /* type_specifier_nonarray: MAT3 */ -#line 1885 "MachineIndependent/glslang.y" - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7977 "MachineIndependent/glslang_tab.cpp" - break; - - case 242: /* type_specifier_nonarray: MAT4 */ -#line 1890 "MachineIndependent/glslang.y" - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); - } #line 7987 "MachineIndependent/glslang_tab.cpp" break; - case 243: /* type_specifier_nonarray: MAT2X2 */ -#line 1895 "MachineIndependent/glslang.y" - { + case 241: /* type_specifier_nonarray: MAT2 */ +#line 1889 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); @@ -7996,88 +7996,118 @@ yyreduce: #line 7997 "MachineIndependent/glslang_tab.cpp" break; - case 244: /* type_specifier_nonarray: MAT2X3 */ -#line 1900 "MachineIndependent/glslang.y" + case 242: /* type_specifier_nonarray: MAT3 */ +#line 1894 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } +#line 8007 "MachineIndependent/glslang_tab.cpp" + break; + + case 243: /* type_specifier_nonarray: MAT4 */ +#line 1899 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } +#line 8017 "MachineIndependent/glslang_tab.cpp" + break; + + case 244: /* type_specifier_nonarray: MAT2X2 */ +#line 1904 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 8027 "MachineIndependent/glslang_tab.cpp" + break; + + case 245: /* type_specifier_nonarray: MAT2X3 */ +#line 1909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8007 "MachineIndependent/glslang_tab.cpp" +#line 8037 "MachineIndependent/glslang_tab.cpp" break; - case 245: /* type_specifier_nonarray: MAT2X4 */ -#line 1905 "MachineIndependent/glslang.y" + case 246: /* type_specifier_nonarray: MAT2X4 */ +#line 1914 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8017 "MachineIndependent/glslang_tab.cpp" +#line 8047 "MachineIndependent/glslang_tab.cpp" break; - case 246: /* type_specifier_nonarray: MAT3X2 */ -#line 1910 "MachineIndependent/glslang.y" + case 247: /* type_specifier_nonarray: MAT3X2 */ +#line 1919 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8027 "MachineIndependent/glslang_tab.cpp" +#line 8057 "MachineIndependent/glslang_tab.cpp" break; - case 247: /* type_specifier_nonarray: MAT3X3 */ -#line 1915 "MachineIndependent/glslang.y" + case 248: /* type_specifier_nonarray: MAT3X3 */ +#line 1924 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8037 "MachineIndependent/glslang_tab.cpp" +#line 8067 "MachineIndependent/glslang_tab.cpp" break; - case 248: /* type_specifier_nonarray: MAT3X4 */ -#line 1920 "MachineIndependent/glslang.y" + case 249: /* type_specifier_nonarray: MAT3X4 */ +#line 1929 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8047 "MachineIndependent/glslang_tab.cpp" +#line 8077 "MachineIndependent/glslang_tab.cpp" break; - case 249: /* type_specifier_nonarray: MAT4X2 */ -#line 1925 "MachineIndependent/glslang.y" + case 250: /* type_specifier_nonarray: MAT4X2 */ +#line 1934 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8057 "MachineIndependent/glslang_tab.cpp" +#line 8087 "MachineIndependent/glslang_tab.cpp" break; - case 250: /* type_specifier_nonarray: MAT4X3 */ -#line 1930 "MachineIndependent/glslang.y" + case 251: /* type_specifier_nonarray: MAT4X3 */ +#line 1939 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8067 "MachineIndependent/glslang_tab.cpp" +#line 8097 "MachineIndependent/glslang_tab.cpp" break; - case 251: /* type_specifier_nonarray: MAT4X4 */ -#line 1935 "MachineIndependent/glslang.y" + case 252: /* type_specifier_nonarray: MAT4X4 */ +#line 1944 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8077 "MachineIndependent/glslang_tab.cpp" +#line 8107 "MachineIndependent/glslang_tab.cpp" break; - case 252: /* type_specifier_nonarray: DOUBLE */ -#line 1940 "MachineIndependent/glslang.y" + case 253: /* type_specifier_nonarray: DOUBLE */ +#line 1949 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8085,151 +8115,151 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 8089 "MachineIndependent/glslang_tab.cpp" +#line 8119 "MachineIndependent/glslang_tab.cpp" break; - case 253: /* type_specifier_nonarray: BFLOAT16_T */ -#line 1947 "MachineIndependent/glslang.y" + case 254: /* type_specifier_nonarray: BFLOAT16_T */ +#line 1956 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "bfloat16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; } -#line 8099 "MachineIndependent/glslang_tab.cpp" +#line 8129 "MachineIndependent/glslang_tab.cpp" break; - case 254: /* type_specifier_nonarray: FLOATE5M2_T */ -#line 1952 "MachineIndependent/glslang.y" + case 255: /* type_specifier_nonarray: FLOATE5M2_T */ +#line 1961 "MachineIndependent/glslang.y" { parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "floate5m2_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE5M2; } -#line 8109 "MachineIndependent/glslang_tab.cpp" +#line 8139 "MachineIndependent/glslang_tab.cpp" break; - case 255: /* type_specifier_nonarray: FLOATE4M3_T */ -#line 1957 "MachineIndependent/glslang.y" + case 256: /* type_specifier_nonarray: FLOATE4M3_T */ +#line 1966 "MachineIndependent/glslang.y" { parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "floate4m3_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE4M3; } -#line 8119 "MachineIndependent/glslang_tab.cpp" +#line 8149 "MachineIndependent/glslang_tab.cpp" break; - case 256: /* type_specifier_nonarray: FLOAT16_T */ -#line 1962 "MachineIndependent/glslang.y" + case 257: /* type_specifier_nonarray: FLOAT16_T */ +#line 1971 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 8129 "MachineIndependent/glslang_tab.cpp" +#line 8159 "MachineIndependent/glslang_tab.cpp" break; - case 257: /* type_specifier_nonarray: FLOAT32_T */ -#line 1967 "MachineIndependent/glslang.y" + case 258: /* type_specifier_nonarray: FLOAT32_T */ +#line 1976 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 8139 "MachineIndependent/glslang_tab.cpp" +#line 8169 "MachineIndependent/glslang_tab.cpp" break; - case 258: /* type_specifier_nonarray: FLOAT64_T */ -#line 1972 "MachineIndependent/glslang.y" + case 259: /* type_specifier_nonarray: FLOAT64_T */ +#line 1981 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 8149 "MachineIndependent/glslang_tab.cpp" +#line 8179 "MachineIndependent/glslang_tab.cpp" break; - case 259: /* type_specifier_nonarray: INT8_T */ -#line 1977 "MachineIndependent/glslang.y" + case 260: /* type_specifier_nonarray: INT8_T */ +#line 1986 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 8159 "MachineIndependent/glslang_tab.cpp" +#line 8189 "MachineIndependent/glslang_tab.cpp" break; - case 260: /* type_specifier_nonarray: UINT8_T */ -#line 1982 "MachineIndependent/glslang.y" + case 261: /* type_specifier_nonarray: UINT8_T */ +#line 1991 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 8169 "MachineIndependent/glslang_tab.cpp" +#line 8199 "MachineIndependent/glslang_tab.cpp" break; - case 261: /* type_specifier_nonarray: INT16_T */ -#line 1987 "MachineIndependent/glslang.y" + case 262: /* type_specifier_nonarray: INT16_T */ +#line 1996 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 8179 "MachineIndependent/glslang_tab.cpp" +#line 8209 "MachineIndependent/glslang_tab.cpp" break; - case 262: /* type_specifier_nonarray: UINT16_T */ -#line 1992 "MachineIndependent/glslang.y" + case 263: /* type_specifier_nonarray: UINT16_T */ +#line 2001 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 8189 "MachineIndependent/glslang_tab.cpp" +#line 8219 "MachineIndependent/glslang_tab.cpp" break; - case 263: /* type_specifier_nonarray: INT32_T */ -#line 1997 "MachineIndependent/glslang.y" + case 264: /* type_specifier_nonarray: INT32_T */ +#line 2006 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 8199 "MachineIndependent/glslang_tab.cpp" +#line 8229 "MachineIndependent/glslang_tab.cpp" break; - case 264: /* type_specifier_nonarray: UINT32_T */ -#line 2002 "MachineIndependent/glslang.y" + case 265: /* type_specifier_nonarray: UINT32_T */ +#line 2011 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 8209 "MachineIndependent/glslang_tab.cpp" +#line 8239 "MachineIndependent/glslang_tab.cpp" break; - case 265: /* type_specifier_nonarray: INT64_T */ -#line 2007 "MachineIndependent/glslang.y" + case 266: /* type_specifier_nonarray: INT64_T */ +#line 2016 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 8219 "MachineIndependent/glslang_tab.cpp" +#line 8249 "MachineIndependent/glslang_tab.cpp" break; - case 266: /* type_specifier_nonarray: UINT64_T */ -#line 2012 "MachineIndependent/glslang.y" + case 267: /* type_specifier_nonarray: UINT64_T */ +#line 2021 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 8229 "MachineIndependent/glslang_tab.cpp" +#line 8259 "MachineIndependent/glslang_tab.cpp" break; - case 267: /* type_specifier_nonarray: DVEC2 */ -#line 2017 "MachineIndependent/glslang.y" + case 268: /* type_specifier_nonarray: DVEC2 */ +#line 2026 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8238,11 +8268,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8242 "MachineIndependent/glslang_tab.cpp" +#line 8272 "MachineIndependent/glslang_tab.cpp" break; - case 268: /* type_specifier_nonarray: DVEC3 */ -#line 2025 "MachineIndependent/glslang.y" + case 269: /* type_specifier_nonarray: DVEC3 */ +#line 2034 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8251,11 +8281,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8255 "MachineIndependent/glslang_tab.cpp" +#line 8285 "MachineIndependent/glslang_tab.cpp" break; - case 269: /* type_specifier_nonarray: DVEC4 */ -#line 2033 "MachineIndependent/glslang.y" + case 270: /* type_specifier_nonarray: DVEC4 */ +#line 2042 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8264,473 +8294,473 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8268 "MachineIndependent/glslang_tab.cpp" +#line 8298 "MachineIndependent/glslang_tab.cpp" break; - case 270: /* type_specifier_nonarray: BF16VEC2 */ -#line 2041 "MachineIndependent/glslang.y" + case 271: /* type_specifier_nonarray: BF16VEC2 */ +#line 2050 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; (yyval.interm.type).setVector(2); } -#line 8279 "MachineIndependent/glslang_tab.cpp" +#line 8309 "MachineIndependent/glslang_tab.cpp" break; - case 271: /* type_specifier_nonarray: BF16VEC3 */ -#line 2047 "MachineIndependent/glslang.y" + case 272: /* type_specifier_nonarray: BF16VEC3 */ +#line 2056 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; (yyval.interm.type).setVector(3); } -#line 8290 "MachineIndependent/glslang_tab.cpp" +#line 8320 "MachineIndependent/glslang_tab.cpp" break; - case 272: /* type_specifier_nonarray: BF16VEC4 */ -#line 2053 "MachineIndependent/glslang.y" + case 273: /* type_specifier_nonarray: BF16VEC4 */ +#line 2062 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; (yyval.interm.type).setVector(4); } -#line 8301 "MachineIndependent/glslang_tab.cpp" +#line 8331 "MachineIndependent/glslang_tab.cpp" break; - case 273: /* type_specifier_nonarray: FE5M2VEC2 */ -#line 2059 "MachineIndependent/glslang.y" + case 274: /* type_specifier_nonarray: FE5M2VEC2 */ +#line 2068 "MachineIndependent/glslang.y" { parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE5M2; (yyval.interm.type).setVector(2); } -#line 8312 "MachineIndependent/glslang_tab.cpp" +#line 8342 "MachineIndependent/glslang_tab.cpp" break; - case 274: /* type_specifier_nonarray: FE5M2VEC3 */ -#line 2065 "MachineIndependent/glslang.y" + case 275: /* type_specifier_nonarray: FE5M2VEC3 */ +#line 2074 "MachineIndependent/glslang.y" { parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE5M2; (yyval.interm.type).setVector(3); } -#line 8323 "MachineIndependent/glslang_tab.cpp" +#line 8353 "MachineIndependent/glslang_tab.cpp" break; - case 275: /* type_specifier_nonarray: FE5M2VEC4 */ -#line 2071 "MachineIndependent/glslang.y" + case 276: /* type_specifier_nonarray: FE5M2VEC4 */ +#line 2080 "MachineIndependent/glslang.y" { parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE5M2; (yyval.interm.type).setVector(4); } -#line 8334 "MachineIndependent/glslang_tab.cpp" +#line 8364 "MachineIndependent/glslang_tab.cpp" break; - case 276: /* type_specifier_nonarray: FE4M3VEC2 */ -#line 2077 "MachineIndependent/glslang.y" + case 277: /* type_specifier_nonarray: FE4M3VEC2 */ +#line 2086 "MachineIndependent/glslang.y" { parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE4M3; (yyval.interm.type).setVector(2); } -#line 8345 "MachineIndependent/glslang_tab.cpp" +#line 8375 "MachineIndependent/glslang_tab.cpp" break; - case 277: /* type_specifier_nonarray: FE4M3VEC3 */ -#line 2083 "MachineIndependent/glslang.y" + case 278: /* type_specifier_nonarray: FE4M3VEC3 */ +#line 2092 "MachineIndependent/glslang.y" { parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE4M3; (yyval.interm.type).setVector(3); } -#line 8356 "MachineIndependent/glslang_tab.cpp" +#line 8386 "MachineIndependent/glslang_tab.cpp" break; - case 278: /* type_specifier_nonarray: FE4M3VEC4 */ -#line 2089 "MachineIndependent/glslang.y" + case 279: /* type_specifier_nonarray: FE4M3VEC4 */ +#line 2098 "MachineIndependent/glslang.y" { parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloatE4M3; (yyval.interm.type).setVector(4); } -#line 8367 "MachineIndependent/glslang_tab.cpp" +#line 8397 "MachineIndependent/glslang_tab.cpp" break; - case 279: /* type_specifier_nonarray: F16VEC2 */ -#line 2095 "MachineIndependent/glslang.y" + case 280: /* type_specifier_nonarray: F16VEC2 */ +#line 2104 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 8378 "MachineIndependent/glslang_tab.cpp" +#line 8408 "MachineIndependent/glslang_tab.cpp" break; - case 280: /* type_specifier_nonarray: F16VEC3 */ -#line 2101 "MachineIndependent/glslang.y" + case 281: /* type_specifier_nonarray: F16VEC3 */ +#line 2110 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 8389 "MachineIndependent/glslang_tab.cpp" +#line 8419 "MachineIndependent/glslang_tab.cpp" break; - case 281: /* type_specifier_nonarray: F16VEC4 */ -#line 2107 "MachineIndependent/glslang.y" + case 282: /* type_specifier_nonarray: F16VEC4 */ +#line 2116 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 8400 "MachineIndependent/glslang_tab.cpp" +#line 8430 "MachineIndependent/glslang_tab.cpp" break; - case 282: /* type_specifier_nonarray: F32VEC2 */ -#line 2113 "MachineIndependent/glslang.y" + case 283: /* type_specifier_nonarray: F32VEC2 */ +#line 2122 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8411 "MachineIndependent/glslang_tab.cpp" +#line 8441 "MachineIndependent/glslang_tab.cpp" break; - case 283: /* type_specifier_nonarray: F32VEC3 */ -#line 2119 "MachineIndependent/glslang.y" + case 284: /* type_specifier_nonarray: F32VEC3 */ +#line 2128 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8422 "MachineIndependent/glslang_tab.cpp" +#line 8452 "MachineIndependent/glslang_tab.cpp" break; - case 284: /* type_specifier_nonarray: F32VEC4 */ -#line 2125 "MachineIndependent/glslang.y" + case 285: /* type_specifier_nonarray: F32VEC4 */ +#line 2134 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8433 "MachineIndependent/glslang_tab.cpp" +#line 8463 "MachineIndependent/glslang_tab.cpp" break; - case 285: /* type_specifier_nonarray: F64VEC2 */ -#line 2131 "MachineIndependent/glslang.y" + case 286: /* type_specifier_nonarray: F64VEC2 */ +#line 2140 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8444 "MachineIndependent/glslang_tab.cpp" +#line 8474 "MachineIndependent/glslang_tab.cpp" break; - case 286: /* type_specifier_nonarray: F64VEC3 */ -#line 2137 "MachineIndependent/glslang.y" + case 287: /* type_specifier_nonarray: F64VEC3 */ +#line 2146 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8455 "MachineIndependent/glslang_tab.cpp" +#line 8485 "MachineIndependent/glslang_tab.cpp" break; - case 287: /* type_specifier_nonarray: F64VEC4 */ -#line 2143 "MachineIndependent/glslang.y" + case 288: /* type_specifier_nonarray: F64VEC4 */ +#line 2152 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8466 "MachineIndependent/glslang_tab.cpp" +#line 8496 "MachineIndependent/glslang_tab.cpp" break; - case 288: /* type_specifier_nonarray: I8VEC2 */ -#line 2149 "MachineIndependent/glslang.y" + case 289: /* type_specifier_nonarray: I8VEC2 */ +#line 2158 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8477 "MachineIndependent/glslang_tab.cpp" +#line 8507 "MachineIndependent/glslang_tab.cpp" break; - case 289: /* type_specifier_nonarray: I8VEC3 */ -#line 2155 "MachineIndependent/glslang.y" + case 290: /* type_specifier_nonarray: I8VEC3 */ +#line 2164 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8488 "MachineIndependent/glslang_tab.cpp" +#line 8518 "MachineIndependent/glslang_tab.cpp" break; - case 290: /* type_specifier_nonarray: I8VEC4 */ -#line 2161 "MachineIndependent/glslang.y" + case 291: /* type_specifier_nonarray: I8VEC4 */ +#line 2170 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8499 "MachineIndependent/glslang_tab.cpp" +#line 8529 "MachineIndependent/glslang_tab.cpp" break; - case 291: /* type_specifier_nonarray: I16VEC2 */ -#line 2167 "MachineIndependent/glslang.y" + case 292: /* type_specifier_nonarray: I16VEC2 */ +#line 2176 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8510 "MachineIndependent/glslang_tab.cpp" +#line 8540 "MachineIndependent/glslang_tab.cpp" break; - case 292: /* type_specifier_nonarray: I16VEC3 */ -#line 2173 "MachineIndependent/glslang.y" + case 293: /* type_specifier_nonarray: I16VEC3 */ +#line 2182 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8521 "MachineIndependent/glslang_tab.cpp" +#line 8551 "MachineIndependent/glslang_tab.cpp" break; - case 293: /* type_specifier_nonarray: I16VEC4 */ -#line 2179 "MachineIndependent/glslang.y" + case 294: /* type_specifier_nonarray: I16VEC4 */ +#line 2188 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8532 "MachineIndependent/glslang_tab.cpp" +#line 8562 "MachineIndependent/glslang_tab.cpp" break; - case 294: /* type_specifier_nonarray: I32VEC2 */ -#line 2185 "MachineIndependent/glslang.y" + case 295: /* type_specifier_nonarray: I32VEC2 */ +#line 2194 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8543 "MachineIndependent/glslang_tab.cpp" +#line 8573 "MachineIndependent/glslang_tab.cpp" break; - case 295: /* type_specifier_nonarray: I32VEC3 */ -#line 2191 "MachineIndependent/glslang.y" + case 296: /* type_specifier_nonarray: I32VEC3 */ +#line 2200 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8554 "MachineIndependent/glslang_tab.cpp" +#line 8584 "MachineIndependent/glslang_tab.cpp" break; - case 296: /* type_specifier_nonarray: I32VEC4 */ -#line 2197 "MachineIndependent/glslang.y" + case 297: /* type_specifier_nonarray: I32VEC4 */ +#line 2206 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8565 "MachineIndependent/glslang_tab.cpp" +#line 8595 "MachineIndependent/glslang_tab.cpp" break; - case 297: /* type_specifier_nonarray: I64VEC2 */ -#line 2203 "MachineIndependent/glslang.y" + case 298: /* type_specifier_nonarray: I64VEC2 */ +#line 2212 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8576 "MachineIndependent/glslang_tab.cpp" +#line 8606 "MachineIndependent/glslang_tab.cpp" break; - case 298: /* type_specifier_nonarray: I64VEC3 */ -#line 2209 "MachineIndependent/glslang.y" + case 299: /* type_specifier_nonarray: I64VEC3 */ +#line 2218 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8587 "MachineIndependent/glslang_tab.cpp" +#line 8617 "MachineIndependent/glslang_tab.cpp" break; - case 299: /* type_specifier_nonarray: I64VEC4 */ -#line 2215 "MachineIndependent/glslang.y" + case 300: /* type_specifier_nonarray: I64VEC4 */ +#line 2224 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8598 "MachineIndependent/glslang_tab.cpp" +#line 8628 "MachineIndependent/glslang_tab.cpp" break; - case 300: /* type_specifier_nonarray: U8VEC2 */ -#line 2221 "MachineIndependent/glslang.y" + case 301: /* type_specifier_nonarray: U8VEC2 */ +#line 2230 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8609 "MachineIndependent/glslang_tab.cpp" +#line 8639 "MachineIndependent/glslang_tab.cpp" break; - case 301: /* type_specifier_nonarray: U8VEC3 */ -#line 2227 "MachineIndependent/glslang.y" + case 302: /* type_specifier_nonarray: U8VEC3 */ +#line 2236 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8620 "MachineIndependent/glslang_tab.cpp" +#line 8650 "MachineIndependent/glslang_tab.cpp" break; - case 302: /* type_specifier_nonarray: U8VEC4 */ -#line 2233 "MachineIndependent/glslang.y" + case 303: /* type_specifier_nonarray: U8VEC4 */ +#line 2242 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8631 "MachineIndependent/glslang_tab.cpp" +#line 8661 "MachineIndependent/glslang_tab.cpp" break; - case 303: /* type_specifier_nonarray: U16VEC2 */ -#line 2239 "MachineIndependent/glslang.y" + case 304: /* type_specifier_nonarray: U16VEC2 */ +#line 2248 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8642 "MachineIndependent/glslang_tab.cpp" +#line 8672 "MachineIndependent/glslang_tab.cpp" break; - case 304: /* type_specifier_nonarray: U16VEC3 */ -#line 2245 "MachineIndependent/glslang.y" + case 305: /* type_specifier_nonarray: U16VEC3 */ +#line 2254 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8653 "MachineIndependent/glslang_tab.cpp" +#line 8683 "MachineIndependent/glslang_tab.cpp" break; - case 305: /* type_specifier_nonarray: U16VEC4 */ -#line 2251 "MachineIndependent/glslang.y" + case 306: /* type_specifier_nonarray: U16VEC4 */ +#line 2260 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8664 "MachineIndependent/glslang_tab.cpp" +#line 8694 "MachineIndependent/glslang_tab.cpp" break; - case 306: /* type_specifier_nonarray: U32VEC2 */ -#line 2257 "MachineIndependent/glslang.y" + case 307: /* type_specifier_nonarray: U32VEC2 */ +#line 2266 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8675 "MachineIndependent/glslang_tab.cpp" +#line 8705 "MachineIndependent/glslang_tab.cpp" break; - case 307: /* type_specifier_nonarray: U32VEC3 */ -#line 2263 "MachineIndependent/glslang.y" + case 308: /* type_specifier_nonarray: U32VEC3 */ +#line 2272 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8686 "MachineIndependent/glslang_tab.cpp" +#line 8716 "MachineIndependent/glslang_tab.cpp" break; - case 308: /* type_specifier_nonarray: U32VEC4 */ -#line 2269 "MachineIndependent/glslang.y" + case 309: /* type_specifier_nonarray: U32VEC4 */ +#line 2278 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8697 "MachineIndependent/glslang_tab.cpp" +#line 8727 "MachineIndependent/glslang_tab.cpp" break; - case 309: /* type_specifier_nonarray: U64VEC2 */ -#line 2275 "MachineIndependent/glslang.y" + case 310: /* type_specifier_nonarray: U64VEC2 */ +#line 2284 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8708 "MachineIndependent/glslang_tab.cpp" +#line 8738 "MachineIndependent/glslang_tab.cpp" break; - case 310: /* type_specifier_nonarray: U64VEC3 */ -#line 2281 "MachineIndependent/glslang.y" + case 311: /* type_specifier_nonarray: U64VEC3 */ +#line 2290 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8719 "MachineIndependent/glslang_tab.cpp" +#line 8749 "MachineIndependent/glslang_tab.cpp" break; - case 311: /* type_specifier_nonarray: U64VEC4 */ -#line 2287 "MachineIndependent/glslang.y" + case 312: /* type_specifier_nonarray: U64VEC4 */ +#line 2296 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8730 "MachineIndependent/glslang_tab.cpp" +#line 8760 "MachineIndependent/glslang_tab.cpp" break; - case 312: /* type_specifier_nonarray: DMAT2 */ -#line 2293 "MachineIndependent/glslang.y" + case 313: /* type_specifier_nonarray: DMAT2 */ +#line 2302 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8739,11 +8769,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8743 "MachineIndependent/glslang_tab.cpp" +#line 8773 "MachineIndependent/glslang_tab.cpp" break; - case 313: /* type_specifier_nonarray: DMAT3 */ -#line 2301 "MachineIndependent/glslang.y" + case 314: /* type_specifier_nonarray: DMAT3 */ +#line 2310 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8752,11 +8782,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8756 "MachineIndependent/glslang_tab.cpp" +#line 8786 "MachineIndependent/glslang_tab.cpp" break; - case 314: /* type_specifier_nonarray: DMAT4 */ -#line 2309 "MachineIndependent/glslang.y" + case 315: /* type_specifier_nonarray: DMAT4 */ +#line 2318 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8765,11 +8795,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8769 "MachineIndependent/glslang_tab.cpp" +#line 8799 "MachineIndependent/glslang_tab.cpp" break; - case 315: /* type_specifier_nonarray: DMAT2X2 */ -#line 2317 "MachineIndependent/glslang.y" + case 316: /* type_specifier_nonarray: DMAT2X2 */ +#line 2326 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8778,11 +8808,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8782 "MachineIndependent/glslang_tab.cpp" +#line 8812 "MachineIndependent/glslang_tab.cpp" break; - case 316: /* type_specifier_nonarray: DMAT2X3 */ -#line 2325 "MachineIndependent/glslang.y" + case 317: /* type_specifier_nonarray: DMAT2X3 */ +#line 2334 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8791,11 +8821,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8795 "MachineIndependent/glslang_tab.cpp" +#line 8825 "MachineIndependent/glslang_tab.cpp" break; - case 317: /* type_specifier_nonarray: DMAT2X4 */ -#line 2333 "MachineIndependent/glslang.y" + case 318: /* type_specifier_nonarray: DMAT2X4 */ +#line 2342 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8804,11 +8834,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8808 "MachineIndependent/glslang_tab.cpp" +#line 8838 "MachineIndependent/glslang_tab.cpp" break; - case 318: /* type_specifier_nonarray: DMAT3X2 */ -#line 2341 "MachineIndependent/glslang.y" + case 319: /* type_specifier_nonarray: DMAT3X2 */ +#line 2350 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8817,11 +8847,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8821 "MachineIndependent/glslang_tab.cpp" +#line 8851 "MachineIndependent/glslang_tab.cpp" break; - case 319: /* type_specifier_nonarray: DMAT3X3 */ -#line 2349 "MachineIndependent/glslang.y" + case 320: /* type_specifier_nonarray: DMAT3X3 */ +#line 2358 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8830,11 +8860,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8834 "MachineIndependent/glslang_tab.cpp" +#line 8864 "MachineIndependent/glslang_tab.cpp" break; - case 320: /* type_specifier_nonarray: DMAT3X4 */ -#line 2357 "MachineIndependent/glslang.y" + case 321: /* type_specifier_nonarray: DMAT3X4 */ +#line 2366 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8843,11 +8873,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8847 "MachineIndependent/glslang_tab.cpp" +#line 8877 "MachineIndependent/glslang_tab.cpp" break; - case 321: /* type_specifier_nonarray: DMAT4X2 */ -#line 2365 "MachineIndependent/glslang.y" + case 322: /* type_specifier_nonarray: DMAT4X2 */ +#line 2374 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8856,11 +8886,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8860 "MachineIndependent/glslang_tab.cpp" +#line 8890 "MachineIndependent/glslang_tab.cpp" break; - case 322: /* type_specifier_nonarray: DMAT4X3 */ -#line 2373 "MachineIndependent/glslang.y" + case 323: /* type_specifier_nonarray: DMAT4X3 */ +#line 2382 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8869,11 +8899,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8873 "MachineIndependent/glslang_tab.cpp" +#line 8903 "MachineIndependent/glslang_tab.cpp" break; - case 323: /* type_specifier_nonarray: DMAT4X4 */ -#line 2381 "MachineIndependent/glslang.y" + case 324: /* type_specifier_nonarray: DMAT4X4 */ +#line 2390 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8882,2261 +8912,2261 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8886 "MachineIndependent/glslang_tab.cpp" +#line 8916 "MachineIndependent/glslang_tab.cpp" break; - case 324: /* type_specifier_nonarray: F16MAT2 */ -#line 2389 "MachineIndependent/glslang.y" + case 325: /* type_specifier_nonarray: F16MAT2 */ +#line 2398 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8897 "MachineIndependent/glslang_tab.cpp" +#line 8927 "MachineIndependent/glslang_tab.cpp" break; - case 325: /* type_specifier_nonarray: F16MAT3 */ -#line 2395 "MachineIndependent/glslang.y" + case 326: /* type_specifier_nonarray: F16MAT3 */ +#line 2404 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8908 "MachineIndependent/glslang_tab.cpp" +#line 8938 "MachineIndependent/glslang_tab.cpp" break; - case 326: /* type_specifier_nonarray: F16MAT4 */ -#line 2401 "MachineIndependent/glslang.y" + case 327: /* type_specifier_nonarray: F16MAT4 */ +#line 2410 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8919 "MachineIndependent/glslang_tab.cpp" +#line 8949 "MachineIndependent/glslang_tab.cpp" break; - case 327: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2407 "MachineIndependent/glslang.y" + case 328: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2416 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8930 "MachineIndependent/glslang_tab.cpp" +#line 8960 "MachineIndependent/glslang_tab.cpp" break; - case 328: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2413 "MachineIndependent/glslang.y" + case 329: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2422 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8941 "MachineIndependent/glslang_tab.cpp" +#line 8971 "MachineIndependent/glslang_tab.cpp" break; - case 329: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2419 "MachineIndependent/glslang.y" + case 330: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2428 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8952 "MachineIndependent/glslang_tab.cpp" +#line 8982 "MachineIndependent/glslang_tab.cpp" break; - case 330: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2425 "MachineIndependent/glslang.y" + case 331: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2434 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8963 "MachineIndependent/glslang_tab.cpp" +#line 8993 "MachineIndependent/glslang_tab.cpp" break; - case 331: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2431 "MachineIndependent/glslang.y" + case 332: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2440 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8974 "MachineIndependent/glslang_tab.cpp" +#line 9004 "MachineIndependent/glslang_tab.cpp" break; - case 332: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2437 "MachineIndependent/glslang.y" + case 333: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2446 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8985 "MachineIndependent/glslang_tab.cpp" +#line 9015 "MachineIndependent/glslang_tab.cpp" break; - case 333: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2443 "MachineIndependent/glslang.y" + case 334: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2452 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8996 "MachineIndependent/glslang_tab.cpp" +#line 9026 "MachineIndependent/glslang_tab.cpp" break; - case 334: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2449 "MachineIndependent/glslang.y" + case 335: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2458 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 9007 "MachineIndependent/glslang_tab.cpp" +#line 9037 "MachineIndependent/glslang_tab.cpp" break; - case 335: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2455 "MachineIndependent/glslang.y" + case 336: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2464 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 9018 "MachineIndependent/glslang_tab.cpp" +#line 9048 "MachineIndependent/glslang_tab.cpp" break; - case 336: /* type_specifier_nonarray: F32MAT2 */ -#line 2461 "MachineIndependent/glslang.y" + case 337: /* type_specifier_nonarray: F32MAT2 */ +#line 2470 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 9029 "MachineIndependent/glslang_tab.cpp" +#line 9059 "MachineIndependent/glslang_tab.cpp" break; - case 337: /* type_specifier_nonarray: F32MAT3 */ -#line 2467 "MachineIndependent/glslang.y" + case 338: /* type_specifier_nonarray: F32MAT3 */ +#line 2476 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 9040 "MachineIndependent/glslang_tab.cpp" +#line 9070 "MachineIndependent/glslang_tab.cpp" break; - case 338: /* type_specifier_nonarray: F32MAT4 */ -#line 2473 "MachineIndependent/glslang.y" + case 339: /* type_specifier_nonarray: F32MAT4 */ +#line 2482 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 9051 "MachineIndependent/glslang_tab.cpp" +#line 9081 "MachineIndependent/glslang_tab.cpp" break; - case 339: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2479 "MachineIndependent/glslang.y" + case 340: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2488 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 9062 "MachineIndependent/glslang_tab.cpp" +#line 9092 "MachineIndependent/glslang_tab.cpp" break; - case 340: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2485 "MachineIndependent/glslang.y" + case 341: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2494 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 9073 "MachineIndependent/glslang_tab.cpp" +#line 9103 "MachineIndependent/glslang_tab.cpp" break; - case 341: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2491 "MachineIndependent/glslang.y" + case 342: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2500 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 9084 "MachineIndependent/glslang_tab.cpp" +#line 9114 "MachineIndependent/glslang_tab.cpp" break; - case 342: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2497 "MachineIndependent/glslang.y" + case 343: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2506 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 9095 "MachineIndependent/glslang_tab.cpp" +#line 9125 "MachineIndependent/glslang_tab.cpp" break; - case 343: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2503 "MachineIndependent/glslang.y" + case 344: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2512 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 9106 "MachineIndependent/glslang_tab.cpp" +#line 9136 "MachineIndependent/glslang_tab.cpp" break; - case 344: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2509 "MachineIndependent/glslang.y" + case 345: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2518 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 9117 "MachineIndependent/glslang_tab.cpp" +#line 9147 "MachineIndependent/glslang_tab.cpp" break; - case 345: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2515 "MachineIndependent/glslang.y" + case 346: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2524 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 9128 "MachineIndependent/glslang_tab.cpp" +#line 9158 "MachineIndependent/glslang_tab.cpp" break; - case 346: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2521 "MachineIndependent/glslang.y" + case 347: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2530 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 9139 "MachineIndependent/glslang_tab.cpp" +#line 9169 "MachineIndependent/glslang_tab.cpp" break; - case 347: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2527 "MachineIndependent/glslang.y" + case 348: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2536 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 9150 "MachineIndependent/glslang_tab.cpp" +#line 9180 "MachineIndependent/glslang_tab.cpp" break; - case 348: /* type_specifier_nonarray: F64MAT2 */ -#line 2533 "MachineIndependent/glslang.y" + case 349: /* type_specifier_nonarray: F64MAT2 */ +#line 2542 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 9161 "MachineIndependent/glslang_tab.cpp" +#line 9191 "MachineIndependent/glslang_tab.cpp" break; - case 349: /* type_specifier_nonarray: F64MAT3 */ -#line 2539 "MachineIndependent/glslang.y" + case 350: /* type_specifier_nonarray: F64MAT3 */ +#line 2548 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 9172 "MachineIndependent/glslang_tab.cpp" +#line 9202 "MachineIndependent/glslang_tab.cpp" break; - case 350: /* type_specifier_nonarray: F64MAT4 */ -#line 2545 "MachineIndependent/glslang.y" + case 351: /* type_specifier_nonarray: F64MAT4 */ +#line 2554 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 9183 "MachineIndependent/glslang_tab.cpp" +#line 9213 "MachineIndependent/glslang_tab.cpp" break; - case 351: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2551 "MachineIndependent/glslang.y" + case 352: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2560 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 9194 "MachineIndependent/glslang_tab.cpp" +#line 9224 "MachineIndependent/glslang_tab.cpp" break; - case 352: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2557 "MachineIndependent/glslang.y" + case 353: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2566 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 9205 "MachineIndependent/glslang_tab.cpp" +#line 9235 "MachineIndependent/glslang_tab.cpp" break; - case 353: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2563 "MachineIndependent/glslang.y" + case 354: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2572 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 9216 "MachineIndependent/glslang_tab.cpp" +#line 9246 "MachineIndependent/glslang_tab.cpp" break; - case 354: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2569 "MachineIndependent/glslang.y" + case 355: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2578 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 9227 "MachineIndependent/glslang_tab.cpp" +#line 9257 "MachineIndependent/glslang_tab.cpp" break; - case 355: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2575 "MachineIndependent/glslang.y" + case 356: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2584 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 9238 "MachineIndependent/glslang_tab.cpp" +#line 9268 "MachineIndependent/glslang_tab.cpp" break; - case 356: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2581 "MachineIndependent/glslang.y" + case 357: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2590 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 9249 "MachineIndependent/glslang_tab.cpp" +#line 9279 "MachineIndependent/glslang_tab.cpp" break; - case 357: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2587 "MachineIndependent/glslang.y" + case 358: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2596 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 9260 "MachineIndependent/glslang_tab.cpp" +#line 9290 "MachineIndependent/glslang_tab.cpp" break; - case 358: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2593 "MachineIndependent/glslang.y" + case 359: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2602 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 9271 "MachineIndependent/glslang_tab.cpp" +#line 9301 "MachineIndependent/glslang_tab.cpp" break; - case 359: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2599 "MachineIndependent/glslang.y" + case 360: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2608 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 9282 "MachineIndependent/glslang_tab.cpp" +#line 9312 "MachineIndependent/glslang_tab.cpp" break; - case 360: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2605 "MachineIndependent/glslang.y" + case 361: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2614 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 9291 "MachineIndependent/glslang_tab.cpp" +#line 9321 "MachineIndependent/glslang_tab.cpp" break; - case 361: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2609 "MachineIndependent/glslang.y" + case 362: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2618 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 9300 "MachineIndependent/glslang_tab.cpp" +#line 9330 "MachineIndependent/glslang_tab.cpp" break; - case 362: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2613 "MachineIndependent/glslang.y" + case 363: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2622 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 9309 "MachineIndependent/glslang_tab.cpp" +#line 9339 "MachineIndependent/glslang_tab.cpp" break; - case 363: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2617 "MachineIndependent/glslang.y" + case 364: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2626 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 9319 "MachineIndependent/glslang_tab.cpp" +#line 9349 "MachineIndependent/glslang_tab.cpp" break; - case 364: /* type_specifier_nonarray: SAMPLER1D */ -#line 2622 "MachineIndependent/glslang.y" + case 365: /* type_specifier_nonarray: SAMPLER1D */ +#line 2631 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 9329 "MachineIndependent/glslang_tab.cpp" +#line 9359 "MachineIndependent/glslang_tab.cpp" break; - case 365: /* type_specifier_nonarray: SAMPLER2D */ -#line 2627 "MachineIndependent/glslang.y" + case 366: /* type_specifier_nonarray: SAMPLER2D */ +#line 2636 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 9339 "MachineIndependent/glslang_tab.cpp" +#line 9369 "MachineIndependent/glslang_tab.cpp" break; - case 366: /* type_specifier_nonarray: SAMPLER3D */ -#line 2632 "MachineIndependent/glslang.y" + case 367: /* type_specifier_nonarray: SAMPLER3D */ +#line 2641 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 9349 "MachineIndependent/glslang_tab.cpp" +#line 9379 "MachineIndependent/glslang_tab.cpp" break; - case 367: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2637 "MachineIndependent/glslang.y" + case 368: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2646 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 9359 "MachineIndependent/glslang_tab.cpp" +#line 9389 "MachineIndependent/glslang_tab.cpp" break; - case 368: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2642 "MachineIndependent/glslang.y" + case 369: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2651 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 9369 "MachineIndependent/glslang_tab.cpp" +#line 9399 "MachineIndependent/glslang_tab.cpp" break; - case 369: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2647 "MachineIndependent/glslang.y" + case 370: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2656 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 9379 "MachineIndependent/glslang_tab.cpp" +#line 9409 "MachineIndependent/glslang_tab.cpp" break; - case 370: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2652 "MachineIndependent/glslang.y" + case 371: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2661 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 9389 "MachineIndependent/glslang_tab.cpp" +#line 9419 "MachineIndependent/glslang_tab.cpp" break; - case 371: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2657 "MachineIndependent/glslang.y" + case 372: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2666 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 9399 "MachineIndependent/glslang_tab.cpp" +#line 9429 "MachineIndependent/glslang_tab.cpp" break; - case 372: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2662 "MachineIndependent/glslang.y" + case 373: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2671 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9409 "MachineIndependent/glslang_tab.cpp" +#line 9439 "MachineIndependent/glslang_tab.cpp" break; - case 373: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2667 "MachineIndependent/glslang.y" + case 374: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2676 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9419 "MachineIndependent/glslang_tab.cpp" +#line 9449 "MachineIndependent/glslang_tab.cpp" break; - case 374: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2672 "MachineIndependent/glslang.y" + case 375: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2681 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9429 "MachineIndependent/glslang_tab.cpp" +#line 9459 "MachineIndependent/glslang_tab.cpp" break; - case 375: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2677 "MachineIndependent/glslang.y" + case 376: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2686 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9439 "MachineIndependent/glslang_tab.cpp" +#line 9469 "MachineIndependent/glslang_tab.cpp" break; - case 376: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2682 "MachineIndependent/glslang.y" + case 377: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2691 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9449 "MachineIndependent/glslang_tab.cpp" +#line 9479 "MachineIndependent/glslang_tab.cpp" break; - case 377: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2687 "MachineIndependent/glslang.y" + case 378: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2696 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9460 "MachineIndependent/glslang_tab.cpp" +#line 9490 "MachineIndependent/glslang_tab.cpp" break; - case 378: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2693 "MachineIndependent/glslang.y" + case 379: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2702 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9471 "MachineIndependent/glslang_tab.cpp" +#line 9501 "MachineIndependent/glslang_tab.cpp" break; - case 379: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2699 "MachineIndependent/glslang.y" + case 380: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2708 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9482 "MachineIndependent/glslang_tab.cpp" +#line 9512 "MachineIndependent/glslang_tab.cpp" break; - case 380: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2705 "MachineIndependent/glslang.y" + case 381: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2714 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9493 "MachineIndependent/glslang_tab.cpp" +#line 9523 "MachineIndependent/glslang_tab.cpp" break; - case 381: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2711 "MachineIndependent/glslang.y" + case 382: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2720 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9504 "MachineIndependent/glslang_tab.cpp" +#line 9534 "MachineIndependent/glslang_tab.cpp" break; - case 382: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2717 "MachineIndependent/glslang.y" + case 383: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2726 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9515 "MachineIndependent/glslang_tab.cpp" +#line 9545 "MachineIndependent/glslang_tab.cpp" break; - case 383: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2723 "MachineIndependent/glslang.y" + case 384: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2732 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9526 "MachineIndependent/glslang_tab.cpp" +#line 9556 "MachineIndependent/glslang_tab.cpp" break; - case 384: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2729 "MachineIndependent/glslang.y" + case 385: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2738 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9537 "MachineIndependent/glslang_tab.cpp" +#line 9567 "MachineIndependent/glslang_tab.cpp" break; - case 385: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2735 "MachineIndependent/glslang.y" + case 386: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2744 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9548 "MachineIndependent/glslang_tab.cpp" +#line 9578 "MachineIndependent/glslang_tab.cpp" break; - case 386: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2741 "MachineIndependent/glslang.y" + case 387: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2750 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9559 "MachineIndependent/glslang_tab.cpp" +#line 9589 "MachineIndependent/glslang_tab.cpp" break; - case 387: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2747 "MachineIndependent/glslang.y" + case 388: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2756 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9570 "MachineIndependent/glslang_tab.cpp" +#line 9600 "MachineIndependent/glslang_tab.cpp" break; - case 388: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2753 "MachineIndependent/glslang.y" + case 389: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2762 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9581 "MachineIndependent/glslang_tab.cpp" +#line 9611 "MachineIndependent/glslang_tab.cpp" break; - case 389: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2759 "MachineIndependent/glslang.y" + case 390: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2768 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9592 "MachineIndependent/glslang_tab.cpp" +#line 9622 "MachineIndependent/glslang_tab.cpp" break; - case 390: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2765 "MachineIndependent/glslang.y" + case 391: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2774 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9602 "MachineIndependent/glslang_tab.cpp" +#line 9632 "MachineIndependent/glslang_tab.cpp" break; - case 391: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2770 "MachineIndependent/glslang.y" + case 392: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2779 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9612 "MachineIndependent/glslang_tab.cpp" +#line 9642 "MachineIndependent/glslang_tab.cpp" break; - case 392: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2775 "MachineIndependent/glslang.y" + case 393: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2784 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9622 "MachineIndependent/glslang_tab.cpp" +#line 9652 "MachineIndependent/glslang_tab.cpp" break; - case 393: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2780 "MachineIndependent/glslang.y" + case 394: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2789 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9632 "MachineIndependent/glslang_tab.cpp" +#line 9662 "MachineIndependent/glslang_tab.cpp" break; - case 394: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2785 "MachineIndependent/glslang.y" + case 395: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2794 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9642 "MachineIndependent/glslang_tab.cpp" +#line 9672 "MachineIndependent/glslang_tab.cpp" break; - case 395: /* type_specifier_nonarray: USAMPLER2D */ -#line 2790 "MachineIndependent/glslang.y" + case 396: /* type_specifier_nonarray: USAMPLER2D */ +#line 2799 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9652 "MachineIndependent/glslang_tab.cpp" +#line 9682 "MachineIndependent/glslang_tab.cpp" break; - case 396: /* type_specifier_nonarray: USAMPLER3D */ -#line 2795 "MachineIndependent/glslang.y" + case 397: /* type_specifier_nonarray: USAMPLER3D */ +#line 2804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9662 "MachineIndependent/glslang_tab.cpp" +#line 9692 "MachineIndependent/glslang_tab.cpp" break; - case 397: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2800 "MachineIndependent/glslang.y" + case 398: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2809 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9672 "MachineIndependent/glslang_tab.cpp" +#line 9702 "MachineIndependent/glslang_tab.cpp" break; - case 398: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2805 "MachineIndependent/glslang.y" + case 399: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2814 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9682 "MachineIndependent/glslang_tab.cpp" +#line 9712 "MachineIndependent/glslang_tab.cpp" break; - case 399: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2810 "MachineIndependent/glslang.y" + case 400: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2819 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9692 "MachineIndependent/glslang_tab.cpp" +#line 9722 "MachineIndependent/glslang_tab.cpp" break; - case 400: /* type_specifier_nonarray: USAMPLER1D */ -#line 2815 "MachineIndependent/glslang.y" + case 401: /* type_specifier_nonarray: USAMPLER1D */ +#line 2824 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9702 "MachineIndependent/glslang_tab.cpp" +#line 9732 "MachineIndependent/glslang_tab.cpp" break; - case 401: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2820 "MachineIndependent/glslang.y" + case 402: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2829 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9712 "MachineIndependent/glslang_tab.cpp" +#line 9742 "MachineIndependent/glslang_tab.cpp" break; - case 402: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2825 "MachineIndependent/glslang.y" + case 403: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2834 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9722 "MachineIndependent/glslang_tab.cpp" +#line 9752 "MachineIndependent/glslang_tab.cpp" break; - case 403: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2830 "MachineIndependent/glslang.y" + case 404: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2839 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9732 "MachineIndependent/glslang_tab.cpp" +#line 9762 "MachineIndependent/glslang_tab.cpp" break; - case 404: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2835 "MachineIndependent/glslang.y" + case 405: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2844 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9742 "MachineIndependent/glslang_tab.cpp" +#line 9772 "MachineIndependent/glslang_tab.cpp" break; - case 405: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2840 "MachineIndependent/glslang.y" + case 406: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2849 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9752 "MachineIndependent/glslang_tab.cpp" +#line 9782 "MachineIndependent/glslang_tab.cpp" break; - case 406: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2845 "MachineIndependent/glslang.y" + case 407: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2854 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9762 "MachineIndependent/glslang_tab.cpp" +#line 9792 "MachineIndependent/glslang_tab.cpp" break; - case 407: /* type_specifier_nonarray: TEXTURE2D */ -#line 2850 "MachineIndependent/glslang.y" + case 408: /* type_specifier_nonarray: TEXTURE2D */ +#line 2859 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9772 "MachineIndependent/glslang_tab.cpp" +#line 9802 "MachineIndependent/glslang_tab.cpp" break; - case 408: /* type_specifier_nonarray: TEXTURE3D */ -#line 2855 "MachineIndependent/glslang.y" + case 409: /* type_specifier_nonarray: TEXTURE3D */ +#line 2864 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9782 "MachineIndependent/glslang_tab.cpp" +#line 9812 "MachineIndependent/glslang_tab.cpp" break; - case 409: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2860 "MachineIndependent/glslang.y" + case 410: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2869 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9792 "MachineIndependent/glslang_tab.cpp" +#line 9822 "MachineIndependent/glslang_tab.cpp" break; - case 410: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2865 "MachineIndependent/glslang.y" + case 411: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2874 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9802 "MachineIndependent/glslang_tab.cpp" +#line 9832 "MachineIndependent/glslang_tab.cpp" break; - case 411: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2870 "MachineIndependent/glslang.y" + case 412: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2879 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9812 "MachineIndependent/glslang_tab.cpp" +#line 9842 "MachineIndependent/glslang_tab.cpp" break; - case 412: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2875 "MachineIndependent/glslang.y" + case 413: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2884 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9822 "MachineIndependent/glslang_tab.cpp" +#line 9852 "MachineIndependent/glslang_tab.cpp" break; - case 413: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2880 "MachineIndependent/glslang.y" + case 414: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2889 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9832 "MachineIndependent/glslang_tab.cpp" +#line 9862 "MachineIndependent/glslang_tab.cpp" break; - case 414: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2885 "MachineIndependent/glslang.y" + case 415: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2894 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9842 "MachineIndependent/glslang_tab.cpp" +#line 9872 "MachineIndependent/glslang_tab.cpp" break; - case 415: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2890 "MachineIndependent/glslang.y" + case 416: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2899 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9852 "MachineIndependent/glslang_tab.cpp" +#line 9882 "MachineIndependent/glslang_tab.cpp" break; - case 416: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2895 "MachineIndependent/glslang.y" + case 417: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2904 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9862 "MachineIndependent/glslang_tab.cpp" +#line 9892 "MachineIndependent/glslang_tab.cpp" break; - case 417: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2900 "MachineIndependent/glslang.y" + case 418: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9872 "MachineIndependent/glslang_tab.cpp" +#line 9902 "MachineIndependent/glslang_tab.cpp" break; - case 418: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2905 "MachineIndependent/glslang.y" + case 419: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2914 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9882 "MachineIndependent/glslang_tab.cpp" +#line 9912 "MachineIndependent/glslang_tab.cpp" break; - case 419: /* type_specifier_nonarray: SAMPLER */ -#line 2910 "MachineIndependent/glslang.y" + case 420: /* type_specifier_nonarray: SAMPLER */ +#line 2919 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9892 "MachineIndependent/glslang_tab.cpp" +#line 9922 "MachineIndependent/glslang_tab.cpp" break; - case 420: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2915 "MachineIndependent/glslang.y" + case 421: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2924 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9902 "MachineIndependent/glslang_tab.cpp" +#line 9932 "MachineIndependent/glslang_tab.cpp" break; - case 421: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2920 "MachineIndependent/glslang.y" + case 422: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2929 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9912 "MachineIndependent/glslang_tab.cpp" +#line 9942 "MachineIndependent/glslang_tab.cpp" break; - case 422: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2925 "MachineIndependent/glslang.y" + case 423: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2934 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9922 "MachineIndependent/glslang_tab.cpp" +#line 9952 "MachineIndependent/glslang_tab.cpp" break; - case 423: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2930 "MachineIndependent/glslang.y" + case 424: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2939 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9933 "MachineIndependent/glslang_tab.cpp" +#line 9963 "MachineIndependent/glslang_tab.cpp" break; - case 424: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2936 "MachineIndependent/glslang.y" + case 425: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2945 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9944 "MachineIndependent/glslang_tab.cpp" +#line 9974 "MachineIndependent/glslang_tab.cpp" break; - case 425: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2942 "MachineIndependent/glslang.y" + case 426: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2951 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9954 "MachineIndependent/glslang_tab.cpp" +#line 9984 "MachineIndependent/glslang_tab.cpp" break; - case 426: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2947 "MachineIndependent/glslang.y" + case 427: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2956 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9964 "MachineIndependent/glslang_tab.cpp" +#line 9994 "MachineIndependent/glslang_tab.cpp" break; - case 427: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2952 "MachineIndependent/glslang.y" + case 428: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2961 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9974 "MachineIndependent/glslang_tab.cpp" +#line 10004 "MachineIndependent/glslang_tab.cpp" break; - case 428: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2957 "MachineIndependent/glslang.y" + case 429: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2966 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9985 "MachineIndependent/glslang_tab.cpp" +#line 10015 "MachineIndependent/glslang_tab.cpp" break; - case 429: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2963 "MachineIndependent/glslang.y" + case 430: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2972 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9995 "MachineIndependent/glslang_tab.cpp" +#line 10025 "MachineIndependent/glslang_tab.cpp" break; - case 430: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2968 "MachineIndependent/glslang.y" + case 431: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2977 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 10005 "MachineIndependent/glslang_tab.cpp" +#line 10035 "MachineIndependent/glslang_tab.cpp" break; - case 431: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2973 "MachineIndependent/glslang.y" + case 432: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2982 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 10015 "MachineIndependent/glslang_tab.cpp" +#line 10045 "MachineIndependent/glslang_tab.cpp" break; - case 432: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2978 "MachineIndependent/glslang.y" + case 433: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2987 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 10026 "MachineIndependent/glslang_tab.cpp" +#line 10056 "MachineIndependent/glslang_tab.cpp" break; - case 433: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2984 "MachineIndependent/glslang.y" + case 434: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2993 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 10036 "MachineIndependent/glslang_tab.cpp" +#line 10066 "MachineIndependent/glslang_tab.cpp" break; - case 434: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2989 "MachineIndependent/glslang.y" + case 435: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2998 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 10046 "MachineIndependent/glslang_tab.cpp" +#line 10076 "MachineIndependent/glslang_tab.cpp" break; - case 435: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2994 "MachineIndependent/glslang.y" + case 436: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 3003 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 10056 "MachineIndependent/glslang_tab.cpp" +#line 10086 "MachineIndependent/glslang_tab.cpp" break; - case 436: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2999 "MachineIndependent/glslang.y" + case 437: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 3008 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 10067 "MachineIndependent/glslang_tab.cpp" +#line 10097 "MachineIndependent/glslang_tab.cpp" break; - case 437: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 3005 "MachineIndependent/glslang.y" + case 438: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 3014 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 10077 "MachineIndependent/glslang_tab.cpp" +#line 10107 "MachineIndependent/glslang_tab.cpp" break; - case 438: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 3010 "MachineIndependent/glslang.y" + case 439: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 3019 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 10087 "MachineIndependent/glslang_tab.cpp" +#line 10117 "MachineIndependent/glslang_tab.cpp" break; - case 439: /* type_specifier_nonarray: TEXTURE1D */ -#line 3015 "MachineIndependent/glslang.y" + case 440: /* type_specifier_nonarray: TEXTURE1D */ +#line 3024 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 10097 "MachineIndependent/glslang_tab.cpp" +#line 10127 "MachineIndependent/glslang_tab.cpp" break; - case 440: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 3020 "MachineIndependent/glslang.y" + case 441: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 3029 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 10108 "MachineIndependent/glslang_tab.cpp" +#line 10138 "MachineIndependent/glslang_tab.cpp" break; - case 441: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 3026 "MachineIndependent/glslang.y" + case 442: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 3035 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 10119 "MachineIndependent/glslang_tab.cpp" +#line 10149 "MachineIndependent/glslang_tab.cpp" break; - case 442: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 3032 "MachineIndependent/glslang.y" + case 443: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 3041 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 10130 "MachineIndependent/glslang_tab.cpp" +#line 10160 "MachineIndependent/glslang_tab.cpp" break; - case 443: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 3038 "MachineIndependent/glslang.y" + case 444: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 3047 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 10141 "MachineIndependent/glslang_tab.cpp" +#line 10171 "MachineIndependent/glslang_tab.cpp" break; - case 444: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 3044 "MachineIndependent/glslang.y" + case 445: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 3053 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 10151 "MachineIndependent/glslang_tab.cpp" +#line 10181 "MachineIndependent/glslang_tab.cpp" break; - case 445: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 3049 "MachineIndependent/glslang.y" + case 446: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 3058 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 10162 "MachineIndependent/glslang_tab.cpp" +#line 10192 "MachineIndependent/glslang_tab.cpp" break; - case 446: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 3055 "MachineIndependent/glslang.y" + case 447: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 3064 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 10173 "MachineIndependent/glslang_tab.cpp" +#line 10203 "MachineIndependent/glslang_tab.cpp" break; - case 447: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 3061 "MachineIndependent/glslang.y" + case 448: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 3070 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 10184 "MachineIndependent/glslang_tab.cpp" +#line 10214 "MachineIndependent/glslang_tab.cpp" break; - case 448: /* type_specifier_nonarray: ITEXTURE1D */ -#line 3067 "MachineIndependent/glslang.y" + case 449: /* type_specifier_nonarray: ITEXTURE1D */ +#line 3076 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 10194 "MachineIndependent/glslang_tab.cpp" +#line 10224 "MachineIndependent/glslang_tab.cpp" break; - case 449: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 3072 "MachineIndependent/glslang.y" + case 450: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 3081 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 10204 "MachineIndependent/glslang_tab.cpp" +#line 10234 "MachineIndependent/glslang_tab.cpp" break; - case 450: /* type_specifier_nonarray: UTEXTURE1D */ -#line 3077 "MachineIndependent/glslang.y" + case 451: /* type_specifier_nonarray: UTEXTURE1D */ +#line 3086 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 10214 "MachineIndependent/glslang_tab.cpp" +#line 10244 "MachineIndependent/glslang_tab.cpp" break; - case 451: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 3082 "MachineIndependent/glslang.y" + case 452: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 3091 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 10224 "MachineIndependent/glslang_tab.cpp" +#line 10254 "MachineIndependent/glslang_tab.cpp" break; - case 452: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3087 "MachineIndependent/glslang.y" + case 453: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 3096 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 10234 "MachineIndependent/glslang_tab.cpp" +#line 10264 "MachineIndependent/glslang_tab.cpp" break; - case 453: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3092 "MachineIndependent/glslang.y" + case 454: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 3101 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 10245 "MachineIndependent/glslang_tab.cpp" +#line 10275 "MachineIndependent/glslang_tab.cpp" break; - case 454: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3098 "MachineIndependent/glslang.y" + case 455: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 3107 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 10255 "MachineIndependent/glslang_tab.cpp" +#line 10285 "MachineIndependent/glslang_tab.cpp" break; - case 455: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3103 "MachineIndependent/glslang.y" + case 456: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 3112 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 10265 "MachineIndependent/glslang_tab.cpp" +#line 10295 "MachineIndependent/glslang_tab.cpp" break; - case 456: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3108 "MachineIndependent/glslang.y" + case 457: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 3117 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 10275 "MachineIndependent/glslang_tab.cpp" +#line 10305 "MachineIndependent/glslang_tab.cpp" break; - case 457: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3113 "MachineIndependent/glslang.y" + case 458: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 3122 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 10286 "MachineIndependent/glslang_tab.cpp" +#line 10316 "MachineIndependent/glslang_tab.cpp" break; - case 458: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3119 "MachineIndependent/glslang.y" + case 459: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3128 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 10296 "MachineIndependent/glslang_tab.cpp" +#line 10326 "MachineIndependent/glslang_tab.cpp" break; - case 459: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3124 "MachineIndependent/glslang.y" + case 460: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3133 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 10306 "MachineIndependent/glslang_tab.cpp" +#line 10336 "MachineIndependent/glslang_tab.cpp" break; - case 460: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3129 "MachineIndependent/glslang.y" + case 461: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3138 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 10316 "MachineIndependent/glslang_tab.cpp" +#line 10346 "MachineIndependent/glslang_tab.cpp" break; - case 461: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3134 "MachineIndependent/glslang.y" + case 462: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3143 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 10327 "MachineIndependent/glslang_tab.cpp" +#line 10357 "MachineIndependent/glslang_tab.cpp" break; - case 462: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3140 "MachineIndependent/glslang.y" + case 463: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3149 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 10337 "MachineIndependent/glslang_tab.cpp" +#line 10367 "MachineIndependent/glslang_tab.cpp" break; - case 463: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3145 "MachineIndependent/glslang.y" + case 464: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3154 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 10347 "MachineIndependent/glslang_tab.cpp" +#line 10377 "MachineIndependent/glslang_tab.cpp" break; - case 464: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3150 "MachineIndependent/glslang.y" + case 465: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3159 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 10357 "MachineIndependent/glslang_tab.cpp" +#line 10387 "MachineIndependent/glslang_tab.cpp" break; - case 465: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3155 "MachineIndependent/glslang.y" + case 466: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3164 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 10368 "MachineIndependent/glslang_tab.cpp" +#line 10398 "MachineIndependent/glslang_tab.cpp" break; - case 466: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3161 "MachineIndependent/glslang.y" + case 467: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3170 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 10378 "MachineIndependent/glslang_tab.cpp" +#line 10408 "MachineIndependent/glslang_tab.cpp" break; - case 467: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3166 "MachineIndependent/glslang.y" + case 468: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3175 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 10388 "MachineIndependent/glslang_tab.cpp" +#line 10418 "MachineIndependent/glslang_tab.cpp" break; - case 468: /* type_specifier_nonarray: IMAGE1D */ -#line 3171 "MachineIndependent/glslang.y" + case 469: /* type_specifier_nonarray: IMAGE1D */ +#line 3180 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 10398 "MachineIndependent/glslang_tab.cpp" +#line 10428 "MachineIndependent/glslang_tab.cpp" break; - case 469: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3176 "MachineIndependent/glslang.y" + case 470: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3185 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10409 "MachineIndependent/glslang_tab.cpp" +#line 10439 "MachineIndependent/glslang_tab.cpp" break; - case 470: /* type_specifier_nonarray: IIMAGE1D */ -#line 3182 "MachineIndependent/glslang.y" + case 471: /* type_specifier_nonarray: IIMAGE1D */ +#line 3191 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10419 "MachineIndependent/glslang_tab.cpp" +#line 10449 "MachineIndependent/glslang_tab.cpp" break; - case 471: /* type_specifier_nonarray: UIMAGE1D */ -#line 3187 "MachineIndependent/glslang.y" + case 472: /* type_specifier_nonarray: UIMAGE1D */ +#line 3196 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10429 "MachineIndependent/glslang_tab.cpp" +#line 10459 "MachineIndependent/glslang_tab.cpp" break; - case 472: /* type_specifier_nonarray: IMAGE2D */ -#line 3192 "MachineIndependent/glslang.y" + case 473: /* type_specifier_nonarray: IMAGE2D */ +#line 3201 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10439 "MachineIndependent/glslang_tab.cpp" +#line 10469 "MachineIndependent/glslang_tab.cpp" break; - case 473: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3197 "MachineIndependent/glslang.y" + case 474: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3206 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10450 "MachineIndependent/glslang_tab.cpp" +#line 10480 "MachineIndependent/glslang_tab.cpp" break; - case 474: /* type_specifier_nonarray: IIMAGE2D */ -#line 3203 "MachineIndependent/glslang.y" + case 475: /* type_specifier_nonarray: IIMAGE2D */ +#line 3212 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10460 "MachineIndependent/glslang_tab.cpp" +#line 10490 "MachineIndependent/glslang_tab.cpp" break; - case 475: /* type_specifier_nonarray: UIMAGE2D */ -#line 3208 "MachineIndependent/glslang.y" + case 476: /* type_specifier_nonarray: UIMAGE2D */ +#line 3217 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10470 "MachineIndependent/glslang_tab.cpp" +#line 10500 "MachineIndependent/glslang_tab.cpp" break; - case 476: /* type_specifier_nonarray: IMAGE3D */ -#line 3213 "MachineIndependent/glslang.y" + case 477: /* type_specifier_nonarray: IMAGE3D */ +#line 3222 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10480 "MachineIndependent/glslang_tab.cpp" +#line 10510 "MachineIndependent/glslang_tab.cpp" break; - case 477: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3218 "MachineIndependent/glslang.y" + case 478: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3227 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10491 "MachineIndependent/glslang_tab.cpp" +#line 10521 "MachineIndependent/glslang_tab.cpp" break; - case 478: /* type_specifier_nonarray: IIMAGE3D */ -#line 3224 "MachineIndependent/glslang.y" + case 479: /* type_specifier_nonarray: IIMAGE3D */ +#line 3233 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10501 "MachineIndependent/glslang_tab.cpp" +#line 10531 "MachineIndependent/glslang_tab.cpp" break; - case 479: /* type_specifier_nonarray: UIMAGE3D */ -#line 3229 "MachineIndependent/glslang.y" + case 480: /* type_specifier_nonarray: UIMAGE3D */ +#line 3238 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10511 "MachineIndependent/glslang_tab.cpp" +#line 10541 "MachineIndependent/glslang_tab.cpp" break; - case 480: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3234 "MachineIndependent/glslang.y" + case 481: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3243 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10521 "MachineIndependent/glslang_tab.cpp" +#line 10551 "MachineIndependent/glslang_tab.cpp" break; - case 481: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3239 "MachineIndependent/glslang.y" + case 482: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3248 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10532 "MachineIndependent/glslang_tab.cpp" +#line 10562 "MachineIndependent/glslang_tab.cpp" break; - case 482: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3245 "MachineIndependent/glslang.y" + case 483: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3254 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10542 "MachineIndependent/glslang_tab.cpp" +#line 10572 "MachineIndependent/glslang_tab.cpp" break; - case 483: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3250 "MachineIndependent/glslang.y" + case 484: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3259 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10552 "MachineIndependent/glslang_tab.cpp" +#line 10582 "MachineIndependent/glslang_tab.cpp" break; - case 484: /* type_specifier_nonarray: IMAGECUBE */ -#line 3255 "MachineIndependent/glslang.y" + case 485: /* type_specifier_nonarray: IMAGECUBE */ +#line 3264 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10562 "MachineIndependent/glslang_tab.cpp" +#line 10592 "MachineIndependent/glslang_tab.cpp" break; - case 485: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3260 "MachineIndependent/glslang.y" + case 486: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3269 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10573 "MachineIndependent/glslang_tab.cpp" +#line 10603 "MachineIndependent/glslang_tab.cpp" break; - case 486: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3266 "MachineIndependent/glslang.y" + case 487: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3275 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10583 "MachineIndependent/glslang_tab.cpp" +#line 10613 "MachineIndependent/glslang_tab.cpp" break; - case 487: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3271 "MachineIndependent/glslang.y" + case 488: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3280 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10593 "MachineIndependent/glslang_tab.cpp" +#line 10623 "MachineIndependent/glslang_tab.cpp" break; - case 488: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3276 "MachineIndependent/glslang.y" + case 489: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3285 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10603 "MachineIndependent/glslang_tab.cpp" +#line 10633 "MachineIndependent/glslang_tab.cpp" break; - case 489: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3281 "MachineIndependent/glslang.y" + case 490: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3290 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10614 "MachineIndependent/glslang_tab.cpp" +#line 10644 "MachineIndependent/glslang_tab.cpp" break; - case 490: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3287 "MachineIndependent/glslang.y" + case 491: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3296 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10624 "MachineIndependent/glslang_tab.cpp" +#line 10654 "MachineIndependent/glslang_tab.cpp" break; - case 491: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3292 "MachineIndependent/glslang.y" + case 492: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10634 "MachineIndependent/glslang_tab.cpp" +#line 10664 "MachineIndependent/glslang_tab.cpp" break; - case 492: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3297 "MachineIndependent/glslang.y" + case 493: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10644 "MachineIndependent/glslang_tab.cpp" +#line 10674 "MachineIndependent/glslang_tab.cpp" break; - case 493: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3302 "MachineIndependent/glslang.y" + case 494: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3311 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10655 "MachineIndependent/glslang_tab.cpp" +#line 10685 "MachineIndependent/glslang_tab.cpp" break; - case 494: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3308 "MachineIndependent/glslang.y" + case 495: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3317 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10665 "MachineIndependent/glslang_tab.cpp" +#line 10695 "MachineIndependent/glslang_tab.cpp" break; - case 495: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3313 "MachineIndependent/glslang.y" + case 496: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3322 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10675 "MachineIndependent/glslang_tab.cpp" +#line 10705 "MachineIndependent/glslang_tab.cpp" break; - case 496: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3318 "MachineIndependent/glslang.y" + case 497: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3327 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10685 "MachineIndependent/glslang_tab.cpp" +#line 10715 "MachineIndependent/glslang_tab.cpp" break; - case 497: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3323 "MachineIndependent/glslang.y" + case 498: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3332 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10696 "MachineIndependent/glslang_tab.cpp" +#line 10726 "MachineIndependent/glslang_tab.cpp" break; - case 498: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3329 "MachineIndependent/glslang.y" + case 499: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3338 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10706 "MachineIndependent/glslang_tab.cpp" +#line 10736 "MachineIndependent/glslang_tab.cpp" break; - case 499: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3334 "MachineIndependent/glslang.y" + case 500: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3343 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10716 "MachineIndependent/glslang_tab.cpp" +#line 10746 "MachineIndependent/glslang_tab.cpp" break; - case 500: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3339 "MachineIndependent/glslang.y" + case 501: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3348 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10726 "MachineIndependent/glslang_tab.cpp" +#line 10756 "MachineIndependent/glslang_tab.cpp" break; - case 501: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3344 "MachineIndependent/glslang.y" + case 502: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3353 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10737 "MachineIndependent/glslang_tab.cpp" +#line 10767 "MachineIndependent/glslang_tab.cpp" break; - case 502: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3350 "MachineIndependent/glslang.y" + case 503: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3359 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10747 "MachineIndependent/glslang_tab.cpp" +#line 10777 "MachineIndependent/glslang_tab.cpp" break; - case 503: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3355 "MachineIndependent/glslang.y" + case 504: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3364 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10757 "MachineIndependent/glslang_tab.cpp" +#line 10787 "MachineIndependent/glslang_tab.cpp" break; - case 504: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3360 "MachineIndependent/glslang.y" + case 505: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3369 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10767 "MachineIndependent/glslang_tab.cpp" +#line 10797 "MachineIndependent/glslang_tab.cpp" break; - case 505: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3365 "MachineIndependent/glslang.y" + case 506: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3374 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10778 "MachineIndependent/glslang_tab.cpp" +#line 10808 "MachineIndependent/glslang_tab.cpp" break; - case 506: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3371 "MachineIndependent/glslang.y" + case 507: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3380 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10788 "MachineIndependent/glslang_tab.cpp" +#line 10818 "MachineIndependent/glslang_tab.cpp" break; - case 507: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3376 "MachineIndependent/glslang.y" + case 508: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3385 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10798 "MachineIndependent/glslang_tab.cpp" +#line 10828 "MachineIndependent/glslang_tab.cpp" break; - case 508: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3381 "MachineIndependent/glslang.y" + case 509: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3390 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10808 "MachineIndependent/glslang_tab.cpp" +#line 10838 "MachineIndependent/glslang_tab.cpp" break; - case 509: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3386 "MachineIndependent/glslang.y" + case 510: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3395 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10819 "MachineIndependent/glslang_tab.cpp" +#line 10849 "MachineIndependent/glslang_tab.cpp" break; - case 510: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3392 "MachineIndependent/glslang.y" + case 511: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3401 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10829 "MachineIndependent/glslang_tab.cpp" +#line 10859 "MachineIndependent/glslang_tab.cpp" break; - case 511: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3397 "MachineIndependent/glslang.y" + case 512: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3406 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10839 "MachineIndependent/glslang_tab.cpp" +#line 10869 "MachineIndependent/glslang_tab.cpp" break; - case 512: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3402 "MachineIndependent/glslang.y" + case 513: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3411 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10849 "MachineIndependent/glslang_tab.cpp" +#line 10879 "MachineIndependent/glslang_tab.cpp" break; - case 513: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3407 "MachineIndependent/glslang.y" + case 514: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3416 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10859 "MachineIndependent/glslang_tab.cpp" +#line 10889 "MachineIndependent/glslang_tab.cpp" break; - case 514: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3412 "MachineIndependent/glslang.y" + case 515: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3421 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10869 "MachineIndependent/glslang_tab.cpp" +#line 10899 "MachineIndependent/glslang_tab.cpp" break; - case 515: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3417 "MachineIndependent/glslang.y" + case 516: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3426 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10879 "MachineIndependent/glslang_tab.cpp" +#line 10909 "MachineIndependent/glslang_tab.cpp" break; - case 516: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3422 "MachineIndependent/glslang.y" + case 517: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3431 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10889 "MachineIndependent/glslang_tab.cpp" +#line 10919 "MachineIndependent/glslang_tab.cpp" break; - case 517: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3427 "MachineIndependent/glslang.y" + case 518: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3436 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10899 "MachineIndependent/glslang_tab.cpp" +#line 10929 "MachineIndependent/glslang_tab.cpp" break; - case 518: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3432 "MachineIndependent/glslang.y" + case 519: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3441 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10909 "MachineIndependent/glslang_tab.cpp" +#line 10939 "MachineIndependent/glslang_tab.cpp" break; - case 519: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3437 "MachineIndependent/glslang.y" + case 520: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3446 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10919 "MachineIndependent/glslang_tab.cpp" +#line 10949 "MachineIndependent/glslang_tab.cpp" break; - case 520: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3442 "MachineIndependent/glslang.y" + case 521: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3451 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10929 "MachineIndependent/glslang_tab.cpp" +#line 10959 "MachineIndependent/glslang_tab.cpp" break; - case 521: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3447 "MachineIndependent/glslang.y" + case 522: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3456 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10939 "MachineIndependent/glslang_tab.cpp" +#line 10969 "MachineIndependent/glslang_tab.cpp" break; - case 522: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3452 "MachineIndependent/glslang.y" + case 523: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3461 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10949 "MachineIndependent/glslang_tab.cpp" +#line 10979 "MachineIndependent/glslang_tab.cpp" break; - case 523: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3457 "MachineIndependent/glslang.y" + case 524: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3466 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10959 "MachineIndependent/glslang_tab.cpp" +#line 10989 "MachineIndependent/glslang_tab.cpp" break; - case 524: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3462 "MachineIndependent/glslang.y" + case 525: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3471 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10969 "MachineIndependent/glslang_tab.cpp" +#line 10999 "MachineIndependent/glslang_tab.cpp" break; - case 525: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3467 "MachineIndependent/glslang.y" + case 526: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3476 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10979 "MachineIndependent/glslang_tab.cpp" +#line 11009 "MachineIndependent/glslang_tab.cpp" break; - case 526: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3472 "MachineIndependent/glslang.y" + case 527: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3481 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10989 "MachineIndependent/glslang_tab.cpp" +#line 11019 "MachineIndependent/glslang_tab.cpp" break; - case 527: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3477 "MachineIndependent/glslang.y" + case 528: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3486 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10999 "MachineIndependent/glslang_tab.cpp" +#line 11029 "MachineIndependent/glslang_tab.cpp" break; - case 528: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3482 "MachineIndependent/glslang.y" + case 529: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3491 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 11009 "MachineIndependent/glslang_tab.cpp" +#line 11039 "MachineIndependent/glslang_tab.cpp" break; - case 529: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3487 "MachineIndependent/glslang.y" + case 530: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3496 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 11019 "MachineIndependent/glslang_tab.cpp" +#line 11049 "MachineIndependent/glslang_tab.cpp" break; - case 530: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3492 "MachineIndependent/glslang.y" + case 531: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3501 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 11029 "MachineIndependent/glslang_tab.cpp" +#line 11059 "MachineIndependent/glslang_tab.cpp" break; - case 531: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3497 "MachineIndependent/glslang.y" + case 532: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3506 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 11039 "MachineIndependent/glslang_tab.cpp" +#line 11069 "MachineIndependent/glslang_tab.cpp" break; - case 532: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3502 "MachineIndependent/glslang.y" + case 533: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3511 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 11049 "MachineIndependent/glslang_tab.cpp" +#line 11079 "MachineIndependent/glslang_tab.cpp" break; - case 533: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3507 "MachineIndependent/glslang.y" + case 534: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3516 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 11059 "MachineIndependent/glslang_tab.cpp" +#line 11089 "MachineIndependent/glslang_tab.cpp" break; - case 534: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3512 "MachineIndependent/glslang.y" + case 535: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3521 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 11070 "MachineIndependent/glslang_tab.cpp" +#line 11100 "MachineIndependent/glslang_tab.cpp" break; - case 535: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3518 "MachineIndependent/glslang.y" + case 536: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3527 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 11081 "MachineIndependent/glslang_tab.cpp" +#line 11111 "MachineIndependent/glslang_tab.cpp" break; - case 536: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3524 "MachineIndependent/glslang.y" + case 537: /* type_specifier_nonarray: ATTACHMENTEXT */ +#line 3533 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 11092 "MachineIndependent/glslang_tab.cpp" +#line 11122 "MachineIndependent/glslang_tab.cpp" break; - case 537: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3530 "MachineIndependent/glslang.y" + case 538: /* type_specifier_nonarray: IATTACHMENTEXT */ +#line 3539 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 11103 "MachineIndependent/glslang_tab.cpp" +#line 11133 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3536 "MachineIndependent/glslang.y" + case 539: /* type_specifier_nonarray: UATTACHMENTEXT */ +#line 3545 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 11114 "MachineIndependent/glslang_tab.cpp" +#line 11144 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3542 "MachineIndependent/glslang.y" + case 540: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3551 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 11125 "MachineIndependent/glslang_tab.cpp" +#line 11155 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3548 "MachineIndependent/glslang.y" + case 541: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3557 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 11136 "MachineIndependent/glslang_tab.cpp" +#line 11166 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3554 "MachineIndependent/glslang.y" + case 542: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3563 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -11144,11 +11174,11 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 11148 "MachineIndependent/glslang_tab.cpp" +#line 11178 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3561 "MachineIndependent/glslang.y" + case 543: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3570 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -11156,55 +11186,55 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 11160 "MachineIndependent/glslang_tab.cpp" +#line 11190 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3568 "MachineIndependent/glslang.y" + case 544: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3577 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 11171 "MachineIndependent/glslang_tab.cpp" +#line 11201 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3574 "MachineIndependent/glslang.y" + case 545: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3583 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 11182 "MachineIndependent/glslang_tab.cpp" +#line 11212 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3580 "MachineIndependent/glslang.y" + case 546: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3589 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 11193 "MachineIndependent/glslang_tab.cpp" +#line 11223 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3586 "MachineIndependent/glslang.y" + case 547: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3595 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 11204 "MachineIndependent/glslang_tab.cpp" +#line 11234 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3592 "MachineIndependent/glslang.y" + case 548: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3601 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -11212,11 +11242,11 @@ yyreduce: (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 11216 "MachineIndependent/glslang_tab.cpp" +#line 11246 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3599 "MachineIndependent/glslang.y" + case 549: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3608 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -11224,11 +11254,11 @@ yyreduce: (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 11228 "MachineIndependent/glslang_tab.cpp" +#line 11258 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3606 "MachineIndependent/glslang.y" + case 550: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3615 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -11236,11 +11266,11 @@ yyreduce: (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 11240 "MachineIndependent/glslang_tab.cpp" +#line 11270 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* type_specifier_nonarray: COOPMAT */ -#line 3613 "MachineIndependent/glslang.y" + case 551: /* type_specifier_nonarray: COOPMAT */ +#line 3622 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -11248,90 +11278,99 @@ yyreduce: (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } -#line 11252 "MachineIndependent/glslang_tab.cpp" +#line 11282 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* type_specifier_nonarray: TENSORLAYOUTNV */ -#line 3620 "MachineIndependent/glslang.y" + case 552: /* type_specifier_nonarray: TENSORLAYOUTNV */ +#line 3629 "MachineIndependent/glslang.y" { parseContext.tensorLayoutViewCheck((yyvsp[0].lex).loc, "tensorLayoutNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtTensorLayoutNV; } -#line 11262 "MachineIndependent/glslang_tab.cpp" +#line 11292 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* type_specifier_nonarray: TENSORVIEWNV */ -#line 3625 "MachineIndependent/glslang.y" + case 553: /* type_specifier_nonarray: TENSORVIEWNV */ +#line 3634 "MachineIndependent/glslang.y" { parseContext.tensorLayoutViewCheck((yyvsp[0].lex).loc, "tensorViewNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtTensorViewNV; } -#line 11272 "MachineIndependent/glslang_tab.cpp" +#line 11302 "MachineIndependent/glslang_tab.cpp" break; - case 553: /* type_specifier_nonarray: FUNCTION */ -#line 3630 "MachineIndependent/glslang.y" + case 554: /* type_specifier_nonarray: FUNCTION */ +#line 3639 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).basicType = EbtFunction; } -#line 11281 "MachineIndependent/glslang_tab.cpp" +#line 11311 "MachineIndependent/glslang_tab.cpp" break; - case 554: /* type_specifier_nonarray: COOPVECNV */ -#line 3634 "MachineIndependent/glslang.y" + case 555: /* type_specifier_nonarray: COOPVECNV */ +#line 3643 "MachineIndependent/glslang.y" { parseContext.coopvecCheck((yyvsp[0].lex).loc, "coopvecNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtCoopvecNV; (yyval.interm.type).coopvecNV = true; } -#line 11292 "MachineIndependent/glslang_tab.cpp" +#line 11322 "MachineIndependent/glslang_tab.cpp" break; - case 555: /* type_specifier_nonarray: TENSORARM */ -#line 3640 "MachineIndependent/glslang.y" + case 556: /* type_specifier_nonarray: TENSORARM */ +#line 3649 "MachineIndependent/glslang.y" { parseContext.tensorCheckARM((yyvsp[0].lex).loc, "tensorARM", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).tensorRankARM = 1; // placeholder value (yyval.interm.type).basicType = EbtTensorARM; } -#line 11303 "MachineIndependent/glslang_tab.cpp" +#line 11333 "MachineIndependent/glslang_tab.cpp" break; - case 556: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3646 "MachineIndependent/glslang.y" + case 557: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3655 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 11312 "MachineIndependent/glslang_tab.cpp" +#line 11342 "MachineIndependent/glslang_tab.cpp" break; - case 557: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3650 "MachineIndependent/glslang.y" - { + case 558: /* type_specifier_nonarray: HITOBJECTNV */ +#line 3659 "MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; - } -#line 11321 "MachineIndependent/glslang_tab.cpp" + } +#line 11351 "MachineIndependent/glslang_tab.cpp" break; - case 558: /* type_specifier_nonarray: struct_specifier */ -#line 3654 "MachineIndependent/glslang.y" + case 559: /* type_specifier_nonarray: HITOBJECTEXT */ +#line 3663 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtHitObjectEXT; + } +#line 11360 "MachineIndependent/glslang_tab.cpp" + break; + + case 560: /* type_specifier_nonarray: struct_specifier */ +#line 3667 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 11331 "MachineIndependent/glslang_tab.cpp" +#line 11370 "MachineIndependent/glslang_tab.cpp" break; - case 559: /* type_specifier_nonarray: TYPE_NAME */ -#line 3659 "MachineIndependent/glslang.y" + case 561: /* type_specifier_nonarray: TYPE_NAME */ +#line 3672 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -11345,47 +11384,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 11349 "MachineIndependent/glslang_tab.cpp" +#line 11388 "MachineIndependent/glslang_tab.cpp" break; - case 560: /* precision_qualifier: HIGH_PRECISION */ -#line 3675 "MachineIndependent/glslang.y" + case 562: /* precision_qualifier: HIGH_PRECISION */ +#line 3688 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 11359 "MachineIndependent/glslang_tab.cpp" +#line 11398 "MachineIndependent/glslang_tab.cpp" break; - case 561: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3680 "MachineIndependent/glslang.y" + case 563: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3693 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 11369 "MachineIndependent/glslang_tab.cpp" +#line 11408 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* precision_qualifier: LOW_PRECISION */ -#line 3685 "MachineIndependent/glslang.y" + case 564: /* precision_qualifier: LOW_PRECISION */ +#line 3698 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 11379 "MachineIndependent/glslang_tab.cpp" +#line 11418 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* $@3: %empty */ -#line 3693 "MachineIndependent/glslang.y" + case 565: /* $@3: %empty */ +#line 3706 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 11385 "MachineIndependent/glslang_tab.cpp" +#line 11424 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3693 "MachineIndependent/glslang.y" + case 566: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3706 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); @@ -11403,17 +11442,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 11407 "MachineIndependent/glslang_tab.cpp" +#line 11446 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* $@4: %empty */ -#line 3710 "MachineIndependent/glslang.y" + case 567: /* $@4: %empty */ +#line 3723 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 11413 "MachineIndependent/glslang_tab.cpp" +#line 11452 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3710 "MachineIndependent/glslang.y" + case 568: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3723 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -11421,19 +11460,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 11425 "MachineIndependent/glslang_tab.cpp" +#line 11464 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* struct_declaration_list: struct_declaration */ -#line 3720 "MachineIndependent/glslang.y" + case 569: /* struct_declaration_list: struct_declaration */ +#line 3733 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 11433 "MachineIndependent/glslang_tab.cpp" +#line 11472 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3723 "MachineIndependent/glslang.y" + case 570: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3736 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -11444,11 +11483,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 11448 "MachineIndependent/glslang_tab.cpp" +#line 11487 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3736 "MachineIndependent/glslang.y" + case 571: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3749 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11471,11 +11510,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11475 "MachineIndependent/glslang_tab.cpp" +#line 11514 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3758 "MachineIndependent/glslang.y" + case 572: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3771 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11500,38 +11539,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11504 "MachineIndependent/glslang_tab.cpp" +#line 11543 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* struct_declarator_list: struct_declarator */ -#line 3785 "MachineIndependent/glslang.y" + case 573: /* struct_declarator_list: struct_declarator */ +#line 3798 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11513 "MachineIndependent/glslang_tab.cpp" +#line 11552 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3789 "MachineIndependent/glslang.y" + case 574: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3802 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11521 "MachineIndependent/glslang_tab.cpp" +#line 11560 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* struct_declarator: IDENTIFIER */ -#line 3795 "MachineIndependent/glslang.y" + case 575: /* struct_declarator: IDENTIFIER */ +#line 3808 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11531 "MachineIndependent/glslang_tab.cpp" +#line 11570 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3800 "MachineIndependent/glslang.y" + case 576: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3813 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11540,168 +11579,168 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11544 "MachineIndependent/glslang_tab.cpp" +#line 11583 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* initializer: assignment_expression */ -#line 3811 "MachineIndependent/glslang.y" + case 577: /* initializer: assignment_expression */ +#line 3824 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11552 "MachineIndependent/glslang_tab.cpp" +#line 11591 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3814 "MachineIndependent/glslang.y" + case 578: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3827 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11563 "MachineIndependent/glslang_tab.cpp" +#line 11602 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3820 "MachineIndependent/glslang.y" + case 579: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3833 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11574 "MachineIndependent/glslang_tab.cpp" +#line 11613 "MachineIndependent/glslang_tab.cpp" break; - case 578: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3826 "MachineIndependent/glslang.y" + case 580: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3839 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11585 "MachineIndependent/glslang_tab.cpp" +#line 11624 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* initializer_list: initializer */ -#line 3835 "MachineIndependent/glslang.y" + case 581: /* initializer_list: initializer */ +#line 3848 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11593 "MachineIndependent/glslang_tab.cpp" +#line 11632 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* initializer_list: initializer_list COMMA initializer */ -#line 3838 "MachineIndependent/glslang.y" + case 582: /* initializer_list: initializer_list COMMA initializer */ +#line 3851 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11601 "MachineIndependent/glslang_tab.cpp" +#line 11640 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* declaration_statement: declaration */ -#line 3844 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11607 "MachineIndependent/glslang_tab.cpp" - break; - - case 582: /* statement: compound_statement */ -#line 3848 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11613 "MachineIndependent/glslang_tab.cpp" - break; - - case 583: /* statement: simple_statement */ -#line 3849 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11619 "MachineIndependent/glslang_tab.cpp" - break; - - case 584: /* simple_statement: declaration_statement */ -#line 3855 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11625 "MachineIndependent/glslang_tab.cpp" - break; - - case 585: /* simple_statement: expression_statement */ -#line 3856 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11631 "MachineIndependent/glslang_tab.cpp" - break; - - case 586: /* simple_statement: selection_statement */ + case 583: /* declaration_statement: declaration */ #line 3857 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11637 "MachineIndependent/glslang_tab.cpp" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11646 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* simple_statement: switch_statement */ -#line 3858 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11643 "MachineIndependent/glslang_tab.cpp" - break; - - case 588: /* simple_statement: case_label */ -#line 3859 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11649 "MachineIndependent/glslang_tab.cpp" - break; - - case 589: /* simple_statement: iteration_statement */ -#line 3860 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11655 "MachineIndependent/glslang_tab.cpp" - break; - - case 590: /* simple_statement: jump_statement */ + case 584: /* statement: compound_statement */ #line 3861 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11661 "MachineIndependent/glslang_tab.cpp" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11652 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* simple_statement: demote_statement */ + case 585: /* statement: simple_statement */ #line 3862 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11667 "MachineIndependent/glslang_tab.cpp" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11658 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* demote_statement: DEMOTE SEMICOLON */ -#line 3866 "MachineIndependent/glslang.y" + case 586: /* simple_statement: declaration_statement */ +#line 3868 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11664 "MachineIndependent/glslang_tab.cpp" + break; + + case 587: /* simple_statement: expression_statement */ +#line 3869 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11670 "MachineIndependent/glslang_tab.cpp" + break; + + case 588: /* simple_statement: selection_statement */ +#line 3870 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11676 "MachineIndependent/glslang_tab.cpp" + break; + + case 589: /* simple_statement: switch_statement */ +#line 3871 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11682 "MachineIndependent/glslang_tab.cpp" + break; + + case 590: /* simple_statement: case_label */ +#line 3872 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11688 "MachineIndependent/glslang_tab.cpp" + break; + + case 591: /* simple_statement: iteration_statement */ +#line 3873 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11694 "MachineIndependent/glslang_tab.cpp" + break; + + case 592: /* simple_statement: jump_statement */ +#line 3874 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11700 "MachineIndependent/glslang_tab.cpp" + break; + + case 593: /* simple_statement: demote_statement */ +#line 3875 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11706 "MachineIndependent/glslang_tab.cpp" + break; + + case 594: /* demote_statement: DEMOTE SEMICOLON */ +#line 3879 "MachineIndependent/glslang.y" { 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 11677 "MachineIndependent/glslang_tab.cpp" +#line 11716 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3874 "MachineIndependent/glslang.y" + case 595: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3887 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11683 "MachineIndependent/glslang_tab.cpp" +#line 11722 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* $@5: %empty */ -#line 3875 "MachineIndependent/glslang.y" + case 596: /* $@5: %empty */ +#line 3888 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11692 "MachineIndependent/glslang_tab.cpp" +#line 11731 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* $@6: %empty */ -#line 3879 "MachineIndependent/glslang.y" + case 597: /* $@6: %empty */ +#line 3892 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11701 "MachineIndependent/glslang_tab.cpp" +#line 11740 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3883 "MachineIndependent/glslang.y" + case 598: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3896 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) { (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); @@ -11709,69 +11748,69 @@ yyreduce: } (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11713 "MachineIndependent/glslang_tab.cpp" +#line 11752 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3893 "MachineIndependent/glslang.y" + case 599: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3906 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11719 "MachineIndependent/glslang_tab.cpp" +#line 11758 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* statement_no_new_scope: simple_statement */ -#line 3894 "MachineIndependent/glslang.y" + case 600: /* statement_no_new_scope: simple_statement */ +#line 3907 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11725 "MachineIndependent/glslang_tab.cpp" +#line 11764 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* $@7: %empty */ -#line 3898 "MachineIndependent/glslang.y" + case 601: /* $@7: %empty */ +#line 3911 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11733 "MachineIndependent/glslang_tab.cpp" +#line 11772 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* statement_scoped: $@7 compound_statement */ -#line 3901 "MachineIndependent/glslang.y" + case 602: /* statement_scoped: $@7 compound_statement */ +#line 3914 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11742 "MachineIndependent/glslang_tab.cpp" +#line 11781 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* $@8: %empty */ -#line 3905 "MachineIndependent/glslang.y" + case 603: /* $@8: %empty */ +#line 3918 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11752 "MachineIndependent/glslang_tab.cpp" +#line 11791 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* statement_scoped: $@8 simple_statement */ -#line 3910 "MachineIndependent/glslang.y" + case 604: /* statement_scoped: $@8 simple_statement */ +#line 3923 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11763 "MachineIndependent/glslang_tab.cpp" +#line 11802 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3919 "MachineIndependent/glslang.y" + case 605: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3932 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11771 "MachineIndependent/glslang_tab.cpp" +#line 11810 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3922 "MachineIndependent/glslang.y" + case 606: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3935 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) { (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); @@ -11779,11 +11818,11 @@ yyreduce: } (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11783 "MachineIndependent/glslang_tab.cpp" +#line 11822 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* statement_list: statement */ -#line 3932 "MachineIndependent/glslang.y" + case 607: /* statement_list: statement */ +#line 3945 "MachineIndependent/glslang.y" { (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 || @@ -11792,11 +11831,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11796 "MachineIndependent/glslang_tab.cpp" +#line 11835 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* statement_list: statement_list statement */ -#line 3940 "MachineIndependent/glslang.y" + case 608: /* statement_list: statement_list statement */ +#line 3953 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11805,110 +11844,106 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11809 "MachineIndependent/glslang_tab.cpp" +#line 11848 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* expression_statement: SEMICOLON */ -#line 3951 "MachineIndependent/glslang.y" + case 609: /* expression_statement: SEMICOLON */ +#line 3964 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11815 "MachineIndependent/glslang_tab.cpp" +#line 11854 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* expression_statement: expression SEMICOLON */ -#line 3952 "MachineIndependent/glslang.y" + case 610: /* expression_statement: expression SEMICOLON */ +#line 3965 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11821 "MachineIndependent/glslang_tab.cpp" +#line 11860 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* selection_statement: selection_statement_nonattributed */ -#line 3956 "MachineIndependent/glslang.y" + case 611: /* selection_statement: selection_statement_nonattributed */ +#line 3969 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11829 "MachineIndependent/glslang_tab.cpp" +#line 11868 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3959 "MachineIndependent/glslang.y" + case 612: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3972 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11839 "MachineIndependent/glslang_tab.cpp" +#line 11878 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3966 "MachineIndependent/glslang.y" + case 613: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3979 "MachineIndependent/glslang.y" { 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 11848 "MachineIndependent/glslang_tab.cpp" +#line 11887 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3973 "MachineIndependent/glslang.y" + case 614: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3986 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11857 "MachineIndependent/glslang_tab.cpp" +#line 11896 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* selection_rest_statement: statement_scoped */ -#line 3977 "MachineIndependent/glslang.y" + case 615: /* selection_rest_statement: statement_scoped */ +#line 3990 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11866 "MachineIndependent/glslang_tab.cpp" +#line 11905 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* condition: expression */ -#line 3985 "MachineIndependent/glslang.y" + case 616: /* condition: expression */ +#line 3998 "MachineIndependent/glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11875 "MachineIndependent/glslang_tab.cpp" +#line 11914 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3989 "MachineIndependent/glslang.y" + case 617: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 4002 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); TType type((yyvsp[-3].interm.type)); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); - if (initNode) - (yyval.interm.intermTypedNode) = initNode->getAsTyped(); - else - (yyval.interm.intermTypedNode) = 0; + (yyval.interm.intermNode) = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); } -#line 11890 "MachineIndependent/glslang_tab.cpp" +#line 11925 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* switch_statement: switch_statement_nonattributed */ -#line 4002 "MachineIndependent/glslang.y" + case 618: /* switch_statement: switch_statement_nonattributed */ +#line 4011 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11898 "MachineIndependent/glslang_tab.cpp" +#line 11933 "MachineIndependent/glslang_tab.cpp" break; - case 617: /* switch_statement: attribute switch_statement_nonattributed */ -#line 4005 "MachineIndependent/glslang.y" + case 619: /* switch_statement: attribute switch_statement_nonattributed */ +#line 4014 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11908 "MachineIndependent/glslang_tab.cpp" +#line 11943 "MachineIndependent/glslang_tab.cpp" break; - case 618: /* $@9: %empty */ -#line 4012 "MachineIndependent/glslang.y" + case 620: /* $@9: %empty */ +#line 4021 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11917,11 +11952,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11921 "MachineIndependent/glslang_tab.cpp" +#line 11956 "MachineIndependent/glslang_tab.cpp" break; - case 619: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 4020 "MachineIndependent/glslang.y" + case 621: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 4029 "MachineIndependent/glslang.y" { (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(); @@ -11931,27 +11966,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11935 "MachineIndependent/glslang_tab.cpp" +#line 11970 "MachineIndependent/glslang_tab.cpp" break; - case 620: /* switch_statement_list: %empty */ -#line 4032 "MachineIndependent/glslang.y" + case 622: /* switch_statement_list: %empty */ +#line 4041 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11943 "MachineIndependent/glslang_tab.cpp" +#line 11978 "MachineIndependent/glslang_tab.cpp" break; - case 621: /* switch_statement_list: statement_list */ -#line 4035 "MachineIndependent/glslang.y" + case 623: /* switch_statement_list: statement_list */ +#line 4044 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11951 "MachineIndependent/glslang_tab.cpp" +#line 11986 "MachineIndependent/glslang_tab.cpp" break; - case 622: /* case_label: CASE expression COLON */ -#line 4041 "MachineIndependent/glslang.y" + case 624: /* case_label: CASE expression COLON */ +#line 4050 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11964,11 +11999,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11968 "MachineIndependent/glslang_tab.cpp" +#line 12003 "MachineIndependent/glslang_tab.cpp" break; - case 623: /* case_label: DEFAULT COLON */ -#line 4053 "MachineIndependent/glslang.y" + case 625: /* case_label: DEFAULT COLON */ +#line 4062 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11978,30 +12013,30 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11982 "MachineIndependent/glslang_tab.cpp" +#line 12017 "MachineIndependent/glslang_tab.cpp" break; - case 624: /* iteration_statement: iteration_statement_nonattributed */ -#line 4065 "MachineIndependent/glslang.y" + case 626: /* iteration_statement: iteration_statement_nonattributed */ +#line 4074 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11990 "MachineIndependent/glslang_tab.cpp" +#line 12025 "MachineIndependent/glslang_tab.cpp" break; - case 625: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 4068 "MachineIndependent/glslang.y" + case 627: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 4077 "MachineIndependent/glslang.y" { const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 12001 "MachineIndependent/glslang_tab.cpp" +#line 12036 "MachineIndependent/glslang_tab.cpp" break; - case 626: /* $@10: %empty */ -#line 4076 "MachineIndependent/glslang.y" + case 628: /* $@10: %empty */ +#line 4085 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -12010,34 +12045,38 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 12014 "MachineIndependent/glslang_tab.cpp" +#line 12049 "MachineIndependent/glslang_tab.cpp" break; - case 627: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 4084 "MachineIndependent/glslang.y" + case 629: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 4093 "MachineIndependent/glslang.y" { 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); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermNode), 0, true, (yyvsp[-5].lex).loc); + if (parseContext.intermediate.getDebugInfo()) { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyval.interm.intermNode), (yyvsp[-5].lex).loc); + (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpScope); + } --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 12026 "MachineIndependent/glslang_tab.cpp" +#line 12065 "MachineIndependent/glslang_tab.cpp" break; - case 628: /* $@11: %empty */ -#line 4091 "MachineIndependent/glslang.y" + case 630: /* $@11: %empty */ +#line 4104 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 12037 "MachineIndependent/glslang_tab.cpp" +#line 12076 "MachineIndependent/glslang_tab.cpp" break; - case 629: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 4097 "MachineIndependent/glslang.y" + case 631: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 4110 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -12045,27 +12084,31 @@ yyreduce: parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc); + if (parseContext.intermediate.getDebugInfo()) { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyval.interm.intermNode), (yyvsp[-4].lex).loc); + (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpScope); + } parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 12054 "MachineIndependent/glslang_tab.cpp" +#line 12097 "MachineIndependent/glslang_tab.cpp" break; - case 630: /* $@12: %empty */ -#line 4109 "MachineIndependent/glslang.y" + case 632: /* $@12: %empty */ +#line 4126 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 12065 "MachineIndependent/glslang_tab.cpp" +#line 12108 "MachineIndependent/glslang_tab.cpp" break; - case 631: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 4115 "MachineIndependent/glslang.y" + case 633: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 4132 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -12073,86 +12116,86 @@ yyreduce: if (! parseContext.limits.nonInductiveForLoops) parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc); - (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 12082 "MachineIndependent/glslang_tab.cpp" +#line 12125 "MachineIndependent/glslang_tab.cpp" break; - case 632: /* for_init_statement: expression_statement */ -#line 4130 "MachineIndependent/glslang.y" + case 634: /* for_init_statement: expression_statement */ +#line 4147 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 12090 "MachineIndependent/glslang_tab.cpp" +#line 12133 "MachineIndependent/glslang_tab.cpp" break; - case 633: /* for_init_statement: declaration_statement */ -#line 4133 "MachineIndependent/glslang.y" + case 635: /* for_init_statement: declaration_statement */ +#line 4150 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 12098 "MachineIndependent/glslang_tab.cpp" +#line 12141 "MachineIndependent/glslang_tab.cpp" break; - case 634: /* conditionopt: condition */ -#line 4139 "MachineIndependent/glslang.y" + case 636: /* conditionopt: condition */ +#line 4156 "MachineIndependent/glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 12106 "MachineIndependent/glslang_tab.cpp" +#line 12149 "MachineIndependent/glslang_tab.cpp" break; - case 635: /* conditionopt: %empty */ -#line 4142 "MachineIndependent/glslang.y" + case 637: /* conditionopt: %empty */ +#line 4159 "MachineIndependent/glslang.y" { - (yyval.interm.intermTypedNode) = 0; + (yyval.interm.intermNode) = 0; } -#line 12114 "MachineIndependent/glslang_tab.cpp" +#line 12157 "MachineIndependent/glslang_tab.cpp" break; - case 636: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4148 "MachineIndependent/glslang.y" + case 638: /* for_rest_statement: conditionopt SEMICOLON */ +#line 4165 "MachineIndependent/glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); + (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 12123 "MachineIndependent/glslang_tab.cpp" +#line 12166 "MachineIndependent/glslang_tab.cpp" break; - case 637: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4152 "MachineIndependent/glslang.y" + case 639: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 4169 "MachineIndependent/glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 12132 "MachineIndependent/glslang_tab.cpp" +#line 12175 "MachineIndependent/glslang_tab.cpp" break; - case 638: /* jump_statement: CONTINUE SEMICOLON */ -#line 4159 "MachineIndependent/glslang.y" + case 640: /* jump_statement: CONTINUE SEMICOLON */ +#line 4176 "MachineIndependent/glslang.y" { 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 12142 "MachineIndependent/glslang_tab.cpp" +#line 12185 "MachineIndependent/glslang_tab.cpp" break; - case 639: /* jump_statement: BREAK SEMICOLON */ -#line 4164 "MachineIndependent/glslang.y" + case 641: /* jump_statement: BREAK SEMICOLON */ +#line 4181 "MachineIndependent/glslang.y" { 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 12152 "MachineIndependent/glslang_tab.cpp" +#line 12195 "MachineIndependent/glslang_tab.cpp" break; - case 640: /* jump_statement: RETURN SEMICOLON */ -#line 4169 "MachineIndependent/glslang.y" + case 642: /* jump_statement: RETURN SEMICOLON */ +#line 4186 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -12160,101 +12203,101 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 12164 "MachineIndependent/glslang_tab.cpp" +#line 12207 "MachineIndependent/glslang_tab.cpp" break; - case 641: /* jump_statement: RETURN expression SEMICOLON */ -#line 4176 "MachineIndependent/glslang.y" + case 643: /* jump_statement: RETURN expression SEMICOLON */ +#line 4193 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 12172 "MachineIndependent/glslang_tab.cpp" +#line 12215 "MachineIndependent/glslang_tab.cpp" break; - case 642: /* jump_statement: DISCARD SEMICOLON */ -#line 4179 "MachineIndependent/glslang.y" + case 644: /* jump_statement: DISCARD SEMICOLON */ +#line 4196 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 12181 "MachineIndependent/glslang_tab.cpp" +#line 12224 "MachineIndependent/glslang_tab.cpp" break; - case 643: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4183 "MachineIndependent/glslang.y" + case 645: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4200 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 12190 "MachineIndependent/glslang_tab.cpp" +#line 12233 "MachineIndependent/glslang_tab.cpp" break; - case 644: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4187 "MachineIndependent/glslang.y" + case 646: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4204 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 12199 "MachineIndependent/glslang_tab.cpp" +#line 12242 "MachineIndependent/glslang_tab.cpp" break; - case 645: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4191 "MachineIndependent/glslang.y" + case 647: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4208 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 12208 "MachineIndependent/glslang_tab.cpp" +#line 12251 "MachineIndependent/glslang_tab.cpp" break; - case 646: /* translation_unit: external_declaration */ -#line 4200 "MachineIndependent/glslang.y" + case 648: /* translation_unit: external_declaration */ +#line 4217 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 12217 "MachineIndependent/glslang_tab.cpp" +#line 12260 "MachineIndependent/glslang_tab.cpp" break; - case 647: /* translation_unit: translation_unit external_declaration */ -#line 4204 "MachineIndependent/glslang.y" + case 649: /* translation_unit: translation_unit external_declaration */ +#line 4221 "MachineIndependent/glslang.y" { 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 12228 "MachineIndependent/glslang_tab.cpp" +#line 12271 "MachineIndependent/glslang_tab.cpp" break; - case 648: /* external_declaration: function_definition */ -#line 4213 "MachineIndependent/glslang.y" + case 650: /* external_declaration: function_definition */ +#line 4230 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 12236 "MachineIndependent/glslang_tab.cpp" +#line 12279 "MachineIndependent/glslang_tab.cpp" break; - case 649: /* external_declaration: declaration */ -#line 4216 "MachineIndependent/glslang.y" + case 651: /* external_declaration: declaration */ +#line 4233 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 12244 "MachineIndependent/glslang_tab.cpp" +#line 12287 "MachineIndependent/glslang_tab.cpp" break; - case 650: /* external_declaration: SEMICOLON */ -#line 4219 "MachineIndependent/glslang.y" + case 652: /* external_declaration: SEMICOLON */ +#line 4236 "MachineIndependent/glslang.y" { 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 12254 "MachineIndependent/glslang_tab.cpp" +#line 12297 "MachineIndependent/glslang_tab.cpp" break; - case 651: /* $@13: %empty */ -#line 4227 "MachineIndependent/glslang.y" + case 653: /* $@13: %empty */ +#line 4244 "MachineIndependent/glslang.y" { (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); @@ -12267,11 +12310,11 @@ yyreduce: ++parseContext.statementNestingLevel; } } -#line 12271 "MachineIndependent/glslang_tab.cpp" +#line 12314 "MachineIndependent/glslang_tab.cpp" break; - case 652: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4239 "MachineIndependent/glslang.y" + case 654: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4256 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -12299,228 +12342,228 @@ yyreduce: --parseContext.statementNestingLevel; } } -#line 12303 "MachineIndependent/glslang_tab.cpp" +#line 12346 "MachineIndependent/glslang_tab.cpp" break; - case 653: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4269 "MachineIndependent/glslang.y" + case 655: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4286 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 12311 "MachineIndependent/glslang_tab.cpp" +#line 12354 "MachineIndependent/glslang_tab.cpp" break; - case 654: /* attribute_list: single_attribute */ -#line 4274 "MachineIndependent/glslang.y" + case 656: /* attribute_list: single_attribute */ +#line 4291 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 12319 "MachineIndependent/glslang_tab.cpp" +#line 12362 "MachineIndependent/glslang_tab.cpp" break; - case 655: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4277 "MachineIndependent/glslang.y" + case 657: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4294 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 12327 "MachineIndependent/glslang_tab.cpp" +#line 12370 "MachineIndependent/glslang_tab.cpp" break; - case 656: /* single_attribute: IDENTIFIER */ -#line 4282 "MachineIndependent/glslang.y" + case 658: /* single_attribute: IDENTIFIER */ +#line 4299 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 12335 "MachineIndependent/glslang_tab.cpp" +#line 12378 "MachineIndependent/glslang_tab.cpp" break; - case 657: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4285 "MachineIndependent/glslang.y" + case 659: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4302 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 12343 "MachineIndependent/glslang_tab.cpp" +#line 12386 "MachineIndependent/glslang_tab.cpp" break; - case 658: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4290 "MachineIndependent/glslang.y" + case 660: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4307 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 12351 "MachineIndependent/glslang_tab.cpp" +#line 12394 "MachineIndependent/glslang_tab.cpp" break; - case 659: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4293 "MachineIndependent/glslang.y" + case 661: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4310 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 12359 "MachineIndependent/glslang_tab.cpp" +#line 12402 "MachineIndependent/glslang_tab.cpp" break; - case 660: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4298 "MachineIndependent/glslang.y" + case 662: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4315 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 12367 "MachineIndependent/glslang_tab.cpp" +#line 12410 "MachineIndependent/glslang_tab.cpp" break; - case 661: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4301 "MachineIndependent/glslang.y" + case 663: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4318 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12375 "MachineIndependent/glslang_tab.cpp" +#line 12418 "MachineIndependent/glslang_tab.cpp" break; - case 662: /* spirv_extension_list: STRING_LITERAL */ -#line 4306 "MachineIndependent/glslang.y" + case 664: /* spirv_extension_list: STRING_LITERAL */ +#line 4323 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12383 "MachineIndependent/glslang_tab.cpp" +#line 12426 "MachineIndependent/glslang_tab.cpp" break; - case 663: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4309 "MachineIndependent/glslang.y" + case 665: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ +#line 4326 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12391 "MachineIndependent/glslang_tab.cpp" +#line 12434 "MachineIndependent/glslang_tab.cpp" break; - case 664: /* spirv_capability_list: INTCONSTANT */ -#line 4314 "MachineIndependent/glslang.y" + case 666: /* spirv_capability_list: INTCONSTANT */ +#line 4331 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 12399 "MachineIndependent/glslang_tab.cpp" +#line 12442 "MachineIndependent/glslang_tab.cpp" break; - case 665: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4317 "MachineIndependent/glslang.y" + case 667: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4334 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 12407 "MachineIndependent/glslang_tab.cpp" +#line 12450 "MachineIndependent/glslang_tab.cpp" break; - case 666: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4322 "MachineIndependent/glslang.y" + case 668: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4339 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 12416 "MachineIndependent/glslang_tab.cpp" +#line 12459 "MachineIndependent/glslang_tab.cpp" break; - case 667: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4326 "MachineIndependent/glslang.y" + case 669: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4343 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 12426 "MachineIndependent/glslang_tab.cpp" +#line 12469 "MachineIndependent/glslang_tab.cpp" break; - case 668: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4331 "MachineIndependent/glslang.y" + case 670: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4348 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12435 "MachineIndependent/glslang_tab.cpp" +#line 12478 "MachineIndependent/glslang_tab.cpp" break; - case 669: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4335 "MachineIndependent/glslang.y" + case 671: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4352 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12445 "MachineIndependent/glslang_tab.cpp" +#line 12488 "MachineIndependent/glslang_tab.cpp" break; - case 670: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4340 "MachineIndependent/glslang.y" + case 672: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4357 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12454 "MachineIndependent/glslang_tab.cpp" +#line 12497 "MachineIndependent/glslang_tab.cpp" break; - case 671: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4344 "MachineIndependent/glslang.y" + case 673: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4361 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12464 "MachineIndependent/glslang_tab.cpp" +#line 12507 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4351 "MachineIndependent/glslang.y" + case 674: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4368 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12472 "MachineIndependent/glslang_tab.cpp" +#line 12515 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4354 "MachineIndependent/glslang.y" + case 675: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4371 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12480 "MachineIndependent/glslang_tab.cpp" +#line 12523 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4359 "MachineIndependent/glslang.y" + case 676: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4376 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12488 "MachineIndependent/glslang_tab.cpp" +#line 12531 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4362 "MachineIndependent/glslang.y" + case 677: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4379 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12496 "MachineIndependent/glslang_tab.cpp" +#line 12539 "MachineIndependent/glslang_tab.cpp" break; - case 676: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4365 "MachineIndependent/glslang.y" + case 678: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4382 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12504 "MachineIndependent/glslang_tab.cpp" +#line 12547 "MachineIndependent/glslang_tab.cpp" break; - case 677: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4368 "MachineIndependent/glslang.y" + case 679: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4385 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12512 "MachineIndependent/glslang_tab.cpp" +#line 12555 "MachineIndependent/glslang_tab.cpp" break; - case 678: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4371 "MachineIndependent/glslang.y" + case 680: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4388 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12520 "MachineIndependent/glslang_tab.cpp" +#line 12563 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4376 "MachineIndependent/glslang.y" + case 681: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4393 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12530,11 +12573,11 @@ yyreduce: parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12534 "MachineIndependent/glslang_tab.cpp" +#line 12577 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4385 "MachineIndependent/glslang.y" + case 682: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4402 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12544,351 +12587,351 @@ yyreduce: parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12548 "MachineIndependent/glslang_tab.cpp" +#line 12591 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4396 "MachineIndependent/glslang.y" + case 683: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4413 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12558 "MachineIndependent/glslang_tab.cpp" +#line 12601 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4401 "MachineIndependent/glslang.y" + case 684: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4418 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12569 "MachineIndependent/glslang_tab.cpp" +#line 12612 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4409 "MachineIndependent/glslang.y" + case 685: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4426 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12578 "MachineIndependent/glslang_tab.cpp" +#line 12621 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4413 "MachineIndependent/glslang.y" + case 686: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4430 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12588 "MachineIndependent/glslang_tab.cpp" +#line 12631 "MachineIndependent/glslang_tab.cpp" break; - case 685: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4418 "MachineIndependent/glslang.y" + case 687: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4435 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12597 "MachineIndependent/glslang_tab.cpp" +#line 12640 "MachineIndependent/glslang_tab.cpp" break; - case 686: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4422 "MachineIndependent/glslang.y" + case 688: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4439 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12607 "MachineIndependent/glslang_tab.cpp" +#line 12650 "MachineIndependent/glslang_tab.cpp" break; - case 687: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4427 "MachineIndependent/glslang.y" + case 689: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4444 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12616 "MachineIndependent/glslang_tab.cpp" +#line 12659 "MachineIndependent/glslang_tab.cpp" break; - case 688: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4431 "MachineIndependent/glslang.y" + case 690: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4448 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12626 "MachineIndependent/glslang_tab.cpp" +#line 12669 "MachineIndependent/glslang_tab.cpp" break; - case 689: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4436 "MachineIndependent/glslang.y" + case 691: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4453 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12635 "MachineIndependent/glslang_tab.cpp" +#line 12678 "MachineIndependent/glslang_tab.cpp" break; - case 690: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4440 "MachineIndependent/glslang.y" + case 692: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4457 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12645 "MachineIndependent/glslang_tab.cpp" +#line 12688 "MachineIndependent/glslang_tab.cpp" break; - case 691: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4447 "MachineIndependent/glslang.y" + case 693: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4464 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12653 "MachineIndependent/glslang_tab.cpp" +#line 12696 "MachineIndependent/glslang_tab.cpp" break; - case 692: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4450 "MachineIndependent/glslang.y" + case 694: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4467 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12661 "MachineIndependent/glslang_tab.cpp" +#line 12704 "MachineIndependent/glslang_tab.cpp" break; - case 693: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4455 "MachineIndependent/glslang.y" + case 695: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4472 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12669 "MachineIndependent/glslang_tab.cpp" +#line 12712 "MachineIndependent/glslang_tab.cpp" break; - case 694: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4458 "MachineIndependent/glslang.y" + case 696: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4475 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12677 "MachineIndependent/glslang_tab.cpp" +#line 12720 "MachineIndependent/glslang_tab.cpp" break; - case 695: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4461 "MachineIndependent/glslang.y" + case 697: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4478 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12685 "MachineIndependent/glslang_tab.cpp" +#line 12728 "MachineIndependent/glslang_tab.cpp" break; - case 696: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4464 "MachineIndependent/glslang.y" + case 698: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4481 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12693 "MachineIndependent/glslang_tab.cpp" +#line 12736 "MachineIndependent/glslang_tab.cpp" break; - case 697: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4469 "MachineIndependent/glslang.y" + case 699: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ +#line 4486 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12701 "MachineIndependent/glslang_tab.cpp" +#line 12744 "MachineIndependent/glslang_tab.cpp" break; - case 698: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4472 "MachineIndependent/glslang.y" + case 700: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ +#line 4489 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12709 "MachineIndependent/glslang_tab.cpp" +#line 12752 "MachineIndependent/glslang_tab.cpp" break; - case 699: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4477 "MachineIndependent/glslang.y" + case 701: /* spirv_decorate_id_parameter: variable_identifier */ +#line 4494 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12720 "MachineIndependent/glslang_tab.cpp" +#line 12763 "MachineIndependent/glslang_tab.cpp" break; - case 700: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4483 "MachineIndependent/glslang.y" + case 702: /* spirv_decorate_id_parameter: FLOATCONSTANT */ +#line 4500 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12728 "MachineIndependent/glslang_tab.cpp" +#line 12771 "MachineIndependent/glslang_tab.cpp" break; - case 701: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4486 "MachineIndependent/glslang.y" + case 703: /* spirv_decorate_id_parameter: INTCONSTANT */ +#line 4503 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12736 "MachineIndependent/glslang_tab.cpp" +#line 12779 "MachineIndependent/glslang_tab.cpp" break; - case 702: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4489 "MachineIndependent/glslang.y" + case 704: /* spirv_decorate_id_parameter: UINTCONSTANT */ +#line 4506 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12744 "MachineIndependent/glslang_tab.cpp" +#line 12787 "MachineIndependent/glslang_tab.cpp" break; - case 703: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4492 "MachineIndependent/glslang.y" + case 705: /* spirv_decorate_id_parameter: BOOLCONSTANT */ +#line 4509 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12752 "MachineIndependent/glslang_tab.cpp" +#line 12795 "MachineIndependent/glslang_tab.cpp" break; - case 704: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4497 "MachineIndependent/glslang.y" + case 706: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4514 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12761 "MachineIndependent/glslang_tab.cpp" +#line 12804 "MachineIndependent/glslang_tab.cpp" break; - case 705: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4501 "MachineIndependent/glslang.y" + case 707: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4518 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12769 "MachineIndependent/glslang_tab.cpp" +#line 12812 "MachineIndependent/glslang_tab.cpp" break; - case 706: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4506 "MachineIndependent/glslang.y" + case 708: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4523 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12778 "MachineIndependent/glslang_tab.cpp" +#line 12821 "MachineIndependent/glslang_tab.cpp" break; - case 707: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4510 "MachineIndependent/glslang.y" + case 709: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4527 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12788 "MachineIndependent/glslang_tab.cpp" +#line 12831 "MachineIndependent/glslang_tab.cpp" break; - case 708: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4515 "MachineIndependent/glslang.y" + case 710: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4532 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12797 "MachineIndependent/glslang_tab.cpp" +#line 12840 "MachineIndependent/glslang_tab.cpp" break; - case 709: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4519 "MachineIndependent/glslang.y" + case 711: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4536 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12807 "MachineIndependent/glslang_tab.cpp" +#line 12850 "MachineIndependent/glslang_tab.cpp" break; - case 710: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4526 "MachineIndependent/glslang.y" + case 712: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4543 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12815 "MachineIndependent/glslang_tab.cpp" +#line 12858 "MachineIndependent/glslang_tab.cpp" break; - case 711: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4529 "MachineIndependent/glslang.y" + case 713: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4546 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12823 "MachineIndependent/glslang_tab.cpp" +#line 12866 "MachineIndependent/glslang_tab.cpp" break; - case 712: /* spirv_type_parameter: constant_expression */ -#line 4534 "MachineIndependent/glslang.y" + case 714: /* spirv_type_parameter: constant_expression */ +#line 4551 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12831 "MachineIndependent/glslang_tab.cpp" +#line 12874 "MachineIndependent/glslang_tab.cpp" break; - case 713: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4537 "MachineIndependent/glslang.y" + case 715: /* spirv_type_parameter: type_specifier_nonarray */ +#line 4554 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12839 "MachineIndependent/glslang_tab.cpp" +#line 12882 "MachineIndependent/glslang_tab.cpp" break; - case 714: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4542 "MachineIndependent/glslang.y" + case 716: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4559 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12847 "MachineIndependent/glslang_tab.cpp" +#line 12890 "MachineIndependent/glslang_tab.cpp" break; - case 715: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4545 "MachineIndependent/glslang.y" + case 717: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4562 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12856 "MachineIndependent/glslang_tab.cpp" +#line 12899 "MachineIndependent/glslang_tab.cpp" break; - case 716: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4551 "MachineIndependent/glslang.y" + case 718: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4568 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12864 "MachineIndependent/glslang_tab.cpp" +#line 12907 "MachineIndependent/glslang_tab.cpp" break; - case 717: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4554 "MachineIndependent/glslang.y" + case 719: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4571 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12872 "MachineIndependent/glslang_tab.cpp" +#line 12915 "MachineIndependent/glslang_tab.cpp" break; - case 718: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4559 "MachineIndependent/glslang.y" + case 720: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4576 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12880 "MachineIndependent/glslang_tab.cpp" +#line 12923 "MachineIndependent/glslang_tab.cpp" break; - case 719: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4562 "MachineIndependent/glslang.y" + case 721: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4579 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12888 "MachineIndependent/glslang_tab.cpp" +#line 12931 "MachineIndependent/glslang_tab.cpp" break; -#line 12892 "MachineIndependent/glslang_tab.cpp" +#line 12935 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -13112,5 +13155,5 @@ yyreturnlab: return yyresult; } -#line 4566 "MachineIndependent/glslang.y" +#line 4583 "MachineIndependent/glslang.y" diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h index b92ddec03..f90f704d4 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h @@ -233,307 +233,309 @@ extern int yydebug; COOPVECNV = 434, /* COOPVECNV */ HITOBJECTNV = 435, /* HITOBJECTNV */ HITOBJECTATTRNV = 436, /* HITOBJECTATTRNV */ - TENSORLAYOUTNV = 437, /* TENSORLAYOUTNV */ - TENSORVIEWNV = 438, /* TENSORVIEWNV */ - TENSORARM = 439, /* TENSORARM */ - SAMPLERCUBEARRAY = 440, /* SAMPLERCUBEARRAY */ - SAMPLERCUBEARRAYSHADOW = 441, /* SAMPLERCUBEARRAYSHADOW */ - ISAMPLERCUBEARRAY = 442, /* ISAMPLERCUBEARRAY */ - USAMPLERCUBEARRAY = 443, /* USAMPLERCUBEARRAY */ - SAMPLER1D = 444, /* SAMPLER1D */ - SAMPLER1DARRAY = 445, /* SAMPLER1DARRAY */ - SAMPLER1DARRAYSHADOW = 446, /* SAMPLER1DARRAYSHADOW */ - ISAMPLER1D = 447, /* ISAMPLER1D */ - SAMPLER1DSHADOW = 448, /* SAMPLER1DSHADOW */ - SAMPLER2DRECT = 449, /* SAMPLER2DRECT */ - SAMPLER2DRECTSHADOW = 450, /* SAMPLER2DRECTSHADOW */ - ISAMPLER2DRECT = 451, /* ISAMPLER2DRECT */ - USAMPLER2DRECT = 452, /* USAMPLER2DRECT */ - SAMPLERBUFFER = 453, /* SAMPLERBUFFER */ - ISAMPLERBUFFER = 454, /* ISAMPLERBUFFER */ - USAMPLERBUFFER = 455, /* USAMPLERBUFFER */ - SAMPLER2DMS = 456, /* SAMPLER2DMS */ - ISAMPLER2DMS = 457, /* ISAMPLER2DMS */ - USAMPLER2DMS = 458, /* USAMPLER2DMS */ - SAMPLER2DMSARRAY = 459, /* SAMPLER2DMSARRAY */ - ISAMPLER2DMSARRAY = 460, /* ISAMPLER2DMSARRAY */ - USAMPLER2DMSARRAY = 461, /* USAMPLER2DMSARRAY */ - SAMPLEREXTERNALOES = 462, /* SAMPLEREXTERNALOES */ - SAMPLEREXTERNAL2DY2YEXT = 463, /* SAMPLEREXTERNAL2DY2YEXT */ - ISAMPLER1DARRAY = 464, /* ISAMPLER1DARRAY */ - USAMPLER1D = 465, /* USAMPLER1D */ - USAMPLER1DARRAY = 466, /* USAMPLER1DARRAY */ - F16SAMPLER1D = 467, /* F16SAMPLER1D */ - F16SAMPLER2D = 468, /* F16SAMPLER2D */ - F16SAMPLER3D = 469, /* F16SAMPLER3D */ - F16SAMPLER2DRECT = 470, /* F16SAMPLER2DRECT */ - F16SAMPLERCUBE = 471, /* F16SAMPLERCUBE */ - F16SAMPLER1DARRAY = 472, /* F16SAMPLER1DARRAY */ - F16SAMPLER2DARRAY = 473, /* F16SAMPLER2DARRAY */ - F16SAMPLERCUBEARRAY = 474, /* F16SAMPLERCUBEARRAY */ - F16SAMPLERBUFFER = 475, /* F16SAMPLERBUFFER */ - F16SAMPLER2DMS = 476, /* F16SAMPLER2DMS */ - F16SAMPLER2DMSARRAY = 477, /* F16SAMPLER2DMSARRAY */ - F16SAMPLER1DSHADOW = 478, /* F16SAMPLER1DSHADOW */ - F16SAMPLER2DSHADOW = 479, /* F16SAMPLER2DSHADOW */ - F16SAMPLER1DARRAYSHADOW = 480, /* F16SAMPLER1DARRAYSHADOW */ - F16SAMPLER2DARRAYSHADOW = 481, /* F16SAMPLER2DARRAYSHADOW */ - F16SAMPLER2DRECTSHADOW = 482, /* F16SAMPLER2DRECTSHADOW */ - F16SAMPLERCUBESHADOW = 483, /* F16SAMPLERCUBESHADOW */ - F16SAMPLERCUBEARRAYSHADOW = 484, /* F16SAMPLERCUBEARRAYSHADOW */ - IMAGE1D = 485, /* IMAGE1D */ - IIMAGE1D = 486, /* IIMAGE1D */ - UIMAGE1D = 487, /* UIMAGE1D */ - IMAGE2D = 488, /* IMAGE2D */ - IIMAGE2D = 489, /* IIMAGE2D */ - UIMAGE2D = 490, /* UIMAGE2D */ - IMAGE3D = 491, /* IMAGE3D */ - IIMAGE3D = 492, /* IIMAGE3D */ - UIMAGE3D = 493, /* UIMAGE3D */ - IMAGE2DRECT = 494, /* IMAGE2DRECT */ - IIMAGE2DRECT = 495, /* IIMAGE2DRECT */ - UIMAGE2DRECT = 496, /* UIMAGE2DRECT */ - IMAGECUBE = 497, /* IMAGECUBE */ - IIMAGECUBE = 498, /* IIMAGECUBE */ - UIMAGECUBE = 499, /* UIMAGECUBE */ - IMAGEBUFFER = 500, /* IMAGEBUFFER */ - IIMAGEBUFFER = 501, /* IIMAGEBUFFER */ - UIMAGEBUFFER = 502, /* UIMAGEBUFFER */ - IMAGE1DARRAY = 503, /* IMAGE1DARRAY */ - IIMAGE1DARRAY = 504, /* IIMAGE1DARRAY */ - UIMAGE1DARRAY = 505, /* UIMAGE1DARRAY */ - IMAGE2DARRAY = 506, /* IMAGE2DARRAY */ - IIMAGE2DARRAY = 507, /* IIMAGE2DARRAY */ - UIMAGE2DARRAY = 508, /* UIMAGE2DARRAY */ - IMAGECUBEARRAY = 509, /* IMAGECUBEARRAY */ - IIMAGECUBEARRAY = 510, /* IIMAGECUBEARRAY */ - UIMAGECUBEARRAY = 511, /* UIMAGECUBEARRAY */ - IMAGE2DMS = 512, /* IMAGE2DMS */ - IIMAGE2DMS = 513, /* IIMAGE2DMS */ - UIMAGE2DMS = 514, /* UIMAGE2DMS */ - IMAGE2DMSARRAY = 515, /* IMAGE2DMSARRAY */ - IIMAGE2DMSARRAY = 516, /* IIMAGE2DMSARRAY */ - UIMAGE2DMSARRAY = 517, /* UIMAGE2DMSARRAY */ - F16IMAGE1D = 518, /* F16IMAGE1D */ - F16IMAGE2D = 519, /* F16IMAGE2D */ - F16IMAGE3D = 520, /* F16IMAGE3D */ - F16IMAGE2DRECT = 521, /* F16IMAGE2DRECT */ - F16IMAGECUBE = 522, /* F16IMAGECUBE */ - F16IMAGE1DARRAY = 523, /* F16IMAGE1DARRAY */ - F16IMAGE2DARRAY = 524, /* F16IMAGE2DARRAY */ - F16IMAGECUBEARRAY = 525, /* F16IMAGECUBEARRAY */ - F16IMAGEBUFFER = 526, /* F16IMAGEBUFFER */ - F16IMAGE2DMS = 527, /* F16IMAGE2DMS */ - F16IMAGE2DMSARRAY = 528, /* F16IMAGE2DMSARRAY */ - I64IMAGE1D = 529, /* I64IMAGE1D */ - U64IMAGE1D = 530, /* U64IMAGE1D */ - I64IMAGE2D = 531, /* I64IMAGE2D */ - U64IMAGE2D = 532, /* U64IMAGE2D */ - I64IMAGE3D = 533, /* I64IMAGE3D */ - U64IMAGE3D = 534, /* U64IMAGE3D */ - I64IMAGE2DRECT = 535, /* I64IMAGE2DRECT */ - U64IMAGE2DRECT = 536, /* U64IMAGE2DRECT */ - I64IMAGECUBE = 537, /* I64IMAGECUBE */ - U64IMAGECUBE = 538, /* U64IMAGECUBE */ - I64IMAGEBUFFER = 539, /* I64IMAGEBUFFER */ - U64IMAGEBUFFER = 540, /* U64IMAGEBUFFER */ - I64IMAGE1DARRAY = 541, /* I64IMAGE1DARRAY */ - U64IMAGE1DARRAY = 542, /* U64IMAGE1DARRAY */ - I64IMAGE2DARRAY = 543, /* I64IMAGE2DARRAY */ - U64IMAGE2DARRAY = 544, /* U64IMAGE2DARRAY */ - I64IMAGECUBEARRAY = 545, /* I64IMAGECUBEARRAY */ - U64IMAGECUBEARRAY = 546, /* U64IMAGECUBEARRAY */ - I64IMAGE2DMS = 547, /* I64IMAGE2DMS */ - U64IMAGE2DMS = 548, /* U64IMAGE2DMS */ - I64IMAGE2DMSARRAY = 549, /* I64IMAGE2DMSARRAY */ - U64IMAGE2DMSARRAY = 550, /* U64IMAGE2DMSARRAY */ - TEXTURECUBEARRAY = 551, /* TEXTURECUBEARRAY */ - ITEXTURECUBEARRAY = 552, /* ITEXTURECUBEARRAY */ - UTEXTURECUBEARRAY = 553, /* UTEXTURECUBEARRAY */ - TEXTURE1D = 554, /* TEXTURE1D */ - ITEXTURE1D = 555, /* ITEXTURE1D */ - UTEXTURE1D = 556, /* UTEXTURE1D */ - TEXTURE1DARRAY = 557, /* TEXTURE1DARRAY */ - ITEXTURE1DARRAY = 558, /* ITEXTURE1DARRAY */ - UTEXTURE1DARRAY = 559, /* UTEXTURE1DARRAY */ - TEXTURE2DRECT = 560, /* TEXTURE2DRECT */ - ITEXTURE2DRECT = 561, /* ITEXTURE2DRECT */ - UTEXTURE2DRECT = 562, /* UTEXTURE2DRECT */ - TEXTUREBUFFER = 563, /* TEXTUREBUFFER */ - ITEXTUREBUFFER = 564, /* ITEXTUREBUFFER */ - UTEXTUREBUFFER = 565, /* UTEXTUREBUFFER */ - TEXTURE2DMS = 566, /* TEXTURE2DMS */ - ITEXTURE2DMS = 567, /* ITEXTURE2DMS */ - UTEXTURE2DMS = 568, /* UTEXTURE2DMS */ - TEXTURE2DMSARRAY = 569, /* TEXTURE2DMSARRAY */ - ITEXTURE2DMSARRAY = 570, /* ITEXTURE2DMSARRAY */ - UTEXTURE2DMSARRAY = 571, /* UTEXTURE2DMSARRAY */ - F16TEXTURE1D = 572, /* F16TEXTURE1D */ - F16TEXTURE2D = 573, /* F16TEXTURE2D */ - F16TEXTURE3D = 574, /* F16TEXTURE3D */ - F16TEXTURE2DRECT = 575, /* F16TEXTURE2DRECT */ - F16TEXTURECUBE = 576, /* F16TEXTURECUBE */ - F16TEXTURE1DARRAY = 577, /* F16TEXTURE1DARRAY */ - F16TEXTURE2DARRAY = 578, /* F16TEXTURE2DARRAY */ - F16TEXTURECUBEARRAY = 579, /* F16TEXTURECUBEARRAY */ - F16TEXTUREBUFFER = 580, /* F16TEXTUREBUFFER */ - F16TEXTURE2DMS = 581, /* F16TEXTURE2DMS */ - F16TEXTURE2DMSARRAY = 582, /* F16TEXTURE2DMSARRAY */ - SUBPASSINPUT = 583, /* SUBPASSINPUT */ - SUBPASSINPUTMS = 584, /* SUBPASSINPUTMS */ - ISUBPASSINPUT = 585, /* ISUBPASSINPUT */ - ISUBPASSINPUTMS = 586, /* ISUBPASSINPUTMS */ - USUBPASSINPUT = 587, /* USUBPASSINPUT */ - USUBPASSINPUTMS = 588, /* USUBPASSINPUTMS */ - F16SUBPASSINPUT = 589, /* F16SUBPASSINPUT */ - F16SUBPASSINPUTMS = 590, /* F16SUBPASSINPUTMS */ - SPIRV_INSTRUCTION = 591, /* SPIRV_INSTRUCTION */ - SPIRV_EXECUTION_MODE = 592, /* SPIRV_EXECUTION_MODE */ - SPIRV_EXECUTION_MODE_ID = 593, /* SPIRV_EXECUTION_MODE_ID */ - SPIRV_DECORATE = 594, /* SPIRV_DECORATE */ - SPIRV_DECORATE_ID = 595, /* SPIRV_DECORATE_ID */ - SPIRV_DECORATE_STRING = 596, /* SPIRV_DECORATE_STRING */ - SPIRV_TYPE = 597, /* SPIRV_TYPE */ - SPIRV_STORAGE_CLASS = 598, /* SPIRV_STORAGE_CLASS */ - SPIRV_BY_REFERENCE = 599, /* SPIRV_BY_REFERENCE */ - SPIRV_LITERAL = 600, /* SPIRV_LITERAL */ - ATTACHMENTEXT = 601, /* ATTACHMENTEXT */ - IATTACHMENTEXT = 602, /* IATTACHMENTEXT */ - UATTACHMENTEXT = 603, /* UATTACHMENTEXT */ - LEFT_OP = 604, /* LEFT_OP */ - RIGHT_OP = 605, /* RIGHT_OP */ - INC_OP = 606, /* INC_OP */ - DEC_OP = 607, /* DEC_OP */ - LE_OP = 608, /* LE_OP */ - GE_OP = 609, /* GE_OP */ - EQ_OP = 610, /* EQ_OP */ - NE_OP = 611, /* NE_OP */ - AND_OP = 612, /* AND_OP */ - OR_OP = 613, /* OR_OP */ - XOR_OP = 614, /* XOR_OP */ - MUL_ASSIGN = 615, /* MUL_ASSIGN */ - DIV_ASSIGN = 616, /* DIV_ASSIGN */ - ADD_ASSIGN = 617, /* ADD_ASSIGN */ - MOD_ASSIGN = 618, /* MOD_ASSIGN */ - LEFT_ASSIGN = 619, /* LEFT_ASSIGN */ - RIGHT_ASSIGN = 620, /* RIGHT_ASSIGN */ - AND_ASSIGN = 621, /* AND_ASSIGN */ - XOR_ASSIGN = 622, /* XOR_ASSIGN */ - OR_ASSIGN = 623, /* OR_ASSIGN */ - SUB_ASSIGN = 624, /* SUB_ASSIGN */ - STRING_LITERAL = 625, /* STRING_LITERAL */ - LEFT_PAREN = 626, /* LEFT_PAREN */ - RIGHT_PAREN = 627, /* RIGHT_PAREN */ - LEFT_BRACKET = 628, /* LEFT_BRACKET */ - RIGHT_BRACKET = 629, /* RIGHT_BRACKET */ - LEFT_BRACE = 630, /* LEFT_BRACE */ - RIGHT_BRACE = 631, /* RIGHT_BRACE */ - DOT = 632, /* DOT */ - COMMA = 633, /* COMMA */ - COLON = 634, /* COLON */ - EQUAL = 635, /* EQUAL */ - SEMICOLON = 636, /* SEMICOLON */ - BANG = 637, /* BANG */ - DASH = 638, /* DASH */ - TILDE = 639, /* TILDE */ - PLUS = 640, /* PLUS */ - STAR = 641, /* STAR */ - SLASH = 642, /* SLASH */ - PERCENT = 643, /* PERCENT */ - LEFT_ANGLE = 644, /* LEFT_ANGLE */ - RIGHT_ANGLE = 645, /* RIGHT_ANGLE */ - VERTICAL_BAR = 646, /* VERTICAL_BAR */ - CARET = 647, /* CARET */ - AMPERSAND = 648, /* AMPERSAND */ - QUESTION = 649, /* QUESTION */ - INVARIANT = 650, /* INVARIANT */ - HIGH_PRECISION = 651, /* HIGH_PRECISION */ - MEDIUM_PRECISION = 652, /* MEDIUM_PRECISION */ - LOW_PRECISION = 653, /* LOW_PRECISION */ - PRECISION = 654, /* PRECISION */ - PACKED = 655, /* PACKED */ - RESOURCE = 656, /* RESOURCE */ - SUPERP = 657, /* SUPERP */ - FLOATCONSTANT = 658, /* FLOATCONSTANT */ - INTCONSTANT = 659, /* INTCONSTANT */ - UINTCONSTANT = 660, /* UINTCONSTANT */ - BOOLCONSTANT = 661, /* BOOLCONSTANT */ - IDENTIFIER = 662, /* IDENTIFIER */ - TYPE_NAME = 663, /* TYPE_NAME */ - CENTROID = 664, /* CENTROID */ - IN = 665, /* IN */ - OUT = 666, /* OUT */ - INOUT = 667, /* INOUT */ - STRUCT = 668, /* STRUCT */ - VOID = 669, /* VOID */ - WHILE = 670, /* WHILE */ - BREAK = 671, /* BREAK */ - CONTINUE = 672, /* CONTINUE */ - DO = 673, /* DO */ - ELSE = 674, /* ELSE */ - FOR = 675, /* FOR */ - IF = 676, /* IF */ - DISCARD = 677, /* DISCARD */ - RETURN = 678, /* RETURN */ - SWITCH = 679, /* SWITCH */ - CASE = 680, /* CASE */ - DEFAULT = 681, /* DEFAULT */ - TERMINATE_INVOCATION = 682, /* TERMINATE_INVOCATION */ - TERMINATE_RAY = 683, /* TERMINATE_RAY */ - IGNORE_INTERSECTION = 684, /* IGNORE_INTERSECTION */ - UNIFORM = 685, /* UNIFORM */ - SHARED = 686, /* SHARED */ - BUFFER = 687, /* BUFFER */ - TILEIMAGEEXT = 688, /* TILEIMAGEEXT */ - FLAT = 689, /* FLAT */ - SMOOTH = 690, /* SMOOTH */ - LAYOUT = 691, /* LAYOUT */ - DOUBLECONSTANT = 692, /* DOUBLECONSTANT */ - INT16CONSTANT = 693, /* INT16CONSTANT */ - UINT16CONSTANT = 694, /* UINT16CONSTANT */ - FLOAT16CONSTANT = 695, /* FLOAT16CONSTANT */ - INT32CONSTANT = 696, /* INT32CONSTANT */ - UINT32CONSTANT = 697, /* UINT32CONSTANT */ - INT64CONSTANT = 698, /* INT64CONSTANT */ - UINT64CONSTANT = 699, /* UINT64CONSTANT */ - SUBROUTINE = 700, /* SUBROUTINE */ - DEMOTE = 701, /* DEMOTE */ - FUNCTION = 702, /* FUNCTION */ - PAYLOADNV = 703, /* PAYLOADNV */ - PAYLOADINNV = 704, /* PAYLOADINNV */ - HITATTRNV = 705, /* HITATTRNV */ - CALLDATANV = 706, /* CALLDATANV */ - CALLDATAINNV = 707, /* CALLDATAINNV */ - PAYLOADEXT = 708, /* PAYLOADEXT */ - PAYLOADINEXT = 709, /* PAYLOADINEXT */ - HITATTREXT = 710, /* HITATTREXT */ - CALLDATAEXT = 711, /* CALLDATAEXT */ - CALLDATAINEXT = 712, /* CALLDATAINEXT */ - PATCH = 713, /* PATCH */ - SAMPLE = 714, /* SAMPLE */ - NONUNIFORM = 715, /* NONUNIFORM */ - COHERENT = 716, /* COHERENT */ - VOLATILE = 717, /* VOLATILE */ - RESTRICT = 718, /* RESTRICT */ - READONLY = 719, /* READONLY */ - WRITEONLY = 720, /* WRITEONLY */ - NONTEMPORAL = 721, /* NONTEMPORAL */ - DEVICECOHERENT = 722, /* DEVICECOHERENT */ - QUEUEFAMILYCOHERENT = 723, /* QUEUEFAMILYCOHERENT */ - WORKGROUPCOHERENT = 724, /* WORKGROUPCOHERENT */ - SUBGROUPCOHERENT = 725, /* SUBGROUPCOHERENT */ - NONPRIVATE = 726, /* NONPRIVATE */ - SHADERCALLCOHERENT = 727, /* SHADERCALLCOHERENT */ - NOPERSPECTIVE = 728, /* NOPERSPECTIVE */ - EXPLICITINTERPAMD = 729, /* EXPLICITINTERPAMD */ - PERVERTEXEXT = 730, /* PERVERTEXEXT */ - PERVERTEXNV = 731, /* PERVERTEXNV */ - PERPRIMITIVENV = 732, /* PERPRIMITIVENV */ - PERVIEWNV = 733, /* PERVIEWNV */ - PERTASKNV = 734, /* PERTASKNV */ - PERPRIMITIVEEXT = 735, /* PERPRIMITIVEEXT */ - TASKPAYLOADWORKGROUPEXT = 736, /* TASKPAYLOADWORKGROUPEXT */ - PRECISE = 737 /* PRECISE */ + HITOBJECTEXT = 437, /* HITOBJECTEXT */ + HITOBJECTATTREXT = 438, /* HITOBJECTATTREXT */ + TENSORLAYOUTNV = 439, /* TENSORLAYOUTNV */ + TENSORVIEWNV = 440, /* TENSORVIEWNV */ + TENSORARM = 441, /* TENSORARM */ + SAMPLERCUBEARRAY = 442, /* SAMPLERCUBEARRAY */ + SAMPLERCUBEARRAYSHADOW = 443, /* SAMPLERCUBEARRAYSHADOW */ + ISAMPLERCUBEARRAY = 444, /* ISAMPLERCUBEARRAY */ + USAMPLERCUBEARRAY = 445, /* USAMPLERCUBEARRAY */ + SAMPLER1D = 446, /* SAMPLER1D */ + SAMPLER1DARRAY = 447, /* SAMPLER1DARRAY */ + SAMPLER1DARRAYSHADOW = 448, /* SAMPLER1DARRAYSHADOW */ + ISAMPLER1D = 449, /* ISAMPLER1D */ + SAMPLER1DSHADOW = 450, /* SAMPLER1DSHADOW */ + SAMPLER2DRECT = 451, /* SAMPLER2DRECT */ + SAMPLER2DRECTSHADOW = 452, /* SAMPLER2DRECTSHADOW */ + ISAMPLER2DRECT = 453, /* ISAMPLER2DRECT */ + USAMPLER2DRECT = 454, /* USAMPLER2DRECT */ + SAMPLERBUFFER = 455, /* SAMPLERBUFFER */ + ISAMPLERBUFFER = 456, /* ISAMPLERBUFFER */ + USAMPLERBUFFER = 457, /* USAMPLERBUFFER */ + SAMPLER2DMS = 458, /* SAMPLER2DMS */ + ISAMPLER2DMS = 459, /* ISAMPLER2DMS */ + USAMPLER2DMS = 460, /* USAMPLER2DMS */ + SAMPLER2DMSARRAY = 461, /* SAMPLER2DMSARRAY */ + ISAMPLER2DMSARRAY = 462, /* ISAMPLER2DMSARRAY */ + USAMPLER2DMSARRAY = 463, /* USAMPLER2DMSARRAY */ + SAMPLEREXTERNALOES = 464, /* SAMPLEREXTERNALOES */ + SAMPLEREXTERNAL2DY2YEXT = 465, /* SAMPLEREXTERNAL2DY2YEXT */ + ISAMPLER1DARRAY = 466, /* ISAMPLER1DARRAY */ + USAMPLER1D = 467, /* USAMPLER1D */ + USAMPLER1DARRAY = 468, /* USAMPLER1DARRAY */ + F16SAMPLER1D = 469, /* F16SAMPLER1D */ + F16SAMPLER2D = 470, /* F16SAMPLER2D */ + F16SAMPLER3D = 471, /* F16SAMPLER3D */ + F16SAMPLER2DRECT = 472, /* F16SAMPLER2DRECT */ + F16SAMPLERCUBE = 473, /* F16SAMPLERCUBE */ + F16SAMPLER1DARRAY = 474, /* F16SAMPLER1DARRAY */ + F16SAMPLER2DARRAY = 475, /* F16SAMPLER2DARRAY */ + F16SAMPLERCUBEARRAY = 476, /* F16SAMPLERCUBEARRAY */ + F16SAMPLERBUFFER = 477, /* F16SAMPLERBUFFER */ + F16SAMPLER2DMS = 478, /* F16SAMPLER2DMS */ + F16SAMPLER2DMSARRAY = 479, /* F16SAMPLER2DMSARRAY */ + F16SAMPLER1DSHADOW = 480, /* F16SAMPLER1DSHADOW */ + F16SAMPLER2DSHADOW = 481, /* F16SAMPLER2DSHADOW */ + F16SAMPLER1DARRAYSHADOW = 482, /* F16SAMPLER1DARRAYSHADOW */ + F16SAMPLER2DARRAYSHADOW = 483, /* F16SAMPLER2DARRAYSHADOW */ + F16SAMPLER2DRECTSHADOW = 484, /* F16SAMPLER2DRECTSHADOW */ + F16SAMPLERCUBESHADOW = 485, /* F16SAMPLERCUBESHADOW */ + F16SAMPLERCUBEARRAYSHADOW = 486, /* F16SAMPLERCUBEARRAYSHADOW */ + IMAGE1D = 487, /* IMAGE1D */ + IIMAGE1D = 488, /* IIMAGE1D */ + UIMAGE1D = 489, /* UIMAGE1D */ + IMAGE2D = 490, /* IMAGE2D */ + IIMAGE2D = 491, /* IIMAGE2D */ + UIMAGE2D = 492, /* UIMAGE2D */ + IMAGE3D = 493, /* IMAGE3D */ + IIMAGE3D = 494, /* IIMAGE3D */ + UIMAGE3D = 495, /* UIMAGE3D */ + IMAGE2DRECT = 496, /* IMAGE2DRECT */ + IIMAGE2DRECT = 497, /* IIMAGE2DRECT */ + UIMAGE2DRECT = 498, /* UIMAGE2DRECT */ + IMAGECUBE = 499, /* IMAGECUBE */ + IIMAGECUBE = 500, /* IIMAGECUBE */ + UIMAGECUBE = 501, /* UIMAGECUBE */ + IMAGEBUFFER = 502, /* IMAGEBUFFER */ + IIMAGEBUFFER = 503, /* IIMAGEBUFFER */ + UIMAGEBUFFER = 504, /* UIMAGEBUFFER */ + IMAGE1DARRAY = 505, /* IMAGE1DARRAY */ + IIMAGE1DARRAY = 506, /* IIMAGE1DARRAY */ + UIMAGE1DARRAY = 507, /* UIMAGE1DARRAY */ + IMAGE2DARRAY = 508, /* IMAGE2DARRAY */ + IIMAGE2DARRAY = 509, /* IIMAGE2DARRAY */ + UIMAGE2DARRAY = 510, /* UIMAGE2DARRAY */ + IMAGECUBEARRAY = 511, /* IMAGECUBEARRAY */ + IIMAGECUBEARRAY = 512, /* IIMAGECUBEARRAY */ + UIMAGECUBEARRAY = 513, /* UIMAGECUBEARRAY */ + IMAGE2DMS = 514, /* IMAGE2DMS */ + IIMAGE2DMS = 515, /* IIMAGE2DMS */ + UIMAGE2DMS = 516, /* UIMAGE2DMS */ + IMAGE2DMSARRAY = 517, /* IMAGE2DMSARRAY */ + IIMAGE2DMSARRAY = 518, /* IIMAGE2DMSARRAY */ + UIMAGE2DMSARRAY = 519, /* UIMAGE2DMSARRAY */ + F16IMAGE1D = 520, /* F16IMAGE1D */ + F16IMAGE2D = 521, /* F16IMAGE2D */ + F16IMAGE3D = 522, /* F16IMAGE3D */ + F16IMAGE2DRECT = 523, /* F16IMAGE2DRECT */ + F16IMAGECUBE = 524, /* F16IMAGECUBE */ + F16IMAGE1DARRAY = 525, /* F16IMAGE1DARRAY */ + F16IMAGE2DARRAY = 526, /* F16IMAGE2DARRAY */ + F16IMAGECUBEARRAY = 527, /* F16IMAGECUBEARRAY */ + F16IMAGEBUFFER = 528, /* F16IMAGEBUFFER */ + F16IMAGE2DMS = 529, /* F16IMAGE2DMS */ + F16IMAGE2DMSARRAY = 530, /* F16IMAGE2DMSARRAY */ + I64IMAGE1D = 531, /* I64IMAGE1D */ + U64IMAGE1D = 532, /* U64IMAGE1D */ + I64IMAGE2D = 533, /* I64IMAGE2D */ + U64IMAGE2D = 534, /* U64IMAGE2D */ + I64IMAGE3D = 535, /* I64IMAGE3D */ + U64IMAGE3D = 536, /* U64IMAGE3D */ + I64IMAGE2DRECT = 537, /* I64IMAGE2DRECT */ + U64IMAGE2DRECT = 538, /* U64IMAGE2DRECT */ + I64IMAGECUBE = 539, /* I64IMAGECUBE */ + U64IMAGECUBE = 540, /* U64IMAGECUBE */ + I64IMAGEBUFFER = 541, /* I64IMAGEBUFFER */ + U64IMAGEBUFFER = 542, /* U64IMAGEBUFFER */ + I64IMAGE1DARRAY = 543, /* I64IMAGE1DARRAY */ + U64IMAGE1DARRAY = 544, /* U64IMAGE1DARRAY */ + I64IMAGE2DARRAY = 545, /* I64IMAGE2DARRAY */ + U64IMAGE2DARRAY = 546, /* U64IMAGE2DARRAY */ + I64IMAGECUBEARRAY = 547, /* I64IMAGECUBEARRAY */ + U64IMAGECUBEARRAY = 548, /* U64IMAGECUBEARRAY */ + I64IMAGE2DMS = 549, /* I64IMAGE2DMS */ + U64IMAGE2DMS = 550, /* U64IMAGE2DMS */ + I64IMAGE2DMSARRAY = 551, /* I64IMAGE2DMSARRAY */ + U64IMAGE2DMSARRAY = 552, /* U64IMAGE2DMSARRAY */ + TEXTURECUBEARRAY = 553, /* TEXTURECUBEARRAY */ + ITEXTURECUBEARRAY = 554, /* ITEXTURECUBEARRAY */ + UTEXTURECUBEARRAY = 555, /* UTEXTURECUBEARRAY */ + TEXTURE1D = 556, /* TEXTURE1D */ + ITEXTURE1D = 557, /* ITEXTURE1D */ + UTEXTURE1D = 558, /* UTEXTURE1D */ + TEXTURE1DARRAY = 559, /* TEXTURE1DARRAY */ + ITEXTURE1DARRAY = 560, /* ITEXTURE1DARRAY */ + UTEXTURE1DARRAY = 561, /* UTEXTURE1DARRAY */ + TEXTURE2DRECT = 562, /* TEXTURE2DRECT */ + ITEXTURE2DRECT = 563, /* ITEXTURE2DRECT */ + UTEXTURE2DRECT = 564, /* UTEXTURE2DRECT */ + TEXTUREBUFFER = 565, /* TEXTUREBUFFER */ + ITEXTUREBUFFER = 566, /* ITEXTUREBUFFER */ + UTEXTUREBUFFER = 567, /* UTEXTUREBUFFER */ + TEXTURE2DMS = 568, /* TEXTURE2DMS */ + ITEXTURE2DMS = 569, /* ITEXTURE2DMS */ + UTEXTURE2DMS = 570, /* UTEXTURE2DMS */ + TEXTURE2DMSARRAY = 571, /* TEXTURE2DMSARRAY */ + ITEXTURE2DMSARRAY = 572, /* ITEXTURE2DMSARRAY */ + UTEXTURE2DMSARRAY = 573, /* UTEXTURE2DMSARRAY */ + F16TEXTURE1D = 574, /* F16TEXTURE1D */ + F16TEXTURE2D = 575, /* F16TEXTURE2D */ + F16TEXTURE3D = 576, /* F16TEXTURE3D */ + F16TEXTURE2DRECT = 577, /* F16TEXTURE2DRECT */ + F16TEXTURECUBE = 578, /* F16TEXTURECUBE */ + F16TEXTURE1DARRAY = 579, /* F16TEXTURE1DARRAY */ + F16TEXTURE2DARRAY = 580, /* F16TEXTURE2DARRAY */ + F16TEXTURECUBEARRAY = 581, /* F16TEXTURECUBEARRAY */ + F16TEXTUREBUFFER = 582, /* F16TEXTUREBUFFER */ + F16TEXTURE2DMS = 583, /* F16TEXTURE2DMS */ + F16TEXTURE2DMSARRAY = 584, /* F16TEXTURE2DMSARRAY */ + SUBPASSINPUT = 585, /* SUBPASSINPUT */ + SUBPASSINPUTMS = 586, /* SUBPASSINPUTMS */ + ISUBPASSINPUT = 587, /* ISUBPASSINPUT */ + ISUBPASSINPUTMS = 588, /* ISUBPASSINPUTMS */ + USUBPASSINPUT = 589, /* USUBPASSINPUT */ + USUBPASSINPUTMS = 590, /* USUBPASSINPUTMS */ + F16SUBPASSINPUT = 591, /* F16SUBPASSINPUT */ + F16SUBPASSINPUTMS = 592, /* F16SUBPASSINPUTMS */ + SPIRV_INSTRUCTION = 593, /* SPIRV_INSTRUCTION */ + SPIRV_EXECUTION_MODE = 594, /* SPIRV_EXECUTION_MODE */ + SPIRV_EXECUTION_MODE_ID = 595, /* SPIRV_EXECUTION_MODE_ID */ + SPIRV_DECORATE = 596, /* SPIRV_DECORATE */ + SPIRV_DECORATE_ID = 597, /* SPIRV_DECORATE_ID */ + SPIRV_DECORATE_STRING = 598, /* SPIRV_DECORATE_STRING */ + SPIRV_TYPE = 599, /* SPIRV_TYPE */ + SPIRV_STORAGE_CLASS = 600, /* SPIRV_STORAGE_CLASS */ + SPIRV_BY_REFERENCE = 601, /* SPIRV_BY_REFERENCE */ + SPIRV_LITERAL = 602, /* SPIRV_LITERAL */ + ATTACHMENTEXT = 603, /* ATTACHMENTEXT */ + IATTACHMENTEXT = 604, /* IATTACHMENTEXT */ + UATTACHMENTEXT = 605, /* UATTACHMENTEXT */ + LEFT_OP = 606, /* LEFT_OP */ + RIGHT_OP = 607, /* RIGHT_OP */ + INC_OP = 608, /* INC_OP */ + DEC_OP = 609, /* DEC_OP */ + LE_OP = 610, /* LE_OP */ + GE_OP = 611, /* GE_OP */ + EQ_OP = 612, /* EQ_OP */ + NE_OP = 613, /* NE_OP */ + AND_OP = 614, /* AND_OP */ + OR_OP = 615, /* OR_OP */ + XOR_OP = 616, /* XOR_OP */ + MUL_ASSIGN = 617, /* MUL_ASSIGN */ + DIV_ASSIGN = 618, /* DIV_ASSIGN */ + ADD_ASSIGN = 619, /* ADD_ASSIGN */ + MOD_ASSIGN = 620, /* MOD_ASSIGN */ + LEFT_ASSIGN = 621, /* LEFT_ASSIGN */ + RIGHT_ASSIGN = 622, /* RIGHT_ASSIGN */ + AND_ASSIGN = 623, /* AND_ASSIGN */ + XOR_ASSIGN = 624, /* XOR_ASSIGN */ + OR_ASSIGN = 625, /* OR_ASSIGN */ + SUB_ASSIGN = 626, /* SUB_ASSIGN */ + STRING_LITERAL = 627, /* STRING_LITERAL */ + LEFT_PAREN = 628, /* LEFT_PAREN */ + RIGHT_PAREN = 629, /* RIGHT_PAREN */ + LEFT_BRACKET = 630, /* LEFT_BRACKET */ + RIGHT_BRACKET = 631, /* RIGHT_BRACKET */ + LEFT_BRACE = 632, /* LEFT_BRACE */ + RIGHT_BRACE = 633, /* RIGHT_BRACE */ + DOT = 634, /* DOT */ + COMMA = 635, /* COMMA */ + COLON = 636, /* COLON */ + EQUAL = 637, /* EQUAL */ + SEMICOLON = 638, /* SEMICOLON */ + BANG = 639, /* BANG */ + DASH = 640, /* DASH */ + TILDE = 641, /* TILDE */ + PLUS = 642, /* PLUS */ + STAR = 643, /* STAR */ + SLASH = 644, /* SLASH */ + PERCENT = 645, /* PERCENT */ + LEFT_ANGLE = 646, /* LEFT_ANGLE */ + RIGHT_ANGLE = 647, /* RIGHT_ANGLE */ + VERTICAL_BAR = 648, /* VERTICAL_BAR */ + CARET = 649, /* CARET */ + AMPERSAND = 650, /* AMPERSAND */ + QUESTION = 651, /* QUESTION */ + INVARIANT = 652, /* INVARIANT */ + HIGH_PRECISION = 653, /* HIGH_PRECISION */ + MEDIUM_PRECISION = 654, /* MEDIUM_PRECISION */ + LOW_PRECISION = 655, /* LOW_PRECISION */ + PRECISION = 656, /* PRECISION */ + PACKED = 657, /* PACKED */ + RESOURCE = 658, /* RESOURCE */ + SUPERP = 659, /* SUPERP */ + FLOATCONSTANT = 660, /* FLOATCONSTANT */ + INTCONSTANT = 661, /* INTCONSTANT */ + UINTCONSTANT = 662, /* UINTCONSTANT */ + BOOLCONSTANT = 663, /* BOOLCONSTANT */ + IDENTIFIER = 664, /* IDENTIFIER */ + TYPE_NAME = 665, /* TYPE_NAME */ + CENTROID = 666, /* CENTROID */ + IN = 667, /* IN */ + OUT = 668, /* OUT */ + INOUT = 669, /* INOUT */ + STRUCT = 670, /* STRUCT */ + VOID = 671, /* VOID */ + WHILE = 672, /* WHILE */ + BREAK = 673, /* BREAK */ + CONTINUE = 674, /* CONTINUE */ + DO = 675, /* DO */ + ELSE = 676, /* ELSE */ + FOR = 677, /* FOR */ + IF = 678, /* IF */ + DISCARD = 679, /* DISCARD */ + RETURN = 680, /* RETURN */ + SWITCH = 681, /* SWITCH */ + CASE = 682, /* CASE */ + DEFAULT = 683, /* DEFAULT */ + TERMINATE_INVOCATION = 684, /* TERMINATE_INVOCATION */ + TERMINATE_RAY = 685, /* TERMINATE_RAY */ + IGNORE_INTERSECTION = 686, /* IGNORE_INTERSECTION */ + UNIFORM = 687, /* UNIFORM */ + SHARED = 688, /* SHARED */ + BUFFER = 689, /* BUFFER */ + TILEIMAGEEXT = 690, /* TILEIMAGEEXT */ + FLAT = 691, /* FLAT */ + SMOOTH = 692, /* SMOOTH */ + LAYOUT = 693, /* LAYOUT */ + DOUBLECONSTANT = 694, /* DOUBLECONSTANT */ + INT16CONSTANT = 695, /* INT16CONSTANT */ + UINT16CONSTANT = 696, /* UINT16CONSTANT */ + FLOAT16CONSTANT = 697, /* FLOAT16CONSTANT */ + INT32CONSTANT = 698, /* INT32CONSTANT */ + UINT32CONSTANT = 699, /* UINT32CONSTANT */ + INT64CONSTANT = 700, /* INT64CONSTANT */ + UINT64CONSTANT = 701, /* UINT64CONSTANT */ + SUBROUTINE = 702, /* SUBROUTINE */ + DEMOTE = 703, /* DEMOTE */ + FUNCTION = 704, /* FUNCTION */ + PAYLOADNV = 705, /* PAYLOADNV */ + PAYLOADINNV = 706, /* PAYLOADINNV */ + HITATTRNV = 707, /* HITATTRNV */ + CALLDATANV = 708, /* CALLDATANV */ + CALLDATAINNV = 709, /* CALLDATAINNV */ + PAYLOADEXT = 710, /* PAYLOADEXT */ + PAYLOADINEXT = 711, /* PAYLOADINEXT */ + HITATTREXT = 712, /* HITATTREXT */ + CALLDATAEXT = 713, /* CALLDATAEXT */ + CALLDATAINEXT = 714, /* CALLDATAINEXT */ + PATCH = 715, /* PATCH */ + SAMPLE = 716, /* SAMPLE */ + NONUNIFORM = 717, /* NONUNIFORM */ + COHERENT = 718, /* COHERENT */ + VOLATILE = 719, /* VOLATILE */ + RESTRICT = 720, /* RESTRICT */ + READONLY = 721, /* READONLY */ + WRITEONLY = 722, /* WRITEONLY */ + NONTEMPORAL = 723, /* NONTEMPORAL */ + DEVICECOHERENT = 724, /* DEVICECOHERENT */ + QUEUEFAMILYCOHERENT = 725, /* QUEUEFAMILYCOHERENT */ + WORKGROUPCOHERENT = 726, /* WORKGROUPCOHERENT */ + SUBGROUPCOHERENT = 727, /* SUBGROUPCOHERENT */ + NONPRIVATE = 728, /* NONPRIVATE */ + SHADERCALLCOHERENT = 729, /* SHADERCALLCOHERENT */ + NOPERSPECTIVE = 730, /* NOPERSPECTIVE */ + EXPLICITINTERPAMD = 731, /* EXPLICITINTERPAMD */ + PERVERTEXEXT = 732, /* PERVERTEXEXT */ + PERVERTEXNV = 733, /* PERVERTEXNV */ + PERPRIMITIVENV = 734, /* PERPRIMITIVENV */ + PERVIEWNV = 735, /* PERVIEWNV */ + PERTASKNV = 736, /* PERTASKNV */ + PERPRIMITIVEEXT = 737, /* PERPRIMITIVEEXT */ + TASKPAYLOADWORKGROUPEXT = 738, /* TASKPAYLOADWORKGROUPEXT */ + PRECISE = 739 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -581,7 +583,7 @@ union YYSTYPE glslang::TTypeParameters* typeParameters; } interm; -#line 585 "MachineIndependent/glslang_tab.cpp.h" +#line 587 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp b/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp index b28da23f8..572652d99 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp @@ -81,6 +81,7 @@ public: virtual bool visitLoop(TVisit, TIntermLoop* node); virtual bool visitBranch(TVisit, TIntermBranch* node); virtual bool visitSwitch(TVisit, TIntermSwitch* node); + virtual bool visitVariableDecl(TVisit, TIntermVariableDecl* node); TInfoSink& infoSink; protected: @@ -1399,6 +1400,16 @@ bool TOutputTraverser::visitSwitch(TVisit /* visit */, TIntermSwitch* node) return false; } +bool TOutputTraverser::visitVariableDecl(TVisit /* visit */, TIntermVariableDecl* node) +{ + TInfoSink& out = infoSink; + + OutputTreeText(out, node, depth); + + out.debug << "VarDecl: " << node->getDeclSymbol()->getName() << '\n'; + return true; +} + // // This function is the one to call externally to start the traversal. // Individual functions can be initialized to 0 to skip processing of that diff --git a/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp b/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp index 0e5941a97..00acd83a7 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp @@ -166,7 +166,7 @@ typedef std::vector TVarLiveVector; class TVarGatherTraverser : public TLiveTraverser { public: TVarGatherTraverser(const TIntermediate& i, bool traverseDeadCode, TVarLiveMap& inList, TVarLiveMap& outList, TVarLiveMap& uniformList) - : TLiveTraverser(i, traverseDeadCode, true, true, false) + : TLiveTraverser(i, traverseDeadCode, true, true, false, false) , inputList(inList) , outputList(outList) , uniformList(uniformList) @@ -209,7 +209,7 @@ class TVarSetTraverser : public TLiveTraverser { public: TVarSetTraverser(const TIntermediate& i, const TVarLiveMap& inList, const TVarLiveMap& outList, const TVarLiveMap& uniformList) - : TLiveTraverser(i, true, true, true, false) + : TLiveTraverser(i, true, true, true, false, true) , inputList(inList) , outputList(outList) , uniformList(uniformList) diff --git a/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp b/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp index 3fd647796..f4983c7af 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp @@ -1986,6 +1986,8 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ set = 1; else if (qualifier.isHitObjectAttrNV()) set = 2; + else if (qualifier.isHitObjectAttrEXT()) + set = 2; else return -1; @@ -2024,7 +2026,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // For raytracing IO (payloads and callabledata) each declaration occupies a single // slot irrespective of type. int collision = -1; // no collision - if (qualifier.isAnyPayload() || qualifier.isAnyCallable() || qualifier.isHitObjectAttrNV()) { + if (qualifier.isAnyPayload() || qualifier.isAnyCallable() || qualifier.isHitObjectAttrNV() || qualifier.isHitObjectAttrEXT()) { TRange range(qualifier.layoutLocation, qualifier.layoutLocation); collision = checkLocationRT(set, qualifier.layoutLocation); if (collision < 0) diff --git a/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h b/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h index 0d299bda2..2e1074456 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h +++ b/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h @@ -574,8 +574,8 @@ public: TIntermConstantUnion* addConstantUnion(const TString*, const TSourceLoc&, bool literal = false) const; TIntermTyped* promoteConstantUnion(TBasicType, TIntermConstantUnion*) const; bool parseConstTree(TIntermNode*, TConstUnionArray, TOperator, const TType&, bool singleConstantParam = false); - TIntermLoop* addLoop(TIntermNode*, TIntermTyped*, TIntermTyped*, bool testFirst, const TSourceLoc&); - TIntermAggregate* addForLoop(TIntermNode*, TIntermNode*, TIntermTyped*, TIntermTyped*, bool testFirst, + TIntermLoop* addLoop(TIntermNode*, TIntermNode*, TIntermTyped*, bool testFirst, const TSourceLoc&); + TIntermAggregate* addForLoop(TIntermNode*, TIntermNode*, TIntermNode*, TIntermTyped*, bool testFirst, const TSourceLoc&, TIntermLoop*&); TIntermBranch* addBranch(TOperator, const TSourceLoc&); TIntermBranch* addBranch(TOperator, TIntermTyped*, const TSourceLoc&); @@ -763,6 +763,16 @@ public: useReplicatedComposites = true; } bool usingReplicatedComposites() const { return useReplicatedComposites; } + void setPromoteUint32Indices() + { + promoteUint32Indices = true; + } + bool usingPromoteUint32Indices() const { return promoteUint32Indices; } + void setShader64BitIndexing() + { + shader64BitIndexing = true; + } + bool usingShader64BitIndexing() const { return shader64BitIndexing; } void setUseVariablePointers() { useVariablePointers = true; @@ -1295,6 +1305,8 @@ protected: bool maximallyReconverges; bool usePhysicalStorageBuffer; bool useReplicatedComposites { false }; + bool promoteUint32Indices { false }; + bool shader64BitIndexing { false }; TSpirvRequirement* spirvRequirement; TSpirvExecutionMode* spirvExecutionMode; diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp index 5b44b1304..90270367f 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -153,12 +153,57 @@ int TPpContext::CPPdefine(TPpToken* ppToken) return token; } + int pendingPoundSymbols = 0; + TPpToken savePound; // record the definition of the macro while (token != '\n' && token != EndOfInput) { - mac.body.putToken(token, ppToken); + if (token == '#') { + pendingPoundSymbols++; + if (pendingPoundSymbols == 0) { + savePound = *ppToken; + } + } else if (pendingPoundSymbols == 0) { + mac.body.putToken(token, ppToken); + } else if (pendingPoundSymbols == 1) { + // A single #: stringify + parseContext.requireProfile(ppToken->loc, ~EEsProfile, "stringify (#)"); + parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, nullptr, "stringify (#)"); + bool isArg = false; + if (token == PpAtomIdentifier) { + for (int i = (int)mac.args.size() - 1; i >= 0; i--) { + if (strcmp(atomStrings.getString(mac.args[i]), ppToken->name) == 0) { + isArg = true; + break; + } + } + } + if (!isArg) { + parseContext.ppError(ppToken->loc, "'#' is not followed by a macro parameter.", "#", ""); + return token; + } + mac.body.putToken(tStringifyLevelInput::PUSH, ppToken); + mac.body.putToken(token, ppToken); + mac.body.putToken(tStringifyLevelInput::POP, ppToken); + pendingPoundSymbols = 0; + } else if (pendingPoundSymbols % 2 == 0) { + // Any number of pastes '##' in a row: idempotent, just becomes one paste + parseContext.requireProfile(ppToken->loc, ~EEsProfile, "token pasting (##)"); + parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, nullptr, "token pasting (##)"); + for (int i = 0; i < pendingPoundSymbols / 2; i++) { + mac.body.putToken(PpAtomPaste, &savePound); + } + mac.body.putToken(token, ppToken); + pendingPoundSymbols = 0; + } else { + // An odd number of '#' i.e., mix of paste and stringify: does not give valid preprocessing token + parseContext.ppError(ppToken->loc, "Illegal sequence of paste (##) and stringify (#).", "#", ""); + return token; + } + token = scanToken(ppToken); - if (token != '\n' && ppToken->space) - mac.body.putToken(' ', ppToken); + } + if (pendingPoundSymbols != 0) { + parseContext.ppError(ppToken->loc, "Macro ended with incomplete '#' paste/stringify operators", "#", ""); } // check for duplicate definition @@ -1119,7 +1164,7 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) } // see if are preceding a ## - if (mac->body.peekUntokenizedPasting()) { + if (mac->body.peekTokenizedPasting(false)) { prepaste = true; pasting = true; } diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h index 3446f1e1c..582d119f4 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h @@ -311,7 +311,6 @@ public: int getToken(TParseContextBase&, TPpToken*); bool atEnd() { return currentPos >= stream.size(); } bool peekTokenizedPasting(bool lastTokenPastes); - bool peekUntokenizedPasting(); void reset() { currentPos = 0; } protected: @@ -373,22 +372,6 @@ protected: } if (!inputStack.empty() && inputStack.back()->isStringInput() && !inElseSkip) { if (token == '\n') { - bool seenNumSign = false; - for (int i = 0; i < (int)lastLineTokens.size() - 1;) { - int curPos = i; - int curToken = lastLineTokens[i++]; - if (curToken == '#' && lastLineTokens[i] == '#') { - curToken = PpAtomPaste; - i++; - } - if (curToken == '#') { - if (seenNumSign) { - parseContext.ppError(lastLineTokenLocs[curPos], "(#) can be preceded in its line only by spaces or horizontal tabs", "#", ""); - } else { - seenNumSign = true; - } - } - } lastLineTokens.clear(); lastLineTokenLocs.clear(); } else { @@ -458,6 +441,38 @@ protected: static const int marker = -3; }; + class tStringifyLevelInput : public tInput { + int what; + tStringifyLevelInput(TPpContext* pp) : tInput(pp) { } + public: + static tStringifyLevelInput popMarker(TPpContext* pp) + { + tStringifyLevelInput sl(pp); + sl.what = POP; + return sl; + } + + static tStringifyLevelInput pushMarker(TPpContext* pp) + { + tStringifyLevelInput sl(pp); + sl.what = PUSH; + return sl; + } + + int scan(TPpToken*) override + { + if (done) + return EndOfInput; + done = true; + + return what; + } + virtual int getch() override { assert(0); return EndOfInput; } + virtual void ungetch() override { assert(0); } + static const int PUSH = -4; + static const int POP = -5; + }; + class tZeroInput : public tInput { public: tZeroInput(TPpContext* pp) : tInput(pp) { } diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp index df64b7bd5..a25229563 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -97,7 +97,6 @@ namespace glslang { /////////////////////////////////// Floating point constants: ///////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// -// // Scan a single- or double-precision floating point constant. // Assumes that the scanner has seen at least one digit, // followed by either a decimal '.' or the letter 'e', or a @@ -1226,7 +1225,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) // int TPpContext::tokenize(TPpToken& ppToken) { - for(;;) { + int stringifyDepth = 0; + TPpToken stringifiedToken; // Tokens are appended to this as they come in + for (;;) { int token = scanToken(&ppToken); // Handle token-pasting logic @@ -1254,6 +1255,20 @@ int TPpContext::tokenize(TPpToken& ppToken) if (token == '\n') continue; + if (token == tStringifyLevelInput::PUSH) { + stringifyDepth++; + continue; + } + if (token == tStringifyLevelInput::POP) { + assert(stringifyDepth > 0); + stringifyDepth--; + if (stringifyDepth == 0) { + snprintf(ppToken.name, sizeof(ppToken.name), "%s", stringifiedToken.name); + return PpAtomConstString; + } + continue; + } + // expand macros if (token == PpAtomIdentifier) { switch (MacroExpand(&ppToken, false, true)) { @@ -1267,7 +1282,21 @@ int TPpContext::tokenize(TPpToken& ppToken) } } + bool needStringSupport = ifdepth == 0 && (token == PpAtomConstString || stringifyDepth > 0); + if (needStringSupport && parseContext.intermediate.getSource() != EShSourceHlsl) { + // HLSL allows string literals. + // GLSL allows string literals with GL_EXT_debug_printf. + const char* const string_literal_EXTs[] = { E_GL_EXT_debug_printf, E_GL_EXT_spirv_intrinsics }; + parseContext.requireExtensions(ppToken.loc, 2, string_literal_EXTs, "string literal"); + if (!parseContext.extensionTurnedOn(E_GL_EXT_debug_printf) && + !parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) { + continue; + } + } + switch (token) { + case PpAtomConstString: + break; case PpAtomIdentifier: case PpAtomConstInt: case PpAtomConstUint: @@ -1281,17 +1310,6 @@ int TPpContext::tokenize(TPpToken& ppToken) if (ppToken.name[0] == '\0') continue; break; - case PpAtomConstString: - // HLSL allows string literals. - // GLSL allows string literals with GL_EXT_debug_printf. - if (ifdepth == 0 && parseContext.intermediate.getSource() != EShSourceHlsl) { - const char* const string_literal_EXTs[] = { E_GL_EXT_debug_printf, E_GL_EXT_spirv_intrinsics }; - parseContext.requireExtensions(ppToken.loc, 2, string_literal_EXTs, "string literal"); - if (!parseContext.extensionTurnedOn(E_GL_EXT_debug_printf) && - !parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) - continue; - } - break; case '\'': parseContext.ppError(ppToken.loc, "character literals not supported", "\'", ""); continue; @@ -1299,6 +1317,17 @@ int TPpContext::tokenize(TPpToken& ppToken) snprintf(ppToken.name, sizeof(ppToken.name), "%s", atomStrings.getString(token)); break; } + if (stringifyDepth > 0) { + size_t existingLen = strlen(stringifiedToken.name); + char* dst = stringifiedToken.name + existingLen; + // stringify_depth would determine how many layers of \\\"\\\" are needed, if we wanted to. + if (ppToken.space) { + snprintf(dst, sizeof(stringifiedToken.name) - existingLen - 1, " %s", ppToken.name); + } else { + snprintf(dst, sizeof(stringifiedToken.name) - existingLen, "%s", ppToken.name); + } + continue; + } return token; } @@ -1329,6 +1358,7 @@ int TPpContext::tokenPaste(int token, TPpToken& ppToken) // This covers end of macro expansion if (endOfReplacementList()) { + // this should be unreachable, incomplete #/## sequences are caught at macro parsing time. parseContext.ppError(ppToken.loc, "unexpected location; end of replacement list", "##", ""); break; } diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp index e6ee64cf9..472df78f1 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -105,7 +105,7 @@ void TPpContext::TokenStream::putToken(int atom, TPpToken* ppToken) } // Read the next token from a macro token stream. -int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken *ppToken) +int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken* ppToken) { if (atEnd()) return EndOfInput; @@ -113,16 +113,6 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken int atom = stream[currentPos++].get(*ppToken); ppToken->loc = parseContext.getCurrentLoc(); - // Check for ##, unless the current # is the last character - if (atom == '#') { - if (peekToken('#')) { - parseContext.requireProfile(ppToken->loc, ~EEsProfile, "token pasting (##)"); - parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, nullptr, "token pasting (##)"); - currentPos++; - atom = PpAtomPaste; - } - } - return atom; } @@ -146,8 +136,10 @@ bool TPpContext::TokenStream::peekTokenizedPasting(bool lastTokenPastes) // 2. last token and we've been told after this there will be a ## - if (! lastTokenPastes) + if (! lastTokenPastes) { + currentPos = savePos; return false; + } // Getting here means the last token will be pasted, after this // Are we at the last non-whitespace token? @@ -167,29 +159,6 @@ bool TPpContext::TokenStream::peekTokenizedPasting(bool lastTokenPastes) return !moreTokens; } -// See if the next non-white-space tokens are two consecutive # -bool TPpContext::TokenStream::peekUntokenizedPasting() -{ - // don't return early, have to restore this - size_t savePos = currentPos; - - // skip white-space - while (peekToken(' ')) - ++currentPos; - - // check for ## - bool pasting = false; - if (peekToken('#')) { - ++currentPos; - if (peekToken('#')) - pasting = true; - } - - currentPos = savePos; - - return pasting; -} - void TPpContext::pushTokenStreamInput(TokenStream& ts, bool prepasting, bool expanded) { pushInput(new tTokenInput(this, &ts, prepasting, expanded));