diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index d9312bbbd..61e27e18a 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -71,10 +71,10 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) return EShLangMiss; case GLSLANG_STAGE_CALLABLE_NV: return EShLangCallable; - case GLSLANG_STAGE_TASK_NV: - return EShLangTaskNV; - case GLSLANG_STAGE_MESH_NV: - return EShLangMeshNV; + case GLSLANG_STAGE_TASK: + return EShLangTask; + case GLSLANG_STAGE_MESH: + return EShLangMesh; default: break; } diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h index f48f1304d..a247b4cd1 100644 --- a/SPIRV/GLSL.ext.EXT.h +++ b/SPIRV/GLSL.ext.EXT.h @@ -39,5 +39,6 @@ static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_ato static const char* const E_SPV_EXT_shader_atomic_float16_add = "SPV_EXT_shader_atomic_float16_add"; static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader_atomic_float_min_max"; static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64"; +static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader"; #endif // #ifndef GLSLextEXT_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index bff57bcde..bcfc6e80a 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -280,6 +280,9 @@ protected: // Used later for generating OpTraceKHR/OpExecuteCallableKHR std::unordered_map locationToSymbol[2]; + + // Used by Task shader while generating opearnds for OpEmitMeshTasksEXT + spv::Id taskPayloadID; }; // @@ -315,7 +318,7 @@ spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile } // Translate glslang language (stage) to SPIR-V execution model. -spv::ExecutionModel TranslateExecutionModel(EShLanguage stage) +spv::ExecutionModel TranslateExecutionModel(EShLanguage stage, bool isMeshShaderEXT = false) { switch (stage) { case EShLangVertex: return spv::ExecutionModelVertex; @@ -331,8 +334,8 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage) case EShLangClosestHit: return spv::ExecutionModelClosestHitKHR; case EShLangMiss: return spv::ExecutionModelMissKHR; case EShLangCallable: return spv::ExecutionModelCallableKHR; - case EShLangTaskNV: return spv::ExecutionModelTaskNV; - case EShLangMeshNV: return spv::ExecutionModelMeshNV; + case EShLangTask: return (isMeshShaderEXT)? spv::ExecutionModelTaskEXT : spv::ExecutionModelTaskNV; + case EShLangMesh: return (isMeshShaderEXT)? spv::ExecutionModelMeshEXT: spv::ExecutionModelMeshNV; #endif default: assert(0); @@ -763,7 +766,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInSampleMask; case glslang::EbvLayer: - if (glslangIntermediate->getStage() == EShLangMeshNV) { + if (glslangIntermediate->getStage() == EShLangMesh) { return spv::BuiltInLayer; } if (glslangIntermediate->getStage() == EShLangGeometry || @@ -1078,6 +1081,16 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvMeshViewIndicesNV: return spv::BuiltInMeshViewIndicesNV; + // SPV_EXT_mesh_shader + case glslang::EbvPrimitivePointIndicesEXT: + return spv::BuiltInPrimitivePointIndicesEXT; + case glslang::EbvPrimitiveLineIndicesEXT: + return spv::BuiltInPrimitiveLineIndicesEXT; + case glslang::EbvPrimitiveTriangleIndicesEXT: + return spv::BuiltInPrimitiveTriangleIndicesEXT; + case glslang::EbvCullPrimitiveEXT: + return spv::BuiltInCullPrimitiveEXT; + // sm builtins case glslang::EbvWarpsPerSM: builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); @@ -1321,6 +1334,7 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T case glslang::EvqHitAttr: return spv::StorageClassHitAttributeKHR; case glslang::EvqCallableData: return spv::StorageClassCallableDataKHR; case glslang::EvqCallableDataIn: return spv::StorageClassIncomingCallableDataKHR; + case glslang::EvqtaskPayloadSharedEXT : return spv::StorageClassTaskPayloadWorkgroupEXT; case glslang::EvqSpirvStorageClass: return static_cast(type.getQualifier().spirvStorageClass); #endif default: @@ -1466,6 +1480,8 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa child.perViewNV = true; if (parent.perTaskNV) child.perTaskNV = true; + if (parent.storage == glslang::EvqtaskPayloadSharedEXT) + child.storage = glslang::EvqtaskPayloadSharedEXT; if (parent.patch) child.patch = true; if (parent.sample) @@ -1525,9 +1541,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, inEntryPoint(false), entryPointTerminated(false), linkageOnly(false), glslangIntermediate(glslangIntermediate), nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp()), - nonSemanticDebugPrintf(0) + nonSemanticDebugPrintf(0), + taskPayloadID(0) { - spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage()); + bool isMeshShaderExt = (glslangIntermediate->getRequestedExtensions().find(glslang::E_GL_EXT_mesh_shader) != + glslangIntermediate->getRequestedExtensions().end()); + spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage(), isMeshShaderExt); builder.clearAccessChain(); builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()), @@ -1803,7 +1822,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, case EShLangAnyHit: case EShLangClosestHit: case EShLangMiss: - case EShLangCallable: + case EShLangCallable: { auto& extensions = glslangIntermediate->getRequestedExtensions(); if (extensions.find("GL_NV_ray_tracing") == extensions.end()) { @@ -1823,10 +1842,15 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, } break; } - case EShLangTaskNV: - case EShLangMeshNV: - builder.addCapability(spv::CapabilityMeshShadingNV); - builder.addExtension(spv::E_SPV_NV_mesh_shader); + case EShLangTask: + case EShLangMesh: + if(isMeshShaderExt) { + builder.addCapability(spv::CapabilityMeshShadingEXT); + builder.addExtension(spv::E_SPV_EXT_mesh_shader); + } else { + builder.addCapability(spv::CapabilityMeshShadingNV); + builder.addExtension(spv::E_SPV_NV_mesh_shader); + } if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { std::vector dimConstId; for (int dim = 0; dim < 3; ++dim) { @@ -1843,7 +1867,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, glslangIntermediate->getLocalSize(1), glslangIntermediate->getLocalSize(2)); } - if (glslangIntermediate->getStage() == EShLangMeshNV) { + if (glslangIntermediate->getStage() == EShLangMesh) { builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputPrimitivesNV, @@ -1962,7 +1986,6 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) if (symbol->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); - #ifdef ENABLE_HLSL // Skip symbol handling if it is string-typed if (symbol->getBasicType() == glslang::EbtString) @@ -1973,6 +1996,9 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) // Formal function parameters were mapped during makeFunctions(). spv::Id id = getSymbolId(symbol); + if (symbol->getType().getQualifier().isTaskPayload()) + taskPayloadID = id; // cache the taskPayloadID to be used it as operand for OpEmitMeshTasksEXT + if (builder.isPointer(id)) { if (!symbol->getType().getQualifier().isParamInput() && !symbol->getType().getQualifier().isParamOutput()) { @@ -2516,7 +2542,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI operandNode = node->getOperand()->getAsBinaryNode()->getLeft(); else operandNode = node->getOperand(); - + operandNode->traverse(this); spv::Id operand = spv::NoResult; @@ -3111,6 +3137,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpExecuteCallableNV: case glslang::EOpExecuteCallableKHR: case glslang::EOpWritePackedPrimitiveIndices4x8NV: + case glslang::EOpEmitMeshTasksEXT: + case glslang::EOpSetMeshOutputsEXT: noReturnValue = true; break; case glslang::EOpRayQueryInitialize: @@ -3505,7 +3533,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt break; case 1: { - OpDecorations decorations = { precision, + OpDecorations decorations = { precision, TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(node->getType().getQualifier()) }; result = createUnaryOperation( @@ -3627,7 +3655,7 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang // smear condition to vector, if necessary (AST is always scalar) // Before 1.4, smear like for mix(), starting with 1.4, keep it scalar if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_4 && builder.isVector(trueValue)) { - condition = builder.smearScalar(spv::NoPrecision, condition, + condition = builder.smearScalar(spv::NoPrecision, condition, builder.makeVectorType(builder.makeBoolType(), builder.getNumComponents(trueValue))); } @@ -4206,7 +4234,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.isShadow(), sampler.isArrayed(), sampler.isMultiSample(), sampler.isImageClass() ? 2 : 1, TranslateImageFormat(type)); - if (sampler.isCombined() && + 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. @@ -4396,7 +4424,7 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) extensions.find("GL_NV_stereo_view_rendering") == extensions.end()) return true; - if (glslangIntermediate->getStage() != EShLangMeshNV) { + if (glslangIntermediate->getStage() != EShLangMesh) { if (member.getFieldName() == "gl_ViewportMask" && extensions.find("GL_NV_viewport_array2") == extensions.end()) return true; @@ -5831,10 +5859,10 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO assert(builder.isStructType(resultStructType)); //resType (SPIR-V type) contains 6 elements: - //Member 0 must be a Boolean type scalar(LOD), - //Member 1 must be a vector of integer type, whose Signedness operand is 0(anchor), - //Member 2 must be a vector of integer type, whose Signedness operand is 0(offset), - //Member 3 must be a vector of integer type, whose Signedness operand is 0(mask), + //Member 0 must be a Boolean type scalar(LOD), + //Member 1 must be a vector of integer type, whose Signedness operand is 0(anchor), + //Member 2 must be a vector of integer type, whose Signedness operand is 0(offset), + //Member 3 must be a vector of integer type, whose Signedness operand is 0(mask), //Member 4 must be a scalar of integer type, whose Signedness operand is 0(lod), //Member 5 must be a scalar of integer type, whose Signedness operand is 0(granularity). std::vector members; @@ -5847,7 +5875,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO //call ImageFootprintNV spv::Id res = builder.createTextureCall(precision, resType, sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params, signExtensionMask()); - + //copy resType (SPIR-V type) to resultStructType(OpenGL type) for (int i = 0; i < 5; i++) { builder.clearAccessChain(); @@ -5900,7 +5928,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } #endif - std::vector result( 1, + std::vector result( 1, builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params, signExtensionMask()) ); @@ -7423,7 +7451,7 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv } else { scopeId = builder.makeUintConstant(spv::ScopeDevice); } - // semantics default to relaxed + // semantics default to relaxed spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() && glslangIntermediate->usingVulkanMemoryModel() ? spv::MemorySemanticsVolatileMask : @@ -8527,6 +8555,14 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpWritePackedPrimitiveIndices4x8NV: builder.createNoResultOp(spv::OpWritePackedPrimitiveIndices4x8NV, operands); return 0; + case glslang::EOpEmitMeshTasksEXT: + if(taskPayloadID) + operands.push_back(taskPayloadID); + builder.createNoResultOp(spv::OpEmitMeshTasksEXT, operands); + return 0; + case glslang::EOpSetMeshOutputsEXT: + builder.createNoResultOp(spv::OpSetMeshOutputsEXT, operands); + return 0; case glslang::EOpCooperativeMatrixMulAdd: opCode = spv::OpCooperativeMatrixMulAddNV; break; @@ -9011,13 +9047,21 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // add per-primitive, per-view. per-task decorations to a struct member (member >= 0) or an object void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier& qualifier) { + bool isMeshShaderExt = (glslangIntermediate->getRequestedExtensions().find(glslang::E_GL_EXT_mesh_shader) != + glslangIntermediate->getRequestedExtensions().end()); + if (member >= 0) { if (qualifier.perPrimitiveNV) { // Need to add capability/extension for fragment shader. // Mesh shader already adds this by default. if (glslangIntermediate->getStage() == EShLangFragment) { - builder.addCapability(spv::CapabilityMeshShadingNV); - builder.addExtension(spv::E_SPV_NV_mesh_shader); + if(isMeshShaderExt) { + builder.addCapability(spv::CapabilityMeshShadingEXT); + builder.addExtension(spv::E_SPV_EXT_mesh_shader); + } else { + builder.addCapability(spv::CapabilityMeshShadingNV); + builder.addExtension(spv::E_SPV_NV_mesh_shader); + } } builder.addMemberDecoration(id, (unsigned)member, spv::DecorationPerPrimitiveNV); } @@ -9030,8 +9074,13 @@ void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const g // Need to add capability/extension for fragment shader. // Mesh shader already adds this by default. if (glslangIntermediate->getStage() == EShLangFragment) { - builder.addCapability(spv::CapabilityMeshShadingNV); - builder.addExtension(spv::E_SPV_NV_mesh_shader); + if(isMeshShaderExt) { + builder.addCapability(spv::CapabilityMeshShadingEXT); + builder.addExtension(spv::E_SPV_EXT_mesh_shader); + } else { + builder.addCapability(spv::CapabilityMeshShadingNV); + builder.addExtension(spv::E_SPV_NV_mesh_shader); + } } builder.addDecoration(id, spv::DecorationPerPrimitiveNV); } diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 9cc26541d..b7fe3e742 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -97,6 +97,8 @@ const char* ExecutionModelString(int model) case 6: return "Kernel"; case ExecutionModelTaskNV: return "TaskNV"; case ExecutionModelMeshNV: return "MeshNV"; + case ExecutionModelTaskEXT: return "TaskEXT"; + case ExecutionModelMeshEXT: return "MeshEXT"; default: return "Bad"; @@ -242,7 +244,7 @@ const char* StorageClassString(int StorageClass) case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR"; case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; - + case StorageClassTaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; default: return "Bad"; } } @@ -433,6 +435,10 @@ const char* BuiltInString(int builtIn) case BuiltInWarpIDNV: return "WarpIDNV"; case BuiltInSMIDNV: return "SMIDNV"; case BuiltInCurrentRayTimeNV: return "CurrentRayTimeNV"; + case BuiltInPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT"; + case BuiltInPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; + case BuiltInPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; + case BuiltInCullPrimitiveEXT: return "CullPrimitiveEXT"; default: return "Bad"; } @@ -940,6 +946,7 @@ const char* CapabilityString(int info) case CapabilityFragmentBarycentricKHR: return "FragmentBarycentricKHR"; case CapabilityMeshShadingNV: return "MeshShadingNV"; case CapabilityImageFootprintNV: return "ImageFootprintNV"; + case CapabilityMeshShadingEXT: return "MeshShadingEXT"; // case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; case CapabilityFragmentDensityEXT: return "FragmentDensityEXT"; @@ -1407,6 +1414,8 @@ const char* OpcodeString(int op) case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; + case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT"; + case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT"; case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; @@ -2981,6 +2990,17 @@ void Parameterize() InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false); + + InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'"); + InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'"); + InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false); + + InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'"); InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'"); InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'"); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 9afd8a90b..0e40544bd 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1,19 +1,19 @@ // Copyright (c) 2014-2020 The Khronos Group Inc. -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and/or associated documentation files (the "Materials"), // to deal in the Materials without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Materials, and to permit persons to whom the // Materials are furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Materials. -// +// // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL @@ -27,7 +27,7 @@ // Enumeration tokens for SPIR-V, in various styles: // C, C++, C++11, JSON, Lua, Python, C#, D -// +// // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL @@ -36,7 +36,7 @@ // - C# will use enum classes in the Specification class located in the "Spv" namespace, // e.g.: Spv.Specification.SourceLanguage.GLSL // - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL -// +// // Some tokens act like mask values, which can be OR'd together, // while others are mutually exclusive. The mask-like ones have // "Mask" in their name, and a parallel enum that has the shift @@ -91,6 +91,8 @@ enum ExecutionModel { ExecutionModelMissNV = 5317, ExecutionModelCallableKHR = 5318, ExecutionModelCallableNV = 5318, + ExecutionModelTaskEXT = 5364, + ExecutionModelMeshEXT = 5365, ExecutionModelMax = 0x7fffffff, }; @@ -166,10 +168,13 @@ enum ExecutionMode { ExecutionModeStencilRefUnchangedBackAMD = 5082, ExecutionModeStencilRefGreaterBackAMD = 5083, ExecutionModeStencilRefLessBackAMD = 5084, + ExecutionModeOutputLinesEXT = 5269, ExecutionModeOutputLinesNV = 5269, + ExecutionModeOutputPrimitivesEXT = 5270, ExecutionModeOutputPrimitivesNV = 5270, ExecutionModeDerivativeGroupQuadsNV = 5289, ExecutionModeDerivativeGroupLinearNV = 5290, + ExecutionModeOutputTrianglesEXT = 5298, ExecutionModeOutputTrianglesNV = 5298, ExecutionModePixelInterlockOrderedEXT = 5366, ExecutionModePixelInterlockUnorderedEXT = 5367, @@ -218,6 +223,7 @@ enum StorageClass { StorageClassShaderRecordBufferNV = 5343, StorageClassPhysicalStorageBuffer = 5349, StorageClassPhysicalStorageBufferEXT = 5349, + StorageClassTaskPayloadWorkgroupEXT = 5402, StorageClassCodeSectionINTEL = 5605, StorageClassDeviceOnlyINTEL = 5936, StorageClassHostOnlyINTEL = 5937, @@ -500,6 +506,7 @@ enum Decoration { DecorationPassthroughNV = 5250, DecorationViewportRelativeNV = 5252, DecorationSecondaryViewportRelativeNV = 5256, + DecorationPerPrimitiveEXT = 5271, DecorationPerPrimitiveNV = 5271, DecorationPerViewNV = 5272, DecorationPerTaskNV = 5273, @@ -647,6 +654,10 @@ enum BuiltIn { BuiltInFragmentSizeNV = 5292, BuiltInFragInvocationCountEXT = 5293, BuiltInInvocationsPerPixelNV = 5293, + BuiltInPrimitivePointIndicesEXT = 5294, + BuiltInPrimitiveLineIndicesEXT = 5295, + BuiltInPrimitiveTriangleIndicesEXT = 5296, + BuiltInCullPrimitiveEXT = 5299, BuiltInLaunchIdKHR = 5319, BuiltInLaunchIdNV = 5319, BuiltInLaunchSizeKHR = 5320, @@ -983,7 +994,8 @@ enum Capability { CapabilityFragmentFullyCoveredEXT = 5265, CapabilityMeshShadingNV = 5266, CapabilityImageFootprintNV = 5282, - CapabilityFragmentBarycentricKHR = 5284, + CapabilityMeshShadingEXT = 5283, + CapabilityFragmentBarycentricKHR = 5284, CapabilityFragmentBarycentricNV = 5284, CapabilityComputeDerivativeGroupQuadsNV = 5288, CapabilityFragmentDensityEXT = 5291, @@ -1577,6 +1589,8 @@ enum Op { OpFragmentFetchAMD = 5012, OpReadClockKHR = 5056, OpImageSampleFootprintNV = 5283, + OpEmitMeshTasksEXT = 5294, + OpSetMeshOutputsEXT = 5295, OpGroupNonUniformPartitionNV = 5296, OpWritePackedPrimitiveIndices4x8NV = 5299, OpReportIntersectionKHR = 5334, @@ -2234,6 +2248,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; + case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break; + case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break; case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; @@ -2515,4 +2531,3 @@ inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShad } // end namespace spv #endif // #ifndef spirv_HPP - diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp index 7c7f4c4e4..1a76bf62d 100644 --- a/StandAlone/ResourceLimits.cpp +++ b/StandAlone/ResourceLimits.cpp @@ -134,6 +134,15 @@ const TBuiltInResource DefaultTBuiltInResource = { /* .maxTaskWorkGroupSizeY_NV = */ 1, /* .maxTaskWorkGroupSizeZ_NV = */ 1, /* .maxMeshViewCountNV = */ 4, + /* .maxMeshOutputVerticesEXT = */ 256, + /* .maxMeshOutputPrimitivesEXT = */ 256, + /* .maxMeshWorkGroupSizeX_EXT = */ 128, + /* .maxMeshWorkGroupSizeY_EXT = */ 128, + /* .maxMeshWorkGroupSizeZ_EXT = */ 128, + /* .maxTaskWorkGroupSizeX_EXT = */ 128, + /* .maxTaskWorkGroupSizeY_EXT = */ 128, + /* .maxTaskWorkGroupSizeZ_EXT = */ 128, + /* .maxMeshViewCountEXT = */ 4, /* .maxDualSourceDrawBuffersEXT = */ 1, /* .limits = */ { @@ -244,6 +253,15 @@ std::string GetDefaultTBuiltInResourceString() << "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n" << "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n" << "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n" + << "MaxMeshOutputVerticesEXT " << DefaultTBuiltInResource.maxMeshOutputVerticesEXT << "\n" + << "MaxMeshOutputPrimitivesEXT " << DefaultTBuiltInResource.maxMeshOutputPrimitivesEXT << "\n" + << "MaxMeshWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_EXT << "\n" + << "MaxMeshWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_EXT << "\n" + << "MaxMeshWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_EXT << "\n" + << "MaxTaskWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_EXT << "\n" + << "MaxTaskWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_EXT << "\n" + << "MaxTaskWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_EXT << "\n" + << "MaxMeshViewCountEXT " << DefaultTBuiltInResource.maxMeshViewCountEXT << "\n" << "MaxDualSourceDrawBuffersEXT " << DefaultTBuiltInResource.maxDualSourceDrawBuffersEXT << "\n" << "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n" << "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n" @@ -469,6 +487,24 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) resources->maxTaskWorkGroupSizeZ_NV = value; else if (tokenStr == "MaxMeshViewCountNV") resources->maxMeshViewCountNV = value; + else if (tokenStr == "MaxMeshOutputVerticesEXT") + resources->maxMeshOutputVerticesEXT = value; + else if (tokenStr == "MaxMeshOutputPrimitivesEXT") + resources->maxMeshOutputPrimitivesEXT = value; + else if (tokenStr == "MaxMeshWorkGroupSizeX_EXT") + resources->maxMeshWorkGroupSizeX_EXT = value; + else if (tokenStr == "MaxMeshWorkGroupSizeY_EXT") + resources->maxMeshWorkGroupSizeY_EXT = value; + else if (tokenStr == "MaxMeshWorkGroupSizeZ_EXT") + resources->maxMeshWorkGroupSizeZ_EXT = value; + else if (tokenStr == "MaxTaskWorkGroupSizeX_EXT") + resources->maxTaskWorkGroupSizeX_EXT = value; + else if (tokenStr == "MaxTaskWorkGroupSizeY_EXT") + resources->maxTaskWorkGroupSizeY_EXT = value; + else if (tokenStr == "MaxTaskWorkGroupSizeZ_EXT") + resources->maxTaskWorkGroupSizeZ_EXT = value; + else if (tokenStr == "MaxMeshViewCountEXT") + resources->maxMeshViewCountEXT = value; else if (tokenStr == "nonInductiveForLoops") resources->limits.nonInductiveForLoops = (value != 0); else if (tokenStr == "whileLoops") diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 37282f2d0..38127704a 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -293,8 +293,8 @@ const char* GetBinaryName(EShLanguage stage) case EShLangClosestHit: name = "rchit.spv"; break; case EShLangMiss: name = "rmiss.spv"; break; case EShLangCallable: name = "rcall.spv"; break; - case EShLangMeshNV: name = "mesh.spv"; break; - case EShLangTaskNV: name = "task.spv"; break; + case EShLangMesh : name = "mesh.spv"; break; + case EShLangTask : name = "task.spv"; break; default: name = "unknown"; break; } } else @@ -1780,9 +1780,9 @@ EShLanguage FindLanguage(const std::string& name, bool parseStageName) else if (stageName == "rcall") return EShLangCallable; else if (stageName == "mesh") - return EShLangMeshNV; + return EShLangMesh; else if (stageName == "task") - return EShLangTaskNV; + return EShLangTask; usage(); return EShLangVertex; diff --git a/Test/baseResults/glsl.460.subgroupEXT.mesh.out b/Test/baseResults/glsl.460.subgroupEXT.mesh.out new file mode 100644 index 000000000..8d45106c8 --- /dev/null +++ b/Test/baseResults/glsl.460.subgroupEXT.mesh.out @@ -0,0 +1,1039 @@ +glsl.460.subgroupEXT.mesh +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 64 compilation errors. No code generated. + + +Shader version: 460 +Requested GL_EXT_mesh_shader +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +max_vertices = 81 +max_primitives = 32 +output primitive = triangles +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint SubgroupSize) +0:7 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( in uint NumSubgroups) +0:14 'gl_SubgroupID' ( in uint SubgroupID) +0:15 subgroupMemoryBarrierShared ( global void) +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Branch: Return with expression +0:77 'result' ( temp 4-component vector of float) +0:97 Function Definition: main( ( global void) +0:97 Function Parameters: +0:99 Sequence +0:99 Sequence +0:99 move second child to first child ( temp uint) +0:99 'iid' ( temp uint) +0:99 direct index ( temp uint) +0:99 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:99 Constant: +0:99 0 (const int) +0:100 Sequence +0:100 move second child to first child ( temp uint) +0:100 'gid' ( temp uint) +0:100 direct index ( temp uint) +0:100 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:100 Constant: +0:100 0 (const int) +0:101 Sequence +0:101 move second child to first child ( temp uint) +0:101 'vertexCount' ( temp uint) +0:101 Constant: +0:101 81 (const uint) +0:102 Sequence +0:102 move second child to first child ( temp uint) +0:102 'primitiveCount' ( temp uint) +0:102 Constant: +0:102 32 (const uint) +0:103 SetMeshOutputsEXT ( global void) +0:103 'vertexCount' ( temp uint) +0:103 'primitiveCount' ( temp uint) +0:105 move second child to first child ( temp 4-component vector of float) +0:105 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:105 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:105 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:105 'iid' ( temp uint) +0:105 Constant: +0:105 0 (const int) +0:105 Constant: +0:105 1.000000 +0:105 1.000000 +0:105 1.000000 +0:105 1.000000 +0:106 move second child to first child ( temp float) +0:106 gl_PointSize: direct index for structure ( out float PointSize) +0:106 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:106 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:106 'iid' ( temp uint) +0:106 Constant: +0:106 1 (const int) +0:106 Constant: +0:106 2.000000 +0:107 move second child to first child ( temp float) +0:107 direct index ( temp float ClipDistance) +0:107 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:107 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:107 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:107 'iid' ( temp uint) +0:107 Constant: +0:107 2 (const int) +0:107 Constant: +0:107 3 (const int) +0:107 Constant: +0:107 3.000000 +0:108 move second child to first child ( temp float) +0:108 direct index ( temp float CullDistance) +0:108 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:108 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:108 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:108 'iid' ( temp uint) +0:108 Constant: +0:108 3 (const int) +0:108 Constant: +0:108 2 (const int) +0:108 Constant: +0:108 4.000000 +0:110 MemoryBarrierShared ( global void) +0:110 Barrier ( global void) +0:112 move second child to first child ( temp 4-component vector of float) +0:112 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:112 add ( temp uint) +0:112 'iid' ( temp uint) +0:112 Constant: +0:112 1 (const uint) +0:112 Constant: +0:112 0 (const int) +0:112 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:112 'iid' ( temp uint) +0:112 Constant: +0:112 0 (const int) +0:113 move second child to first child ( temp float) +0:113 gl_PointSize: direct index for structure ( out float PointSize) +0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:113 add ( temp uint) +0:113 'iid' ( temp uint) +0:113 Constant: +0:113 1 (const uint) +0:113 Constant: +0:113 1 (const int) +0:113 gl_PointSize: direct index for structure ( out float PointSize) +0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:113 'iid' ( temp uint) +0:113 Constant: +0:113 1 (const int) +0:114 move second child to first child ( temp float) +0:114 direct index ( temp float ClipDistance) +0:114 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:114 add ( temp uint) +0:114 'iid' ( temp uint) +0:114 Constant: +0:114 1 (const uint) +0:114 Constant: +0:114 2 (const int) +0:114 Constant: +0:114 3 (const int) +0:114 direct index ( temp float ClipDistance) +0:114 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:114 'iid' ( temp uint) +0:114 Constant: +0:114 2 (const int) +0:114 Constant: +0:114 3 (const int) +0:115 move second child to first child ( temp float) +0:115 direct index ( temp float CullDistance) +0:115 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:115 add ( temp uint) +0:115 'iid' ( temp uint) +0:115 Constant: +0:115 1 (const uint) +0:115 Constant: +0:115 3 (const int) +0:115 Constant: +0:115 2 (const int) +0:115 direct index ( temp float CullDistance) +0:115 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:115 'iid' ( temp uint) +0:115 Constant: +0:115 3 (const int) +0:115 Constant: +0:115 2 (const int) +0:117 MemoryBarrierShared ( global void) +0:117 Barrier ( global void) +0:119 move second child to first child ( temp int) +0:119 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:119 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:119 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:119 'iid' ( temp uint) +0:119 Constant: +0:119 0 (const int) +0:119 Constant: +0:119 6 (const int) +0:120 move second child to first child ( temp int) +0:120 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:120 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:120 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:120 'iid' ( temp uint) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 7 (const int) +0:121 move second child to first child ( temp int) +0:121 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:121 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:121 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:121 'iid' ( temp uint) +0:121 Constant: +0:121 2 (const int) +0:121 Constant: +0:121 8 (const int) +0:122 move second child to first child ( temp bool) +0:122 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT) +0:122 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:122 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:122 'iid' ( temp uint) +0:122 Constant: +0:122 3 (const int) +0:122 Constant: +0:122 false (const bool) +0:124 MemoryBarrierShared ( global void) +0:124 Barrier ( global void) +0:126 move second child to first child ( temp int) +0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 add ( temp uint) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 1 (const uint) +0:126 Constant: +0:126 0 (const int) +0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 0 (const int) +0:127 move second child to first child ( temp int) +0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 add ( temp uint) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 1 (const uint) +0:127 Constant: +0:127 1 (const int) +0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 1 (const int) +0:128 move second child to first child ( temp int) +0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 add ( temp uint) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 1 (const uint) +0:128 Constant: +0:128 2 (const int) +0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 2 (const int) +0:129 move second child to first child ( temp bool) +0:129 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT) +0:129 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:129 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:129 add ( temp uint) +0:129 'iid' ( temp uint) +0:129 Constant: +0:129 1 (const uint) +0:129 Constant: +0:129 3 (const int) +0:129 Constant: +0:129 false (const bool) +0:131 MemoryBarrierShared ( global void) +0:131 Barrier ( global void) +0:134 move second child to first child ( temp 3-component vector of uint) +0:134 direct index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:134 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:134 Constant: +0:134 0 (const int) +0:134 Constant: +0:134 1 (const uint) +0:134 1 (const uint) +0:134 1 (const uint) +0:135 move second child to first child ( temp 3-component vector of uint) +0:135 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:135 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:135 subtract ( temp uint) +0:135 'primitiveCount' ( temp uint) +0:135 Constant: +0:135 1 (const uint) +0:135 Constant: +0:135 2 (const uint) +0:135 2 (const uint) +0:135 2 (const uint) +0:136 move second child to first child ( temp 3-component vector of uint) +0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gid' ( temp uint) +0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 subtract ( temp uint) +0:136 'gid' ( temp uint) +0:136 Constant: +0:136 1 (const uint) +0:139 MemoryBarrierShared ( global void) +0:139 Barrier ( global void) +0:143 Function Definition: basic_works( ( global void) +0:143 Function Parameters: +0:145 Sequence +0:145 'gl_SubgroupSize' ( in uint SubgroupSize) +0:146 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:147 subgroupBarrier ( global void) +0:148 subgroupMemoryBarrier ( global void) +0:149 subgroupMemoryBarrierBuffer ( global void) +0:150 subgroupMemoryBarrierImage ( global void) +0:151 subgroupElect ( global bool) +0:152 'gl_NumSubgroups' ( in uint NumSubgroups) +0:153 'gl_SubgroupID' ( in uint SubgroupID) +0:154 subgroupMemoryBarrierShared ( global void) +0:158 Function Definition: ballot_works(vf4; ( global void) +0:158 Function Parameters: +0:158 'f4' ( in 4-component vector of float) +0:159 Sequence +0:159 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) +0:160 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) +0:161 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) +0:162 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) +0:163 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:164 subgroupBroadcast ( global 4-component vector of float) +0:164 'f4' ( in 4-component vector of float) +0:164 Constant: +0:164 0 (const uint) +0:165 subgroupBroadcastFirst ( global 4-component vector of float) +0:165 'f4' ( in 4-component vector of float) +0:166 Sequence +0:166 move second child to first child ( temp 4-component vector of uint) +0:166 'ballot' ( temp 4-component vector of uint) +0:166 subgroupBallot ( global 4-component vector of uint) +0:166 Constant: +0:166 false (const bool) +0:167 subgroupInverseBallot ( global bool) +0:167 Constant: +0:167 1 (const uint) +0:167 1 (const uint) +0:167 1 (const uint) +0:167 1 (const uint) +0:168 subgroupBallotBitExtract ( global bool) +0:168 'ballot' ( temp 4-component vector of uint) +0:168 Constant: +0:168 0 (const uint) +0:169 subgroupBallotBitCount ( global uint) +0:169 'ballot' ( temp 4-component vector of uint) +0:170 subgroupBallotInclusiveBitCount ( global uint) +0:170 'ballot' ( temp 4-component vector of uint) +0:171 subgroupBallotExclusiveBitCount ( global uint) +0:171 'ballot' ( temp 4-component vector of uint) +0:172 subgroupBallotFindLSB ( global uint) +0:172 'ballot' ( temp 4-component vector of uint) +0:173 subgroupBallotFindMSB ( global uint) +0:173 'ballot' ( temp 4-component vector of uint) +0:177 Function Definition: vote_works(vf4; ( global void) +0:177 Function Parameters: +0:177 'f4' ( in 4-component vector of float) +0:179 Sequence +0:179 subgroupAll ( global bool) +0:179 Constant: +0:179 true (const bool) +0:180 subgroupAny ( global bool) +0:180 Constant: +0:180 false (const bool) +0:181 subgroupAllEqual ( global bool) +0:181 'f4' ( in 4-component vector of float) +0:186 Function Definition: shuffle_works(vf4; ( global void) +0:186 Function Parameters: +0:186 'f4' ( in 4-component vector of float) +0:188 Sequence +0:188 subgroupShuffle ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:188 Constant: +0:188 0 (const uint) +0:189 subgroupShuffleXor ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:189 Constant: +0:189 1 (const uint) +0:190 subgroupShuffleUp ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:190 Constant: +0:190 1 (const uint) +0:191 subgroupShuffleDown ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:191 Constant: +0:191 1 (const uint) +0:195 Function Definition: arith_works(vf4; ( global void) +0:195 Function Parameters: +0:195 'f4' ( in 4-component vector of float) +0:? Sequence +0:198 subgroupAdd ( global 4-component vector of float) +0:198 'f4' ( in 4-component vector of float) +0:199 subgroupMul ( global 4-component vector of float) +0:199 'f4' ( in 4-component vector of float) +0:200 subgroupMin ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:201 subgroupMax ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:202 subgroupAnd ( global 4-component vector of uint) +0:202 'ballot' ( temp 4-component vector of uint) +0:203 subgroupOr ( global 4-component vector of uint) +0:203 'ballot' ( temp 4-component vector of uint) +0:204 subgroupXor ( global 4-component vector of uint) +0:204 'ballot' ( temp 4-component vector of uint) +0:205 subgroupInclusiveAdd ( global 4-component vector of float) +0:205 'f4' ( in 4-component vector of float) +0:206 subgroupInclusiveMul ( global 4-component vector of float) +0:206 'f4' ( in 4-component vector of float) +0:207 subgroupInclusiveMin ( global 4-component vector of float) +0:207 'f4' ( in 4-component vector of float) +0:208 subgroupInclusiveMax ( global 4-component vector of float) +0:208 'f4' ( in 4-component vector of float) +0:209 subgroupInclusiveAnd ( global 4-component vector of uint) +0:209 'ballot' ( temp 4-component vector of uint) +0:210 subgroupInclusiveOr ( global 4-component vector of uint) +0:210 'ballot' ( temp 4-component vector of uint) +0:211 subgroupInclusiveXor ( global 4-component vector of uint) +0:211 'ballot' ( temp 4-component vector of uint) +0:212 subgroupExclusiveAdd ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:213 subgroupExclusiveMul ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:214 subgroupExclusiveMin ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:215 subgroupExclusiveMax ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:216 subgroupExclusiveAnd ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:217 subgroupExclusiveOr ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:218 subgroupExclusiveXor ( global 4-component vector of uint) +0:218 'ballot' ( temp 4-component vector of uint) +0:222 Function Definition: clustered_works(vf4; ( global void) +0:222 Function Parameters: +0:222 'f4' ( in 4-component vector of float) +0:224 Sequence +0:224 Sequence +0:224 move second child to first child ( temp 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:224 Constant: +0:224 85 (const uint) +0:224 0 (const uint) +0:224 0 (const uint) +0:224 0 (const uint) +0:225 subgroupClusteredAdd ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:225 Constant: +0:225 2 (const uint) +0:226 subgroupClusteredMul ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:226 Constant: +0:226 2 (const uint) +0:227 subgroupClusteredMin ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:227 Constant: +0:227 2 (const uint) +0:228 subgroupClusteredMax ( global 4-component vector of float) +0:228 'f4' ( in 4-component vector of float) +0:228 Constant: +0:228 2 (const uint) +0:229 subgroupClusteredAnd ( global 4-component vector of uint) +0:229 'ballot' ( temp 4-component vector of uint) +0:229 Constant: +0:229 2 (const uint) +0:230 subgroupClusteredOr ( global 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 Constant: +0:230 2 (const uint) +0:231 subgroupClusteredXor ( global 4-component vector of uint) +0:231 'ballot' ( temp 4-component vector of uint) +0:231 Constant: +0:231 2 (const uint) +0:235 Function Definition: quad_works(vf4; ( global void) +0:235 Function Parameters: +0:235 'f4' ( in 4-component vector of float) +0:237 Sequence +0:237 subgroupQuadBroadcast ( global 4-component vector of float) +0:237 'f4' ( in 4-component vector of float) +0:237 Constant: +0:237 0 (const uint) +0:238 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:238 'f4' ( in 4-component vector of float) +0:239 subgroupQuadSwapVertical ( global 4-component vector of float) +0:239 'f4' ( in 4-component vector of float) +0:240 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:240 'f4' ( in 4-component vector of float) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:? 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:? 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) + + +Linked mesh stage: + + +Shader version: 460 +Requested GL_EXT_mesh_shader +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +max_vertices = 81 +max_primitives = 32 +output primitive = triangles +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:97 Function Definition: main( ( global void) +0:97 Function Parameters: +0:99 Sequence +0:99 Sequence +0:99 move second child to first child ( temp uint) +0:99 'iid' ( temp uint) +0:99 direct index ( temp uint) +0:99 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:99 Constant: +0:99 0 (const int) +0:100 Sequence +0:100 move second child to first child ( temp uint) +0:100 'gid' ( temp uint) +0:100 direct index ( temp uint) +0:100 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:100 Constant: +0:100 0 (const int) +0:101 Sequence +0:101 move second child to first child ( temp uint) +0:101 'vertexCount' ( temp uint) +0:101 Constant: +0:101 81 (const uint) +0:102 Sequence +0:102 move second child to first child ( temp uint) +0:102 'primitiveCount' ( temp uint) +0:102 Constant: +0:102 32 (const uint) +0:103 SetMeshOutputsEXT ( global void) +0:103 'vertexCount' ( temp uint) +0:103 'primitiveCount' ( temp uint) +0:105 move second child to first child ( temp 4-component vector of float) +0:105 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:105 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:105 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:105 'iid' ( temp uint) +0:105 Constant: +0:105 0 (const int) +0:105 Constant: +0:105 1.000000 +0:105 1.000000 +0:105 1.000000 +0:105 1.000000 +0:106 move second child to first child ( temp float) +0:106 gl_PointSize: direct index for structure ( out float PointSize) +0:106 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:106 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:106 'iid' ( temp uint) +0:106 Constant: +0:106 1 (const int) +0:106 Constant: +0:106 2.000000 +0:107 move second child to first child ( temp float) +0:107 direct index ( temp float ClipDistance) +0:107 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:107 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:107 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:107 'iid' ( temp uint) +0:107 Constant: +0:107 2 (const int) +0:107 Constant: +0:107 3 (const int) +0:107 Constant: +0:107 3.000000 +0:108 move second child to first child ( temp float) +0:108 direct index ( temp float CullDistance) +0:108 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:108 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:108 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:108 'iid' ( temp uint) +0:108 Constant: +0:108 3 (const int) +0:108 Constant: +0:108 2 (const int) +0:108 Constant: +0:108 4.000000 +0:110 MemoryBarrierShared ( global void) +0:110 Barrier ( global void) +0:112 move second child to first child ( temp 4-component vector of float) +0:112 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:112 add ( temp uint) +0:112 'iid' ( temp uint) +0:112 Constant: +0:112 1 (const uint) +0:112 Constant: +0:112 0 (const int) +0:112 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:112 'iid' ( temp uint) +0:112 Constant: +0:112 0 (const int) +0:113 move second child to first child ( temp float) +0:113 gl_PointSize: direct index for structure ( out float PointSize) +0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:113 add ( temp uint) +0:113 'iid' ( temp uint) +0:113 Constant: +0:113 1 (const uint) +0:113 Constant: +0:113 1 (const int) +0:113 gl_PointSize: direct index for structure ( out float PointSize) +0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:113 'iid' ( temp uint) +0:113 Constant: +0:113 1 (const int) +0:114 move second child to first child ( temp float) +0:114 direct index ( temp float ClipDistance) +0:114 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:114 add ( temp uint) +0:114 'iid' ( temp uint) +0:114 Constant: +0:114 1 (const uint) +0:114 Constant: +0:114 2 (const int) +0:114 Constant: +0:114 3 (const int) +0:114 direct index ( temp float ClipDistance) +0:114 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:114 'iid' ( temp uint) +0:114 Constant: +0:114 2 (const int) +0:114 Constant: +0:114 3 (const int) +0:115 move second child to first child ( temp float) +0:115 direct index ( temp float CullDistance) +0:115 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:115 add ( temp uint) +0:115 'iid' ( temp uint) +0:115 Constant: +0:115 1 (const uint) +0:115 Constant: +0:115 3 (const int) +0:115 Constant: +0:115 2 (const int) +0:115 direct index ( temp float CullDistance) +0:115 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:115 'iid' ( temp uint) +0:115 Constant: +0:115 3 (const int) +0:115 Constant: +0:115 2 (const int) +0:117 MemoryBarrierShared ( global void) +0:117 Barrier ( global void) +0:119 move second child to first child ( temp int) +0:119 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:119 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:119 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:119 'iid' ( temp uint) +0:119 Constant: +0:119 0 (const int) +0:119 Constant: +0:119 6 (const int) +0:120 move second child to first child ( temp int) +0:120 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:120 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:120 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:120 'iid' ( temp uint) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 7 (const int) +0:121 move second child to first child ( temp int) +0:121 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:121 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:121 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:121 'iid' ( temp uint) +0:121 Constant: +0:121 2 (const int) +0:121 Constant: +0:121 8 (const int) +0:122 move second child to first child ( temp bool) +0:122 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT) +0:122 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:122 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:122 'iid' ( temp uint) +0:122 Constant: +0:122 3 (const int) +0:122 Constant: +0:122 false (const bool) +0:124 MemoryBarrierShared ( global void) +0:124 Barrier ( global void) +0:126 move second child to first child ( temp int) +0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 add ( temp uint) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 1 (const uint) +0:126 Constant: +0:126 0 (const int) +0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 0 (const int) +0:127 move second child to first child ( temp int) +0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 add ( temp uint) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 1 (const uint) +0:127 Constant: +0:127 1 (const int) +0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 1 (const int) +0:128 move second child to first child ( temp int) +0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 add ( temp uint) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 1 (const uint) +0:128 Constant: +0:128 2 (const int) +0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 2 (const int) +0:129 move second child to first child ( temp bool) +0:129 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT) +0:129 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:129 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:129 add ( temp uint) +0:129 'iid' ( temp uint) +0:129 Constant: +0:129 1 (const uint) +0:129 Constant: +0:129 3 (const int) +0:129 Constant: +0:129 false (const bool) +0:131 MemoryBarrierShared ( global void) +0:131 Barrier ( global void) +0:134 move second child to first child ( temp 3-component vector of uint) +0:134 direct index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:134 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:134 Constant: +0:134 0 (const int) +0:134 Constant: +0:134 1 (const uint) +0:134 1 (const uint) +0:134 1 (const uint) +0:135 move second child to first child ( temp 3-component vector of uint) +0:135 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:135 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:135 subtract ( temp uint) +0:135 'primitiveCount' ( temp uint) +0:135 Constant: +0:135 1 (const uint) +0:135 Constant: +0:135 2 (const uint) +0:135 2 (const uint) +0:135 2 (const uint) +0:136 move second child to first child ( temp 3-component vector of uint) +0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gid' ( temp uint) +0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 subtract ( temp uint) +0:136 'gid' ( temp uint) +0:136 Constant: +0:136 1 (const uint) +0:139 MemoryBarrierShared ( global void) +0:139 Barrier ( global void) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:? 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:? 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) + diff --git a/Test/baseResults/glsl.460.subgroupEXT.task.out b/Test/baseResults/glsl.460.subgroupEXT.task.out new file mode 100644 index 000000000..c756f38ad --- /dev/null +++ b/Test/baseResults/glsl.460.subgroupEXT.task.out @@ -0,0 +1,707 @@ +glsl.460.subgroupEXT.task +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 64 compilation errors. No code generated. + + +Shader version: 460 +Requested GL_EXT_mesh_shader +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint SubgroupSize) +0:7 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( in uint NumSubgroups) +0:14 'gl_SubgroupID' ( in uint SubgroupID) +0:15 subgroupMemoryBarrierShared ( global void) +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Branch: Return with expression +0:77 'result' ( temp 4-component vector of float) +0:102 Function Definition: main( ( global void) +0:102 Function Parameters: +0:104 Sequence +0:104 Sequence +0:104 move second child to first child ( temp uint) +0:104 'iid' ( temp uint) +0:104 direct index ( temp uint) +0:104 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:104 Constant: +0:104 0 (const int) +0:105 Sequence +0:105 move second child to first child ( temp uint) +0:105 'gid' ( temp uint) +0:105 direct index ( temp uint) +0:105 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:105 Constant: +0:105 0 (const int) +0:108 Sequence +0:108 Sequence +0:108 move second child to first child ( temp uint) +0:108 'i' ( temp uint) +0:108 Constant: +0:108 0 (const uint) +0:108 Loop with condition tested first +0:108 Loop Condition +0:108 Compare Less Than ( temp bool) +0:108 'i' ( temp uint) +0:108 Constant: +0:108 10 (const uint) +0:108 Loop Body +0:109 Sequence +0:109 move second child to first child ( temp 4-component vector of float) +0:109 indirect index ( temp 4-component vector of float) +0:109 'mem' ( shared 10-element array of 4-component vector of float) +0:109 'i' ( temp uint) +0:109 Construct vec4 ( temp 4-component vector of float) +0:109 Convert uint to float ( temp float) +0:109 add ( temp uint) +0:109 'i' ( temp uint) +0:109 uni_value: direct index for structure (layout( column_major shared) uniform uint) +0:109 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:109 Constant: +0:109 0 (const uint) +0:108 Loop Terminal Expression +0:108 Pre-Increment ( temp uint) +0:108 'i' ( temp uint) +0:111 imageStore ( global void) +0:111 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:111 Construct ivec2 ( temp 2-component vector of int) +0:111 Convert uint to int ( temp int) +0:111 'iid' ( temp uint) +0:111 indirect index ( temp 4-component vector of float) +0:111 'mem' ( shared 10-element array of 4-component vector of float) +0:111 'gid' ( temp uint) +0:112 imageStore ( global void) +0:112 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:112 Construct ivec2 ( temp 2-component vector of int) +0:112 Convert uint to int ( temp int) +0:112 'iid' ( temp uint) +0:112 indirect index ( temp 4-component vector of float) +0:112 'mem' ( shared 10-element array of 4-component vector of float) +0:112 add ( temp uint) +0:112 'gid' ( temp uint) +0:112 Constant: +0:112 1 (const uint) +0:114 MemoryBarrierShared ( global void) +0:114 Barrier ( global void) +0:118 move second child to first child ( temp 2-component vector of float) +0:118 dummy: direct index for structure ( global 2-component vector of float) +0:118 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:118 Constant: +0:118 0 (const int) +0:118 Constant: +0:118 30.000000 +0:118 31.000000 +0:119 move second child to first child ( temp 2-component vector of float) +0:119 direct index ( temp 2-component vector of float) +0:119 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:119 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:119 Constant: +0:119 1 (const int) +0:119 Constant: +0:119 0 (const int) +0:119 Constant: +0:119 32.000000 +0:119 33.000000 +0:120 move second child to first child ( temp 2-component vector of float) +0:120 direct index ( temp 2-component vector of float) +0:120 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:120 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 34.000000 +0:120 35.000000 +0:121 move second child to first child ( temp 2-component vector of float) +0:121 direct index ( temp 2-component vector of float) +0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:121 indirect index ( temp 2-component vector of float) +0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:121 Constant: +0:121 1 (const int) +0:121 mod ( temp uint) +0:121 'gid' ( temp uint) +0:121 Constant: +0:121 2 (const uint) +0:123 MemoryBarrierShared ( global void) +0:123 Barrier ( global void) +0:126 EmitMeshTasksEXT ( global void) +0:126 Constant: +0:126 3 (const uint) +0:126 Constant: +0:126 1 (const uint) +0:126 Constant: +0:126 1 (const uint) +0:130 Function Definition: basic_works( ( global void) +0:130 Function Parameters: +0:132 Sequence +0:132 'gl_SubgroupSize' ( in uint SubgroupSize) +0:133 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:134 subgroupBarrier ( global void) +0:135 subgroupMemoryBarrier ( global void) +0:136 subgroupMemoryBarrierBuffer ( global void) +0:137 subgroupMemoryBarrierImage ( global void) +0:138 subgroupElect ( global bool) +0:139 'gl_NumSubgroups' ( in uint NumSubgroups) +0:140 'gl_SubgroupID' ( in uint SubgroupID) +0:141 subgroupMemoryBarrierShared ( global void) +0:145 Function Definition: ballot_works(vf4; ( global void) +0:145 Function Parameters: +0:145 'f4' ( in 4-component vector of float) +0:146 Sequence +0:146 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) +0:147 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) +0:148 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) +0:149 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) +0:150 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:151 subgroupBroadcast ( global 4-component vector of float) +0:151 'f4' ( in 4-component vector of float) +0:151 Constant: +0:151 0 (const uint) +0:152 subgroupBroadcastFirst ( global 4-component vector of float) +0:152 'f4' ( in 4-component vector of float) +0:153 Sequence +0:153 move second child to first child ( temp 4-component vector of uint) +0:153 'ballot' ( temp 4-component vector of uint) +0:153 subgroupBallot ( global 4-component vector of uint) +0:153 Constant: +0:153 false (const bool) +0:154 subgroupInverseBallot ( global bool) +0:154 Constant: +0:154 1 (const uint) +0:154 1 (const uint) +0:154 1 (const uint) +0:154 1 (const uint) +0:155 subgroupBallotBitExtract ( global bool) +0:155 'ballot' ( temp 4-component vector of uint) +0:155 Constant: +0:155 0 (const uint) +0:156 subgroupBallotBitCount ( global uint) +0:156 'ballot' ( temp 4-component vector of uint) +0:157 subgroupBallotInclusiveBitCount ( global uint) +0:157 'ballot' ( temp 4-component vector of uint) +0:158 subgroupBallotExclusiveBitCount ( global uint) +0:158 'ballot' ( temp 4-component vector of uint) +0:159 subgroupBallotFindLSB ( global uint) +0:159 'ballot' ( temp 4-component vector of uint) +0:160 subgroupBallotFindMSB ( global uint) +0:160 'ballot' ( temp 4-component vector of uint) +0:164 Function Definition: vote_works(vf4; ( global void) +0:164 Function Parameters: +0:164 'f4' ( in 4-component vector of float) +0:166 Sequence +0:166 subgroupAll ( global bool) +0:166 Constant: +0:166 true (const bool) +0:167 subgroupAny ( global bool) +0:167 Constant: +0:167 false (const bool) +0:168 subgroupAllEqual ( global bool) +0:168 'f4' ( in 4-component vector of float) +0:173 Function Definition: shuffle_works(vf4; ( global void) +0:173 Function Parameters: +0:173 'f4' ( in 4-component vector of float) +0:175 Sequence +0:175 subgroupShuffle ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:175 Constant: +0:175 0 (const uint) +0:176 subgroupShuffleXor ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:176 Constant: +0:176 1 (const uint) +0:177 subgroupShuffleUp ( global 4-component vector of float) +0:177 'f4' ( in 4-component vector of float) +0:177 Constant: +0:177 1 (const uint) +0:178 subgroupShuffleDown ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:178 Constant: +0:178 1 (const uint) +0:182 Function Definition: arith_works(vf4; ( global void) +0:182 Function Parameters: +0:182 'f4' ( in 4-component vector of float) +0:? Sequence +0:185 subgroupAdd ( global 4-component vector of float) +0:185 'f4' ( in 4-component vector of float) +0:186 subgroupMul ( global 4-component vector of float) +0:186 'f4' ( in 4-component vector of float) +0:187 subgroupMin ( global 4-component vector of float) +0:187 'f4' ( in 4-component vector of float) +0:188 subgroupMax ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:189 subgroupAnd ( global 4-component vector of uint) +0:189 'ballot' ( temp 4-component vector of uint) +0:190 subgroupOr ( global 4-component vector of uint) +0:190 'ballot' ( temp 4-component vector of uint) +0:191 subgroupXor ( global 4-component vector of uint) +0:191 'ballot' ( temp 4-component vector of uint) +0:192 subgroupInclusiveAdd ( global 4-component vector of float) +0:192 'f4' ( in 4-component vector of float) +0:193 subgroupInclusiveMul ( global 4-component vector of float) +0:193 'f4' ( in 4-component vector of float) +0:194 subgroupInclusiveMin ( global 4-component vector of float) +0:194 'f4' ( in 4-component vector of float) +0:195 subgroupInclusiveMax ( global 4-component vector of float) +0:195 'f4' ( in 4-component vector of float) +0:196 subgroupInclusiveAnd ( global 4-component vector of uint) +0:196 'ballot' ( temp 4-component vector of uint) +0:197 subgroupInclusiveOr ( global 4-component vector of uint) +0:197 'ballot' ( temp 4-component vector of uint) +0:198 subgroupInclusiveXor ( global 4-component vector of uint) +0:198 'ballot' ( temp 4-component vector of uint) +0:199 subgroupExclusiveAdd ( global 4-component vector of float) +0:199 'f4' ( in 4-component vector of float) +0:200 subgroupExclusiveMul ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:201 subgroupExclusiveMin ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:202 subgroupExclusiveMax ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:203 subgroupExclusiveAnd ( global 4-component vector of uint) +0:203 'ballot' ( temp 4-component vector of uint) +0:204 subgroupExclusiveOr ( global 4-component vector of uint) +0:204 'ballot' ( temp 4-component vector of uint) +0:205 subgroupExclusiveXor ( global 4-component vector of uint) +0:205 'ballot' ( temp 4-component vector of uint) +0:209 Function Definition: clustered_works(vf4; ( global void) +0:209 Function Parameters: +0:209 'f4' ( in 4-component vector of float) +0:211 Sequence +0:211 Sequence +0:211 move second child to first child ( temp 4-component vector of uint) +0:211 'ballot' ( temp 4-component vector of uint) +0:211 Constant: +0:211 85 (const uint) +0:211 0 (const uint) +0:211 0 (const uint) +0:211 0 (const uint) +0:212 subgroupClusteredAdd ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:212 Constant: +0:212 2 (const uint) +0:213 subgroupClusteredMul ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 Constant: +0:213 2 (const uint) +0:214 subgroupClusteredMin ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 Constant: +0:214 2 (const uint) +0:215 subgroupClusteredMax ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:215 Constant: +0:215 2 (const uint) +0:216 subgroupClusteredAnd ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:216 Constant: +0:216 2 (const uint) +0:217 subgroupClusteredOr ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:217 Constant: +0:217 2 (const uint) +0:218 subgroupClusteredXor ( global 4-component vector of uint) +0:218 'ballot' ( temp 4-component vector of uint) +0:218 Constant: +0:218 2 (const uint) +0:222 Function Definition: quad_works(vf4; ( global void) +0:222 Function Parameters: +0:222 'f4' ( in 4-component vector of float) +0:224 Sequence +0:224 subgroupQuadBroadcast ( global 4-component vector of float) +0:224 'f4' ( in 4-component vector of float) +0:224 Constant: +0:224 0 (const uint) +0:225 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:226 subgroupQuadSwapVertical ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:227 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:? 'mem' ( shared 10-element array of 4-component vector of float) +0:? 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) + + +Linked task stage: + + +Shader version: 460 +Requested GL_EXT_mesh_shader +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:102 Function Definition: main( ( global void) +0:102 Function Parameters: +0:104 Sequence +0:104 Sequence +0:104 move second child to first child ( temp uint) +0:104 'iid' ( temp uint) +0:104 direct index ( temp uint) +0:104 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:104 Constant: +0:104 0 (const int) +0:105 Sequence +0:105 move second child to first child ( temp uint) +0:105 'gid' ( temp uint) +0:105 direct index ( temp uint) +0:105 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:105 Constant: +0:105 0 (const int) +0:108 Sequence +0:108 Sequence +0:108 move second child to first child ( temp uint) +0:108 'i' ( temp uint) +0:108 Constant: +0:108 0 (const uint) +0:108 Loop with condition tested first +0:108 Loop Condition +0:108 Compare Less Than ( temp bool) +0:108 'i' ( temp uint) +0:108 Constant: +0:108 10 (const uint) +0:108 Loop Body +0:109 Sequence +0:109 move second child to first child ( temp 4-component vector of float) +0:109 indirect index ( temp 4-component vector of float) +0:109 'mem' ( shared 10-element array of 4-component vector of float) +0:109 'i' ( temp uint) +0:109 Construct vec4 ( temp 4-component vector of float) +0:109 Convert uint to float ( temp float) +0:109 add ( temp uint) +0:109 'i' ( temp uint) +0:109 uni_value: direct index for structure (layout( column_major shared) uniform uint) +0:109 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:109 Constant: +0:109 0 (const uint) +0:108 Loop Terminal Expression +0:108 Pre-Increment ( temp uint) +0:108 'i' ( temp uint) +0:111 imageStore ( global void) +0:111 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:111 Construct ivec2 ( temp 2-component vector of int) +0:111 Convert uint to int ( temp int) +0:111 'iid' ( temp uint) +0:111 indirect index ( temp 4-component vector of float) +0:111 'mem' ( shared 10-element array of 4-component vector of float) +0:111 'gid' ( temp uint) +0:112 imageStore ( global void) +0:112 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:112 Construct ivec2 ( temp 2-component vector of int) +0:112 Convert uint to int ( temp int) +0:112 'iid' ( temp uint) +0:112 indirect index ( temp 4-component vector of float) +0:112 'mem' ( shared 10-element array of 4-component vector of float) +0:112 add ( temp uint) +0:112 'gid' ( temp uint) +0:112 Constant: +0:112 1 (const uint) +0:114 MemoryBarrierShared ( global void) +0:114 Barrier ( global void) +0:118 move second child to first child ( temp 2-component vector of float) +0:118 dummy: direct index for structure ( global 2-component vector of float) +0:118 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:118 Constant: +0:118 0 (const int) +0:118 Constant: +0:118 30.000000 +0:118 31.000000 +0:119 move second child to first child ( temp 2-component vector of float) +0:119 direct index ( temp 2-component vector of float) +0:119 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:119 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:119 Constant: +0:119 1 (const int) +0:119 Constant: +0:119 0 (const int) +0:119 Constant: +0:119 32.000000 +0:119 33.000000 +0:120 move second child to first child ( temp 2-component vector of float) +0:120 direct index ( temp 2-component vector of float) +0:120 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:120 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 34.000000 +0:120 35.000000 +0:121 move second child to first child ( temp 2-component vector of float) +0:121 direct index ( temp 2-component vector of float) +0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:121 indirect index ( temp 2-component vector of float) +0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:121 Constant: +0:121 1 (const int) +0:121 mod ( temp uint) +0:121 'gid' ( temp uint) +0:121 Constant: +0:121 2 (const uint) +0:123 MemoryBarrierShared ( global void) +0:123 Barrier ( global void) +0:126 EmitMeshTasksEXT ( global void) +0:126 Constant: +0:126 3 (const uint) +0:126 Constant: +0:126 1 (const uint) +0:126 Constant: +0:126 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:? 'mem' ( shared 10-element array of 4-component vector of float) +0:? 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) + diff --git a/Test/baseResults/spv.460.subgroupEXT.mesh.out b/Test/baseResults/spv.460.subgroupEXT.mesh.out new file mode 100644 index 000000000..350f8d8a9 --- /dev/null +++ b/Test/baseResults/spv.460.subgroupEXT.mesh.out @@ -0,0 +1,448 @@ +spv.460.subgroupEXT.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 280 + + Capability ClipDistance + Capability CullDistance + Capability GroupNonUniform + Capability GroupNonUniformVote + Capability GroupNonUniformArithmetic + Capability GroupNonUniformBallot + Capability GroupNonUniformShuffle + Capability GroupNonUniformShuffleRelative + Capability GroupNonUniformClustered + Capability GroupNonUniformQuad + Capability FragmentShadingRateKHR + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 35 41 57 109 148 162 163 168 169 172 173 174 175 176 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 460 + SourceExtension "GL_EXT_mesh_shader" + SourceExtension "GL_KHR_shader_subgroup_arithmetic" + SourceExtension "GL_KHR_shader_subgroup_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_clustered" + SourceExtension "GL_KHR_shader_subgroup_quad" + SourceExtension "GL_KHR_shader_subgroup_shuffle" + SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 6 "basic_works(" + Name 13 "ballot_works(vf4;" + Name 12 "f4" + Name 16 "vote_works(vf4;" + Name 15 "f4" + Name 19 "shuffle_works(vf4;" + Name 18 "f4" + Name 22 "arith_works(vf4;" + Name 21 "f4" + Name 25 "clustered_works(vf4;" + Name 24 "f4" + Name 28 "quad_works(vf4;" + Name 27 "f4" + Name 32 "iid" + Name 35 "gl_LocalInvocationID" + Name 40 "gid" + Name 41 "gl_WorkGroupID" + Name 44 "vertexCount" + Name 46 "primitiveCount" + Name 54 "gl_MeshPerVertexEXT" + MemberName 54(gl_MeshPerVertexEXT) 0 "gl_Position" + MemberName 54(gl_MeshPerVertexEXT) 1 "gl_PointSize" + MemberName 54(gl_MeshPerVertexEXT) 2 "gl_ClipDistance" + MemberName 54(gl_MeshPerVertexEXT) 3 "gl_CullDistance" + Name 57 "gl_MeshVerticesEXT" + Name 106 "gl_MeshPerPrimitiveEXT" + MemberName 106(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" + MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" + MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" + MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" + MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" + Name 109 "gl_MeshPrimitivesEXT" + Name 148 "gl_PrimitiveTriangleIndicesEXT" + Name 162 "gl_SubgroupSize" + Name 163 "gl_SubgroupInvocationID" + Name 168 "gl_NumSubgroups" + Name 169 "gl_SubgroupID" + Name 172 "gl_SubgroupEqMask" + Name 173 "gl_SubgroupGeMask" + Name 174 "gl_SubgroupGtMask" + Name 175 "gl_SubgroupLeMask" + Name 176 "gl_SubgroupLtMask" + Name 182 "ballot" + Name 219 "ballot" + Name 254 "ballot" + Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position + MemberDecorate 54(gl_MeshPerVertexEXT) 1 BuiltIn PointSize + MemberDecorate 54(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance + MemberDecorate 54(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance + Decorate 54(gl_MeshPerVertexEXT) Block + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR + Decorate 106(gl_MeshPerPrimitiveEXT) Block + Decorate 148(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT + Decorate 162(gl_SubgroupSize) RelaxedPrecision + Decorate 162(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 163(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 163(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 168(gl_NumSubgroups) BuiltIn NumSubgroups + Decorate 169(gl_SubgroupID) BuiltIn SubgroupId + Decorate 172(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR + Decorate 173(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR + Decorate 174(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR + Decorate 175(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR + Decorate 176(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR + Decorate 279 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10: TypePointer Function 9(fvec4) + 11: TypeFunction 2 10(ptr) + 30: TypeInt 32 0 + 31: TypePointer Function 30(int) + 33: TypeVector 30(int) 3 + 34: TypePointer Input 33(ivec3) +35(gl_LocalInvocationID): 34(ptr) Variable Input + 36: 30(int) Constant 0 + 37: TypePointer Input 30(int) +41(gl_WorkGroupID): 34(ptr) Variable Input + 45: 30(int) Constant 81 + 47: 30(int) Constant 32 + 50: 30(int) Constant 4 + 51: TypeArray 8(float) 50 + 52: 30(int) Constant 3 + 53: TypeArray 8(float) 52 +54(gl_MeshPerVertexEXT): TypeStruct 9(fvec4) 8(float) 51 53 + 55: TypeArray 54(gl_MeshPerVertexEXT) 45 + 56: TypePointer Output 55 +57(gl_MeshVerticesEXT): 56(ptr) Variable Output + 59: TypeInt 32 1 + 60: 59(int) Constant 0 + 61: 8(float) Constant 1065353216 + 62: 9(fvec4) ConstantComposite 61 61 61 61 + 63: TypePointer Output 9(fvec4) + 66: 59(int) Constant 1 + 67: 8(float) Constant 1073741824 + 68: TypePointer Output 8(float) + 71: 59(int) Constant 2 + 72: 59(int) Constant 3 + 73: 8(float) Constant 1077936128 + 76: 8(float) Constant 1082130432 + 78: 30(int) Constant 1 + 79: 30(int) Constant 264 + 80: 30(int) Constant 2 + 105: TypeBool +106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int) + 107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47 + 108: TypePointer Output 107 +109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output + 111: 59(int) Constant 6 + 112: TypePointer Output 59(int) + 115: 59(int) Constant 7 + 118: 59(int) Constant 8 + 121: 105(bool) ConstantFalse + 122: TypePointer Output 105(bool) + 145: 30(int) Constant 96 + 146: TypeArray 33(ivec3) 145 + 147: TypePointer Output 146 +148(gl_PrimitiveTriangleIndicesEXT): 147(ptr) Variable Output + 149: 33(ivec3) ConstantComposite 78 78 78 + 150: TypePointer Output 33(ivec3) + 154: 33(ivec3) ConstantComposite 80 80 80 +162(gl_SubgroupSize): 37(ptr) Variable Input +163(gl_SubgroupInvocationID): 37(ptr) Variable Input + 164: 30(int) Constant 3400 + 165: 30(int) Constant 72 + 166: 30(int) Constant 2056 +168(gl_NumSubgroups): 37(ptr) Variable Input +169(gl_SubgroupID): 37(ptr) Variable Input + 170: TypeVector 30(int) 4 + 171: TypePointer Input 170(ivec4) +172(gl_SubgroupEqMask): 171(ptr) Variable Input +173(gl_SubgroupGeMask): 171(ptr) Variable Input +174(gl_SubgroupGtMask): 171(ptr) Variable Input +175(gl_SubgroupLeMask): 171(ptr) Variable Input +176(gl_SubgroupLtMask): 171(ptr) Variable Input + 181: TypePointer Function 170(ivec4) + 184: 170(ivec4) ConstantComposite 78 78 78 78 + 198: 105(bool) ConstantTrue + 255: 30(int) Constant 85 + 256: 170(ivec4) ConstantComposite 255 36 36 36 + 279: 33(ivec3) ConstantComposite 47 78 78 + 4(main): 2 Function None 3 + 5: Label + 32(iid): 31(ptr) Variable Function + 40(gid): 31(ptr) Variable Function + 44(vertexCount): 31(ptr) Variable Function +46(primitiveCount): 31(ptr) Variable Function + 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36 + 39: 30(int) Load 38 + Store 32(iid) 39 + 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36 + 43: 30(int) Load 42 + Store 40(gid) 43 + Store 44(vertexCount) 45 + Store 46(primitiveCount) 47 + 48: 30(int) Load 44(vertexCount) + 49: 30(int) Load 46(primitiveCount) + SetMeshOutputsEXT 48 49 + 58: 30(int) Load 32(iid) + 64: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 58 60 + Store 64 62 + 65: 30(int) Load 32(iid) + 69: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 65 66 + Store 69 67 + 70: 30(int) Load 32(iid) + 74: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 70 71 72 + Store 74 73 + 75: 30(int) Load 32(iid) + 77: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 75 72 71 + Store 77 76 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + 81: 30(int) Load 32(iid) + 82: 30(int) IAdd 81 78 + 83: 30(int) Load 32(iid) + 84: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 83 60 + 85: 9(fvec4) Load 84 + 86: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 82 60 + Store 86 85 + 87: 30(int) Load 32(iid) + 88: 30(int) IAdd 87 78 + 89: 30(int) Load 32(iid) + 90: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 89 66 + 91: 8(float) Load 90 + 92: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 88 66 + Store 92 91 + 93: 30(int) Load 32(iid) + 94: 30(int) IAdd 93 78 + 95: 30(int) Load 32(iid) + 96: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 95 71 72 + 97: 8(float) Load 96 + 98: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 94 71 72 + Store 98 97 + 99: 30(int) Load 32(iid) + 100: 30(int) IAdd 99 78 + 101: 30(int) Load 32(iid) + 102: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 101 72 71 + 103: 8(float) Load 102 + 104: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 100 72 71 + Store 104 103 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + 110: 30(int) Load 32(iid) + 113: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 110 60 + Store 113 111 + 114: 30(int) Load 32(iid) + 116: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 114 66 + Store 116 115 + 117: 30(int) Load 32(iid) + 119: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 117 71 + Store 119 118 + 120: 30(int) Load 32(iid) + 123: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 120 72 + Store 123 121 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + 124: 30(int) Load 32(iid) + 125: 30(int) IAdd 124 78 + 126: 30(int) Load 32(iid) + 127: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 126 60 + 128: 59(int) Load 127 + 129: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 125 60 + Store 129 128 + 130: 30(int) Load 32(iid) + 131: 30(int) IAdd 130 78 + 132: 30(int) Load 32(iid) + 133: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 132 66 + 134: 59(int) Load 133 + 135: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 131 66 + Store 135 134 + 136: 30(int) Load 32(iid) + 137: 30(int) IAdd 136 78 + 138: 30(int) Load 32(iid) + 139: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 138 71 + 140: 59(int) Load 139 + 141: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 137 71 + Store 141 140 + 142: 30(int) Load 32(iid) + 143: 30(int) IAdd 142 78 + 144: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 143 72 + Store 144 121 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + 151: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 60 + Store 151 149 + 152: 30(int) Load 46(primitiveCount) + 153: 30(int) ISub 152 78 + 155: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 153 + Store 155 154 + 156: 30(int) Load 40(gid) + 157: 30(int) Load 40(gid) + 158: 30(int) ISub 157 78 + 159: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 158 + 160: 33(ivec3) Load 159 + 161: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 156 + Store 161 160 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + Return + FunctionEnd + 6(basic_works(): 2 Function None 3 + 7: Label + ControlBarrier 52 52 164 + MemoryBarrier 52 164 + MemoryBarrier 52 165 + MemoryBarrier 52 166 + 167: 105(bool) GroupNonUniformElect 52 + MemoryBarrier 52 79 + Return + FunctionEnd +13(ballot_works(vf4;): 2 Function None 11 + 12(f4): 10(ptr) FunctionParameter + 14: Label + 182(ballot): 181(ptr) Variable Function + 177: 9(fvec4) Load 12(f4) + 178: 9(fvec4) GroupNonUniformBroadcast 52 177 36 + 179: 9(fvec4) Load 12(f4) + 180: 9(fvec4) GroupNonUniformBroadcastFirst 52 179 + 183: 170(ivec4) GroupNonUniformBallot 52 121 + Store 182(ballot) 183 + 185: 105(bool) GroupNonUniformInverseBallot 52 184 + 186: 170(ivec4) Load 182(ballot) + 187: 105(bool) GroupNonUniformBallotBitExtract 52 186 36 + 188: 170(ivec4) Load 182(ballot) + 189: 30(int) GroupNonUniformBallotBitCount 52 Reduce 188 + 190: 170(ivec4) Load 182(ballot) + 191: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 190 + 192: 170(ivec4) Load 182(ballot) + 193: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 192 + 194: 170(ivec4) Load 182(ballot) + 195: 30(int) GroupNonUniformBallotFindLSB 52 194 + 196: 170(ivec4) Load 182(ballot) + 197: 30(int) GroupNonUniformBallotFindMSB 52 196 + Return + FunctionEnd +16(vote_works(vf4;): 2 Function None 11 + 15(f4): 10(ptr) FunctionParameter + 17: Label + 199: 105(bool) GroupNonUniformAll 52 198 + 200: 105(bool) GroupNonUniformAny 52 121 + 201: 9(fvec4) Load 15(f4) + 202: 105(bool) GroupNonUniformAllEqual 52 201 + Return + FunctionEnd +19(shuffle_works(vf4;): 2 Function None 11 + 18(f4): 10(ptr) FunctionParameter + 20: Label + 203: 9(fvec4) Load 18(f4) + 204: 9(fvec4) GroupNonUniformShuffle 52 203 36 + 205: 9(fvec4) Load 18(f4) + 206: 9(fvec4) GroupNonUniformShuffleXor 52 205 78 + 207: 9(fvec4) Load 18(f4) + 208: 9(fvec4) GroupNonUniformShuffleUp 52 207 78 + 209: 9(fvec4) Load 18(f4) + 210: 9(fvec4) GroupNonUniformShuffleDown 52 209 78 + Return + FunctionEnd +22(arith_works(vf4;): 2 Function None 11 + 21(f4): 10(ptr) FunctionParameter + 23: Label + 219(ballot): 181(ptr) Variable Function + 211: 9(fvec4) Load 21(f4) + 212: 9(fvec4) GroupNonUniformFAdd 52 Reduce 211 + 213: 9(fvec4) Load 21(f4) + 214: 9(fvec4) GroupNonUniformFMul 52 Reduce 213 + 215: 9(fvec4) Load 21(f4) + 216: 9(fvec4) GroupNonUniformFMin 52 Reduce 215 + 217: 9(fvec4) Load 21(f4) + 218: 9(fvec4) GroupNonUniformFMax 52 Reduce 217 + 220: 170(ivec4) Load 219(ballot) + 221: 170(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 220 + 222: 170(ivec4) Load 219(ballot) + 223: 170(ivec4) GroupNonUniformBitwiseOr 52 Reduce 222 + 224: 170(ivec4) Load 219(ballot) + 225: 170(ivec4) GroupNonUniformBitwiseXor 52 Reduce 224 + 226: 9(fvec4) Load 21(f4) + 227: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 226 + 228: 9(fvec4) Load 21(f4) + 229: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 228 + 230: 9(fvec4) Load 21(f4) + 231: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 230 + 232: 9(fvec4) Load 21(f4) + 233: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 232 + 234: 170(ivec4) Load 219(ballot) + 235: 170(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 234 + 236: 170(ivec4) Load 219(ballot) + 237: 170(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 236 + 238: 170(ivec4) Load 219(ballot) + 239: 170(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 238 + 240: 9(fvec4) Load 21(f4) + 241: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 240 + 242: 9(fvec4) Load 21(f4) + 243: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 242 + 244: 9(fvec4) Load 21(f4) + 245: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 244 + 246: 9(fvec4) Load 21(f4) + 247: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 246 + 248: 170(ivec4) Load 219(ballot) + 249: 170(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 248 + 250: 170(ivec4) Load 219(ballot) + 251: 170(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 250 + 252: 170(ivec4) Load 219(ballot) + 253: 170(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 252 + Return + FunctionEnd +25(clustered_works(vf4;): 2 Function None 11 + 24(f4): 10(ptr) FunctionParameter + 26: Label + 254(ballot): 181(ptr) Variable Function + Store 254(ballot) 256 + 257: 9(fvec4) Load 24(f4) + 258: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 257 80 + 259: 9(fvec4) Load 24(f4) + 260: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 259 80 + 261: 9(fvec4) Load 24(f4) + 262: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 261 80 + 263: 9(fvec4) Load 24(f4) + 264: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 263 80 + 265: 170(ivec4) Load 254(ballot) + 266: 170(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 265 80 + 267: 170(ivec4) Load 254(ballot) + 268: 170(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 267 80 + 269: 170(ivec4) Load 254(ballot) + 270: 170(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 269 80 + Return + FunctionEnd +28(quad_works(vf4;): 2 Function None 11 + 27(f4): 10(ptr) FunctionParameter + 29: Label + 271: 9(fvec4) Load 27(f4) + 272: 9(fvec4) GroupNonUniformQuadBroadcast 52 271 36 + 273: 9(fvec4) Load 27(f4) + 274: 9(fvec4) GroupNonUniformQuadSwap 52 273 36 + 275: 9(fvec4) Load 27(f4) + 276: 9(fvec4) GroupNonUniformQuadSwap 52 275 78 + 277: 9(fvec4) Load 27(f4) + 278: 9(fvec4) GroupNonUniformQuadSwap 52 277 80 + Return + FunctionEnd diff --git a/Test/baseResults/spv.460.subgroupEXT.task.out b/Test/baseResults/spv.460.subgroupEXT.task.out new file mode 100644 index 000000000..9de82ce5c --- /dev/null +++ b/Test/baseResults/spv.460.subgroupEXT.task.out @@ -0,0 +1,376 @@ +spv.460.subgroupEXT.task +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 242 + + Capability StorageImageWriteWithoutFormat + Capability GroupNonUniform + Capability GroupNonUniformVote + Capability GroupNonUniformArithmetic + Capability GroupNonUniformBallot + Capability GroupNonUniformShuffle + Capability GroupNonUniformShuffleRelative + Capability GroupNonUniformClustered + Capability GroupNonUniformQuad + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TaskEXT 4 "main" 35 41 56 61 77 102 122 123 128 129 132 133 134 135 136 + ExecutionMode 4 LocalSize 32 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_mesh_shader" + SourceExtension "GL_KHR_shader_subgroup_arithmetic" + SourceExtension "GL_KHR_shader_subgroup_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_clustered" + SourceExtension "GL_KHR_shader_subgroup_quad" + SourceExtension "GL_KHR_shader_subgroup_shuffle" + SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 6 "basic_works(" + Name 13 "ballot_works(vf4;" + Name 12 "f4" + Name 16 "vote_works(vf4;" + Name 15 "f4" + Name 19 "shuffle_works(vf4;" + Name 18 "f4" + Name 22 "arith_works(vf4;" + Name 21 "f4" + Name 25 "clustered_works(vf4;" + Name 24 "f4" + Name 28 "quad_works(vf4;" + Name 27 "f4" + Name 32 "iid" + Name 35 "gl_LocalInvocationID" + Name 40 "gid" + Name 41 "gl_WorkGroupID" + Name 44 "i" + Name 56 "mem" + Name 59 "block0" + MemberName 59(block0) 0 "uni_value" + Name 61 "" + Name 77 "uni_image" + Name 100 "Task" + MemberName 100(Task) 0 "dummy" + MemberName 100(Task) 1 "submesh" + Name 102 "mytask" + Name 122 "gl_SubgroupSize" + Name 123 "gl_SubgroupInvocationID" + Name 128 "gl_NumSubgroups" + Name 129 "gl_SubgroupID" + Name 132 "gl_SubgroupEqMask" + Name 133 "gl_SubgroupGeMask" + Name 134 "gl_SubgroupGtMask" + Name 135 "gl_SubgroupLeMask" + Name 136 "gl_SubgroupLtMask" + Name 142 "ballot" + Name 180 "ballot" + Name 215 "ballot" + Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 59(block0) 0 Offset 0 + Decorate 59(block0) Block + Decorate 61 DescriptorSet 0 + Decorate 61 Binding 1 + Decorate 77(uni_image) DescriptorSet 0 + Decorate 77(uni_image) Binding 0 + Decorate 77(uni_image) NonReadable + Decorate 122(gl_SubgroupSize) RelaxedPrecision + Decorate 122(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 123(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 123(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 128(gl_NumSubgroups) BuiltIn NumSubgroups + Decorate 129(gl_SubgroupID) BuiltIn SubgroupId + Decorate 132(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR + Decorate 133(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR + Decorate 134(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR + Decorate 135(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR + Decorate 136(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR + Decorate 241 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10: TypePointer Function 9(fvec4) + 11: TypeFunction 2 10(ptr) + 30: TypeInt 32 0 + 31: TypePointer Function 30(int) + 33: TypeVector 30(int) 3 + 34: TypePointer Input 33(ivec3) +35(gl_LocalInvocationID): 34(ptr) Variable Input + 36: 30(int) Constant 0 + 37: TypePointer Input 30(int) +41(gl_WorkGroupID): 34(ptr) Variable Input + 51: 30(int) Constant 10 + 52: TypeBool + 54: TypeArray 9(fvec4) 51 + 55: TypePointer Workgroup 54 + 56(mem): 55(ptr) Variable Workgroup + 59(block0): TypeStruct 30(int) + 60: TypePointer Uniform 59(block0) + 61: 60(ptr) Variable Uniform + 62: TypeInt 32 1 + 63: 62(int) Constant 0 + 64: TypePointer Uniform 30(int) + 70: TypePointer Workgroup 9(fvec4) + 73: 62(int) Constant 1 + 75: TypeImage 8(float) 2D nonsampled format:Unknown + 76: TypePointer UniformConstant 75 + 77(uni_image): 76(ptr) Variable UniformConstant + 81: TypeVector 62(int) 2 + 91: 30(int) Constant 1 + 95: 30(int) Constant 264 + 96: 30(int) Constant 2 + 97: TypeVector 8(float) 2 + 98: 30(int) Constant 3 + 99: TypeArray 97(fvec2) 98 + 100(Task): TypeStruct 97(fvec2) 99 + 101: TypePointer TaskPayloadWorkgroupEXT 100(Task) + 102(mytask): 101(ptr) Variable TaskPayloadWorkgroupEXT + 103: 8(float) Constant 1106247680 + 104: 8(float) Constant 1106771968 + 105: 97(fvec2) ConstantComposite 103 104 + 106: TypePointer TaskPayloadWorkgroupEXT 97(fvec2) + 108: 8(float) Constant 1107296256 + 109: 8(float) Constant 1107558400 + 110: 97(fvec2) ConstantComposite 108 109 + 112: 8(float) Constant 1107820544 + 113: 8(float) Constant 1108082688 + 114: 97(fvec2) ConstantComposite 112 113 + 116: 62(int) Constant 2 +122(gl_SubgroupSize): 37(ptr) Variable Input +123(gl_SubgroupInvocationID): 37(ptr) Variable Input + 124: 30(int) Constant 3400 + 125: 30(int) Constant 72 + 126: 30(int) Constant 2056 +128(gl_NumSubgroups): 37(ptr) Variable Input +129(gl_SubgroupID): 37(ptr) Variable Input + 130: TypeVector 30(int) 4 + 131: TypePointer Input 130(ivec4) +132(gl_SubgroupEqMask): 131(ptr) Variable Input +133(gl_SubgroupGeMask): 131(ptr) Variable Input +134(gl_SubgroupGtMask): 131(ptr) Variable Input +135(gl_SubgroupLeMask): 131(ptr) Variable Input +136(gl_SubgroupLtMask): 131(ptr) Variable Input + 141: TypePointer Function 130(ivec4) + 143: 52(bool) ConstantFalse + 145: 130(ivec4) ConstantComposite 91 91 91 91 + 159: 52(bool) ConstantTrue + 216: 30(int) Constant 85 + 217: 130(ivec4) ConstantComposite 216 36 36 36 + 240: 30(int) Constant 32 + 241: 33(ivec3) ConstantComposite 240 91 91 + 4(main): 2 Function None 3 + 5: Label + 32(iid): 31(ptr) Variable Function + 40(gid): 31(ptr) Variable Function + 44(i): 31(ptr) Variable Function + 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36 + 39: 30(int) Load 38 + Store 32(iid) 39 + 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36 + 43: 30(int) Load 42 + Store 40(gid) 43 + Store 44(i) 36 + Branch 45 + 45: Label + LoopMerge 47 48 None + Branch 49 + 49: Label + 50: 30(int) Load 44(i) + 53: 52(bool) ULessThan 50 51 + BranchConditional 53 46 47 + 46: Label + 57: 30(int) Load 44(i) + 58: 30(int) Load 44(i) + 65: 64(ptr) AccessChain 61 63 + 66: 30(int) Load 65 + 67: 30(int) IAdd 58 66 + 68: 8(float) ConvertUToF 67 + 69: 9(fvec4) CompositeConstruct 68 68 68 68 + 71: 70(ptr) AccessChain 56(mem) 57 + Store 71 69 + Branch 48 + 48: Label + 72: 30(int) Load 44(i) + 74: 30(int) IAdd 72 73 + Store 44(i) 74 + Branch 45 + 47: Label + 78: 75 Load 77(uni_image) + 79: 30(int) Load 32(iid) + 80: 62(int) Bitcast 79 + 82: 81(ivec2) CompositeConstruct 80 80 + 83: 30(int) Load 40(gid) + 84: 70(ptr) AccessChain 56(mem) 83 + 85: 9(fvec4) Load 84 + ImageWrite 78 82 85 + 86: 75 Load 77(uni_image) + 87: 30(int) Load 32(iid) + 88: 62(int) Bitcast 87 + 89: 81(ivec2) CompositeConstruct 88 88 + 90: 30(int) Load 40(gid) + 92: 30(int) IAdd 90 91 + 93: 70(ptr) AccessChain 56(mem) 92 + 94: 9(fvec4) Load 93 + ImageWrite 86 89 94 + MemoryBarrier 91 95 + ControlBarrier 96 96 95 + 107: 106(ptr) AccessChain 102(mytask) 63 + Store 107 105 + 111: 106(ptr) AccessChain 102(mytask) 73 63 + Store 111 110 + 115: 106(ptr) AccessChain 102(mytask) 73 73 + Store 115 114 + 117: 30(int) Load 40(gid) + 118: 30(int) UMod 117 96 + 119: 106(ptr) AccessChain 102(mytask) 73 118 + 120: 97(fvec2) Load 119 + 121: 106(ptr) AccessChain 102(mytask) 73 116 + Store 121 120 + MemoryBarrier 91 95 + ControlBarrier 96 96 95 + EmitMeshTasksEXT 98 91 91 102(mytask) + Return + FunctionEnd + 6(basic_works(): 2 Function None 3 + 7: Label + ControlBarrier 98 98 124 + MemoryBarrier 98 124 + MemoryBarrier 98 125 + MemoryBarrier 98 126 + 127: 52(bool) GroupNonUniformElect 98 + MemoryBarrier 98 95 + Return + FunctionEnd +13(ballot_works(vf4;): 2 Function None 11 + 12(f4): 10(ptr) FunctionParameter + 14: Label + 142(ballot): 141(ptr) Variable Function + 137: 9(fvec4) Load 12(f4) + 138: 9(fvec4) GroupNonUniformBroadcast 98 137 36 + 139: 9(fvec4) Load 12(f4) + 140: 9(fvec4) GroupNonUniformBroadcastFirst 98 139 + 144: 130(ivec4) GroupNonUniformBallot 98 143 + Store 142(ballot) 144 + 146: 52(bool) GroupNonUniformInverseBallot 98 145 + 147: 130(ivec4) Load 142(ballot) + 148: 52(bool) GroupNonUniformBallotBitExtract 98 147 36 + 149: 130(ivec4) Load 142(ballot) + 150: 30(int) GroupNonUniformBallotBitCount 98 Reduce 149 + 151: 130(ivec4) Load 142(ballot) + 152: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 151 + 153: 130(ivec4) Load 142(ballot) + 154: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 153 + 155: 130(ivec4) Load 142(ballot) + 156: 30(int) GroupNonUniformBallotFindLSB 98 155 + 157: 130(ivec4) Load 142(ballot) + 158: 30(int) GroupNonUniformBallotFindMSB 98 157 + Return + FunctionEnd +16(vote_works(vf4;): 2 Function None 11 + 15(f4): 10(ptr) FunctionParameter + 17: Label + 160: 52(bool) GroupNonUniformAll 98 159 + 161: 52(bool) GroupNonUniformAny 98 143 + 162: 9(fvec4) Load 15(f4) + 163: 52(bool) GroupNonUniformAllEqual 98 162 + Return + FunctionEnd +19(shuffle_works(vf4;): 2 Function None 11 + 18(f4): 10(ptr) FunctionParameter + 20: Label + 164: 9(fvec4) Load 18(f4) + 165: 9(fvec4) GroupNonUniformShuffle 98 164 36 + 166: 9(fvec4) Load 18(f4) + 167: 9(fvec4) GroupNonUniformShuffleXor 98 166 91 + 168: 9(fvec4) Load 18(f4) + 169: 9(fvec4) GroupNonUniformShuffleUp 98 168 91 + 170: 9(fvec4) Load 18(f4) + 171: 9(fvec4) GroupNonUniformShuffleDown 98 170 91 + Return + FunctionEnd +22(arith_works(vf4;): 2 Function None 11 + 21(f4): 10(ptr) FunctionParameter + 23: Label + 180(ballot): 141(ptr) Variable Function + 172: 9(fvec4) Load 21(f4) + 173: 9(fvec4) GroupNonUniformFAdd 98 Reduce 172 + 174: 9(fvec4) Load 21(f4) + 175: 9(fvec4) GroupNonUniformFMul 98 Reduce 174 + 176: 9(fvec4) Load 21(f4) + 177: 9(fvec4) GroupNonUniformFMin 98 Reduce 176 + 178: 9(fvec4) Load 21(f4) + 179: 9(fvec4) GroupNonUniformFMax 98 Reduce 178 + 181: 130(ivec4) Load 180(ballot) + 182: 130(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 181 + 183: 130(ivec4) Load 180(ballot) + 184: 130(ivec4) GroupNonUniformBitwiseOr 98 Reduce 183 + 185: 130(ivec4) Load 180(ballot) + 186: 130(ivec4) GroupNonUniformBitwiseXor 98 Reduce 185 + 187: 9(fvec4) Load 21(f4) + 188: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 187 + 189: 9(fvec4) Load 21(f4) + 190: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 189 + 191: 9(fvec4) Load 21(f4) + 192: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 191 + 193: 9(fvec4) Load 21(f4) + 194: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 193 + 195: 130(ivec4) Load 180(ballot) + 196: 130(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 195 + 197: 130(ivec4) Load 180(ballot) + 198: 130(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 197 + 199: 130(ivec4) Load 180(ballot) + 200: 130(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 199 + 201: 9(fvec4) Load 21(f4) + 202: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 201 + 203: 9(fvec4) Load 21(f4) + 204: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 203 + 205: 9(fvec4) Load 21(f4) + 206: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 205 + 207: 9(fvec4) Load 21(f4) + 208: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 207 + 209: 130(ivec4) Load 180(ballot) + 210: 130(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 209 + 211: 130(ivec4) Load 180(ballot) + 212: 130(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 211 + 213: 130(ivec4) Load 180(ballot) + 214: 130(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 213 + Return + FunctionEnd +25(clustered_works(vf4;): 2 Function None 11 + 24(f4): 10(ptr) FunctionParameter + 26: Label + 215(ballot): 141(ptr) Variable Function + Store 215(ballot) 217 + 218: 9(fvec4) Load 24(f4) + 219: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 218 96 + 220: 9(fvec4) Load 24(f4) + 221: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 220 96 + 222: 9(fvec4) Load 24(f4) + 223: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 222 96 + 224: 9(fvec4) Load 24(f4) + 225: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 224 96 + 226: 130(ivec4) Load 215(ballot) + 227: 130(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 226 96 + 228: 130(ivec4) Load 215(ballot) + 229: 130(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 228 96 + 230: 130(ivec4) Load 215(ballot) + 231: 130(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 230 96 + Return + FunctionEnd +28(quad_works(vf4;): 2 Function None 11 + 27(f4): 10(ptr) FunctionParameter + 29: Label + 232: 9(fvec4) Load 27(f4) + 233: 9(fvec4) GroupNonUniformQuadBroadcast 98 232 36 + 234: 9(fvec4) Load 27(f4) + 235: 9(fvec4) GroupNonUniformQuadSwap 98 234 36 + 236: 9(fvec4) Load 27(f4) + 237: 9(fvec4) GroupNonUniformQuadSwap 98 236 91 + 238: 9(fvec4) Load 27(f4) + 239: 9(fvec4) GroupNonUniformQuadSwap 98 238 96 + Return + FunctionEnd diff --git a/Test/baseResults/spv.atomiAddEXT.error.mesh.out b/Test/baseResults/spv.atomiAddEXT.error.mesh.out new file mode 100644 index 000000000..ce8f3d72d --- /dev/null +++ b/Test/baseResults/spv.atomiAddEXT.error.mesh.out @@ -0,0 +1,7 @@ +spv.atomiAddEXT.error.mesh +ERROR: 0:21: 'assign' : l-value required "mytask" (can't modify variable with storage qualifier taskPayloadSharedEXT in mesh shaders) +ERROR: 0:21: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters. +ERROR: 2 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.atomiAddEXT.task.out b/Test/baseResults/spv.atomiAddEXT.task.out new file mode 100644 index 000000000..4b58f1533 --- /dev/null +++ b/Test/baseResults/spv.atomiAddEXT.task.out @@ -0,0 +1,71 @@ +spv.atomiAddEXT.task +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 34 + + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TaskEXT 4 "main" 9 23 28 + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 7 "Buffer" + MemberName 7(Buffer) 0 "x" + Name 9 "" + Name 20 "structType" + MemberName 20(structType) 0 "y" + Name 21 "t2" + MemberName 21(t2) 0 "f" + Name 23 "t" + Name 26 "taskBlock" + MemberName 26(taskBlock) 0 "atom1" + Name 28 "mytask" + MemberDecorate 7(Buffer) 0 Coherent + MemberDecorate 7(Buffer) 0 Offset 0 + Decorate 7(Buffer) Block + Decorate 9 DescriptorSet 0 + Decorate 9 Binding 1 + Decorate 19 ArrayStride 4 + MemberDecorate 20(structType) 0 Offset 0 + MemberDecorate 21(t2) 0 Offset 0 + Decorate 21(t2) Block + Decorate 23(t) DescriptorSet 0 + Decorate 23(t) Binding 0 + Decorate 33 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7(Buffer): TypeStruct 6(int) + 8: TypePointer StorageBuffer 7(Buffer) + 9: 8(ptr) Variable StorageBuffer + 10: 6(int) Constant 0 + 11: TypePointer StorageBuffer 6(int) + 13: 6(int) Constant 1 + 14: TypeInt 32 0 + 15: 14(int) Constant 1 + 16: 14(int) Constant 0 + 18: 14(int) Constant 3 + 19: TypeArray 6(int) 18 + 20(structType): TypeStruct 19 + 21(t2): TypeStruct 20(structType) + 22: TypePointer StorageBuffer 21(t2) + 23(t): 22(ptr) Variable StorageBuffer + 26(taskBlock): TypeStruct 6(int) + 27: TypePointer TaskPayloadWorkgroupEXT 26(taskBlock) + 28(mytask): 27(ptr) Variable TaskPayloadWorkgroupEXT + 29: TypePointer TaskPayloadWorkgroupEXT 6(int) + 32: TypeVector 14(int) 3 + 33: 32(ivec3) ConstantComposite 15 15 15 + 4(main): 2 Function None 3 + 5: Label + 12: 11(ptr) AccessChain 9 10 + 17: 6(int) AtomicIAdd 12 15 16 13 + 24: 11(ptr) AccessChain 23(t) 10 10 13 + 25: 6(int) AtomicIAdd 24 15 16 13 + 30: 29(ptr) AccessChain 28(mytask) 10 + 31: 6(int) AtomicIAdd 30 15 16 13 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out new file mode 100644 index 000000000..ee9c60331 --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out @@ -0,0 +1,273 @@ +spv.ext.meshShaderBuiltins.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 159 + + Capability ClipDistance + Capability CullDistance + Capability FragmentShadingRateKHR + Capability DrawParameters + Capability MultiView + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 13 19 24 41 93 135 153 156 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 460 + SourceExtension "GL_ARB_shader_draw_parameters" + SourceExtension "GL_EXT_mesh_shader" + SourceExtension "GL_EXT_multiview" + Name 4 "main" + Name 6 "testAdditionalBuiltins(" + Name 10 "iid" + Name 13 "gl_LocalInvocationID" + Name 18 "gid" + Name 19 "gl_WorkGroupID" + Name 23 "numWorkGrous" + Name 24 "gl_NumWorkGroups" + Name 26 "vertexCount" + Name 28 "primitiveCount" + Name 38 "gl_MeshPerVertexEXT" + MemberName 38(gl_MeshPerVertexEXT) 0 "gl_Position" + MemberName 38(gl_MeshPerVertexEXT) 1 "gl_PointSize" + MemberName 38(gl_MeshPerVertexEXT) 2 "gl_ClipDistance" + MemberName 38(gl_MeshPerVertexEXT) 3 "gl_CullDistance" + Name 41 "gl_MeshVerticesEXT" + Name 90 "gl_MeshPerPrimitiveEXT" + MemberName 90(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" + MemberName 90(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" + MemberName 90(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" + MemberName 90(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" + MemberName 90(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" + Name 93 "gl_MeshPrimitivesEXT" + Name 135 "gl_PrimitiveTriangleIndicesEXT" + Name 151 "id" + Name 153 "gl_DrawIDARB" + Name 155 "viewIdx" + Name 156 "gl_ViewIndex" + Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups + MemberDecorate 38(gl_MeshPerVertexEXT) 0 BuiltIn Position + MemberDecorate 38(gl_MeshPerVertexEXT) 1 BuiltIn PointSize + MemberDecorate 38(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance + MemberDecorate 38(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance + Decorate 38(gl_MeshPerVertexEXT) Block + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR + Decorate 90(gl_MeshPerPrimitiveEXT) Block + Decorate 135(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT + Decorate 153(gl_DrawIDARB) BuiltIn DrawIndex + Decorate 156(gl_ViewIndex) BuiltIn ViewIndex + Decorate 158 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeInt 32 0 + 9: TypePointer Function 8(int) + 11: TypeVector 8(int) 3 + 12: TypePointer Input 11(ivec3) +13(gl_LocalInvocationID): 12(ptr) Variable Input + 14: 8(int) Constant 0 + 15: TypePointer Input 8(int) +19(gl_WorkGroupID): 12(ptr) Variable Input + 22: TypePointer Function 11(ivec3) +24(gl_NumWorkGroups): 12(ptr) Variable Input + 27: 8(int) Constant 81 + 29: 8(int) Constant 32 + 32: TypeFloat 32 + 33: TypeVector 32(float) 4 + 34: 8(int) Constant 4 + 35: TypeArray 32(float) 34 + 36: 8(int) Constant 3 + 37: TypeArray 32(float) 36 +38(gl_MeshPerVertexEXT): TypeStruct 33(fvec4) 32(float) 35 37 + 39: TypeArray 38(gl_MeshPerVertexEXT) 27 + 40: TypePointer Output 39 +41(gl_MeshVerticesEXT): 40(ptr) Variable Output + 43: TypeInt 32 1 + 44: 43(int) Constant 0 + 45: 32(float) Constant 1065353216 + 46: 33(fvec4) ConstantComposite 45 45 45 45 + 47: TypePointer Output 33(fvec4) + 50: 43(int) Constant 1 + 51: 32(float) Constant 1073741824 + 52: TypePointer Output 32(float) + 55: 43(int) Constant 2 + 56: 43(int) Constant 3 + 57: 32(float) Constant 1077936128 + 60: 32(float) Constant 1082130432 + 62: 8(int) Constant 1 + 63: 8(int) Constant 264 + 64: 8(int) Constant 2 + 89: TypeBool +90(gl_MeshPerPrimitiveEXT): TypeStruct 43(int) 43(int) 43(int) 89(bool) 43(int) + 91: TypeArray 90(gl_MeshPerPrimitiveEXT) 29 + 92: TypePointer Output 91 +93(gl_MeshPrimitivesEXT): 92(ptr) Variable Output + 95: 43(int) Constant 6 + 96: TypePointer Output 43(int) + 99: 43(int) Constant 7 + 102: 43(int) Constant 8 + 105: 89(bool) ConstantFalse + 106: TypePointer Output 89(bool) + 132: 8(int) Constant 96 + 133: TypeArray 11(ivec3) 132 + 134: TypePointer Output 133 +135(gl_PrimitiveTriangleIndicesEXT): 134(ptr) Variable Output + 136: 8(int) Constant 257 + 137: 11(ivec3) ConstantComposite 136 136 136 + 138: TypePointer Output 11(ivec3) + 142: 11(ivec3) ConstantComposite 64 64 64 + 150: TypePointer Function 43(int) + 152: TypePointer Input 43(int) +153(gl_DrawIDARB): 152(ptr) Variable Input +156(gl_ViewIndex): 152(ptr) Variable Input + 158: 11(ivec3) ConstantComposite 29 62 62 + 4(main): 2 Function None 3 + 5: Label + 10(iid): 9(ptr) Variable Function + 18(gid): 9(ptr) Variable Function +23(numWorkGrous): 22(ptr) Variable Function + 26(vertexCount): 9(ptr) Variable Function +28(primitiveCount): 9(ptr) Variable Function + 16: 15(ptr) AccessChain 13(gl_LocalInvocationID) 14 + 17: 8(int) Load 16 + Store 10(iid) 17 + 20: 15(ptr) AccessChain 19(gl_WorkGroupID) 14 + 21: 8(int) Load 20 + Store 18(gid) 21 + 25: 11(ivec3) Load 24(gl_NumWorkGroups) + Store 23(numWorkGrous) 25 + Store 26(vertexCount) 27 + Store 28(primitiveCount) 29 + 30: 8(int) Load 26(vertexCount) + 31: 8(int) Load 28(primitiveCount) + SetMeshOutputsEXT 30 31 + 42: 8(int) Load 10(iid) + 48: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 42 44 + Store 48 46 + 49: 8(int) Load 10(iid) + 53: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 49 50 + Store 53 51 + 54: 8(int) Load 10(iid) + 58: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 54 55 56 + Store 58 57 + 59: 8(int) Load 10(iid) + 61: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 59 56 55 + Store 61 60 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 65: 8(int) Load 10(iid) + 66: 8(int) IAdd 65 62 + 67: 8(int) Load 10(iid) + 68: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 67 44 + 69: 33(fvec4) Load 68 + 70: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 66 44 + Store 70 69 + 71: 8(int) Load 10(iid) + 72: 8(int) IAdd 71 62 + 73: 8(int) Load 10(iid) + 74: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 73 50 + 75: 32(float) Load 74 + 76: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 72 50 + Store 76 75 + 77: 8(int) Load 10(iid) + 78: 8(int) IAdd 77 62 + 79: 8(int) Load 10(iid) + 80: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 79 55 56 + 81: 32(float) Load 80 + 82: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 78 55 56 + Store 82 81 + 83: 8(int) Load 10(iid) + 84: 8(int) IAdd 83 62 + 85: 8(int) Load 10(iid) + 86: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 85 56 55 + 87: 32(float) Load 86 + 88: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 84 56 55 + Store 88 87 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 94: 8(int) Load 10(iid) + 97: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 94 44 + Store 97 95 + 98: 8(int) Load 10(iid) + 100: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 98 50 + Store 100 99 + 101: 8(int) Load 10(iid) + 103: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 101 55 + Store 103 102 + 104: 8(int) Load 10(iid) + 107: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 104 56 + Store 107 105 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 108: 8(int) Load 10(iid) + 109: 8(int) IAdd 108 62 + 110: 8(int) Load 10(iid) + 111: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 110 44 + 112: 43(int) Load 111 + 113: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 109 44 + Store 113 112 + 114: 8(int) Load 10(iid) + 115: 8(int) IAdd 114 62 + 116: 8(int) Load 10(iid) + 117: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 116 50 + 118: 43(int) Load 117 + 119: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 115 50 + Store 119 118 + 120: 8(int) Load 10(iid) + 121: 8(int) IAdd 120 62 + 122: 8(int) Load 10(iid) + 123: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 122 55 + 124: 43(int) Load 123 + 125: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 121 55 + Store 125 124 + 126: 8(int) Load 10(iid) + 127: 8(int) IAdd 126 62 + 128: 8(int) Load 10(iid) + 129: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 128 56 + 130: 89(bool) Load 129 + 131: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 127 56 + Store 131 130 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 139: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 44 + Store 139 137 + 140: 8(int) Load 28(primitiveCount) + 141: 8(int) ISub 140 62 + 143: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 141 + Store 143 142 + 144: 8(int) Load 18(gid) + 145: 8(int) Load 18(gid) + 146: 8(int) ISub 145 62 + 147: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 146 + 148: 11(ivec3) Load 147 + 149: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 144 + Store 149 148 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + Return + FunctionEnd +6(testAdditionalBuiltins(): 2 Function None 3 + 7: Label + 151(id): 150(ptr) Variable Function + 155(viewIdx): 150(ptr) Variable Function + 154: 43(int) Load 153(gl_DrawIDARB) + Store 151(id) 154 + 157: 43(int) Load 156(gl_ViewIndex) + Store 155(viewIdx) 157 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out new file mode 100644 index 000000000..7f2bdf8d4 --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out @@ -0,0 +1,216 @@ +spv.ext.meshShaderRedeclBuiltins.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 128 + + Capability ClipDistance + Capability CullDistance + Capability FragmentShadingRateKHR + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 11 17 29 81 122 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputPoints + Source GLSL 460 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "gid" + Name 17 "gl_WorkGroupID" + Name 26 "gl_MeshPerVertexEXT" + MemberName 26(gl_MeshPerVertexEXT) 0 "gl_Position" + MemberName 26(gl_MeshPerVertexEXT) 1 "gl_PointSize" + MemberName 26(gl_MeshPerVertexEXT) 2 "gl_ClipDistance" + MemberName 26(gl_MeshPerVertexEXT) 3 "gl_CullDistance" + Name 29 "gl_MeshVerticesEXT" + Name 78 "gl_MeshPerPrimitiveEXT" + MemberName 78(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" + MemberName 78(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" + MemberName 78(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" + MemberName 78(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" + MemberName 78(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" + Name 81 "gl_MeshPrimitivesEXT" + Name 122 "gl_PrimitivePointIndicesEXT" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 26(gl_MeshPerVertexEXT) 0 BuiltIn Position + MemberDecorate 26(gl_MeshPerVertexEXT) 1 BuiltIn PointSize + MemberDecorate 26(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance + MemberDecorate 26(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance + Decorate 26(gl_MeshPerVertexEXT) Block + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR + Decorate 78(gl_MeshPerPrimitiveEXT) Block + Decorate 122(gl_PrimitivePointIndicesEXT) BuiltIn PrimitivePointIndicesEXT + Decorate 127 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LocalInvocationID): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) +17(gl_WorkGroupID): 10(ptr) Variable Input + 20: 6(int) Constant 81 + 21: 6(int) Constant 32 + 22: TypeFloat 32 + 23: TypeVector 22(float) 4 + 24: 6(int) Constant 4 + 25: TypeArray 22(float) 24 +26(gl_MeshPerVertexEXT): TypeStruct 23(fvec4) 22(float) 25 25 + 27: TypeArray 26(gl_MeshPerVertexEXT) 20 + 28: TypePointer Output 27 +29(gl_MeshVerticesEXT): 28(ptr) Variable Output + 31: TypeInt 32 1 + 32: 31(int) Constant 0 + 33: 22(float) Constant 1065353216 + 34: 23(fvec4) ConstantComposite 33 33 33 33 + 35: TypePointer Output 23(fvec4) + 38: 31(int) Constant 1 + 39: 22(float) Constant 1073741824 + 40: TypePointer Output 22(float) + 43: 31(int) Constant 2 + 44: 31(int) Constant 3 + 45: 22(float) Constant 1077936128 + 48: 22(float) Constant 1082130432 + 50: 6(int) Constant 1 + 51: 6(int) Constant 264 + 52: 6(int) Constant 2 + 77: TypeBool +78(gl_MeshPerPrimitiveEXT): TypeStruct 31(int) 31(int) 31(int) 77(bool) 31(int) + 79: TypeArray 78(gl_MeshPerPrimitiveEXT) 21 + 80: TypePointer Output 79 +81(gl_MeshPrimitivesEXT): 80(ptr) Variable Output + 83: 31(int) Constant 6 + 84: TypePointer Output 31(int) + 87: 31(int) Constant 7 + 90: 31(int) Constant 8 + 93: 77(bool) ConstantFalse + 94: TypePointer Output 77(bool) + 120: TypeArray 6(int) 21 + 121: TypePointer Output 120 +122(gl_PrimitivePointIndicesEXT): 121(ptr) Variable Output + 123: TypePointer Output 6(int) + 125: 31(int) Constant 31 + 127: 9(ivec3) ConstantComposite 21 50 50 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 16(gid): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12 + 19: 6(int) Load 18 + Store 16(gid) 19 + SetMeshOutputsEXT 20 21 + 30: 6(int) Load 8(iid) + 36: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 30 32 + Store 36 34 + 37: 6(int) Load 8(iid) + 41: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 37 38 + Store 41 39 + 42: 6(int) Load 8(iid) + 46: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 42 43 44 + Store 46 45 + 47: 6(int) Load 8(iid) + 49: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 47 44 43 + Store 49 48 + MemoryBarrier 50 51 + ControlBarrier 52 52 51 + 53: 6(int) Load 8(iid) + 54: 6(int) IAdd 53 50 + 55: 6(int) Load 8(iid) + 56: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 55 32 + 57: 23(fvec4) Load 56 + 58: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 54 32 + Store 58 57 + 59: 6(int) Load 8(iid) + 60: 6(int) IAdd 59 50 + 61: 6(int) Load 8(iid) + 62: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 61 38 + 63: 22(float) Load 62 + 64: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 60 38 + Store 64 63 + 65: 6(int) Load 8(iid) + 66: 6(int) IAdd 65 50 + 67: 6(int) Load 8(iid) + 68: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 67 43 44 + 69: 22(float) Load 68 + 70: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 66 43 44 + Store 70 69 + 71: 6(int) Load 8(iid) + 72: 6(int) IAdd 71 50 + 73: 6(int) Load 8(iid) + 74: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 73 44 43 + 75: 22(float) Load 74 + 76: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 72 44 43 + Store 76 75 + MemoryBarrier 50 51 + ControlBarrier 52 52 51 + 82: 6(int) Load 8(iid) + 85: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 82 32 + Store 85 83 + 86: 6(int) Load 8(iid) + 88: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 86 38 + Store 88 87 + 89: 6(int) Load 8(iid) + 91: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 89 43 + Store 91 90 + 92: 6(int) Load 8(iid) + 95: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 92 44 + Store 95 93 + MemoryBarrier 50 51 + ControlBarrier 52 52 51 + 96: 6(int) Load 8(iid) + 97: 6(int) IAdd 96 50 + 98: 6(int) Load 8(iid) + 99: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 98 32 + 100: 31(int) Load 99 + 101: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 97 32 + Store 101 100 + 102: 6(int) Load 8(iid) + 103: 6(int) IAdd 102 50 + 104: 6(int) Load 8(iid) + 105: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 104 38 + 106: 31(int) Load 105 + 107: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 103 38 + Store 107 106 + 108: 6(int) Load 8(iid) + 109: 6(int) IAdd 108 50 + 110: 6(int) Load 8(iid) + 111: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 110 43 + 112: 31(int) Load 111 + 113: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 109 43 + Store 113 112 + 114: 6(int) Load 8(iid) + 115: 6(int) IAdd 114 50 + 116: 6(int) Load 8(iid) + 117: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 116 44 + 118: 77(bool) Load 117 + 119: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 115 44 + Store 119 118 + MemoryBarrier 50 51 + ControlBarrier 52 52 51 + 124: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 32 + Store 124 50 + 126: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 125 + Store 126 52 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out new file mode 100644 index 000000000..79b2c65a2 --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out @@ -0,0 +1,102 @@ +spv.ext.meshShaderTaskMem.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 58 + + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 11 22 30 38 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 18 "outBlock" + MemberName 18(outBlock) 0 "gid5" + MemberName 18(outBlock) 1 "gid6" + Name 22 "myblk" + Name 28 "taskBlock" + MemberName 28(taskBlock) 0 "gid1" + MemberName 28(taskBlock) 1 "gid2" + Name 30 "mytask" + Name 36 "bufferBlock" + MemberName 36(bufferBlock) 0 "gid3" + MemberName 36(bufferBlock) 1 "gid4" + Name 38 "mybuf" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 18(outBlock) Block + Decorate 22(myblk) Location 0 + Decorate 35 ArrayStride 4 + MemberDecorate 36(bufferBlock) 0 Offset 0 + MemberDecorate 36(bufferBlock) 1 Offset 16 + Decorate 36(bufferBlock) Block + Decorate 38(mybuf) DescriptorSet 0 + Decorate 38(mybuf) Binding 0 + Decorate 57 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LocalInvocationID): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) + 16: TypeFloat 32 + 17: TypeVector 16(float) 4 + 18(outBlock): TypeStruct 16(float) 17(fvec4) + 19: 6(int) Constant 81 + 20: TypeArray 18(outBlock) 19 + 21: TypePointer Output 20 + 22(myblk): 21(ptr) Variable Output + 24: TypeInt 32 1 + 25: 24(int) Constant 0 + 26: 6(int) Constant 2 + 27: TypeArray 16(float) 26 + 28(taskBlock): TypeStruct 27 17(fvec4) + 29: TypePointer TaskPayloadWorkgroupEXT 28(taskBlock) + 30(mytask): 29(ptr) Variable TaskPayloadWorkgroupEXT + 31: 24(int) Constant 1 + 32: TypePointer TaskPayloadWorkgroupEXT 16(float) + 35: TypeArray 16(float) 26 + 36(bufferBlock): TypeStruct 35 17(fvec4) + 37: TypePointer StorageBuffer 36(bufferBlock) + 38(mybuf): 37(ptr) Variable StorageBuffer + 39: TypePointer StorageBuffer 16(float) + 43: TypePointer Output 16(float) + 46: TypePointer TaskPayloadWorkgroupEXT 17(fvec4) + 49: TypePointer StorageBuffer 17(fvec4) + 53: TypePointer Output 17(fvec4) + 55: 6(int) Constant 32 + 56: 6(int) Constant 1 + 57: 9(ivec3) ConstantComposite 55 56 56 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 23: 6(int) Load 8(iid) + 33: 32(ptr) AccessChain 30(mytask) 25 31 + 34: 16(float) Load 33 + 40: 39(ptr) AccessChain 38(mybuf) 25 31 + 41: 16(float) Load 40 + 42: 16(float) FAdd 34 41 + 44: 43(ptr) AccessChain 22(myblk) 23 25 + Store 44 42 + 45: 6(int) Load 8(iid) + 47: 46(ptr) AccessChain 30(mytask) 31 + 48: 17(fvec4) Load 47 + 50: 49(ptr) AccessChain 38(mybuf) 31 + 51: 17(fvec4) Load 50 + 52: 17(fvec4) FAdd 48 51 + 54: 53(ptr) AccessChain 22(myblk) 45 31 + Store 54 52 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out new file mode 100644 index 000000000..d9d74ab92 --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out @@ -0,0 +1,208 @@ +spv.ext.meshShaderUserDefined.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 141 + + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 11 17 34 104 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "gid" + Name 17 "gl_WorkGroupID" + Name 30 "myblock" + MemberName 30(myblock) 0 "f" + MemberName 30(myblock) 1 "fArr" + MemberName 30(myblock) 2 "pos" + MemberName 30(myblock) 3 "posArr" + MemberName 30(myblock) 4 "m" + MemberName 30(myblock) 5 "mArr" + Name 34 "blk" + Name 100 "myblock2" + MemberName 100(myblock2) 0 "f" + MemberName 100(myblock2) 1 "pos" + MemberName 100(myblock2) 2 "m" + Name 104 "blk2" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 30(myblock) 0 PerPrimitiveNV + MemberDecorate 30(myblock) 1 PerPrimitiveNV + MemberDecorate 30(myblock) 2 PerPrimitiveNV + MemberDecorate 30(myblock) 3 PerPrimitiveNV + MemberDecorate 30(myblock) 4 PerPrimitiveNV + MemberDecorate 30(myblock) 5 PerPrimitiveNV + Decorate 30(myblock) Block + Decorate 34(blk) Location 0 + Decorate 100(myblock2) Block + Decorate 104(blk2) Location 20 + Decorate 140 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LocalInvocationID): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) +17(gl_WorkGroupID): 10(ptr) Variable Input + 20: TypeFloat 32 + 21: 6(int) Constant 4 + 22: TypeArray 20(float) 21 + 23: TypeVector 20(float) 3 + 24: TypeVector 20(float) 4 + 25: TypeArray 24(fvec4) 21 + 26: TypeMatrix 24(fvec4) 4 + 27: TypeMatrix 23(fvec3) 3 + 28: 6(int) Constant 2 + 29: TypeArray 27 28 + 30(myblock): TypeStruct 20(float) 22 23(fvec3) 25 26 29 + 31: 6(int) Constant 32 + 32: TypeArray 30(myblock) 31 + 33: TypePointer Output 32 + 34(blk): 33(ptr) Variable Output + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 20(float) Constant 1093664768 + 39: TypePointer Output 20(float) + 42: 6(int) Constant 1 + 44: 36(int) Constant 1 + 52: 36(int) Constant 2 + 53: 20(float) Constant 1096810496 + 54: 20(float) Constant 1097859072 + 55: 20(float) Constant 1095761920 + 56: 23(fvec3) ConstantComposite 53 54 55 + 57: TypePointer Output 23(fvec3) + 63: 36(int) Constant 3 + 72: 6(int) Constant 3 + 77: 36(int) Constant 4 + 78: 20(float) Constant 1098907648 + 79: 24(fvec4) ConstantComposite 55 53 54 78 + 80: TypePointer Output 24(fvec4) + 85: 36(int) Constant 5 + 94: 20(float) Constant 1099431936 + 95: 20(float) Constant 1099956224 + 96: 20(float) Constant 1100480512 + 97: 23(fvec3) ConstantComposite 94 95 96 + 99: 6(int) Constant 264 + 100(myblock2): TypeStruct 20(float) 24(fvec4) 26 + 101: 6(int) Constant 81 + 102: TypeArray 100(myblock2) 101 + 103: TypePointer Output 102 + 104(blk2): 103(ptr) Variable Output + 110: 20(float) Constant 1101004800 + 114: 20(float) Constant 1101529088 + 115: 20(float) Constant 1102053376 + 116: 20(float) Constant 1102577664 + 117: 20(float) Constant 1103101952 + 118: 24(fvec4) ConstantComposite 114 115 116 117 + 130: 20(float) Constant 1105723392 + 140: 9(ivec3) ConstantComposite 31 42 42 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 16(gid): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12 + 19: 6(int) Load 18 + Store 16(gid) 19 + 35: 6(int) Load 8(iid) + 40: 39(ptr) AccessChain 34(blk) 35 37 + Store 40 38 + 41: 6(int) Load 8(iid) + 43: 6(int) IAdd 41 42 + 45: 6(int) Load 16(gid) + 46: 6(int) Load 8(iid) + 47: 39(ptr) AccessChain 34(blk) 46 37 + 48: 20(float) Load 47 + 49: 39(ptr) AccessChain 34(blk) 43 44 45 + Store 49 48 + 50: 6(int) Load 8(iid) + 51: 6(int) UDiv 50 28 + 58: 57(ptr) AccessChain 34(blk) 51 52 + 59: 23(fvec3) Load 58 + 60: 23(fvec3) VectorShuffle 59 56 5 3 4 + Store 58 60 + 61: 6(int) Load 8(iid) + 62: 6(int) IMul 61 28 + 64: 6(int) Load 8(iid) + 65: 6(int) UDiv 64 28 + 66: 57(ptr) AccessChain 34(blk) 65 52 + 67: 23(fvec3) Load 66 + 68: 39(ptr) AccessChain 34(blk) 62 63 44 42 + 69: 20(float) CompositeExtract 67 0 + Store 68 69 + 70: 39(ptr) AccessChain 34(blk) 62 63 44 28 + 71: 20(float) CompositeExtract 67 1 + Store 70 71 + 73: 39(ptr) AccessChain 34(blk) 62 63 44 72 + 74: 20(float) CompositeExtract 67 2 + Store 73 74 + 75: 6(int) Load 8(iid) + 76: 6(int) UDiv 75 21 + 81: 80(ptr) AccessChain 34(blk) 76 77 52 + 82: 24(fvec4) Load 81 + 83: 24(fvec4) VectorShuffle 82 79 7 6 5 4 + Store 81 83 + 84: 6(int) Load 8(iid) + 86: 6(int) Load 8(iid) + 87: 6(int) UDiv 86 21 + 88: 39(ptr) AccessChain 34(blk) 87 77 52 72 + 89: 20(float) Load 88 + 90: 39(ptr) AccessChain 34(blk) 84 85 37 44 42 + Store 90 89 + 91: 6(int) Load 8(iid) + 92: 6(int) IMul 91 21 + 93: 6(int) Load 16(gid) + 98: 57(ptr) AccessChain 34(blk) 92 85 44 93 + Store 98 97 + MemoryBarrier 42 99 + ControlBarrier 28 28 99 + 105: 6(int) Load 8(iid) + 106: 6(int) Load 8(iid) + 107: 6(int) ISub 106 42 + 108: 39(ptr) AccessChain 104(blk2) 107 37 + 109: 20(float) Load 108 + 111: 20(float) FAdd 109 110 + 112: 39(ptr) AccessChain 104(blk2) 105 37 + Store 112 111 + 113: 6(int) Load 8(iid) + 119: 80(ptr) AccessChain 104(blk2) 113 44 + Store 119 118 + 120: 6(int) Load 8(iid) + 121: 6(int) IAdd 120 42 + 122: 6(int) Load 16(gid) + 123: 6(int) Load 8(iid) + 124: 80(ptr) AccessChain 104(blk2) 123 44 + 125: 24(fvec4) Load 124 + 126: 80(ptr) AccessChain 104(blk2) 121 52 122 + Store 126 125 + 127: 6(int) Load 8(iid) + 128: 6(int) IAdd 127 42 + 129: 6(int) Load 16(gid) + 131: 39(ptr) AccessChain 104(blk2) 128 52 129 28 + Store 131 130 + 132: 6(int) Load 8(iid) + 133: 6(int) IAdd 132 28 + 134: 6(int) Load 8(iid) + 135: 6(int) IAdd 134 42 + 136: 6(int) Load 16(gid) + 137: 80(ptr) AccessChain 104(blk2) 135 52 136 + 138: 24(fvec4) Load 137 + 139: 80(ptr) AccessChain 104(blk2) 133 52 63 + Store 139 138 + MemoryBarrier 42 99 + ControlBarrier 28 28 99 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshTaskShader.task.out b/Test/baseResults/spv.ext.meshTaskShader.task.out new file mode 100644 index 000000000..dd6796e39 --- /dev/null +++ b/Test/baseResults/spv.ext.meshTaskShader.task.out @@ -0,0 +1,163 @@ +spv.ext.meshTaskShader.task +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 102 + + Capability StorageImageWriteWithoutFormat + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TaskEXT 4 "main" 11 17 34 39 55 80 + ExecutionMode 4 LocalSize 32 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "gid" + Name 17 "gl_WorkGroupID" + Name 20 "i" + Name 34 "mem" + Name 37 "block0" + MemberName 37(block0) 0 "uni_value" + Name 39 "" + Name 55 "uni_image" + Name 78 "Task" + MemberName 78(Task) 0 "dummy" + MemberName 78(Task) 1 "submesh" + Name 80 "mytask" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 37(block0) 0 Offset 0 + Decorate 37(block0) Block + Decorate 39 DescriptorSet 0 + Decorate 39 Binding 1 + Decorate 55(uni_image) DescriptorSet 0 + Decorate 55(uni_image) Binding 0 + Decorate 55(uni_image) NonReadable + Decorate 101 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LocalInvocationID): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) +17(gl_WorkGroupID): 10(ptr) Variable Input + 27: 6(int) Constant 10 + 28: TypeBool + 30: TypeFloat 32 + 31: TypeVector 30(float) 4 + 32: TypeArray 31(fvec4) 27 + 33: TypePointer Workgroup 32 + 34(mem): 33(ptr) Variable Workgroup + 37(block0): TypeStruct 6(int) + 38: TypePointer Uniform 37(block0) + 39: 38(ptr) Variable Uniform + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 42: TypePointer Uniform 6(int) + 48: TypePointer Workgroup 31(fvec4) + 51: 40(int) Constant 1 + 53: TypeImage 30(float) 2D nonsampled format:Unknown + 54: TypePointer UniformConstant 53 + 55(uni_image): 54(ptr) Variable UniformConstant + 59: TypeVector 40(int) 2 + 69: 6(int) Constant 1 + 73: 6(int) Constant 264 + 74: 6(int) Constant 2 + 75: TypeVector 30(float) 2 + 76: 6(int) Constant 3 + 77: TypeArray 75(fvec2) 76 + 78(Task): TypeStruct 75(fvec2) 77 + 79: TypePointer TaskPayloadWorkgroupEXT 78(Task) + 80(mytask): 79(ptr) Variable TaskPayloadWorkgroupEXT + 81: 30(float) Constant 1106247680 + 82: 30(float) Constant 1106771968 + 83: 75(fvec2) ConstantComposite 81 82 + 84: TypePointer TaskPayloadWorkgroupEXT 75(fvec2) + 86: 30(float) Constant 1107296256 + 87: 30(float) Constant 1107558400 + 88: 75(fvec2) ConstantComposite 86 87 + 90: 30(float) Constant 1107820544 + 91: 30(float) Constant 1108082688 + 92: 75(fvec2) ConstantComposite 90 91 + 94: 40(int) Constant 2 + 100: 6(int) Constant 32 + 101: 9(ivec3) ConstantComposite 100 69 69 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 16(gid): 7(ptr) Variable Function + 20(i): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12 + 19: 6(int) Load 18 + Store 16(gid) 19 + Store 20(i) 12 + Branch 21 + 21: Label + LoopMerge 23 24 None + Branch 25 + 25: Label + 26: 6(int) Load 20(i) + 29: 28(bool) ULessThan 26 27 + BranchConditional 29 22 23 + 22: Label + 35: 6(int) Load 20(i) + 36: 6(int) Load 20(i) + 43: 42(ptr) AccessChain 39 41 + 44: 6(int) Load 43 + 45: 6(int) IAdd 36 44 + 46: 30(float) ConvertUToF 45 + 47: 31(fvec4) CompositeConstruct 46 46 46 46 + 49: 48(ptr) AccessChain 34(mem) 35 + Store 49 47 + Branch 24 + 24: Label + 50: 6(int) Load 20(i) + 52: 6(int) IAdd 50 51 + Store 20(i) 52 + Branch 21 + 23: Label + 56: 53 Load 55(uni_image) + 57: 6(int) Load 8(iid) + 58: 40(int) Bitcast 57 + 60: 59(ivec2) CompositeConstruct 58 58 + 61: 6(int) Load 16(gid) + 62: 48(ptr) AccessChain 34(mem) 61 + 63: 31(fvec4) Load 62 + ImageWrite 56 60 63 + 64: 53 Load 55(uni_image) + 65: 6(int) Load 8(iid) + 66: 40(int) Bitcast 65 + 67: 59(ivec2) CompositeConstruct 66 66 + 68: 6(int) Load 16(gid) + 70: 6(int) IAdd 68 69 + 71: 48(ptr) AccessChain 34(mem) 70 + 72: 31(fvec4) Load 71 + ImageWrite 64 67 72 + MemoryBarrier 69 73 + ControlBarrier 74 74 73 + 85: 84(ptr) AccessChain 80(mytask) 41 + Store 85 83 + 89: 84(ptr) AccessChain 80(mytask) 51 41 + Store 89 88 + 93: 84(ptr) AccessChain 80(mytask) 51 51 + Store 93 92 + 95: 6(int) Load 16(gid) + 96: 6(int) UMod 95 74 + 97: 84(ptr) AccessChain 80(mytask) 51 96 + 98: 75(fvec2) Load 97 + 99: 84(ptr) AccessChain 80(mytask) 51 94 + Store 99 98 + MemoryBarrier 69 73 + ControlBarrier 74 74 73 + EmitMeshTasksEXT 76 69 69 80(mytask) + Return + FunctionEnd diff --git a/Test/baseResults/test.conf b/Test/baseResults/test.conf index 98b2a8416..e4cf409ad 100644 --- a/Test/baseResults/test.conf +++ b/Test/baseResults/test.conf @@ -90,6 +90,15 @@ MaxTaskWorkGroupSizeX_NV 32 MaxTaskWorkGroupSizeY_NV 1 MaxTaskWorkGroupSizeZ_NV 1 MaxMeshViewCountNV 4 +MaxMeshOutputVerticesEXT 256 +MaxMeshOutputPrimitivesEXT 256 +MaxMeshWorkGroupSizeX_EXT 128 +MaxMeshWorkGroupSizeY_EXT 128 +MaxMeshWorkGroupSizeZ_EXT 128 +MaxTaskWorkGroupSizeX_EXT 128 +MaxTaskWorkGroupSizeY_EXT 128 +MaxTaskWorkGroupSizeZ_EXT 128 +MaxMeshViewCountEXT 4 MaxDualSourceDrawBuffersEXT 1 nonInductiveForLoops 1 whileLoops 1 diff --git a/Test/spv.460.subgroupEXT.mesh b/Test/spv.460.subgroupEXT.mesh new file mode 100644 index 000000000..8ccc14e2e --- /dev/null +++ b/Test/spv.460.subgroupEXT.mesh @@ -0,0 +1,164 @@ +#version 460 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32, local_size_y=1, local_size_z=1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of builtins in mesh shaders: + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + uint vertexCount = MAX_VER; // vertexCount <= max_vertices + uint primitiveCount = MAX_PRIM; // primitiveCount <= max_primtives + SetMeshOutputsEXT(vertexCount, primitiveCount); + + gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0); + gl_MeshVerticesEXT[iid].gl_PointSize = 2.0; + gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position; + gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize; + gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3]; + gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesEXT[iid].gl_Layer = 7; + gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID; + gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer; + gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex; + gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = false; + + BARRIER(); + + // check bound limits + gl_PrimitiveTriangleIndicesEXT[0] = uvec3(1, 1, 1); // range is between [0, vertexCount-1] + gl_PrimitiveTriangleIndicesEXT[primitiveCount - 1] = uvec3(2, 2, 2); // array size is primitiveCount*3 for triangle + gl_PrimitiveTriangleIndicesEXT[gid] = gl_PrimitiveTriangleIndicesEXT[gid-1]; + + + BARRIER(); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); + gl_NumSubgroups; // allowed in mesh + gl_SubgroupID; // allowed in mesh + subgroupMemoryBarrierShared(); // allowed in mesh +} + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} diff --git a/Test/spv.460.subgroupEXT.task b/Test/spv.460.subgroupEXT.task new file mode 100644 index 000000000..cffe98e3b --- /dev/null +++ b/Test/spv.460.subgroupEXT.task @@ -0,0 +1,153 @@ +#version 460 + + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32, local_size_y=1, local_size_z=1) in; + +// test use of shared memory in task shaders: +layout(binding=0) writeonly uniform image2D uni_image; +uniform block0 { + uint uni_value; +}; +shared vec4 mem[10]; + +// test use of task memory in task shaders: +struct Task { + vec2 dummy; + vec2 submesh[3]; +}; + +taskPayloadSharedEXT Task mytask; +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + // 1. shared memory load and stores + for (uint i = 0; i < 10; ++i) { + mem[i] = vec4(i + uni_value); + } + imageStore(uni_image, ivec2(iid), mem[gid]); + imageStore(uni_image, ivec2(iid), mem[gid+1]); + + BARRIER(); + + // 2. task memory stores + + mytask.dummy = vec2(30.0, 31.0); + mytask.submesh[0] = vec2(32.0, 33.0); + mytask.submesh[1] = vec2(34.0, 35.0); + mytask.submesh[2] = mytask.submesh[gid%2]; + + BARRIER(); + + // 3. emit task count under uniform control flow + EmitMeshTasksEXT(3U, 1U, 1U); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); + gl_NumSubgroups; // allowed in task + gl_SubgroupID; // allowed in task + subgroupMemoryBarrierShared(); // allowed in task +} + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + diff --git a/Test/spv.atomiAddEXT.error.mesh b/Test/spv.atomiAddEXT.error.mesh new file mode 100644 index 000000000..5d4247db2 --- /dev/null +++ b/Test/spv.atomiAddEXT.error.mesh @@ -0,0 +1,22 @@ +#version 460 +#extension GL_EXT_mesh_shader : enable + +#define MAX_VER 81 +#define MAX_PRIM 32 + +layout(local_size_x = 1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders: +struct taskBlock { + int atom1; +}; +taskPayloadSharedEXT taskBlock mytask; + + +void main() { + atomicAdd(mytask.atom1, 1); +} \ No newline at end of file diff --git a/Test/spv.atomiAddEXT.task b/Test/spv.atomiAddEXT.task new file mode 100644 index 000000000..703117dd9 --- /dev/null +++ b/Test/spv.atomiAddEXT.task @@ -0,0 +1,27 @@ +#version 460 +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 1) in; + +struct structType{ + int y[3]; +}; + +layout(std430) buffer t2 { + structType f; +} t; + +buffer coherent Buffer { int x; }; + +// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders: +struct taskBlock { + int atom1; +}; +taskPayloadSharedEXT taskBlock mytask; + + +void main() { + atomicAdd(x, 1); + atomicAdd(t.f.y[1], 1); + atomicAdd(mytask.atom1, 1); +} \ No newline at end of file diff --git a/Test/spv.ext.meshShaderBuiltins.mesh b/Test/spv.ext.meshShaderBuiltins.mesh new file mode 100644 index 000000000..70a97360d --- /dev/null +++ b/Test/spv.ext.meshShaderBuiltins.mesh @@ -0,0 +1,74 @@ +#version 460 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32, local_size_y=1, local_size_z=1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of builtins in mesh shaders: + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + uvec3 numWorkGrous = gl_NumWorkGroups; + uint vertexCount = MAX_VER; // vertexCount <= max_vertices + uint primitiveCount = MAX_PRIM; // primitiveCount <= max_primtives + SetMeshOutputsEXT(vertexCount, primitiveCount); + + gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0); + gl_MeshVerticesEXT[iid].gl_PointSize = 2.0; + gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position; + gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize; + gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3]; + gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesEXT[iid].gl_Layer = 7; + gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID; + gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer; + gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex; + gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT; + + BARRIER(); + + // check bound limits + gl_PrimitiveTriangleIndicesEXT[0] = uvec3(257); // should truncate 257 -> 1, range is between [0, vertexCount-1] + gl_PrimitiveTriangleIndicesEXT[primitiveCount - 1] = uvec3(2); // array size is primitiveCount*3 for triangle + gl_PrimitiveTriangleIndicesEXT[gid] = gl_PrimitiveTriangleIndicesEXT[gid-1]; + + BARRIER(); +} + +// test use of builtins enabled by other extensions +#extension GL_ARB_shader_draw_parameters : enable +#extension GL_EXT_multiview : enable + +void testAdditionalBuiltins() +{ + int id = gl_DrawIDARB; // GL_ARB_shader_draw_parameters + int viewIdx = gl_ViewIndex; // GL_EXT_multiview + +} \ No newline at end of file diff --git a/Test/spv.ext.meshShaderRedeclBuiltins.mesh b/Test/spv.ext.meshShaderRedeclBuiltins.mesh new file mode 100644 index 000000000..8b6703450 --- /dev/null +++ b/Test/spv.ext.meshShaderRedeclBuiltins.mesh @@ -0,0 +1,75 @@ +#version 460 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32, local_size_y = 1, local_size_z = 1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(points) out; + +// test use of redeclared single-view builtins in mesh shaders: + +out gl_MeshPerVertexEXT { + vec4 gl_Position; + float gl_PointSize; + float gl_ClipDistance[4]; + float gl_CullDistance[4]; +} gl_MeshVerticesEXT[MAX_VER]; // explicitly sized to MAX_VER + +perprimitiveEXT out gl_MeshPerPrimitiveEXT { + int gl_PrimitiveID; + int gl_Layer; + int gl_ViewportIndex; + bool gl_CullPrimitiveEXT; + int gl_PrimitiveShadingRateEXT; +} gl_MeshPrimitivesEXT[]; // implicitly sized to MAX_PRIM + +out uint gl_PrimitivePointIndicesEXT[MAX_PRIM]; // explicitly sized to MAX_PRIM + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + SetMeshOutputsEXT(MAX_VER, MAX_PRIM); + + gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0); + gl_MeshVerticesEXT[iid].gl_PointSize = 2.0; + gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position; + gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize; + gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3]; + gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesEXT[iid].gl_Layer = 7; + gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID; + gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer; + gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex; + gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT; + + BARRIER(); + + // check bound limits + gl_PrimitivePointIndicesEXT[0] = 1; + gl_PrimitivePointIndicesEXT[MAX_PRIM - 1] = 2; +} diff --git a/Test/spv.ext.meshShaderTaskMem.mesh b/Test/spv.ext.meshShaderTaskMem.mesh new file mode 100644 index 000000000..c22f7670d --- /dev/null +++ b/Test/spv.ext.meshShaderTaskMem.mesh @@ -0,0 +1,41 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders: +struct taskBlock { + float gid1[2]; + vec4 gid2; +}; +taskPayloadSharedEXT taskBlock mytask; + +buffer bufferBlock { + float gid3[2]; + vec4 gid4; +} mybuf; + +layout(location=0) out outBlock { + float gid5; + vec4 gid6; +} myblk[]; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + + myblk[iid].gid5 = mytask.gid1[1] + mybuf.gid3[1]; + myblk[iid].gid6 = mytask.gid2 + mybuf.gid4; +} diff --git a/Test/spv.ext.meshShaderUserDefined.mesh b/Test/spv.ext.meshShaderUserDefined.mesh new file mode 100644 index 000000000..c8035e2b3 --- /dev/null +++ b/Test/spv.ext.meshShaderUserDefined.mesh @@ -0,0 +1,59 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of user defined interface out blocks: + +// per-primitive block +perprimitiveEXT layout(location=0) out myblock { + float f; + float fArr[4]; + vec3 pos; + vec4 posArr[4]; + mat4 m; + mat3 mArr[2]; +} blk[]; + +// per-vertex block +layout(location=20) out myblock2 { + float f; + vec4 pos; + mat4 m; +} blk2[]; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + blk[iid].f = 11.0; + blk[iid+1].fArr[gid] = blk[iid].f; + blk[iid/2].pos.yzx = vec3(14.0, 15.0, 13.0); + blk[iid*2].posArr[1].yzw = blk[iid/2].pos; + blk[iid/4].m[2].wzyx = vec4(13.0, 14.0, 15.0, 16.0); + blk[iid].mArr[0][1][1] = blk[iid/4].m[2].w; + blk[iid*4].mArr[1][gid] = vec3(17.0, 18.0, 19.0); + + BARRIER(); + + blk2[iid].f = blk2[iid-1].f + 20.0; + blk2[iid].pos = vec4(21.0, 22.0, 23.0, 24.0); + blk2[iid+1].m[gid] = blk2[iid].pos; + blk2[iid+1].m[gid][2] = 29.0; + blk2[iid+2].m[3] = blk2[iid+1].m[gid]; + + BARRIER(); +} diff --git a/Test/spv.ext.meshTaskShader.task b/Test/spv.ext.meshTaskShader.task new file mode 100644 index 000000000..074fb23f9 --- /dev/null +++ b/Test/spv.ext.meshTaskShader.task @@ -0,0 +1,51 @@ +#version 450 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32) in; + +// test use of shared memory in task shaders: +layout(binding=0) writeonly uniform image2D uni_image; +uniform block0 { + uint uni_value; +}; +shared vec4 mem[10]; + +// use of storage qualifier "taskPayloadSharedEXT" in task shaders +struct Task { + vec2 dummy; + vec2 submesh[3]; +}; +taskPayloadSharedEXT Task mytask; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + // 1. shared memory load and stores + for (uint i = 0; i < 10; ++i) { + mem[i] = vec4(i + uni_value); + } + imageStore(uni_image, ivec2(iid), mem[gid]); + imageStore(uni_image, ivec2(iid), mem[gid+1]); + + BARRIER(); + + // 2. task memory stores + + mytask.dummy = vec2(30.0, 31.0); + mytask.submesh[0] = vec2(32.0, 33.0); + mytask.submesh[1] = vec2(34.0, 35.0); + mytask.submesh[2] = mytask.submesh[gid%2]; + + BARRIER(); + + // 3. emit task count under uniform control flow + EmitMeshTasksEXT(3U, 1U, 1U); + +} diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 0e691a1f7..ead005c32 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -192,10 +192,10 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) return EShLangMiss; case GLSLANG_STAGE_CALLABLE_NV: return EShLangCallable; - case GLSLANG_STAGE_TASK_NV: - return EShLangTaskNV; - case GLSLANG_STAGE_MESH_NV: - return EShLangMeshNV; + case GLSLANG_STAGE_TASK: + return EShLangTask; + case GLSLANG_STAGE_MESH: + return EShLangMesh; default: break; } diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 6a429fd44..156d98b9a 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -105,6 +105,8 @@ enum TStorageQualifier { EvqCallableData, EvqCallableDataIn, + EvqtaskPayloadSharedEXT, + // parameters EvqIn, // also, for 'in' in the grammar before we know if it's a pipeline input or an 'in' parameter EvqOut, // also, for 'out' in the grammar before we know if it's a pipeline output or an 'out' parameter @@ -287,6 +289,11 @@ enum TBuiltInVariable { EbvLayerPerViewNV, EbvMeshViewCountNV, EbvMeshViewIndicesNV, + //GL_EXT_mesh_shader + EbvPrimitivePointIndicesEXT, + EbvPrimitiveLineIndicesEXT, + EbvPrimitiveTriangleIndicesEXT, + EbvCullPrimitiveEXT, // sm builtins EbvWarpsPerSM, @@ -360,6 +367,7 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqHitAttr: return "hitAttributeNV"; break; case EvqCallableData: return "callableDataNV"; break; case EvqCallableDataIn: return "callableDataInNV"; break; + case EvqtaskPayloadSharedEXT: return "taskPayloadSharedEXT"; break; default: return "unknown qualifier"; } } @@ -496,6 +504,11 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvLayerPerViewNV: return "LayerPerViewNV"; case EbvMeshViewCountNV: return "MeshViewCountNV"; case EbvMeshViewIndicesNV: return "MeshViewIndicesNV"; + // GL_EXT_mesh_shader + case EbvPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT"; + case EbvPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; + case EbvPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; + case EbvCullPrimitiveEXT: return "CullPrimitiveEXT"; case EbvWarpsPerSM: return "WarpsPerSMNV"; case EbvSMCount: return "SMCountNV"; diff --git a/glslang/Include/ResourceLimits.h b/glslang/Include/ResourceLimits.h index b670cf163..b36c8d627 100644 --- a/glslang/Include/ResourceLimits.h +++ b/glslang/Include/ResourceLimits.h @@ -142,6 +142,15 @@ struct TBuiltInResource { int maxTaskWorkGroupSizeY_NV; int maxTaskWorkGroupSizeZ_NV; int maxMeshViewCountNV; + int maxMeshOutputVerticesEXT; + int maxMeshOutputPrimitivesEXT; + int maxMeshWorkGroupSizeX_EXT; + int maxMeshWorkGroupSizeY_EXT; + int maxMeshWorkGroupSizeZ_EXT; + int maxTaskWorkGroupSizeX_EXT; + int maxTaskWorkGroupSizeY_EXT; + int maxTaskWorkGroupSizeZ_EXT; + int maxMeshViewCountEXT; int maxDualSourceDrawBuffersEXT; TLimits limits; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 93909a30b..05f90ac21 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -833,7 +833,7 @@ public: } storage = EvqUniform; break; - case EbsStorageBuffer : + case EbsStorageBuffer : storage = EvqBuffer; break; #ifndef GLSLANG_WEB @@ -856,6 +856,7 @@ public: bool isPerPrimitive() const { return perPrimitiveNV; } bool isPerView() const { return perViewNV; } bool isTaskMemory() const { return perTaskNV; } + bool isTaskPayload() const { return storage == EvqtaskPayloadSharedEXT; } bool isAnyPayload() const { return storage == EvqPayload || storage == EvqPayloadIn; } @@ -874,8 +875,8 @@ public: case EShLangTessEvaluation: return ! patch && isPipeInput(); case EShLangFragment: - return (pervertexNV || pervertexEXT) && isPipeInput(); - case EShLangMeshNV: + return pervertexNV && isPipeInput(); + case EShLangMesh: return ! perTaskNV && isPipeOutput(); default: @@ -2543,7 +2544,7 @@ public: void setStruct(TTypeList* s) { assert(isStruct()); structure = s; } TTypeList* getWritableStruct() const { assert(isStruct()); return structure; } // This should only be used when known to not be sharing with other threads void setBasicType(const TBasicType& t) { basicType = t; } - + int computeNumComponents() const { int components = 0; diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 9e5909ce8..41347c27c 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -148,6 +148,15 @@ typedef struct glslang_resource_s { int max_task_work_group_size_y_nv; int max_task_work_group_size_z_nv; int max_mesh_view_count_nv; + int max_mesh_output_vertices_ext; + int max_mesh_output_primitives_ext; + int max_mesh_work_group_size_x_ext; + int max_mesh_work_group_size_y_ext; + int max_mesh_work_group_size_z_ext; + int max_task_work_group_size_x_ext; + int max_task_work_group_size_y_ext; + int max_task_work_group_size_z_ext; + int max_mesh_view_count_ext; int maxDualSourceDrawBuffersEXT; glslang_limits_t limits; diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index dc9009f30..cd24b9472 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -49,8 +49,10 @@ typedef enum { GLSLANG_STAGE_CLOSESTHIT_NV, GLSLANG_STAGE_MISS_NV, GLSLANG_STAGE_CALLABLE_NV, - GLSLANG_STAGE_TASK_NV, - GLSLANG_STAGE_MESH_NV, + GLSLANG_STAGE_TASK, + GLSLANG_STAGE_TASK_NV = GLSLANG_STAGE_TASK, + GLSLANG_STAGE_MESH, + GLSLANG_STAGE_MESH_NV = GLSLANG_STAGE_MESH, LAST_ELEMENT_MARKER(GLSLANG_STAGE_COUNT), } glslang_stage_t; // would be better as stage, but this is ancient now @@ -68,8 +70,10 @@ typedef enum { GLSLANG_STAGE_CLOSESTHIT_NV_MASK = (1 << GLSLANG_STAGE_CLOSESTHIT_NV), GLSLANG_STAGE_MISS_NV_MASK = (1 << GLSLANG_STAGE_MISS_NV), GLSLANG_STAGE_CALLABLE_NV_MASK = (1 << GLSLANG_STAGE_CALLABLE_NV), - GLSLANG_STAGE_TASK_NV_MASK = (1 << GLSLANG_STAGE_TASK_NV), - GLSLANG_STAGE_MESH_NV_MASK = (1 << GLSLANG_STAGE_MESH_NV), + GLSLANG_STAGE_TASK_MASK = (1 << GLSLANG_STAGE_TASK), + GLSLANG_STAGE_TASK_NV_MASK = GLSLANG_STAGE_TASK_MASK, + GLSLANG_STAGE_MESH_MASK = (1 << GLSLANG_STAGE_MESH), + GLSLANG_STAGE_MESH_NV_MASK = GLSLANG_STAGE_MESH_MASK, LAST_ELEMENT_MARKER(GLSLANG_STAGE_MASK_COUNT), } glslang_stage_mask_t; diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index a64ed6837..0c6f9fd2e 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -934,6 +934,8 @@ enum TOperator { EOpExecuteCallableNV, EOpExecuteCallableKHR, EOpWritePackedPrimitiveIndices4x8NV, + EOpEmitMeshTasksEXT, + EOpSetMeshOutputsEXT, // // GL_EXT_ray_query operations diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index ff3db7cd0..35681a5f5 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -2268,11 +2268,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n" ); - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "void subgroupMemoryBarrierShared();" "\n" ); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "void subgroupMemoryBarrierShared();" "\n" ); @@ -4298,10 +4298,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void barrier();" ); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "void barrier();" ); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "void barrier();" ); } @@ -4326,11 +4326,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append("void memoryBarrierImage();"); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" ); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" ); @@ -4655,10 +4655,21 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // Builtins for GL_NV_mesh_shader if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "void writePackedPrimitiveIndices4x8NV(uint, uint);" "\n"); } + // Builtins for GL_EXT_mesh_shader + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { + // Builtins for GL_EXT_mesh_shader + stageBuiltins[EShLangTask].append( + "void EmitMeshTasksEXT(uint, uint, uint);" + "\n"); + + stageBuiltins[EShLangMesh].append( + "void SetMeshOutputsEXT(uint, uint);" + "\n"); + } #endif // !GLSLANG_ANGLE #endif // !GLSLANG_WEB @@ -4855,7 +4866,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { // per-vertex attributes - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "out gl_MeshPerVertexNV {" "vec4 gl_Position;" "float gl_PointSize;" @@ -4868,7 +4879,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV ); // per-primitive attributes - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "perprimitiveNV out gl_MeshPerPrimitiveNV {" "int gl_PrimitiveID;" "int gl_Layer;" @@ -4879,7 +4890,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "} gl_MeshPrimitivesNV[];" ); - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "out uint gl_PrimitiveCountNV;" "out uint gl_PrimitiveIndicesNV[];" @@ -4893,10 +4904,38 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in highp uvec3 gl_GlobalInvocationID;" "in highp uint gl_LocalInvocationIndex;" - "\n"); - stageBuiltins[EShLangTaskNV].append( + // GL_EXT_mesh_shader + stageBuiltins[EShLangMesh].append( + "out uint gl_PrimitivePointIndicesEXT[];" + "out uvec2 gl_PrimitiveLineIndicesEXT[];" + "out uvec3 gl_PrimitiveTriangleIndicesEXT[];" + "in highp uvec3 gl_NumWorkGroups;" + "\n"); + + // per-vertex attributes + stageBuiltins[EShLangMesh].append( + "out gl_MeshPerVertexEXT {" + "vec4 gl_Position;" + "float gl_PointSize;" + "float gl_ClipDistance[];" + "float gl_CullDistance[];" + "} gl_MeshVerticesEXT[];" + ); + + // per-primitive attributes + stageBuiltins[EShLangMesh].append( + "perprimitiveEXT out gl_MeshPerPrimitiveEXT {" + "int gl_PrimitiveID;" + "int gl_Layer;" + "int gl_ViewportIndex;" + "bool gl_CullPrimitiveEXT;" + "int gl_PrimitiveShadingRateEXT;" + "} gl_MeshPrimitivesEXT[];" + ); + + stageBuiltins[EShLangTask].append( "out uint gl_TaskCountNV;" "const highp uvec3 gl_WorkGroupSize = uvec3(1,1,1);" @@ -4909,27 +4948,28 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint gl_MeshViewCountNV;" "in uint gl_MeshViewIndicesNV[4];" - + "in highp uvec3 gl_NumWorkGroups;" "\n"); } if (profile != EEsProfile && version >= 450) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "in int gl_DrawIDARB;" // GL_ARB_shader_draw_parameters + "in int gl_ViewIndex;" // GL_EXT_multiview "\n"); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "in int gl_DrawIDARB;" // GL_ARB_shader_draw_parameters "\n"); if (version >= 460) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "in int gl_DrawID;" "\n"); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "in int gl_DrawID;" "\n"); } @@ -5704,8 +5744,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangGeometry] .append(ballotDecls); stageBuiltins[EShLangCompute] .append(ballotDecls); stageBuiltins[EShLangFragment] .append(fragmentBallotDecls); - stageBuiltins[EShLangMeshNV] .append(ballotDecls); - stageBuiltins[EShLangTaskNV] .append(ballotDecls); + stageBuiltins[EShLangMesh] .append(ballotDecls); + stageBuiltins[EShLangTask] .append(ballotDecls); stageBuiltins[EShLangRayGen] .append(rtBallotDecls); stageBuiltins[EShLangIntersect] .append(rtBallotDecls); // No volatile qualifier on these builtins in any-hit @@ -5773,10 +5813,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangCompute] .append(subgroupDecls); stageBuiltins[EShLangCompute] .append(computeSubgroupDecls); stageBuiltins[EShLangFragment] .append(fragmentSubgroupDecls); - stageBuiltins[EShLangMeshNV] .append(subgroupDecls); - stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls); - stageBuiltins[EShLangTaskNV] .append(subgroupDecls); - stageBuiltins[EShLangTaskNV] .append(computeSubgroupDecls); + stageBuiltins[EShLangMesh] .append(subgroupDecls); + stageBuiltins[EShLangMesh] .append(computeSubgroupDecls); + stageBuiltins[EShLangTask] .append(subgroupDecls); + stageBuiltins[EShLangTask] .append(computeSubgroupDecls); stageBuiltins[EShLangRayGen] .append(rtSubgroupDecls); stageBuiltins[EShLangIntersect] .append(rtSubgroupDecls); // No volatile qualifier on these builtins in any-hit @@ -8883,7 +8923,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } break; - case EShLangMeshNV: + case EShLangMesh: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { // per-vertex builtins symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_Position", 1, &E_GL_NV_mesh_shader); @@ -8927,12 +8967,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_PrimitiveIndicesNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshViewCountNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshViewIndicesNV", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader); - + if (profile != EEsProfile) { + symbolTable.setVariableExtensions("gl_WorkGroupSize", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_WorkGroupID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_GlobalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationIndex", Num_AEP_mesh_shader, AEP_mesh_shader); + } else { + symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader); + } BuiltInVariable("gl_PrimitiveCountNV", EbvPrimitiveCountNV, symbolTable); BuiltInVariable("gl_PrimitiveIndicesNV", EbvPrimitiveIndicesNV, symbolTable); BuiltInVariable("gl_MeshViewCountNV", EbvMeshViewCountNV, symbolTable); @@ -8950,12 +8997,54 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_MaxMeshViewCountNV", 1, &E_GL_NV_mesh_shader); // builtin functions - symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader); + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("barrier", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", Num_AEP_mesh_shader, AEP_mesh_shader); + } else { + symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader); + } + symbolTable.setFunctionExtensions("writePackedPrimitiveIndices4x8NV", 1, &E_GL_NV_mesh_shader); } if (profile != EEsProfile && version >= 450) { + // GL_EXT_Mesh_shader + symbolTable.setVariableExtensions("gl_PrimitivePointIndicesEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_PrimitiveLineIndicesEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_PrimitiveTriangleIndicesEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_EXT_mesh_shader); + + BuiltInVariable("gl_PrimitivePointIndicesEXT", EbvPrimitivePointIndicesEXT, symbolTable); + BuiltInVariable("gl_PrimitiveLineIndicesEXT", EbvPrimitiveLineIndicesEXT, symbolTable); + BuiltInVariable("gl_PrimitiveTriangleIndicesEXT", EbvPrimitiveTriangleIndicesEXT, symbolTable); + BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable); + + symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_Position", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_PointSize", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_ClipDistance", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_CullDistance", 1, &E_GL_EXT_mesh_shader); + + BuiltInVariable("gl_MeshVerticesEXT", "gl_Position", EbvPosition, symbolTable); + BuiltInVariable("gl_MeshVerticesEXT", "gl_PointSize", EbvPointSize, symbolTable); + BuiltInVariable("gl_MeshVerticesEXT", "gl_ClipDistance", EbvClipDistance, symbolTable); + BuiltInVariable("gl_MeshVerticesEXT", "gl_CullDistance", EbvCullDistance, symbolTable); + + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveID", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_Layer", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_ViewportIndex", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_CullPrimitiveEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_mesh_shader); + + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_PrimitiveID", EbvPrimitiveId, symbolTable); + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_Layer", EbvLayer, symbolTable); + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_ViewportIndex", EbvViewportIndex, symbolTable); + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_CullPrimitiveEXT", EbvCullPrimitiveEXT, symbolTable); + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", EbvPrimitiveShadingRateKHR, symbolTable); + + symbolTable.setFunctionExtensions("SetMeshOutputsEXT", 1, &E_GL_EXT_mesh_shader); + // GL_EXT_device_group symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); @@ -8966,6 +9055,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if (version >= 460) { BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable); } + // GL_EXT_multiview + BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); + symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); @@ -9035,16 +9127,24 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } break; - case EShLangTaskNV: + case EShLangTask: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.setVariableExtensions("gl_TaskCountNV", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshViewCountNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshViewIndicesNV", 1, &E_GL_NV_mesh_shader); + if (profile != EEsProfile) { + symbolTable.setVariableExtensions("gl_WorkGroupSize", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_WorkGroupID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_GlobalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationIndex", Num_AEP_mesh_shader, AEP_mesh_shader); + } else { + symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader); + } BuiltInVariable("gl_TaskCountNV", EbvTaskCountNV, symbolTable); BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable); @@ -9058,12 +9158,23 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_MaxTaskWorkGroupSizeNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MaxMeshViewCountNV", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader); + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("barrier", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", Num_AEP_mesh_shader, AEP_mesh_shader); + } else { + symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader); + } } if (profile != EEsProfile && version >= 450) { + // GL_EXT_mesh_shader + symbolTable.setFunctionExtensions("EmitMeshTasksEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_EXT_mesh_shader); + BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable); + // GL_EXT_device_group symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); @@ -9687,17 +9798,27 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); } break; - case EShLangMeshNV: + case EShLangMesh: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.relateToOperator("writePackedPrimitiveIndices4x8NV", EOpWritePackedPrimitiveIndices4x8NV); + symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); + symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); + symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); } - // fall through - case EShLangTaskNV: + + if (profile != EEsProfile && version >= 450) { + symbolTable.relateToOperator("SetMeshOutputsEXT", EOpSetMeshOutputsEXT); + } + break; + case EShLangTask: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); } + if (profile != EEsProfile && version >= 450) { + symbolTable.relateToOperator("EmitMeshTasksEXT", EOpEmitMeshTasksEXT); + } break; default: diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index e6e3db8bc..e2ac43ca1 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -502,6 +502,16 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb error(loc, "cannot be used (maybe an instance name is needed)", string->c_str(), ""); variable = nullptr; } + + if (language == EShLangMesh && variable) { + TLayoutGeometry primitiveType = intermediate.getOutputPrimitive(); + if ((variable->getMangledName() == "gl_PrimitiveTriangleIndicesEXT" && primitiveType != ElgTriangles) || + (variable->getMangledName() == "gl_PrimitiveLineIndicesEXT" && primitiveType != ElgLines) || + (variable->getMangledName() == "gl_PrimitivePointIndicesEXT" && primitiveType != ElgPoints)) { + error(loc, "cannot be used (ouput primitive type mismatch)", string->c_str(), ""); + variable = nullptr; + } + } } else { if (symbol) error(loc, "variable name expected", string->c_str(), ""); @@ -717,7 +727,7 @@ bool TParseContext::isIoResizeArray(const TType& type) const ! type.getQualifier().patch) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) || - (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && + (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } @@ -794,7 +804,7 @@ void TParseContext::checkIoArraysConsistency(const TSourceLoc &loc, bool tailOnl // As I/O array sizes don't change, fetch requiredSize only once, // except for mesh shaders which could have different I/O array sizes based on type qualifiers. - if (firstIteration || (language == EShLangMeshNV)) { + if (firstIteration || (language == EShLangMesh)) { requiredSize = getIoArrayImplicitSize(type.getQualifier(), &featureString); if (requiredSize == 0) break; @@ -823,10 +833,11 @@ int TParseContext::getIoArrayImplicitSize(const TQualifier &qualifier, TString * // Number of vertices for Fragment shader is always three. expectedSize = 3; str = "vertices"; - } else if (language == EShLangMeshNV) { + } else if (language == EShLangMesh) { unsigned int maxPrimitives = intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0; - if (qualifier.builtIn == EbvPrimitiveIndicesNV) { + if (qualifier.builtIn == EbvPrimitiveIndicesNV || qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT || + qualifier.builtIn == EbvPrimitiveLineIndicesEXT || qualifier.builtIn == EbvPrimitivePointIndicesEXT) { expectedSize = maxPrimitives * TQualifier::mapGeometryToSize(intermediate.getOutputPrimitive()); str = "max_primitives*"; str += TQualifier::getGeometryString(intermediate.getOutputPrimitive()); @@ -858,7 +869,7 @@ void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredS if (type.getOuterArraySize() > requiredSize) error(loc, " cannot be greater than 3 for pervertexEXT", feature, name.c_str()); } - else if (language == EShLangMeshNV) + else if (language == EShLangMesh) error(loc, "inconsistent output array size of", feature, name.c_str()); else assert(0); @@ -2000,18 +2011,18 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& break; } - if ((semantics & gl_SemanticsAcquire) && + if ((semantics & gl_SemanticsAcquire) && (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore)) { error(loc, "gl_SemanticsAcquire must not be used with (image) atomic store", fnCandidate.getName().c_str(), ""); } - if ((semantics & gl_SemanticsRelease) && + if ((semantics & gl_SemanticsRelease) && (callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad)) { error(loc, "gl_SemanticsRelease must not be used with (image) atomic load", fnCandidate.getName().c_str(), ""); } - if ((semantics & gl_SemanticsAcquireRelease) && - (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore || + if ((semantics & gl_SemanticsAcquireRelease) && + (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore || callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad)) { error(loc, "gl_SemanticsAcquireRelease must not be used with (image) atomic load/store", fnCandidate.getName().c_str(), ""); @@ -2462,7 +2473,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true , true); const TType* refType = (base->getType().isReference()) ? base->getType().getReferentType() : nullptr; const TQualifier& qualifier = (refType != nullptr) ? refType->getQualifier() : base->getType().getQualifier(); - if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer) + if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer && qualifier.storage != EvqtaskPayloadSharedEXT) error(loc,"Atomic memory function can only be used for shader storage block member or shared variable.", fnCandidate.getName().c_str(), ""); @@ -2560,7 +2571,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } if (profile != EEsProfile && version < 450) { - if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat && + if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat && (*argp)[0]->getAsTyped()->getBasicType() != EbtDouble && (*argp)[1]->getAsTyped()->getBasicType() != EbtFloat && (*argp)[1]->getAsTyped()->getBasicType() != EbtDouble && @@ -2995,6 +3006,10 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt message = "can't modify EvqFragStencil if using early_fragment_tests"; break; + case EvqtaskPayloadSharedEXT: + if (language == EShLangMesh) + message = "can't modify variable with storage qualifier taskPayloadSharedEXT in mesh shaders"; + break; default: break; } @@ -3033,7 +3048,7 @@ void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TInt if (symNode && symNode->getQualifier().isExplicitInterpolation()) error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str()); - // local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned. + // local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned. if(node->getQualifier().builtIn == EbvWorkGroupSize && !(intermediate.isLocalSizeSet() || intermediate.isLocalSizeSpecialized())) error(loc, "can't read from gl_WorkGroupSize before a fixed workgroup size has been declared", op, ""); @@ -3831,6 +3846,9 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (qualifier.isPatch() && qualifier.isInterpolation()) error(loc, "cannot use interpolation qualifiers with patch", "patch", ""); + if (qualifier.isTaskPayload() && publicType.basicType == EbtBlock) + error(loc, "taskPayloadSharedEXT variables should not be declared as interface blocks", "taskPayloadSharedEXT", ""); + if (qualifier.isTaskMemory() && publicType.basicType != EbtBlock) error(loc, "taskNV variables can be declared only as blocks", "taskNV", ""); @@ -3988,7 +4006,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons (src.workgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || (src.subgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.shadercallcoherent)) || (src.shadercallcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)))) { - error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed", + error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed", GetPrecisionQualifierString(src.precision), ""); } #endif @@ -4346,10 +4364,10 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) return; break; - case EShLangMeshNV: + case EShLangMesh: if (qualifier.storage == EvqVaryingOut) if ((isEsProfile() && version >= 320) || - extensionTurnedOn(E_GL_NV_mesh_shader)) + extensionsTurnedOn(Num_AEP_mesh_shader, AEP_mesh_shader)) return; break; default: @@ -4633,6 +4651,9 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS identifier == "gl_SampleMask" || identifier == "gl_Layer" || identifier == "gl_PrimitiveIndicesNV" || + identifier == "gl_PrimitivePointIndicesEXT" || + identifier == "gl_PrimitiveLineIndicesEXT" || + identifier == "gl_PrimitiveTriangleIndicesEXT" || identifier == "gl_TexCoord") { // Find the existing symbol, if any. @@ -4771,7 +4792,8 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment" && - blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV") { + blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV" && + blockName != "gl_MeshPerVertexEXT" && blockName != "gl_MeshPerPrimitiveEXT") { error(loc, "cannot redeclare block: ", "block declaration", blockName.c_str()); return; } @@ -5340,11 +5362,11 @@ void TParseContext::finish() if (!isEsProfile() && version < 430) requireExtensions(getCurrentLoc(), 1, &E_GL_ARB_compute_shader, "compute shaders"); break; - case EShLangTaskNV: - requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "task shaders"); + case EShLangTask: + requireExtensions(getCurrentLoc(), Num_AEP_mesh_shader, AEP_mesh_shader, "task shaders"); break; - case EShLangMeshNV: - requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "mesh shaders"); + case EShLangMesh: + requireExtensions(getCurrentLoc(), Num_AEP_mesh_shader, AEP_mesh_shader, "mesh shaders"); break; default: break; @@ -5454,12 +5476,12 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi intermediate.setUsePhysicalStorageBuffer(); return; } - if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMeshNV) { + if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMesh) { if (id == TQualifier::getGeometryString(ElgTriangles)) { publicType.shaderQualifiers.geometry = ElgTriangles; return; } - if (language == EShLangGeometry || language == EShLangMeshNV) { + if (language == EShLangGeometry || language == EShLangMesh) { if (id == TQualifier::getGeometryString(ElgPoints)) { publicType.shaderQualifiers.geometry = ElgPoints; return; @@ -5737,7 +5759,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } else if (id == "location") { profileRequires(loc, EEsProfile, 300, nullptr, "location"); - const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; + const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; // GL_ARB_explicit_uniform_location requires 330 or GL_ARB_explicit_attrib_location we do not need to add it here profileRequires(loc, ~EEsProfile, 330, 2, exts, "location"); if ((unsigned int)value >= TQualifier::layoutLocationEnd) @@ -5947,9 +5969,9 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } break; - case EShLangMeshNV: + case EShLangMesh: if (id == "max_vertices") { - requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "max_vertices"); + requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_vertices"); publicType.shaderQualifiers.vertices = value; if (value > resources.maxMeshOutputVerticesNV) error(loc, "too large, must be less than gl_MaxMeshOutputVerticesNV", "max_vertices", ""); @@ -5958,7 +5980,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } if (id == "max_primitives") { - requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "max_primitives"); + requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_primitives"); publicType.shaderQualifiers.primitives = value; if (value > resources.maxMeshOutputPrimitivesNV) error(loc, "too large, must be less than gl_MaxMeshOutputPrimitivesNV", "max_primitives", ""); @@ -5968,14 +5990,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } // Fall through - case EShLangTaskNV: + case EShLangTask: // Fall through #endif case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { #ifndef GLSLANG_WEB - if (language == EShLangMeshNV || language == EShLangTaskNV) { - requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize"); + if (language == EShLangMesh || language == EShLangTask) { + requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "gl_WorkGroupSize"); } else { profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); @@ -6251,6 +6273,9 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) if (type.getBasicType() == EbtBlock) error(loc, "cannot apply to uniform or buffer block", "location", ""); break; + case EvqtaskPayloadSharedEXT: + error(loc, "cannot apply to taskPayloadSharedEXT", "location", ""); + break; #ifndef GLSLANG_WEB case EvqPayload: case EvqPayloadIn: @@ -6612,7 +6637,7 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua error(loc, message, "local_size id", ""); } if (shaderQualifiers.vertices != TQualifier::layoutNotSet) { - if (language == EShLangGeometry || language == EShLangMeshNV) + if (language == EShLangGeometry || language == EShLangMesh) error(loc, message, "max_vertices", ""); else if (language == EShLangTessControl) error(loc, message, "vertices", ""); @@ -6624,7 +6649,7 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua if (shaderQualifiers.postDepthCoverage) error(loc, message, "post_depth_coverage", ""); if (shaderQualifiers.primitives != TQualifier::layoutNotSet) { - if (language == EShLangMeshNV) + if (language == EShLangMesh) error(loc, message, "max_primitives", ""); else assert(0); @@ -7270,6 +7295,8 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden requireInt8Arithmetic(loc, "qualifier", "(u)int8 types can only be in uniform block or buffer storage"); } + if (type.getQualifier().storage == EvqtaskPayloadSharedEXT) + intermediate.addTaskPayloadEXTCount(); if (type.getQualifier().storage == EvqShared && type.containsCoopMat()) error(loc, "qualifier", "Cooperative matrix types must not be used in shared memory", ""); @@ -8236,6 +8263,8 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con memberQualifier.perViewNV = currentBlockQualifier.perViewNV; if (currentBlockQualifier.perTaskNV) memberQualifier.perTaskNV = currentBlockQualifier.perTaskNV; + if (currentBlockQualifier.storage == EvqtaskPayloadSharedEXT) + memberQualifier.storage = EvqtaskPayloadSharedEXT; if (memberQualifier.storage == EvqSpirvStorageClass) error(memberLoc, "member cannot have a spirv_storage_class qualifier", memberType.getFieldName().c_str(), ""); if (memberQualifier.hasSprivDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty()) @@ -8536,23 +8565,23 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q // It is a compile-time error to have an input block in a vertex shader or an output block in a fragment shader // "Compute shaders do not permit user-defined input variables..." requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask| - EShLangFragmentMask|EShLangMeshNVMask), "input block"); + EShLangFragmentMask|EShLangMeshMask), "input block"); if (language == EShLangFragment) { profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block"); - } else if (language == EShLangMeshNV && ! qualifier.isTaskMemory()) { + } else if (language == EShLangMesh && ! qualifier.isTaskMemory()) { error(loc, "input blocks cannot be used in a mesh shader", "out", ""); } break; case EvqVaryingOut: profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "output block"); requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask| - EShLangGeometryMask|EShLangMeshNVMask|EShLangTaskNVMask), "output block"); + EShLangGeometryMask|EShLangMeshMask|EShLangTaskMask), "output block"); // ES 310 can have a block before shader_io is turned on, so skip this test for built-ins if (language == EShLangVertex && ! parsingBuiltins) { profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block"); - } else if (language == EShLangMeshNV && qualifier.isTaskMemory()) { + } else if (language == EShLangMesh && qualifier.isTaskMemory()) { error(loc, "can only use on input blocks in mesh shader", "taskNV", ""); - } else if (language == EShLangTaskNV && ! qualifier.isTaskMemory()) { + } else if (language == EShLangTask && ! qualifier.isTaskMemory()) { error(loc, "output blocks cannot be used in a task shader", "out", ""); } break; @@ -8966,7 +8995,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con { #ifndef GLSLANG_WEB if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { - assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMeshNV); + assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMesh); const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; if (publicType.qualifier.storage != EvqVaryingOut) @@ -8978,7 +9007,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con checkIoArraysConsistency(loc); } if (publicType.shaderQualifiers.primitives != TQualifier::layoutNotSet) { - assert(language == EShLangMeshNV); + assert(language == EShLangMesh); const char* id = "max_primitives"; if (publicType.qualifier.storage != EvqVaryingOut) @@ -9002,7 +9031,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con case ElgTrianglesAdjacency: case ElgQuads: case ElgIsolines: - if (language == EShLangMeshNV) { + if (language == EShLangMesh) { error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } @@ -9019,7 +9048,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con switch (publicType.shaderQualifiers.geometry) { case ElgLines: case ElgTriangles: - if (language != EShLangMeshNV) { + if (language != EShLangMesh) { error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } @@ -9075,24 +9104,56 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); } #ifndef GLSLANG_WEB - else if (language == EShLangMeshNV) { + else if (language == EShLangMesh) { switch (i) { - case 0: max = resources.maxMeshWorkGroupSizeX_NV; break; - case 1: max = resources.maxMeshWorkGroupSizeY_NV; break; - case 2: max = resources.maxMeshWorkGroupSizeZ_NV; break; + case 0: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxMeshWorkGroupSizeX_EXT : + resources.maxMeshWorkGroupSizeX_NV; + break; + case 1: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxMeshWorkGroupSizeY_EXT : + resources.maxMeshWorkGroupSizeY_NV ; + break; + case 2: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxMeshWorkGroupSizeZ_EXT : + resources.maxMeshWorkGroupSizeZ_NV ; + break; default: break; } - if (intermediate.getLocalSize(i) > (unsigned int)max) - error(loc, "too large; see gl_MaxMeshWorkGroupSizeNV", "local_size", ""); - } else if (language == EShLangTaskNV) { + if (intermediate.getLocalSize(i) > (unsigned int)max) { + TString maxsErrtring = "too large, see "; + maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? + "gl_MaxMeshWorkGroupSizeEXT" : "gl_MaxMeshWorkGroupSizeNV"); + error(loc, maxsErrtring.c_str(), "local_size", ""); + } + } else if (language == EShLangTask) { switch (i) { - case 0: max = resources.maxTaskWorkGroupSizeX_NV; break; - case 1: max = resources.maxTaskWorkGroupSizeY_NV; break; - case 2: max = resources.maxTaskWorkGroupSizeZ_NV; break; + case 0: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxTaskWorkGroupSizeX_EXT : + resources.maxTaskWorkGroupSizeX_NV; + break; + case 1: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxTaskWorkGroupSizeY_EXT: + resources.maxTaskWorkGroupSizeY_NV; + break; + case 2: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxTaskWorkGroupSizeZ_EXT: + resources.maxTaskWorkGroupSizeZ_NV; + break; default: break; } - if (intermediate.getLocalSize(i) > (unsigned int)max) - error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", ""); + if (intermediate.getLocalSize(i) > (unsigned int)max) { + TString maxsErrtring = "too large, see "; + maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? + "gl_MaxTaskWorkGroupSizeEXT" : "gl_MaxTaskWorkGroupSizeNV"); + error(loc, maxsErrtring.c_str(), "local_size", ""); + } } #endif else { @@ -9181,7 +9242,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "can only apply to 'in'", "derivative_group_linearNV", ""); } // Check mesh out array sizes, once all the necessary out qualifiers are defined. - if ((language == EShLangMeshNV) && + if ((language == EShLangMesh) && (intermediate.getVertices() != TQualifier::layoutNotSet) && (intermediate.getPrimitives() != TQualifier::layoutNotSet) && (intermediate.getOutputPrimitive() != ElgNone)) @@ -9198,7 +9259,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con // Exit early as further checks are not valid return; } -#endif +#endif const TQualifier& qualifier = publicType.qualifier; if (qualifier.isAuxiliary() || @@ -9396,4 +9457,3 @@ const TTypeList* TParseContext::recordStructCopy(TStructRecord& record, const TT } } // end namespace glslang - diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index f53677f92..7f51173eb 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -758,6 +758,8 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV; (*KeywordMap)["perviewNV"] = PERVIEWNV; (*KeywordMap)["taskNV"] = PERTASKNV; + (*KeywordMap)["perprimitiveEXT"] = PERPRIMITIVEEXT; + (*KeywordMap)["taskPayloadSharedEXT"] = TASKPAYLOADWORKGROUPEXT; (*KeywordMap)["fcoopmatNV"] = FCOOPMATNV; (*KeywordMap)["icoopmatNV"] = ICOOPMATNV; @@ -1740,12 +1742,18 @@ int TScanContext::tokenizeIdentifier() case PERPRIMITIVENV: case PERVIEWNV: case PERTASKNV: - if ((!parseContext.isEsProfile() && parseContext.version >= 450) || - (parseContext.isEsProfile() && parseContext.version >= 320) || + if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_NV_mesh_shader)) return keyword; return identifierOrType(); + case PERPRIMITIVEEXT: + case TASKPAYLOADWORKGROUPEXT: + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_mesh_shader)) + return keyword; + return identifierOrType(); + case FCOOPMATNV: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index a5ba40e6d..8acdb189c 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -391,13 +391,13 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS // check for mesh if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMeshNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMesh, source, infoSink, commonTable, symbolTables); // check for task if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTask, source, infoSink, commonTable, symbolTables); #endif // !GLSLANG_ANGLE #endif // !GLSLANG_WEB @@ -650,8 +650,8 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo version = 460; } break; - case EShLangMeshNV: - case EShLangTaskNV: + case EShLangMesh: + case EShLangTask: if ((profile == EEsProfile && version < 320) || (profile != EEsProfile && version < 450)) { correct = false; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index e24d5c545..226e94674 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -166,7 +166,8 @@ void TParseVersions::initializeExtensionBehavior() } extensionData; const extensionData exts[] = { {E_GL_EXT_ray_tracing, EShTargetSpv_1_4}, - {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4} + {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4}, + {E_GL_EXT_mesh_shader, EShTargetSpv_1_4} }; for (size_t ii = 0; ii < sizeof(exts) / sizeof(exts[0]); ii++) { @@ -345,6 +346,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_terminate_invocation] = EBhDisable; extensionBehavior[E_GL_EXT_shared_memory_block] = EBhDisable; extensionBehavior[E_GL_EXT_spirv_intrinsics] = EBhDisable; + extensionBehavior[E_GL_EXT_mesh_shader] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -511,6 +513,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_ray_flags_primitive_culling 1\n" "#define GL_EXT_ray_cull_mask 1\n" "#define GL_EXT_spirv_intrinsics 1\n" + "#define GL_EXT_mesh_shader 1\n" "#define GL_AMD_shader_ballot 1\n" "#define GL_AMD_shader_trinary_minmax 1\n" @@ -641,8 +644,8 @@ void TParseVersions::getPreamble(std::string& preamble) case EShLangClosestHit: preamble += "#define GL_CLOSEST_HIT_SHADER_EXT 1 \n"; break; case EShLangMiss: preamble += "#define GL_MISS_SHADER_EXT 1 \n"; break; case EShLangCallable: preamble += "#define GL_CALLABLE_SHADER_EXT 1 \n"; break; - case EShLangTaskNV: preamble += "#define GL_TASK_SHADER_NV 1 \n"; break; - case EShLangMeshNV: preamble += "#define GL_MESH_SHADER_NV 1 \n"; break; + case EShLangTask: preamble += "#define GL_TASK_SHADER_NV 1 \n"; break; + case EShLangMesh: preamble += "#define GL_MESH_SHADER_NV 1 \n"; break; default: break; } } @@ -668,8 +671,8 @@ const char* StageName(EShLanguage stage) case EShLangClosestHit: return "closest-hit"; case EShLangMiss: return "miss"; case EShLangCallable: return "callable"; - case EShLangMeshNV: return "mesh"; - case EShLangTaskNV: return "task"; + case EShLangMesh: return "mesh"; + case EShLangTask: return "task"; #endif default: return "unknown stage"; } @@ -1060,10 +1063,22 @@ void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * con { // GL_NV_mesh_shader extension is only allowed in task/mesh shaders if (strcmp(extension, "GL_NV_mesh_shader") == 0) { - requireStage(loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask | EShLangFragmentMask), + requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask), "#extension GL_NV_mesh_shader"); profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_NV_mesh_shader"); profileRequires(loc, EEsProfile, 320, 0, "#extension GL_NV_mesh_shader"); + if (extensionTurnedOn(E_GL_EXT_mesh_shader)) { + error(loc, "GL_EXT_mesh_shader is already turned on, and not allowed with", "#extension", extension); + } + } + else if (strcmp(extension, "GL_EXT_mesh_shader") == 0) { + requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask), + "#extension GL_EXT_mesh_shader"); + profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_EXT_mesh_shader"); + profileRequires(loc, EEsProfile, 320, 0, "#extension GL_EXT_mesh_shader"); + if (extensionTurnedOn(E_GL_NV_mesh_shader)) { + error(loc, "GL_NV_mesh_shader is already turned on, and not allowed with", "#extension", extension); + } } } diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 68e70635f..6ab37880f 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -211,6 +211,7 @@ const char* const E_GL_EXT_shared_memory_block = "GL_EXT_shared_mem const char* const E_GL_EXT_subgroup_uniform_control_flow = "GL_EXT_subgroup_uniform_control_flow"; const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intrinsics"; const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_shader_barycentric"; +const char* const E_GL_EXT_mesh_shader = "GL_EXT_mesh_shader"; // Arrays of extensions for the above viewportEXTs duplications @@ -288,7 +289,7 @@ const char* const E_GL_EXT_tessellation_shader = "GL_EXT_tessel const char* const E_GL_EXT_tessellation_point_size = "GL_EXT_tessellation_point_size"; const char* const E_GL_EXT_texture_buffer = "GL_EXT_texture_buffer"; const char* const E_GL_EXT_texture_cube_map_array = "GL_EXT_texture_cube_map_array"; -const char* const E_GL_EXT_shader_integer_mix = "GL_EXT_shader_integer_mix"; +const char* const E_GL_EXT_shader_integer_mix = "GL_EXT_shader_integer_mix"; // OES matching AEP const char* const E_GL_OES_geometry_shader = "GL_OES_geometry_shader"; @@ -349,6 +350,9 @@ const int Num_AEP_texture_buffer = sizeof(AEP_texture_buffer)/sizeof(AEP_texture const char* const AEP_texture_cube_map_array[] = { E_GL_EXT_texture_cube_map_array, E_GL_OES_texture_cube_map_array }; const int Num_AEP_texture_cube_map_array = sizeof(AEP_texture_cube_map_array)/sizeof(AEP_texture_cube_map_array[0]); +const char* const AEP_mesh_shader[] = { E_GL_NV_mesh_shader, E_GL_EXT_mesh_shader }; +const int Num_AEP_mesh_shader = sizeof(AEP_mesh_shader)/sizeof(AEP_mesh_shader[0]); + } // end namespace glslang #endif // _VERSIONS_INCLUDED_ diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 3ab7a3c0a..4fee9fea7 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -315,7 +315,7 @@ GLSLANG_WEB_EXCLUDE_ON %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT -%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV +%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT %token PRECISE GLSLANG_WEB_EXCLUDE_OFF @@ -1301,24 +1301,34 @@ GLSLANG_WEB_EXCLUDE_ON | PERPRIMITIVENV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perprimitiveNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV"); // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. if (parseContext.language == EShLangFragment) parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); $$.init($1.loc); $$.qualifier.perPrimitiveNV = true; } + | PERPRIMITIVEEXT { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "perprimitiveEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT"); + $$.init($1.loc); + $$.qualifier.perPrimitiveNV = true; + } | PERVIEWNV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perviewNV"); - parseContext.requireStage($1.loc, EShLangMeshNV, "perviewNV"); + parseContext.requireStage($1.loc, EShLangMesh, "perviewNV"); $$.init($1.loc); $$.qualifier.perViewNV = true; } | PERTASKNV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "taskNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV"); $$.init($1.loc); $$.qualifier.perTaskNV = true; } @@ -1469,7 +1479,7 @@ storage_qualifier parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); $$.init($1.loc); $$.qualifier.storage = EvqShared; } @@ -1656,6 +1666,13 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); } + | TASKPAYLOADWORKGROUPEXT { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "taskPayloadSharedEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT "); + $$.init($1.loc); + $$.qualifier.storage = EvqtaskPayloadSharedEXT; + } GLSLANG_WEB_EXCLUDE_OFF ; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index d77c83158..b37924f0e 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -315,7 +315,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT -%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV +%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT %token PRECISE @@ -1301,24 +1301,34 @@ interpolation_qualifier | PERPRIMITIVENV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perprimitiveNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV"); // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. if (parseContext.language == EShLangFragment) parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); $$.init($1.loc); $$.qualifier.perPrimitiveNV = true; } + | PERPRIMITIVEEXT { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "perprimitiveEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT"); + $$.init($1.loc); + $$.qualifier.perPrimitiveNV = true; + } | PERVIEWNV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perviewNV"); - parseContext.requireStage($1.loc, EShLangMeshNV, "perviewNV"); + parseContext.requireStage($1.loc, EShLangMesh, "perviewNV"); $$.init($1.loc); $$.qualifier.perViewNV = true; } | PERTASKNV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "taskNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV"); $$.init($1.loc); $$.qualifier.perTaskNV = true; } @@ -1469,7 +1479,7 @@ storage_qualifier parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); $$.init($1.loc); $$.qualifier.storage = EvqShared; } @@ -1656,6 +1666,13 @@ storage_qualifier parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); } + | TASKPAYLOADWORKGROUPEXT { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "taskPayloadSharedEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT "); + $$.init($1.loc); + $$.qualifier.storage = EvqtaskPayloadSharedEXT; + } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 4e4768eaa..29731bf0e 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -576,138 +576,140 @@ enum yysymbol_kind_t YYSYMBOL_PERPRIMITIVENV = 452, /* PERPRIMITIVENV */ YYSYMBOL_PERVIEWNV = 453, /* PERVIEWNV */ YYSYMBOL_PERTASKNV = 454, /* PERTASKNV */ - YYSYMBOL_PRECISE = 455, /* PRECISE */ - YYSYMBOL_YYACCEPT = 456, /* $accept */ - YYSYMBOL_variable_identifier = 457, /* variable_identifier */ - YYSYMBOL_primary_expression = 458, /* primary_expression */ - YYSYMBOL_postfix_expression = 459, /* postfix_expression */ - YYSYMBOL_integer_expression = 460, /* integer_expression */ - YYSYMBOL_function_call = 461, /* function_call */ - YYSYMBOL_function_call_or_method = 462, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 463, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 464, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 465, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 466, /* function_call_header */ - YYSYMBOL_function_identifier = 467, /* function_identifier */ - YYSYMBOL_unary_expression = 468, /* unary_expression */ - YYSYMBOL_unary_operator = 469, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 470, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 471, /* additive_expression */ - YYSYMBOL_shift_expression = 472, /* shift_expression */ - YYSYMBOL_relational_expression = 473, /* relational_expression */ - YYSYMBOL_equality_expression = 474, /* equality_expression */ - YYSYMBOL_and_expression = 475, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 476, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 477, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 478, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 479, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 480, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 481, /* conditional_expression */ - YYSYMBOL_482_1 = 482, /* $@1 */ - YYSYMBOL_assignment_expression = 483, /* assignment_expression */ - YYSYMBOL_assignment_operator = 484, /* assignment_operator */ - YYSYMBOL_expression = 485, /* expression */ - YYSYMBOL_constant_expression = 486, /* constant_expression */ - YYSYMBOL_declaration = 487, /* declaration */ - YYSYMBOL_block_structure = 488, /* block_structure */ - YYSYMBOL_489_2 = 489, /* $@2 */ - YYSYMBOL_identifier_list = 490, /* identifier_list */ - YYSYMBOL_function_prototype = 491, /* function_prototype */ - YYSYMBOL_function_declarator = 492, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 493, /* function_header_with_parameters */ - YYSYMBOL_function_header = 494, /* function_header */ - YYSYMBOL_parameter_declarator = 495, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 496, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 497, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 498, /* init_declarator_list */ - YYSYMBOL_single_declaration = 499, /* single_declaration */ - YYSYMBOL_fully_specified_type = 500, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 501, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 502, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 503, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 504, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 505, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 506, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 507, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 508, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 509, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 510, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 511, /* type_name_list */ - YYSYMBOL_type_specifier = 512, /* type_specifier */ - YYSYMBOL_array_specifier = 513, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 514, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 515, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 516, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 517, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 518, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 519, /* struct_specifier */ - YYSYMBOL_520_3 = 520, /* $@3 */ - YYSYMBOL_521_4 = 521, /* $@4 */ - YYSYMBOL_struct_declaration_list = 522, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 523, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 524, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 525, /* struct_declarator */ - YYSYMBOL_initializer = 526, /* initializer */ - YYSYMBOL_initializer_list = 527, /* initializer_list */ - YYSYMBOL_declaration_statement = 528, /* declaration_statement */ - YYSYMBOL_statement = 529, /* statement */ - YYSYMBOL_simple_statement = 530, /* simple_statement */ - YYSYMBOL_demote_statement = 531, /* demote_statement */ - YYSYMBOL_compound_statement = 532, /* compound_statement */ - YYSYMBOL_533_5 = 533, /* $@5 */ - YYSYMBOL_534_6 = 534, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 535, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 536, /* statement_scoped */ - YYSYMBOL_537_7 = 537, /* $@7 */ - YYSYMBOL_538_8 = 538, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 539, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 540, /* statement_list */ - YYSYMBOL_expression_statement = 541, /* expression_statement */ - YYSYMBOL_selection_statement = 542, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 543, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 544, /* selection_rest_statement */ - YYSYMBOL_condition = 545, /* condition */ - YYSYMBOL_switch_statement = 546, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 547, /* switch_statement_nonattributed */ - YYSYMBOL_548_9 = 548, /* $@9 */ - YYSYMBOL_switch_statement_list = 549, /* switch_statement_list */ - YYSYMBOL_case_label = 550, /* case_label */ - YYSYMBOL_iteration_statement = 551, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 552, /* iteration_statement_nonattributed */ - YYSYMBOL_553_10 = 553, /* $@10 */ - YYSYMBOL_554_11 = 554, /* $@11 */ - YYSYMBOL_555_12 = 555, /* $@12 */ - YYSYMBOL_for_init_statement = 556, /* for_init_statement */ - YYSYMBOL_conditionopt = 557, /* conditionopt */ - YYSYMBOL_for_rest_statement = 558, /* for_rest_statement */ - YYSYMBOL_jump_statement = 559, /* jump_statement */ - YYSYMBOL_translation_unit = 560, /* translation_unit */ - YYSYMBOL_external_declaration = 561, /* external_declaration */ - YYSYMBOL_function_definition = 562, /* function_definition */ - YYSYMBOL_563_13 = 563, /* $@13 */ - YYSYMBOL_attribute = 564, /* attribute */ - YYSYMBOL_attribute_list = 565, /* attribute_list */ - YYSYMBOL_single_attribute = 566, /* single_attribute */ - YYSYMBOL_spirv_requirements_list = 567, /* spirv_requirements_list */ - YYSYMBOL_spirv_requirements_parameter = 568, /* spirv_requirements_parameter */ - YYSYMBOL_spirv_extension_list = 569, /* spirv_extension_list */ - YYSYMBOL_spirv_capability_list = 570, /* spirv_capability_list */ - YYSYMBOL_spirv_execution_mode_qualifier = 571, /* spirv_execution_mode_qualifier */ - YYSYMBOL_spirv_execution_mode_parameter_list = 572, /* spirv_execution_mode_parameter_list */ - YYSYMBOL_spirv_execution_mode_parameter = 573, /* spirv_execution_mode_parameter */ - YYSYMBOL_spirv_execution_mode_id_parameter_list = 574, /* spirv_execution_mode_id_parameter_list */ - YYSYMBOL_spirv_storage_class_qualifier = 575, /* spirv_storage_class_qualifier */ - YYSYMBOL_spirv_decorate_qualifier = 576, /* spirv_decorate_qualifier */ - YYSYMBOL_spirv_decorate_parameter_list = 577, /* spirv_decorate_parameter_list */ - YYSYMBOL_spirv_decorate_parameter = 578, /* spirv_decorate_parameter */ - YYSYMBOL_spirv_decorate_id_parameter_list = 579, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_string_parameter_list = 580, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 581, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 582, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 583, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 584, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 585, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 586 /* spirv_instruction_qualifier_id */ + YYSYMBOL_PERPRIMITIVEEXT = 455, /* PERPRIMITIVEEXT */ + YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 456, /* TASKPAYLOADWORKGROUPEXT */ + YYSYMBOL_PRECISE = 457, /* PRECISE */ + YYSYMBOL_YYACCEPT = 458, /* $accept */ + YYSYMBOL_variable_identifier = 459, /* variable_identifier */ + YYSYMBOL_primary_expression = 460, /* primary_expression */ + YYSYMBOL_postfix_expression = 461, /* postfix_expression */ + YYSYMBOL_integer_expression = 462, /* integer_expression */ + YYSYMBOL_function_call = 463, /* function_call */ + YYSYMBOL_function_call_or_method = 464, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 465, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 466, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 467, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 468, /* function_call_header */ + YYSYMBOL_function_identifier = 469, /* function_identifier */ + YYSYMBOL_unary_expression = 470, /* unary_expression */ + YYSYMBOL_unary_operator = 471, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 472, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 473, /* additive_expression */ + YYSYMBOL_shift_expression = 474, /* shift_expression */ + YYSYMBOL_relational_expression = 475, /* relational_expression */ + YYSYMBOL_equality_expression = 476, /* equality_expression */ + YYSYMBOL_and_expression = 477, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 478, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 479, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 480, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 481, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 482, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 483, /* conditional_expression */ + YYSYMBOL_484_1 = 484, /* $@1 */ + YYSYMBOL_assignment_expression = 485, /* assignment_expression */ + YYSYMBOL_assignment_operator = 486, /* assignment_operator */ + YYSYMBOL_expression = 487, /* expression */ + YYSYMBOL_constant_expression = 488, /* constant_expression */ + YYSYMBOL_declaration = 489, /* declaration */ + YYSYMBOL_block_structure = 490, /* block_structure */ + YYSYMBOL_491_2 = 491, /* $@2 */ + YYSYMBOL_identifier_list = 492, /* identifier_list */ + YYSYMBOL_function_prototype = 493, /* function_prototype */ + YYSYMBOL_function_declarator = 494, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 495, /* function_header_with_parameters */ + YYSYMBOL_function_header = 496, /* function_header */ + YYSYMBOL_parameter_declarator = 497, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 498, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 499, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 500, /* init_declarator_list */ + YYSYMBOL_single_declaration = 501, /* single_declaration */ + YYSYMBOL_fully_specified_type = 502, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 503, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 504, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 505, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 506, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 507, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 508, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 509, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 510, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 511, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 512, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 513, /* type_name_list */ + YYSYMBOL_type_specifier = 514, /* type_specifier */ + YYSYMBOL_array_specifier = 515, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 516, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 517, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 518, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 519, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 520, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 521, /* struct_specifier */ + YYSYMBOL_522_3 = 522, /* $@3 */ + YYSYMBOL_523_4 = 523, /* $@4 */ + YYSYMBOL_struct_declaration_list = 524, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 525, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 526, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 527, /* struct_declarator */ + YYSYMBOL_initializer = 528, /* initializer */ + YYSYMBOL_initializer_list = 529, /* initializer_list */ + YYSYMBOL_declaration_statement = 530, /* declaration_statement */ + YYSYMBOL_statement = 531, /* statement */ + YYSYMBOL_simple_statement = 532, /* simple_statement */ + YYSYMBOL_demote_statement = 533, /* demote_statement */ + YYSYMBOL_compound_statement = 534, /* compound_statement */ + YYSYMBOL_535_5 = 535, /* $@5 */ + YYSYMBOL_536_6 = 536, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 537, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 538, /* statement_scoped */ + YYSYMBOL_539_7 = 539, /* $@7 */ + YYSYMBOL_540_8 = 540, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 541, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 542, /* statement_list */ + YYSYMBOL_expression_statement = 543, /* expression_statement */ + YYSYMBOL_selection_statement = 544, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 545, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 546, /* selection_rest_statement */ + YYSYMBOL_condition = 547, /* condition */ + YYSYMBOL_switch_statement = 548, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 549, /* switch_statement_nonattributed */ + YYSYMBOL_550_9 = 550, /* $@9 */ + YYSYMBOL_switch_statement_list = 551, /* switch_statement_list */ + YYSYMBOL_case_label = 552, /* case_label */ + YYSYMBOL_iteration_statement = 553, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 554, /* iteration_statement_nonattributed */ + YYSYMBOL_555_10 = 555, /* $@10 */ + YYSYMBOL_556_11 = 556, /* $@11 */ + YYSYMBOL_557_12 = 557, /* $@12 */ + YYSYMBOL_for_init_statement = 558, /* for_init_statement */ + YYSYMBOL_conditionopt = 559, /* conditionopt */ + YYSYMBOL_for_rest_statement = 560, /* for_rest_statement */ + YYSYMBOL_jump_statement = 561, /* jump_statement */ + YYSYMBOL_translation_unit = 562, /* translation_unit */ + YYSYMBOL_external_declaration = 563, /* external_declaration */ + YYSYMBOL_function_definition = 564, /* function_definition */ + YYSYMBOL_565_13 = 565, /* $@13 */ + YYSYMBOL_attribute = 566, /* attribute */ + YYSYMBOL_attribute_list = 567, /* attribute_list */ + YYSYMBOL_single_attribute = 568, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 569, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 570, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 571, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 572, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 573, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 574, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 575, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 576, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 577, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 578, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 579, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 580, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 581, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_string_parameter_list = 582, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 583, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 584, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 585, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 586, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 587, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 588 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -729,7 +731,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 733 "MachineIndependent/glslang_tab.cpp" +#line 735 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1033,21 +1035,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 443 +#define YYFINAL 445 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12469 +#define YYLAST 12503 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 456 +#define YYNTOKENS 458 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 131 /* YYNRULES -- Number of rules. */ -#define YYNRULES 684 +#define YYNRULES 686 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 930 +#define YYNSTATES 932 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 710 +#define YYMAXUTOK 712 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1132,7 +1134,7 @@ static const yytype_int16 yytranslate[] = 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 + 455, 456, 457 }; #if YYDEBUG @@ -1153,61 +1155,61 @@ static const yytype_int16 yyrline[] = 982, 988, 994, 1004, 1007, 1014, 1022, 1042, 1065, 1080, 1105, 1116, 1126, 1136, 1146, 1155, 1158, 1162, 1166, 1171, 1179, 1186, 1191, 1196, 1201, 1210, 1220, 1247, 1256, 1263, - 1271, 1278, 1285, 1293, 1301, 1311, 1318, 1329, 1335, 1338, - 1345, 1349, 1353, 1362, 1372, 1375, 1386, 1389, 1392, 1396, - 1400, 1405, 1409, 1412, 1417, 1421, 1426, 1435, 1439, 1444, - 1450, 1456, 1463, 1468, 1476, 1482, 1494, 1508, 1514, 1519, - 1527, 1535, 1543, 1551, 1559, 1567, 1575, 1583, 1590, 1597, - 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1635, 1639, 1643, - 1647, 1653, 1664, 1671, 1674, 1683, 1688, 1698, 1703, 1711, - 1715, 1725, 1728, 1734, 1740, 1747, 1757, 1761, 1765, 1769, - 1774, 1778, 1783, 1788, 1793, 1798, 1803, 1808, 1813, 1818, - 1823, 1829, 1835, 1841, 1846, 1851, 1856, 1861, 1866, 1871, - 1876, 1881, 1886, 1891, 1896, 1902, 1909, 1914, 1919, 1924, - 1929, 1934, 1939, 1944, 1949, 1954, 1959, 1964, 1972, 1980, - 1988, 1994, 2000, 2006, 2012, 2018, 2024, 2030, 2036, 2042, - 2048, 2054, 2060, 2066, 2072, 2078, 2084, 2090, 2096, 2102, - 2108, 2114, 2120, 2126, 2132, 2138, 2144, 2150, 2156, 2162, - 2168, 2174, 2180, 2186, 2194, 2202, 2210, 2218, 2226, 2234, - 2242, 2250, 2258, 2266, 2274, 2282, 2288, 2294, 2300, 2306, - 2312, 2318, 2324, 2330, 2336, 2342, 2348, 2354, 2360, 2366, - 2372, 2378, 2384, 2390, 2396, 2402, 2408, 2414, 2420, 2426, - 2432, 2438, 2444, 2450, 2456, 2462, 2468, 2474, 2480, 2486, - 2492, 2498, 2502, 2506, 2510, 2515, 2521, 2526, 2531, 2536, - 2541, 2546, 2551, 2557, 2562, 2567, 2572, 2577, 2582, 2588, - 2594, 2600, 2606, 2612, 2618, 2624, 2630, 2636, 2642, 2648, - 2654, 2660, 2666, 2671, 2676, 2681, 2686, 2691, 2696, 2702, - 2707, 2712, 2717, 2722, 2727, 2732, 2737, 2743, 2748, 2753, - 2758, 2763, 2768, 2773, 2778, 2783, 2788, 2793, 2798, 2803, - 2808, 2813, 2819, 2824, 2829, 2835, 2841, 2846, 2851, 2856, - 2862, 2867, 2872, 2877, 2883, 2888, 2893, 2898, 2904, 2909, - 2914, 2919, 2925, 2931, 2937, 2943, 2948, 2954, 2960, 2966, - 2971, 2976, 2981, 2986, 2991, 2997, 3002, 3007, 3012, 3018, - 3023, 3028, 3033, 3039, 3044, 3049, 3054, 3060, 3065, 3070, - 3075, 3081, 3086, 3091, 3096, 3102, 3107, 3112, 3117, 3123, - 3128, 3133, 3138, 3144, 3149, 3154, 3159, 3165, 3170, 3175, - 3180, 3186, 3191, 3196, 3201, 3207, 3212, 3217, 3222, 3228, - 3233, 3238, 3243, 3249, 3254, 3259, 3264, 3270, 3275, 3280, - 3285, 3291, 3296, 3301, 3306, 3311, 3316, 3321, 3326, 3331, - 3336, 3341, 3346, 3351, 3356, 3361, 3366, 3371, 3376, 3381, - 3386, 3391, 3396, 3401, 3406, 3411, 3417, 3423, 3429, 3435, - 3442, 3449, 3455, 3461, 3467, 3473, 3479, 3485, 3491, 3496, - 3501, 3517, 3522, 3527, 3535, 3535, 3546, 3546, 3556, 3559, - 3572, 3594, 3621, 3625, 3631, 3636, 3647, 3651, 3657, 3663, - 3674, 3677, 3684, 3688, 3689, 3695, 3696, 3697, 3698, 3699, - 3700, 3701, 3703, 3709, 3718, 3719, 3723, 3719, 3735, 3736, - 3740, 3740, 3747, 3747, 3761, 3764, 3772, 3780, 3791, 3792, - 3796, 3800, 3808, 3815, 3819, 3827, 3831, 3844, 3848, 3856, - 3856, 3876, 3879, 3885, 3897, 3909, 3913, 3921, 3921, 3936, - 3936, 3954, 3954, 3975, 3978, 3984, 3987, 3993, 3997, 4004, - 4009, 4014, 4021, 4024, 4028, 4033, 4037, 4047, 4051, 4060, - 4063, 4067, 4076, 4076, 4118, 4123, 4126, 4131, 4134, 4141, - 4144, 4149, 4152, 4157, 4160, 4165, 4168, 4173, 4177, 4182, - 4186, 4191, 4195, 4202, 4205, 4210, 4213, 4216, 4219, 4222, - 4227, 4236, 4247, 4252, 4260, 4264, 4269, 4273, 4278, 4282, - 4287, 4291, 4298, 4301, 4306, 4309, 4312, 4315, 4320, 4328, - 4338, 4342, 4347, 4351, 4356, 4360, 4367, 4370, 4375, 4380, - 4383, 4389, 4392, 4397, 4400 + 1271, 1278, 1285, 1293, 1301, 1311, 1321, 1328, 1339, 1345, + 1348, 1355, 1359, 1363, 1372, 1382, 1385, 1396, 1399, 1402, + 1406, 1410, 1415, 1419, 1422, 1427, 1431, 1436, 1445, 1449, + 1454, 1460, 1466, 1473, 1478, 1486, 1492, 1504, 1518, 1524, + 1529, 1537, 1545, 1553, 1561, 1569, 1577, 1585, 1593, 1600, + 1607, 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1645, 1649, + 1653, 1657, 1663, 1669, 1681, 1688, 1691, 1700, 1705, 1715, + 1720, 1728, 1732, 1742, 1745, 1751, 1757, 1764, 1774, 1778, + 1782, 1786, 1791, 1795, 1800, 1805, 1810, 1815, 1820, 1825, + 1830, 1835, 1840, 1846, 1852, 1858, 1863, 1868, 1873, 1878, + 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1919, 1926, 1931, + 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, 1976, 1981, + 1989, 1997, 2005, 2011, 2017, 2023, 2029, 2035, 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, 2211, 2219, 2227, 2235, + 2243, 2251, 2259, 2267, 2275, 2283, 2291, 2299, 2305, 2311, + 2317, 2323, 2329, 2335, 2341, 2347, 2353, 2359, 2365, 2371, + 2377, 2383, 2389, 2395, 2401, 2407, 2413, 2419, 2425, 2431, + 2437, 2443, 2449, 2455, 2461, 2467, 2473, 2479, 2485, 2491, + 2497, 2503, 2509, 2515, 2519, 2523, 2527, 2532, 2538, 2543, + 2548, 2553, 2558, 2563, 2568, 2574, 2579, 2584, 2589, 2594, + 2599, 2605, 2611, 2617, 2623, 2629, 2635, 2641, 2647, 2653, + 2659, 2665, 2671, 2677, 2683, 2688, 2693, 2698, 2703, 2708, + 2713, 2719, 2724, 2729, 2734, 2739, 2744, 2749, 2754, 2760, + 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, + 2815, 2820, 2825, 2830, 2836, 2841, 2846, 2852, 2858, 2863, + 2868, 2873, 2879, 2884, 2889, 2894, 2900, 2905, 2910, 2915, + 2921, 2926, 2931, 2936, 2942, 2948, 2954, 2960, 2965, 2971, + 2977, 2983, 2988, 2993, 2998, 3003, 3008, 3014, 3019, 3024, + 3029, 3035, 3040, 3045, 3050, 3056, 3061, 3066, 3071, 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, 3328, 3333, 3338, + 3343, 3348, 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, + 3393, 3398, 3403, 3408, 3413, 3418, 3423, 3428, 3434, 3440, + 3446, 3452, 3459, 3466, 3472, 3478, 3484, 3490, 3496, 3502, + 3508, 3513, 3518, 3534, 3539, 3544, 3552, 3552, 3563, 3563, + 3573, 3576, 3589, 3611, 3638, 3642, 3648, 3653, 3664, 3668, + 3674, 3680, 3691, 3694, 3701, 3705, 3706, 3712, 3713, 3714, + 3715, 3716, 3717, 3718, 3720, 3726, 3735, 3736, 3740, 3736, + 3752, 3753, 3757, 3757, 3764, 3764, 3778, 3781, 3789, 3797, + 3808, 3809, 3813, 3817, 3825, 3832, 3836, 3844, 3848, 3861, + 3865, 3873, 3873, 3893, 3896, 3902, 3914, 3926, 3930, 3938, + 3938, 3953, 3953, 3971, 3971, 3992, 3995, 4001, 4004, 4010, + 4014, 4021, 4026, 4031, 4038, 4041, 4045, 4050, 4054, 4064, + 4068, 4077, 4080, 4084, 4093, 4093, 4135, 4140, 4143, 4148, + 4151, 4158, 4161, 4166, 4169, 4174, 4177, 4182, 4185, 4190, + 4194, 4199, 4203, 4208, 4212, 4219, 4222, 4227, 4230, 4233, + 4236, 4239, 4244, 4253, 4264, 4269, 4277, 4281, 4286, 4290, + 4295, 4299, 4304, 4308, 4315, 4318, 4323, 4326, 4329, 4332, + 4337, 4345, 4355, 4359, 4364, 4368, 4373, 4377, 4384, 4387, + 4392, 4397, 4400, 4406, 4409, 4414, 4417 }; #endif @@ -1322,9 +1324,10 @@ static const char *const yytname[] = "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD", "PERVERTEXEXT", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", - "PERTASKNV", "PRECISE", "$accept", "variable_identifier", - "primary_expression", "postfix_expression", "integer_expression", - "function_call", "function_call_or_method", "function_call_generic", + "PERTASKNV", "PERPRIMITIVEEXT", "TASKPAYLOADWORKGROUPEXT", "PRECISE", + "$accept", "variable_identifier", "primary_expression", + "postfix_expression", "integer_expression", "function_call", + "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", @@ -1431,16 +1434,16 @@ static const yytype_int16 yytoknum[] = 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710 + 705, 706, 707, 708, 709, 710, 711, 712 }; #endif -#define YYPACT_NINF (-865) +#define YYPACT_NINF (-813) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-571) +#define YYTABLE_NINF (-573) #define yytable_value_is_error(Yyn) \ 0 @@ -1449,99 +1452,100 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4557, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -306, -260, -237, -110, -102, - -100, -83, -77, -865, -865, -301, -865, -865, -865, -865, - -865, -106, -865, -865, -865, -865, -865, -309, -865, -865, - -865, -865, -865, -865, -66, -54, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -328, - -116, -50, -55, 7728, -245, -865, -82, -865, -865, -865, - -865, 5463, -865, -865, -865, -865, -63, -865, -865, 933, - -865, -865, 7728, -57, -865, -865, -865, 5916, -80, -334, - -251, -157, -149, -141, -80, -140, -78, 12077, -865, -47, - -351, -76, -865, -269, -865, -45, -41, 7728, -865, -865, - -865, 7728, -74, -73, -865, -263, -865, -224, -865, -865, - 10778, -38, -865, -865, -865, -36, -69, 7728, -865, -42, - -40, -37, -865, -271, -865, -256, -33, -34, -30, -28, - -202, -27, -24, -23, -22, -21, -17, -199, -10, -15, - -29, -303, -865, -14, 7728, -865, -11, -865, -195, -865, - -865, -194, 9046, -865, -268, 1386, -865, -865, -865, -865, - -865, -38, -304, -865, 9479, -248, -865, -35, -865, -133, - 10778, 10778, -865, 10778, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -274, -865, -865, -865, -6, -187, 11211, - 3, -865, 10778, -865, -865, -297, -2, -41, 4, -865, - -310, -80, -865, -31, -865, -321, 6, -130, 10778, -129, - -865, -166, -128, 10778, -124, 7, -122, -80, -865, 11644, - -865, -120, 10778, 10, -78, -865, 7728, -26, 6369, -865, - 7728, 10778, -865, -351, -865, -20, -865, -865, -79, -217, - -200, -299, -56, -13, -9, -3, 21, 26, -307, 15, - 9912, -865, 14, -865, -865, 20, 12, 13, -865, 24, - 25, 16, 10345, 27, 10778, 23, 18, 19, 22, 28, - -222, -865, -865, -132, -865, -116, 33, 35, -865, -865, - -865, -865, -865, 1839, -865, -865, -865, -865, -865, -865, - -865, -865, -865, 5010, -2, 9479, -225, 8180, -865, -865, - 9479, 7728, -865, 8, -865, -865, -865, -184, -865, -865, - 10778, 29, -865, -865, 10778, 38, -865, -865, -865, 10778, - -865, -865, -865, -312, -865, -865, -183, 31, -865, -865, - -865, -865, -865, -865, -182, -865, -180, -865, -865, -179, - 34, -865, -865, -865, -865, -175, -865, -172, -865, -171, - 39, -865, -167, 40, -163, 31, -865, -160, -865, 44, - 48, -865, -865, -26, -38, -121, -865, -865, -865, 6822, - -865, -865, -865, 10778, 10778, 10778, 10778, 10778, 10778, 10778, - 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, - 10778, 10778, -865, -865, -865, 53, -865, 2292, -865, -865, - -865, 2292, -865, 10778, -865, -865, -119, 10778, -198, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, 10778, 10778, -865, -865, -865, - -865, -865, -865, -865, 9479, -865, -865, -174, -865, 7275, - -865, -865, 61, 59, -865, -865, -865, -865, -865, -254, - -142, -865, -308, -865, -321, -865, -321, -865, 10778, 10778, - -865, -166, -865, -166, -865, 10778, 10778, -865, 37, 7, - -865, 11644, -865, 10778, -865, -865, -92, -2, -26, -865, - -865, -865, -865, -865, -79, -79, -217, -217, -200, -200, - -200, -200, -299, -299, -56, -13, -9, -3, 21, 26, - 10778, -865, 2292, 4104, 30, 3651, -159, -865, -158, -865, - -865, -865, -865, -865, 8613, -865, -865, -865, 71, -865, - -12, -865, -156, -865, -155, -865, -148, -865, -147, -865, - -145, -144, -865, -865, -865, -65, 67, 59, 41, 72, - 75, -865, -865, 4104, 76, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, 10778, -865, 74, 2745, - 10778, -865, 66, 80, 36, 81, 3198, -865, 82, -865, - 9479, -865, -865, -865, -143, 10778, 2745, 76, -865, -865, - 2292, -865, 78, 59, -865, -865, 2292, 84, -865, -865 + 4575, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -300, -272, -219, -123, -120, + -118, -105, -87, -813, -813, -317, -813, -813, -813, -813, + -813, -62, -813, -813, -813, -813, -813, -324, -813, -813, + -813, -813, -813, -813, -76, -64, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -319, -260, -133, -174, 7760, -191, -813, -166, -813, + -813, -813, -813, 5485, -813, -813, -813, -813, -61, -813, + -813, 935, -813, -813, 7760, -39, -813, -813, -813, 5940, + -50, -335, -267, -162, -152, -139, -50, -137, -46, 12111, + -813, -29, -339, -43, -813, -268, -813, -27, -6, 7760, + -813, -813, -813, 7760, -37, -36, -813, -298, -813, -237, + -813, -813, 10812, -5, -813, -813, -813, 1, -33, 7760, + -813, -4, -2, -3, -813, -236, -813, -227, -1, 3, + 4, 5, -225, 6, 10, 12, 13, 14, 17, -223, + 8, 18, 16, -304, -813, 21, 7760, -813, 19, -813, + -222, -813, -813, -207, 9080, -813, -247, 1390, -813, -813, + -813, -813, -813, -5, -270, -813, 9513, -250, -813, -22, + -813, -132, 10812, 10812, -813, 10812, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -265, -813, -813, -813, 25, + -204, 11245, 27, -813, 10812, -813, -813, -314, 30, -6, + 33, -813, -315, -50, -813, 15, -813, -325, 32, -130, + 10812, -129, -813, -146, -125, 10812, -124, 39, -119, -50, + -813, 11678, -813, -115, 10812, 36, -46, -813, 7760, 20, + 6395, -813, 7760, 10812, -813, -339, -813, 29, -813, -813, + -47, -83, -59, -288, -18, -17, 22, 26, 54, 59, + -309, 46, 9946, -813, 37, -813, -813, 50, 56, 58, + -813, 72, 74, 65, 10379, 76, 10812, 69, 68, 73, + 75, 77, -168, -813, -813, -82, -813, -260, 79, 82, + -813, -813, -813, -813, -813, 1845, -813, -813, -813, -813, + -813, -813, -813, -813, -813, 5030, 30, 9513, -241, 8214, + -813, -813, 9513, 7760, -813, 52, -813, -813, -813, -202, + -813, -813, 10812, 55, -813, -813, 10812, 85, -813, -813, + -813, 10812, -813, -813, -813, -310, -813, -813, -197, 81, + -813, -813, -813, -813, -813, -813, -195, -813, -194, -813, + -813, -190, 87, -813, -813, -813, -813, -169, -813, -167, + -813, -165, 89, -813, -158, 90, -157, 81, -813, -156, + -813, 91, 97, -813, -813, 20, -5, -77, -813, -813, + -813, 6850, -813, -813, -813, 10812, 10812, 10812, 10812, 10812, + 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, + 10812, 10812, 10812, 10812, -813, -813, -813, 96, -813, 2300, + -813, -813, -813, 2300, -813, 10812, -813, -813, -49, 10812, + -26, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, 10812, 10812, -813, + -813, -813, -813, -813, -813, -813, 9513, -813, -813, -31, + -813, 7305, -813, -813, 98, 95, -813, -813, -813, -813, + -813, -172, -134, -813, -307, -813, -325, -813, -325, -813, + 10812, 10812, -813, -146, -813, -146, -813, 10812, 10812, -813, + 104, 39, -813, 11678, -813, 10812, -813, -813, -48, 30, + 20, -813, -813, -813, -813, -813, -47, -47, -83, -83, + -59, -59, -59, -59, -288, -288, -18, -17, 22, 26, + 54, 59, 10812, -813, 2300, 4120, 60, 3665, -155, -813, + -154, -813, -813, -813, -813, -813, 8647, -813, -813, -813, + 106, -813, -15, -813, -147, -813, -145, -813, -144, -813, + -143, -813, -142, -140, -813, -813, -813, -24, 101, 95, + 71, 107, 110, -813, -813, 4120, 109, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, 10812, -813, + 102, 2755, 10812, -813, 105, 113, 70, 112, 3210, -813, + 115, -813, 9513, -813, -813, -813, -135, 10812, 2755, 109, + -813, -813, 2300, -813, 111, 95, -813, -813, 2300, 117, + -813, -813 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1549,137 +1553,138 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 167, 220, 218, 219, 217, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 221, 222, 223, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 346, 347, 348, 349, 350, 351, 352, 372, 373, 374, - 375, 376, 377, 378, 387, 400, 401, 388, 389, 391, - 390, 392, 393, 394, 395, 396, 397, 398, 399, 175, - 176, 246, 247, 245, 248, 255, 256, 253, 254, 251, - 252, 249, 250, 278, 279, 280, 290, 291, 292, 275, - 276, 277, 287, 288, 289, 272, 273, 274, 284, 285, - 286, 269, 270, 271, 281, 282, 283, 257, 258, 259, - 293, 294, 295, 260, 261, 262, 305, 306, 307, 263, - 264, 265, 317, 318, 319, 266, 267, 268, 329, 330, - 331, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 344, 341, 342, - 343, 525, 526, 527, 356, 357, 380, 383, 345, 354, - 355, 371, 353, 402, 403, 406, 407, 408, 410, 411, - 412, 414, 415, 416, 418, 419, 515, 516, 379, 381, - 382, 358, 359, 360, 404, 361, 365, 366, 369, 409, - 413, 417, 362, 363, 367, 368, 405, 364, 370, 449, - 451, 452, 453, 455, 456, 457, 459, 460, 461, 463, - 464, 465, 467, 468, 469, 471, 472, 473, 475, 476, - 477, 479, 480, 481, 483, 484, 485, 487, 488, 489, - 491, 492, 450, 454, 458, 462, 466, 474, 478, 482, - 470, 486, 490, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 384, 385, 386, 420, 429, - 431, 425, 430, 432, 433, 435, 436, 437, 439, 440, - 441, 443, 444, 445, 447, 448, 421, 422, 423, 434, - 424, 426, 427, 428, 438, 442, 446, 517, 518, 521, - 522, 523, 524, 519, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 165, 166, 0, 621, 137, 531, 532, - 533, 0, 530, 171, 169, 170, 168, 0, 216, 172, - 173, 174, 139, 138, 0, 200, 181, 183, 179, 185, - 187, 182, 184, 180, 186, 188, 177, 178, 202, 189, - 196, 197, 198, 199, 190, 191, 192, 193, 194, 195, - 140, 141, 143, 142, 144, 145, 146, 153, 620, 0, - 622, 0, 114, 113, 0, 125, 130, 160, 159, 157, - 161, 0, 154, 156, 162, 135, 212, 158, 529, 0, - 617, 619, 0, 0, 163, 164, 528, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, - 0, 0, 99, 0, 94, 0, 109, 0, 121, 115, - 123, 0, 124, 0, 97, 131, 102, 0, 155, 136, - 0, 205, 211, 1, 618, 0, 0, 0, 96, 0, - 0, 0, 629, 0, 681, 0, 0, 0, 0, 0, + 0, 168, 222, 220, 221, 219, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 223, 224, 225, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 348, 349, 350, 351, 352, 353, 354, 374, 375, 376, + 377, 378, 379, 380, 389, 402, 403, 390, 391, 393, + 392, 394, 395, 396, 397, 398, 399, 400, 401, 176, + 177, 248, 249, 247, 250, 257, 258, 255, 256, 253, + 254, 251, 252, 280, 281, 282, 292, 293, 294, 277, + 278, 279, 289, 290, 291, 274, 275, 276, 286, 287, + 288, 271, 272, 273, 283, 284, 285, 259, 260, 261, + 295, 296, 297, 262, 263, 264, 307, 308, 309, 265, + 266, 267, 319, 320, 321, 268, 269, 270, 331, 332, + 333, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 346, 343, 344, + 345, 527, 528, 529, 358, 359, 382, 385, 347, 356, + 357, 373, 355, 404, 405, 408, 409, 410, 412, 413, + 414, 416, 417, 418, 420, 421, 517, 518, 381, 383, + 384, 360, 361, 362, 406, 363, 367, 368, 371, 411, + 415, 419, 364, 365, 369, 370, 407, 366, 372, 451, + 453, 454, 455, 457, 458, 459, 461, 462, 463, 465, + 466, 467, 469, 470, 471, 473, 474, 475, 477, 478, + 479, 481, 482, 483, 485, 486, 487, 489, 490, 491, + 493, 494, 452, 456, 460, 464, 468, 476, 480, 484, + 472, 488, 492, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 386, 387, 388, 422, 431, + 433, 427, 432, 434, 435, 437, 438, 439, 441, 442, + 443, 445, 446, 447, 449, 450, 423, 424, 425, 436, + 426, 428, 429, 430, 440, 444, 448, 519, 520, 523, + 524, 525, 526, 521, 522, 0, 0, 0, 0, 0, + 0, 0, 0, 166, 167, 0, 623, 137, 533, 534, + 535, 0, 532, 172, 170, 171, 169, 0, 218, 173, + 174, 175, 139, 138, 0, 201, 182, 184, 180, 186, + 188, 183, 185, 181, 187, 189, 178, 179, 204, 190, + 197, 198, 199, 200, 191, 192, 193, 194, 195, 196, + 140, 141, 143, 142, 144, 146, 147, 145, 203, 154, + 622, 0, 624, 0, 114, 113, 0, 125, 130, 161, + 160, 158, 162, 0, 155, 157, 163, 135, 214, 159, + 531, 0, 619, 621, 0, 0, 164, 165, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 625, 0, 0, 534, 150, 152, 0, 148, - 203, 0, 0, 100, 0, 0, 623, 110, 116, 120, - 122, 118, 126, 117, 0, 132, 105, 0, 103, 0, - 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, 214, 0, 36, 34, 0, 206, 111, 0, 95, - 0, 0, 679, 0, 637, 0, 0, 0, 0, 0, - 654, 0, 0, 0, 0, 0, 0, 0, 674, 0, - 652, 0, 0, 0, 0, 98, 0, 0, 0, 538, - 0, 0, 147, 0, 201, 0, 207, 45, 49, 52, - 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, - 0, 101, 565, 574, 578, 0, 0, 0, 599, 0, + 538, 0, 0, 0, 99, 0, 94, 0, 109, 0, + 121, 115, 123, 0, 124, 0, 97, 131, 102, 0, + 156, 136, 0, 207, 213, 1, 620, 0, 0, 0, + 96, 0, 0, 0, 631, 0, 683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 45, 78, 91, 0, 552, 0, 162, 135, 555, 576, - 554, 562, 553, 0, 556, 557, 580, 558, 587, 559, - 560, 595, 561, 0, 119, 0, 127, 0, 546, 134, - 0, 0, 107, 0, 104, 38, 39, 0, 22, 23, - 0, 0, 28, 27, 0, 216, 31, 33, 40, 0, - 213, 112, 683, 0, 684, 630, 0, 0, 682, 649, - 645, 646, 647, 648, 0, 643, 0, 93, 650, 0, - 0, 664, 665, 666, 667, 0, 662, 0, 668, 0, - 0, 670, 0, 0, 0, 2, 678, 0, 676, 0, - 0, 624, 626, 0, 544, 0, 542, 537, 539, 0, - 151, 149, 204, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 629, 0, 627, 0, 0, 536, 151, 153, + 0, 149, 205, 0, 0, 100, 0, 0, 625, 110, + 116, 120, 122, 118, 126, 117, 0, 132, 105, 0, + 103, 0, 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, 216, 0, 36, 34, 0, 208, 111, + 0, 95, 0, 0, 681, 0, 639, 0, 0, 0, + 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, + 676, 0, 654, 0, 0, 0, 0, 98, 0, 0, + 0, 540, 0, 0, 148, 0, 202, 0, 209, 45, + 49, 52, 55, 60, 63, 65, 67, 69, 71, 73, + 75, 0, 0, 101, 567, 576, 580, 0, 0, 0, + 601, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 45, 78, 91, 0, 554, 0, 163, 135, + 557, 578, 556, 564, 555, 0, 558, 559, 582, 560, + 589, 561, 562, 597, 563, 0, 119, 0, 127, 0, + 548, 134, 0, 0, 107, 0, 104, 38, 39, 0, + 22, 23, 0, 0, 28, 27, 0, 218, 31, 33, + 40, 0, 215, 112, 685, 0, 686, 632, 0, 0, + 684, 651, 647, 648, 649, 650, 0, 645, 0, 93, + 652, 0, 0, 666, 667, 668, 669, 0, 664, 0, + 670, 0, 0, 672, 0, 0, 0, 2, 680, 0, + 678, 0, 0, 626, 628, 0, 546, 0, 544, 539, + 541, 0, 152, 150, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 208, 209, 0, 564, 0, 597, 610, - 609, 0, 601, 0, 613, 611, 0, 0, 0, 594, - 614, 615, 616, 563, 81, 82, 84, 83, 86, 87, - 88, 89, 90, 85, 80, 0, 0, 579, 575, 577, - 581, 588, 596, 129, 0, 549, 550, 0, 133, 0, - 108, 4, 0, 24, 21, 32, 215, 633, 635, 0, - 0, 680, 0, 639, 0, 638, 0, 641, 0, 0, - 656, 0, 655, 0, 658, 0, 0, 660, 0, 0, - 675, 0, 672, 0, 653, 628, 0, 545, 0, 540, - 535, 46, 47, 48, 51, 50, 53, 54, 58, 59, - 56, 57, 61, 62, 64, 66, 68, 70, 72, 74, - 0, 210, 566, 0, 0, 0, 0, 612, 0, 593, - 79, 92, 128, 547, 0, 106, 19, 631, 0, 632, - 0, 644, 0, 651, 0, 663, 0, 669, 0, 671, - 0, 0, 677, 541, 543, 0, 0, 585, 0, 0, - 0, 604, 603, 606, 572, 589, 548, 551, 634, 636, - 640, 642, 657, 659, 661, 673, 0, 567, 0, 0, - 0, 605, 0, 0, 584, 0, 0, 582, 0, 77, - 0, 569, 598, 568, 0, 607, 0, 572, 571, 573, - 591, 586, 0, 608, 602, 583, 592, 0, 600, 590 + 0, 0, 0, 0, 76, 210, 211, 0, 566, 0, + 599, 612, 611, 0, 603, 0, 615, 613, 0, 0, + 0, 596, 616, 617, 618, 565, 81, 82, 84, 83, + 86, 87, 88, 89, 90, 85, 80, 0, 0, 581, + 577, 579, 583, 590, 598, 129, 0, 551, 552, 0, + 133, 0, 108, 4, 0, 24, 21, 32, 217, 635, + 637, 0, 0, 682, 0, 641, 0, 640, 0, 643, + 0, 0, 658, 0, 657, 0, 660, 0, 0, 662, + 0, 0, 677, 0, 674, 0, 655, 630, 0, 547, + 0, 542, 537, 46, 47, 48, 51, 50, 53, 54, + 58, 59, 56, 57, 61, 62, 64, 66, 68, 70, + 72, 74, 0, 212, 568, 0, 0, 0, 0, 614, + 0, 595, 79, 92, 128, 549, 0, 106, 19, 633, + 0, 634, 0, 646, 0, 653, 0, 665, 0, 671, + 0, 673, 0, 0, 679, 543, 545, 0, 0, 587, + 0, 0, 0, 606, 605, 608, 574, 591, 550, 553, + 636, 638, 642, 644, 659, 661, 663, 675, 0, 569, + 0, 0, 0, 607, 0, 0, 586, 0, 0, 584, + 0, 77, 0, 571, 600, 570, 0, 609, 0, 574, + 573, 575, 593, 588, 0, 610, 604, 585, 594, 0, + 602, 592 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -211, -865, -423, -422, -501, -426, -287, -286, - -285, -284, -288, -282, -865, -475, -865, -490, -865, -497, - -525, 11, -865, -865, -865, 5, -385, -865, -865, 32, - 42, 45, -865, -865, -399, -865, -865, -865, -865, -127, - -865, -382, -367, -865, 9, -865, 0, -425, -865, -865, - -865, -865, 119, -865, -865, -865, -544, -549, -252, -366, - -622, -865, -391, -611, -864, -865, -452, -865, -865, -461, - -460, -865, -865, 43, -716, -387, -865, -173, -865, -424, - -865, -169, -865, -865, -865, -865, -168, -865, -865, -865, - -865, -865, -865, -865, -865, 63, -865, -865, 2, -865, - -98, -272, -448, -865, -865, -865, -329, -324, -327, -865, - -865, -332, -326, -333, -331, -865, -330, -336, -865, -392, - -529 + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -429, -813, -381, -380, -483, -383, -262, -257, + -261, -258, -255, -259, -813, -479, -813, -492, -813, -495, + -536, 11, -813, -813, -813, 7, -388, -813, -813, 42, + 49, 47, -813, -813, -401, -813, -813, -813, -813, -96, + -813, -384, -371, -813, 9, -813, 0, -425, -813, -813, + -813, -813, 150, -813, -813, -813, -546, -553, -217, -338, + -607, -813, -364, -619, -812, -813, -421, -813, -813, -428, + -430, -813, -813, 64, -718, -355, -813, -141, -813, -390, + -813, -138, -813, -813, -813, -813, -136, -813, -813, -813, + -813, -813, -813, -813, -813, 92, -813, -813, 2, -813, + -68, -275, -456, -813, -813, -813, -296, -293, -301, -813, + -813, -299, -295, -303, -302, -813, -306, -311, -813, -392, + -530 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 521, 522, 523, 782, 524, 525, 526, 527, 528, - 529, 530, 610, 532, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 611, 840, 612, 765, 613, - 696, 614, 379, 641, 499, 615, 381, 382, 383, 428, - 429, 430, 384, 385, 386, 387, 388, 389, 478, 479, - 390, 391, 392, 393, 533, 481, 534, 484, 441, 442, - 535, 396, 397, 398, 570, 474, 568, 569, 705, 706, - 639, 777, 618, 619, 620, 621, 622, 737, 876, 912, - 904, 905, 906, 913, 623, 624, 625, 626, 907, 879, - 627, 628, 908, 927, 629, 630, 631, 843, 741, 845, - 883, 902, 903, 632, 399, 400, 401, 425, 633, 471, - 472, 451, 452, 789, 790, 403, 674, 675, 679, 404, - 405, 685, 686, 689, 692, 406, 697, 698, 407, 453, - 454 + -1, 523, 524, 525, 784, 526, 527, 528, 529, 530, + 531, 532, 612, 534, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 613, 842, 614, 767, 615, + 698, 616, 381, 643, 501, 617, 383, 384, 385, 430, + 431, 432, 386, 387, 388, 389, 390, 391, 480, 481, + 392, 393, 394, 395, 535, 483, 536, 486, 443, 444, + 537, 398, 399, 400, 572, 476, 570, 571, 707, 708, + 641, 779, 620, 621, 622, 623, 624, 739, 878, 914, + 906, 907, 908, 915, 625, 626, 627, 628, 909, 881, + 629, 630, 910, 929, 631, 632, 633, 845, 743, 847, + 885, 904, 905, 634, 401, 402, 403, 427, 635, 473, + 474, 453, 454, 791, 792, 405, 676, 677, 681, 406, + 407, 687, 688, 691, 694, 408, 699, 700, 409, 455, + 456 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1687,281 +1692,100 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 395, 431, 402, 446, 638, 380, 647, 589, 446, 394, - 495, 378, 769, 773, 668, 776, 536, 445, 778, 708, - 447, 842, 467, 678, 438, 447, 709, 669, 688, 731, - 668, 422, 720, 721, 476, 911, 787, 700, 662, 656, - 662, 663, 919, 408, 418, 431, 710, 482, 455, 563, - 416, 456, 911, 564, 635, 648, 649, 423, 477, 659, - 670, 671, 672, 673, 438, 732, 634, 636, 722, 723, - 788, 660, 664, 677, 664, -35, 419, 650, 677, 542, - 438, 651, 482, 590, 677, 543, 493, 677, 482, 409, - 483, 591, 566, 665, 544, 494, 677, 779, 857, 665, - 545, 665, 858, 590, 665, 746, 665, 748, 665, 665, - 640, 433, 410, 665, 434, 735, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 590, 718, 719, 496, - 844, 458, 497, 774, 456, 498, 764, 457, 459, 461, - 463, 465, 466, 469, 716, 638, 717, 638, 550, 666, - 638, 558, 852, 783, 551, 572, 574, 559, 766, 849, - 708, 573, 575, 653, 785, 694, 781, 791, 793, 654, - 795, 797, 766, 543, 794, 800, 796, 798, 802, 804, - 853, 801, 854, 807, 803, 805, 566, 810, 566, 808, - 812, 884, 885, 811, 890, 891, 813, 766, 766, 438, - 794, 798, 892, 893, 926, 894, 895, 922, 801, 805, - 859, 808, 813, 766, 860, 681, 682, 683, 684, 828, - 829, 830, 831, 643, 766, 460, 644, 767, 456, 531, - 708, 769, 887, 462, 446, 818, 456, 766, 819, 411, - 847, 464, 468, 424, 456, 456, 846, 412, 445, 413, - 848, 447, 676, 680, 687, 456, 456, 456, 690, 566, - 693, 456, 699, 456, 818, 456, 414, 873, 328, 329, - 330, 577, 415, 863, 678, 850, 851, 724, 725, 817, - 867, 688, 668, 420, 638, 713, 714, 715, 921, 645, - 646, 766, 896, 824, 825, 421, 826, 827, 832, 833, - 426, 427, 448, 435, 440, 450, 475, 470, 485, 480, - 325, 491, 492, 482, 537, 769, 538, 539, 540, 541, - 562, 658, 547, 677, 677, 546, 548, 566, 549, 552, - 677, 677, 553, 554, 555, 556, 677, 577, 677, 557, - 560, 561, 577, 875, 652, 565, 877, 571, 577, 590, - 642, 577, 657, 493, 667, 691, 729, 663, 726, 704, - 577, 727, 701, 730, 638, 712, 728, 733, 736, 738, - 889, 739, 740, 742, 743, 744, 747, 750, 751, 577, - 749, 752, -36, 432, -34, 869, 877, 753, -29, 792, - 799, 439, 394, 780, 814, 806, 809, 566, 815, 395, - 394, 402, 395, 914, 380, 841, 909, 395, 394, 402, - 378, 394, 449, 856, 784, 766, 394, 473, 923, 888, - 638, 897, 899, 880, 900, 915, 898, 432, 487, -570, - 916, 432, 910, 917, 592, 920, 394, 928, 929, 834, - 394, 835, 838, 836, 878, 837, 711, 439, 786, 839, - 417, 816, 874, 918, 881, 924, 394, 925, 882, 901, - 770, 447, 444, 489, 771, 772, 702, 862, 486, 488, - 861, 866, 864, 868, 567, 865, 490, 872, 870, 0, - 0, 871, 0, 394, 878, 617, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, - 0, 447, 821, 822, 823, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 703, 0, 567, 0, - 567, 0, 0, 0, 0, 394, 0, 394, 0, 394, - 0, 0, 0, 0, 0, 0, 0, 577, 577, 0, - 0, 0, 0, 0, 577, 577, 0, 0, 0, 0, - 577, 0, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 395, 0, 0, 0, 0, 0, 0, - 0, 567, 394, 0, 0, 0, 0, 0, 0, 0, - 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 397, 433, 404, 448, 640, 591, 771, 382, 448, 396, + 649, 380, 497, 533, 680, 670, 447, 710, 538, 690, + 449, 844, 440, 671, 469, 449, 711, 733, 702, 420, + 775, 670, 778, 664, 418, 780, 665, 712, 789, 658, + 424, 664, 661, 722, 723, 433, 478, 457, 565, 410, + 458, 495, 566, 484, 662, 579, 672, 673, 674, 675, + 496, 421, 440, 734, 650, 651, 425, 666, 636, 638, + 479, 679, 790, 647, 648, 666, 679, 411, 440, 724, + 725, 484, 679, 484, -35, 679, 652, 667, 637, 913, + 653, 485, 568, 667, 679, 667, 921, 781, 667, 426, + 667, 592, 667, 667, 592, 660, 913, 667, 642, 748, + 592, 750, 593, 737, 544, 460, 498, 776, 458, 499, + 545, 579, 500, 546, 846, 552, 579, 560, 574, 547, + 412, 553, 579, 561, 575, 579, 459, 461, 463, 465, + 467, 468, 471, 576, 579, 640, 655, 640, 783, 577, + 640, 668, 656, 793, 768, 795, 797, 785, 710, 545, + 799, 796, 798, 579, 787, 435, 800, 696, 436, 854, + 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, + 859, 802, 429, 804, 860, 806, 568, 803, 568, 805, + 766, 807, 809, 812, 814, 886, 887, 440, 810, 813, + 815, 768, 768, 892, 928, 893, 894, 895, 896, 796, + 897, 800, 803, 807, 810, 924, 815, 428, 861, 437, + 462, 768, 862, 458, 645, 771, 413, 646, 710, 414, + 464, 415, 788, 458, 448, 683, 684, 685, 686, 830, + 831, 832, 833, 466, 416, 470, 458, 447, 458, 889, + 848, 449, 678, 682, 850, 458, 458, 689, 692, 568, + 458, 458, 417, 695, 865, 680, 458, 701, 720, 721, + 458, 869, 690, 422, 768, 852, 853, 769, 718, 820, + 719, 819, 821, 670, 640, 423, 823, 824, 825, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 923, 442, 768, 820, 771, + 849, 875, 328, 329, 330, 726, 727, 715, 716, 717, + 450, 679, 679, 855, 477, 856, 487, 568, 679, 679, + 768, 851, 768, 898, 679, 452, 679, 826, 827, 472, + 828, 829, 482, 834, 835, 325, 484, 877, 493, 494, + 879, 539, 540, 543, 728, 541, 542, 548, 562, 549, + 550, 551, 554, 644, 640, 564, 555, 891, 556, 557, + 558, 579, 579, 559, 563, 654, 659, 573, 579, 579, + 567, 592, 495, 665, 579, 434, 579, 693, 703, 731, + 879, 738, 729, 441, 396, 730, 732, 568, 735, 740, + 669, 397, 396, 404, 397, 706, 911, 916, 382, 397, + 396, 404, 380, 396, 714, 741, 451, 742, 396, 475, + 640, 744, 925, 745, 746, 749, 751, 752, -36, 434, + 489, -34, 753, 434, 754, -29, 755, 782, 396, 794, + 786, 816, 396, 801, 880, 808, 811, 817, 843, 441, + 858, 768, 871, 882, 890, 899, 900, 901, 396, 902, + 912, 449, -572, 918, 917, 594, 836, 919, 922, 838, + 930, 931, 837, 839, 841, 491, 569, 840, 490, 713, + 492, 419, 876, 883, 880, 396, 920, 619, 818, 927, + 926, 488, 884, 446, 772, 903, 618, 773, 704, 774, + 866, 449, 864, 863, 874, 870, 868, 873, 867, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 567, - 0, 0, 0, 0, 0, 0, 0, 0, 394, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 705, 0, + 569, 0, 569, 0, 0, 0, 0, 396, 0, 396, + 0, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 617, 0, 0, - 0, 617, 0, 0, 0, 0, 616, 0, 0, 0, - 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 567, - 0, 0, 0, 0, 0, 0, 0, 0, 394, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, + 0, 0, 0, 0, 618, 397, 0, 0, 0, 0, + 0, 0, 0, 569, 396, 0, 0, 0, 0, 0, + 0, 0, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 617, 617, 0, 617, 0, 402, 0, 0, - 0, 616, 616, 0, 616, 0, 0, 0, 0, 0, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 619, + 0, 0, 0, 619, 0, 0, 0, 0, 618, 0, + 0, 0, 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 0, 0, 0, 0, 0, 0, 617, - 0, 0, 0, 0, 0, 0, 617, 0, 616, 0, - 0, 0, 0, 0, 0, 616, 617, 0, 0, 0, - 617, 0, 0, 0, 0, 616, 617, 0, 0, 616, - 0, 0, 0, 443, 0, 616, 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, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, - 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, - 331, 0, 0, 0, 0, 0, 0, 0, 0, 332, - 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 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, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 502, 503, 0, 325, 0, 592, - 593, 0, 0, 0, 0, 594, 504, 505, 506, 507, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, - 328, 329, 330, 331, 0, 0, 0, 508, 509, 510, - 511, 512, 332, 333, 334, 335, 336, 337, 338, 595, - 596, 597, 598, 0, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 339, 340, 341, 342, 343, 344, - 513, 514, 515, 516, 517, 518, 519, 520, 345, 609, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 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, 0, 0, 500, 501, + 0, 0, 0, 0, 619, 619, 0, 619, 0, 404, + 0, 0, 0, 618, 618, 0, 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 0, - 325, 0, 592, 768, 0, 0, 0, 0, 594, 504, - 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 328, 329, 330, 331, 0, 0, 0, - 508, 509, 510, 511, 512, 332, 333, 334, 335, 336, - 337, 338, 595, 596, 597, 598, 0, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 339, 340, 341, - 342, 343, 344, 513, 514, 515, 516, 517, 518, 519, - 520, 345, 609, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 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, 0, - 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 502, 503, 0, 325, 0, 592, 0, 0, 0, 0, - 0, 594, 504, 505, 506, 507, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 328, 329, 330, 331, - 0, 0, 0, 508, 509, 510, 511, 512, 332, 333, - 334, 335, 336, 337, 338, 595, 596, 597, 598, 0, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 339, 340, 341, 342, 343, 344, 513, 514, 515, 516, - 517, 518, 519, 520, 345, 609, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 1, 2, + 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, + 0, 0, 0, 0, 618, 0, 0, 0, 0, 0, + 0, 619, 0, 0, 0, 0, 0, 0, 619, 0, + 618, 0, 0, 0, 0, 0, 0, 618, 619, 0, + 0, 0, 619, 0, 0, 0, 0, 618, 619, 0, + 0, 618, 0, 0, 0, 445, 0, 618, 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, @@ -1994,201 +1818,384 @@ static const yytype_int16 yytable[] = 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, 0, 0, 500, 501, 0, 0, 0, 0, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 502, 503, 0, 325, 0, 485, 0, - 0, 0, 0, 0, 594, 504, 505, 506, 507, 0, + 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 508, 509, 510, 511, - 512, 332, 333, 334, 335, 336, 337, 338, 595, 596, - 597, 598, 0, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 339, 340, 341, 342, 343, 344, 513, - 514, 515, 516, 517, 518, 519, 520, 345, 609, 346, + 329, 330, 331, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 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, 0, 0, 500, 501, 0, + 377, 378, 379, 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, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 0, 325, 0, 594, 595, 0, 0, 0, 0, 596, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, + 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, + 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, + 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 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, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 502, 503, 0, 325, - 0, 0, 0, 0, 0, 0, 0, 594, 504, 505, - 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 328, 329, 330, 331, 0, 0, 0, 508, - 509, 510, 511, 512, 332, 333, 334, 335, 336, 337, - 338, 595, 596, 597, 598, 0, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 339, 340, 341, 342, - 343, 344, 513, 514, 515, 516, 517, 518, 519, 520, - 345, 609, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 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, 0, 0, - 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, - 503, 0, 325, 0, 0, 0, 0, 0, 0, 0, - 594, 504, 505, 506, 507, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 327, 328, 329, 330, 331, 0, - 0, 0, 508, 509, 510, 511, 512, 332, 333, 334, - 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, - 340, 341, 342, 343, 344, 513, 514, 515, 516, 517, - 518, 519, 520, 345, 0, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 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, 0, 0, 0, 318, 319, 320, 321, 322, 323, - 324, 0, 0, 500, 501, 0, 0, 0, 0, 0, + 0, 0, 0, 504, 505, 0, 325, 0, 594, 770, + 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, + 514, 332, 333, 334, 335, 336, 337, 338, 597, 598, + 599, 600, 0, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 339, 340, 341, 342, 343, 344, 515, + 516, 517, 518, 519, 520, 521, 522, 345, 611, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 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, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 0, 325, 0, 594, 0, 0, 0, 0, 0, 596, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, + 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, + 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, + 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 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, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 504, 505, 506, 507, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, - 330, 0, 0, 0, 0, 508, 509, 510, 511, 512, - 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, + 0, 0, 0, 504, 505, 0, 325, 0, 487, 0, + 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, + 514, 332, 333, 334, 335, 336, 337, 338, 597, 598, + 599, 600, 0, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 339, 340, 341, 342, 343, 344, 515, + 516, 517, 518, 519, 520, 521, 522, 345, 611, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 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, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 0, 325, 0, 0, 0, 0, 0, 0, 0, 596, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, + 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, + 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, + 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 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, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 339, 340, 341, 342, 343, 344, 513, 514, - 515, 516, 517, 518, 519, 520, 345, 0, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 504, 505, 0, 325, 0, 0, 0, + 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, + 514, 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, - 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 515, + 516, 517, 518, 519, 520, 521, 522, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 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, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 333, 334, 335, 336, 337, 338, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, + 521, 522, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 339, 340, 341, 342, 343, - 344, 0, 0, 0, 0, 0, 0, 0, 0, 345, - 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 1, 2, 3, 4, 5, 6, 7, + 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 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, @@ -2227,194 +2234,13 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 337, 338, 595, 0, 0, 598, 0, 599, 600, - 0, 0, 603, 0, 0, 0, 0, 0, 339, 340, + 336, 337, 338, 597, 0, 0, 600, 0, 601, 602, + 0, 0, 605, 0, 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 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, - 0, 0, 0, 318, 319, 320, 321, 322, 323, 324, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 437, 332, - 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 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, 0, 0, 0, 318, 319, 320, 321, - 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 325, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, - 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 332, 333, 334, 335, 336, 337, 338, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, - 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 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, 0, 0, 0, 318, - 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 707, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, - 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 339, 340, 341, - 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, - 0, 345, 0, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 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, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 820, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, - 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 1, 2, + 372, 373, 374, 375, 376, 377, 378, 379, 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, @@ -2449,7 +2275,98 @@ static const yytype_int16 yytable[] = 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 855, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 439, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 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, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 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, 0, 0, 0, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2460,52 +2377,230 @@ static const yytype_int16 yytable[] = 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 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, 0, 0, 0, 318, 319, - 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, + 377, 378, 379, 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, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 822, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 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, 0, 0, 0, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 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, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, - 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 339, 340, 341, 342, - 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, - 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 2, 3, 4, 5, 6, 7, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 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, 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, 0, 0, 0, 0, 0, 0, 321, 0, 0, + 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 504, 505, 0, 0, 0, 639, 777, 0, + 0, 0, 0, 0, 506, 507, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 510, 511, 512, 513, 514, + 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 515, 516, + 517, 518, 519, 520, 521, 522, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 358, 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, 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, 0, 0, 0, 0, 0, 0, + 321, 0, 0, 0, 0, 0, 502, 503, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, + 639, 888, 0, 0, 0, 0, 0, 506, 507, 508, + 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 510, 511, + 512, 513, 514, 332, 0, 0, 0, 0, 337, 338, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 515, 516, 517, 518, 519, 520, 521, 522, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 358, 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, @@ -2537,17 +2632,17 @@ static const yytype_int16 yytable[] = 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, 0, 0, 0, - 0, 0, 0, 321, 0, 0, 0, 0, 0, 500, - 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 502, 503, - 0, 0, 0, 637, 775, 0, 0, 0, 0, 0, - 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 321, 0, 0, 0, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 0, 0, 578, 0, 0, 0, 0, 0, 0, 0, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 508, 509, 510, 511, 512, 332, 0, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 513, 514, 515, 516, 517, 518, - 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 515, 516, 517, 518, 519, 520, + 521, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, @@ -2581,16 +2676,16 @@ static const yytype_int16 yytable[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, - 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, + 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 502, 503, 0, 0, 0, 637, 886, 0, 0, - 0, 0, 0, 504, 505, 506, 507, 0, 0, 0, + 0, 504, 505, 0, 0, 0, 639, 0, 0, 0, + 0, 0, 0, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 508, 509, 510, 511, 512, 332, + 0, 0, 0, 0, 510, 511, 512, 513, 514, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 513, 514, 515, - 516, 517, 518, 519, 520, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 515, 516, 517, + 518, 519, 520, 521, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, @@ -2624,16 +2719,16 @@ static const yytype_int16 yytable[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 0, 0, 0, 500, 501, 0, 0, 0, + 0, 0, 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 502, 503, 0, 0, 576, 0, - 0, 0, 0, 0, 0, 0, 504, 505, 506, 507, + 0, 0, 0, 0, 504, 505, 0, 0, 736, 0, + 0, 0, 0, 0, 0, 0, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, - 511, 512, 332, 0, 0, 0, 0, 337, 338, 0, + 0, 0, 0, 0, 0, 0, 0, 510, 511, 512, + 513, 514, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 513, 514, 515, 516, 517, 518, 519, 520, 0, 0, + 515, 516, 517, 518, 519, 520, 521, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, @@ -2667,17 +2762,17 @@ static const yytype_int16 yytable[] = 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, - 0, 0, 321, 0, 0, 0, 0, 0, 500, 501, + 0, 0, 321, 0, 0, 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 0, - 0, 0, 637, 0, 0, 0, 0, 0, 0, 504, - 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 504, 505, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 747, 506, + 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 509, 510, 511, 512, 332, 0, 0, 0, 0, + 510, 511, 512, 513, 514, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 515, 516, 517, 518, 519, 520, 521, + 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, @@ -2711,16 +2806,16 @@ static const yytype_int16 yytable[] = 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, - 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, + 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 502, 503, 0, 0, 734, 0, 0, 0, 0, 0, - 0, 0, 504, 505, 506, 507, 0, 0, 0, 0, + 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 508, 509, 510, 511, 512, 332, 0, + 0, 0, 0, 510, 511, 512, 513, 514, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 513, 514, 515, 516, - 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 515, 516, 517, 518, + 519, 520, 521, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, @@ -2754,16 +2849,16 @@ static const yytype_int16 yytable[] = 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, - 0, 0, 0, 0, 500, 501, 0, 0, 0, 0, + 0, 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 745, 504, 505, 506, 507, 0, + 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, - 512, 332, 0, 0, 0, 0, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 510, 511, 512, 513, + 514, 332, 0, 0, 0, 0, 337, 657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, - 514, 515, 516, 517, 518, 519, 520, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 515, + 516, 517, 518, 519, 520, 521, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, @@ -2797,16 +2892,16 @@ static const yytype_int16 yytable[] = 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, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 0, 0, 0, 500, 501, 0, + 0, 321, 0, 0, 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 502, 503, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, - 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, - 509, 510, 511, 512, 332, 0, 0, 0, 0, 337, + 0, 0, 0, 0, 0, 0, 504, 505, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, + 511, 512, 513, 697, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 513, 514, 515, 516, 517, 518, 519, 520, + 0, 0, 515, 516, 517, 518, 519, 520, 521, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, @@ -2841,378 +2936,293 @@ static const yytype_int16 yytable[] = 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, - 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, - 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 504, 505, 506, 507, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 508, 509, 510, 511, 512, 332, 0, 0, - 0, 0, 337, 655, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 513, 514, 515, 516, 517, - 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 358, 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, 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, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 0, 0, 0, 500, 501, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 504, 505, 506, 507, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 508, 509, 510, 511, 695, - 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 358, 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, 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, 0, 0, 0, 0, 0, 0, - 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 0, 0, 0, 0, 337, 338 + 0, 0, 0, 0, 0, 0, 0, 332, 0, 0, + 0, 0, 337, 338 }; static const yytype_int16 yycheck[] = { - 0, 383, 0, 402, 494, 0, 503, 482, 407, 0, - 435, 0, 623, 635, 543, 637, 441, 402, 640, 568, - 402, 737, 414, 548, 391, 407, 570, 348, 553, 336, - 559, 359, 331, 332, 385, 899, 348, 562, 348, 529, - 348, 351, 906, 349, 353, 427, 571, 351, 382, 352, - 351, 385, 916, 356, 358, 329, 330, 385, 409, 356, - 381, 382, 383, 384, 431, 372, 491, 492, 367, 368, - 382, 368, 382, 548, 382, 349, 385, 351, 553, 350, - 447, 355, 351, 351, 559, 356, 349, 562, 351, 349, - 359, 359, 474, 541, 350, 358, 571, 641, 352, 547, - 356, 549, 356, 351, 552, 602, 554, 604, 556, 557, - 358, 356, 349, 561, 359, 590, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 351, 327, 328, 353, - 741, 382, 356, 358, 385, 359, 358, 409, 410, 411, - 412, 413, 414, 415, 361, 635, 363, 637, 350, 541, - 640, 350, 774, 650, 356, 350, 350, 356, 356, 357, - 709, 356, 356, 350, 654, 557, 350, 350, 350, 356, - 350, 350, 356, 356, 356, 350, 356, 356, 350, 350, - 354, 356, 356, 350, 356, 356, 568, 350, 570, 356, - 350, 350, 350, 356, 350, 350, 356, 356, 356, 566, - 356, 356, 350, 350, 920, 350, 350, 350, 356, 356, - 352, 356, 356, 356, 356, 381, 382, 383, 384, 720, - 721, 722, 723, 356, 356, 382, 359, 359, 385, 440, - 779, 842, 854, 382, 633, 356, 385, 356, 359, 349, - 359, 382, 382, 359, 385, 385, 743, 349, 633, 349, - 747, 633, 382, 382, 382, 385, 385, 385, 382, 641, - 382, 385, 382, 385, 356, 385, 349, 359, 374, 375, - 376, 482, 349, 798, 799, 765, 766, 333, 334, 704, - 805, 806, 811, 349, 774, 364, 365, 366, 910, 500, - 501, 356, 357, 716, 717, 349, 718, 719, 724, 725, - 350, 356, 359, 385, 367, 385, 353, 385, 353, 385, - 351, 385, 385, 351, 350, 926, 385, 359, 358, 356, - 349, 532, 356, 798, 799, 358, 356, 709, 356, 356, - 805, 806, 356, 356, 356, 356, 811, 548, 813, 356, - 350, 356, 553, 840, 350, 359, 843, 358, 559, 351, - 385, 562, 349, 349, 385, 348, 335, 351, 371, 385, - 571, 370, 352, 337, 854, 385, 369, 352, 354, 349, - 382, 359, 359, 349, 349, 359, 349, 359, 359, 590, - 357, 359, 349, 383, 349, 348, 883, 359, 350, 358, - 356, 391, 383, 385, 350, 356, 356, 779, 350, 399, - 391, 399, 402, 900, 399, 352, 896, 407, 399, 407, - 399, 402, 407, 352, 385, 356, 407, 417, 915, 348, - 910, 354, 350, 393, 349, 359, 385, 427, 426, 353, - 350, 431, 358, 397, 353, 353, 427, 359, 354, 726, - 431, 727, 730, 728, 843, 729, 573, 447, 659, 731, - 331, 703, 818, 905, 845, 916, 447, 917, 845, 883, - 633, 843, 399, 431, 633, 633, 564, 796, 425, 427, - 794, 803, 799, 806, 474, 801, 431, 813, 809, -1, - -1, 811, -1, 474, 883, 485, -1, -1, -1, -1, - -1, -1, -1, -1, 485, -1, -1, -1, -1, -1, - -1, 883, 713, 714, 715, 716, 717, 718, 719, 720, - 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 537, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 566, -1, 568, -1, - 570, -1, -1, -1, -1, 566, -1, 568, -1, 570, - -1, -1, -1, -1, -1, -1, -1, 798, 799, -1, - -1, -1, -1, -1, 805, 806, -1, -1, -1, -1, - 811, -1, 813, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 623, -1, -1, -1, -1, -1, -1, - -1, -1, 623, 633, -1, -1, -1, -1, -1, -1, - -1, 641, 633, -1, -1, -1, -1, -1, -1, -1, - 641, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 385, 0, 404, 496, 484, 625, 0, 409, 0, + 505, 0, 437, 442, 550, 545, 404, 570, 443, 555, + 404, 739, 393, 348, 416, 409, 572, 336, 564, 353, + 637, 561, 639, 348, 351, 642, 351, 573, 348, 531, + 359, 348, 356, 331, 332, 429, 385, 382, 352, 349, + 385, 349, 356, 351, 368, 484, 381, 382, 383, 384, + 358, 385, 433, 372, 329, 330, 385, 382, 493, 494, + 409, 550, 382, 502, 503, 382, 555, 349, 449, 367, + 368, 351, 561, 351, 349, 564, 351, 543, 358, 901, + 355, 359, 476, 549, 573, 551, 908, 643, 554, 359, + 556, 351, 558, 559, 351, 534, 918, 563, 358, 604, + 351, 606, 359, 592, 350, 382, 353, 358, 385, 356, + 356, 550, 359, 350, 743, 350, 555, 350, 350, 356, + 349, 356, 561, 356, 356, 564, 411, 412, 413, 414, + 415, 416, 417, 350, 573, 637, 350, 639, 350, 356, + 642, 543, 356, 350, 356, 350, 350, 652, 711, 356, + 350, 356, 356, 592, 656, 356, 356, 559, 359, 776, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 352, 350, 356, 350, 356, 350, 570, 356, 572, 356, + 358, 356, 350, 350, 350, 350, 350, 568, 356, 356, + 356, 356, 356, 350, 922, 350, 350, 350, 350, 356, + 350, 356, 356, 356, 356, 350, 356, 350, 352, 385, + 382, 356, 356, 385, 356, 844, 349, 359, 781, 349, + 382, 349, 661, 385, 635, 381, 382, 383, 384, 722, + 723, 724, 725, 382, 349, 382, 385, 635, 385, 856, + 745, 635, 382, 382, 749, 385, 385, 382, 382, 643, + 385, 385, 349, 382, 800, 801, 385, 382, 327, 328, + 385, 807, 808, 349, 356, 767, 768, 359, 361, 356, + 363, 706, 359, 813, 776, 349, 715, 716, 717, 718, + 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, + 729, 730, 731, 732, 733, 912, 367, 356, 356, 928, + 359, 359, 374, 375, 376, 333, 334, 364, 365, 366, + 359, 800, 801, 354, 353, 356, 353, 711, 807, 808, + 356, 357, 356, 357, 813, 385, 815, 718, 719, 385, + 720, 721, 385, 726, 727, 351, 351, 842, 385, 385, + 845, 350, 385, 356, 371, 359, 358, 358, 350, 356, + 356, 356, 356, 385, 856, 349, 356, 382, 356, 356, + 356, 800, 801, 356, 356, 350, 349, 358, 807, 808, + 359, 351, 349, 351, 813, 385, 815, 348, 352, 335, + 885, 354, 370, 393, 385, 369, 337, 781, 352, 349, + 385, 401, 393, 401, 404, 385, 898, 902, 401, 409, + 401, 409, 401, 404, 385, 359, 409, 359, 409, 419, + 912, 349, 917, 349, 359, 349, 357, 359, 349, 429, + 428, 349, 359, 433, 359, 350, 359, 385, 429, 358, + 385, 350, 433, 356, 845, 356, 356, 350, 352, 449, + 352, 356, 348, 393, 348, 354, 385, 350, 449, 349, + 358, 845, 353, 350, 359, 353, 728, 397, 353, 730, + 359, 354, 729, 731, 733, 433, 476, 732, 429, 575, + 433, 331, 820, 847, 885, 476, 907, 487, 705, 919, + 918, 427, 847, 401, 635, 885, 487, 635, 566, 635, + 801, 885, 798, 796, 815, 808, 805, 813, 803, 811, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 539, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 709, - -1, -1, -1, -1, -1, -1, -1, -1, 709, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 568, -1, + 570, -1, 572, -1, -1, -1, -1, 568, -1, 570, + -1, 572, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 737, -1, -1, - -1, 741, -1, -1, -1, -1, 737, -1, -1, -1, - 741, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 779, - -1, -1, -1, -1, -1, -1, -1, -1, 779, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 625, -1, -1, -1, -1, + -1, -1, -1, -1, 625, 635, -1, -1, -1, -1, + -1, -1, -1, 643, 635, -1, -1, -1, -1, -1, + -1, -1, 643, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 842, 843, -1, 845, -1, 845, -1, -1, - -1, 842, 843, -1, 845, -1, -1, -1, -1, -1, + -1, 711, -1, -1, -1, -1, -1, -1, -1, -1, + 711, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 739, + -1, -1, -1, 743, -1, -1, -1, -1, 739, -1, + -1, -1, 743, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 883, -1, -1, -1, -1, -1, -1, - -1, -1, 883, -1, -1, -1, -1, -1, -1, 899, - -1, -1, -1, -1, -1, -1, 906, -1, 899, -1, - -1, -1, -1, -1, -1, 906, 916, -1, -1, -1, - 920, -1, -1, -1, -1, 916, 926, -1, -1, 920, - -1, -1, -1, 0, -1, 926, 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, + -1, 781, -1, -1, -1, -1, -1, -1, -1, -1, + 781, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, - -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - 377, -1, -1, -1, -1, -1, -1, -1, -1, 386, - 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, - -1, -1, -1, -1, -1, 422, -1, 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, 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, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 348, 349, -1, 351, -1, 353, - 354, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, - 374, 375, 376, 377, -1, -1, -1, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, -1, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 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, 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, -1, -1, 329, 330, + -1, -1, -1, -1, 844, 845, -1, 847, -1, 847, + -1, -1, -1, 844, 845, -1, 847, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, - 351, -1, 353, 354, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, 377, -1, -1, -1, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, -1, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 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, 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, -1, - -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 348, 349, -1, 351, -1, 353, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, - -1, -1, -1, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, -1, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 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, 3, 4, + -1, -1, -1, -1, -1, 885, -1, -1, -1, -1, + -1, -1, -1, -1, 885, -1, -1, -1, -1, -1, + -1, 901, -1, -1, -1, -1, -1, -1, 908, -1, + 901, -1, -1, -1, -1, -1, -1, 908, 918, -1, + -1, -1, 922, -1, -1, -1, -1, 918, 928, -1, + -1, 922, -1, -1, -1, 0, -1, 928, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, + -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 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, 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, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, 351, -1, 353, 354, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 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, 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, -1, -1, 329, 330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 348, 349, -1, 351, -1, 353, 354, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, -1, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 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, 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, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, 351, -1, 353, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 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, 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, @@ -3258,188 +3268,189 @@ static const yytype_int16 yycheck[] = 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, 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, -1, -1, 329, 330, -1, + 455, 456, 457, 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, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, 351, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 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, 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, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 348, 349, -1, 351, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 373, 374, 375, 376, 377, -1, -1, -1, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, -1, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 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, 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, -1, -1, - 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, - 349, -1, 351, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, -1, 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, 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, -1, -1, -1, 320, 321, 322, 323, 324, 325, - 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, + -1, -1, -1, 348, 349, -1, 351, -1, -1, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 348, 349, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, - 376, -1, -1, -1, -1, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, -1, 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, 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, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, -1, 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, - 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, -1, -1, -1, -1, -1, -1, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, -1, 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, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 351, -1, - -1, -1, -1, -1, -1, -1, 359, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, + -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 373, 374, 375, 376, 377, -1, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, - 413, -1, -1, -1, -1, -1, -1, -1, -1, 422, - -1, 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, 3, 4, 5, 6, 7, 8, 9, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 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, 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, @@ -3484,188 +3495,98 @@ static const yytype_int16 yycheck[] = -1, -1, 422, -1, 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, 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, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, + 450, 451, 452, 453, 454, 455, 456, 457, 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, -1, -1, -1, 320, 321, 322, 323, 324, + 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, + 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - -1, -1, -1, -1, -1, -1, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, - -1, -1, -1, -1, -1, 422, -1, 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, 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, -1, -1, -1, 320, 321, 322, 323, - 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 351, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 386, 387, 388, 389, 390, 391, 392, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, - -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, - 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, 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, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 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, 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, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, + -1, 351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, - 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, -1, -1, -1, -1, -1, -1, -1, - -1, 422, -1, 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, 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, -1, - -1, -1, 320, 321, 322, 323, 324, 325, 326, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 354, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, - -1, -1, -1, -1, 422, -1, 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, 3, 4, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 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, 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, @@ -3711,52 +3632,230 @@ static const yytype_int16 yycheck[] = 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, 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, -1, -1, -1, 320, 321, - 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, + 455, 456, 457, 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, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 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, 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, -1, -1, -1, 320, 321, 322, 323, 324, + 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 354, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 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, 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, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 374, 375, 376, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, - 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, - 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, - 422, -1, 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, 4, 5, 6, 7, 8, 9, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 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, 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, 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, -1, -1, -1, -1, -1, -1, 323, -1, -1, + -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 348, 349, -1, -1, -1, 353, 354, -1, + -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, + 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 436, 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, 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, -1, -1, -1, -1, -1, -1, + 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, + 353, 354, -1, -1, -1, -1, -1, 360, 361, 362, + 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, + 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 436, 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, @@ -3791,7 +3890,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, -1, -1, 353, 354, -1, -1, -1, -1, -1, + -1, -1, 352, -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, @@ -3834,7 +3933,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 348, 349, -1, -1, -1, 353, 354, -1, -1, + -1, 348, 349, -1, -1, -1, 353, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, @@ -3921,7 +4020,7 @@ static const yytype_int16 yycheck[] = -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, - -1, -1, 353, -1, -1, -1, -1, -1, -1, 360, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, @@ -3964,7 +4063,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 348, 349, -1, -1, 352, -1, -1, -1, -1, -1, + 348, 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, @@ -4008,7 +4107,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, -1, -1, @@ -4092,99 +4191,13 @@ static const yytype_int16 yycheck[] = 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, - 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, - 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, - -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 436, 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, 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, -1, -1, -1, -1, -1, -1, 323, -1, -1, - -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 348, 349, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, - 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 436, 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, 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, -1, -1, -1, -1, -1, -1, - 323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 386, -1, -1, -1, -1, 391, 392 + -1, -1, -1, -1, -1, -1, -1, 386, -1, -1, + -1, -1, 391, 392 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4228,136 +4241,137 @@ static const yytype_int16 yystos[] = 409, 410, 411, 412, 413, 422, 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, 487, 488, - 491, 492, 493, 494, 498, 499, 500, 501, 502, 503, - 506, 507, 508, 509, 510, 512, 517, 518, 519, 560, - 561, 562, 564, 571, 575, 576, 581, 584, 349, 349, - 349, 349, 349, 349, 349, 349, 351, 518, 353, 385, - 349, 349, 359, 385, 359, 563, 350, 356, 495, 496, - 497, 507, 512, 356, 359, 385, 359, 385, 508, 512, - 367, 514, 515, 0, 561, 492, 500, 507, 359, 491, - 385, 567, 568, 585, 586, 382, 385, 567, 382, 567, - 382, 567, 382, 567, 382, 567, 567, 585, 382, 567, - 385, 565, 566, 512, 521, 353, 385, 409, 504, 505, - 385, 511, 351, 359, 513, 353, 539, 564, 496, 495, - 497, 385, 385, 349, 358, 513, 353, 356, 359, 490, - 329, 330, 348, 349, 360, 361, 362, 363, 381, 382, - 383, 384, 385, 414, 415, 416, 417, 418, 419, 420, - 421, 457, 458, 459, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 510, 512, 516, 513, 350, 385, 359, - 358, 356, 350, 356, 350, 356, 358, 356, 356, 356, - 350, 356, 356, 356, 356, 356, 356, 356, 350, 356, - 350, 356, 349, 352, 356, 359, 507, 512, 522, 523, - 520, 358, 350, 356, 350, 356, 352, 468, 470, 471, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 489, 490, 493, 494, 495, 496, 500, 501, 502, 503, + 504, 505, 508, 509, 510, 511, 512, 514, 519, 520, + 521, 562, 563, 564, 566, 573, 577, 578, 583, 586, + 349, 349, 349, 349, 349, 349, 349, 349, 351, 520, + 353, 385, 349, 349, 359, 385, 359, 565, 350, 356, + 497, 498, 499, 509, 514, 356, 359, 385, 359, 385, + 510, 514, 367, 516, 517, 0, 563, 494, 502, 509, + 359, 493, 385, 569, 570, 587, 588, 382, 385, 569, + 382, 569, 382, 569, 382, 569, 382, 569, 569, 587, + 382, 569, 385, 567, 568, 514, 523, 353, 385, 409, + 506, 507, 385, 513, 351, 359, 515, 353, 541, 566, + 498, 497, 499, 385, 385, 349, 358, 515, 353, 356, + 359, 492, 329, 330, 348, 349, 360, 361, 362, 363, + 381, 382, 383, 384, 385, 414, 415, 416, 417, 418, + 419, 420, 421, 459, 460, 461, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 512, 514, 518, 515, 350, + 385, 359, 358, 356, 350, 356, 350, 356, 358, 356, + 356, 356, 350, 356, 356, 356, 356, 356, 356, 356, + 350, 356, 350, 356, 349, 352, 356, 359, 509, 514, + 524, 525, 522, 358, 350, 356, 350, 356, 352, 470, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 351, 359, 353, 354, 359, 393, 394, 395, 396, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 423, - 468, 481, 483, 485, 487, 491, 510, 512, 528, 529, - 530, 531, 532, 540, 541, 542, 543, 546, 547, 550, - 551, 552, 559, 564, 513, 358, 513, 353, 483, 526, - 358, 489, 385, 356, 359, 468, 468, 485, 329, 330, - 351, 355, 350, 350, 356, 392, 483, 349, 468, 356, - 368, 564, 348, 351, 382, 568, 585, 385, 586, 348, - 381, 382, 383, 384, 572, 573, 382, 481, 486, 574, - 382, 381, 382, 383, 384, 577, 578, 382, 486, 579, - 382, 348, 580, 382, 585, 385, 486, 582, 583, 382, - 486, 352, 566, 512, 385, 524, 525, 354, 523, 522, - 486, 505, 385, 364, 365, 366, 361, 363, 327, 328, - 331, 332, 367, 368, 333, 334, 371, 370, 369, 335, - 337, 336, 372, 352, 352, 481, 354, 533, 349, 359, - 359, 554, 349, 349, 359, 359, 485, 349, 485, 357, - 359, 359, 359, 359, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 358, 484, 356, 359, 354, 529, - 543, 547, 552, 526, 358, 354, 526, 527, 526, 522, - 385, 350, 460, 485, 385, 483, 468, 348, 382, 569, - 570, 350, 358, 350, 356, 350, 356, 350, 356, 356, - 350, 356, 350, 356, 350, 356, 356, 350, 356, 356, - 350, 356, 350, 356, 350, 350, 524, 513, 356, 359, - 354, 468, 468, 468, 470, 470, 471, 471, 472, 472, - 472, 472, 473, 473, 474, 475, 476, 477, 478, 479, - 482, 352, 540, 553, 529, 555, 485, 359, 485, 357, - 483, 483, 526, 354, 356, 354, 352, 352, 356, 352, - 356, 573, 572, 486, 574, 578, 577, 486, 579, 348, - 580, 582, 583, 359, 525, 485, 534, 485, 500, 545, - 393, 528, 541, 556, 350, 350, 354, 526, 348, 382, - 350, 350, 350, 350, 350, 350, 357, 354, 385, 350, - 349, 545, 557, 558, 536, 537, 538, 544, 548, 483, - 358, 530, 535, 539, 485, 359, 350, 397, 532, 530, - 353, 526, 350, 485, 535, 536, 540, 549, 359, 354 + 482, 483, 351, 359, 353, 354, 359, 393, 394, 395, + 396, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 423, 470, 483, 485, 487, 489, 493, 512, 514, + 530, 531, 532, 533, 534, 542, 543, 544, 545, 548, + 549, 552, 553, 554, 561, 566, 515, 358, 515, 353, + 485, 528, 358, 491, 385, 356, 359, 470, 470, 487, + 329, 330, 351, 355, 350, 350, 356, 392, 485, 349, + 470, 356, 368, 566, 348, 351, 382, 570, 587, 385, + 588, 348, 381, 382, 383, 384, 574, 575, 382, 483, + 488, 576, 382, 381, 382, 383, 384, 579, 580, 382, + 488, 581, 382, 348, 582, 382, 587, 385, 488, 584, + 585, 382, 488, 352, 568, 514, 385, 526, 527, 354, + 525, 524, 488, 507, 385, 364, 365, 366, 361, 363, + 327, 328, 331, 332, 367, 368, 333, 334, 371, 370, + 369, 335, 337, 336, 372, 352, 352, 483, 354, 535, + 349, 359, 359, 556, 349, 349, 359, 359, 487, 349, + 487, 357, 359, 359, 359, 359, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 358, 486, 356, 359, + 354, 531, 545, 549, 554, 528, 358, 354, 528, 529, + 528, 524, 385, 350, 462, 487, 385, 485, 470, 348, + 382, 571, 572, 350, 358, 350, 356, 350, 356, 350, + 356, 356, 350, 356, 350, 356, 350, 356, 356, 350, + 356, 356, 350, 356, 350, 356, 350, 350, 526, 515, + 356, 359, 354, 470, 470, 470, 472, 472, 473, 473, + 474, 474, 474, 474, 475, 475, 476, 477, 478, 479, + 480, 481, 484, 352, 542, 555, 531, 557, 487, 359, + 487, 357, 485, 485, 528, 354, 356, 354, 352, 352, + 356, 352, 356, 575, 574, 488, 576, 580, 579, 488, + 581, 348, 582, 584, 585, 359, 527, 487, 536, 487, + 502, 547, 393, 530, 543, 558, 350, 350, 354, 528, + 348, 382, 350, 350, 350, 350, 350, 350, 357, 354, + 385, 350, 349, 547, 559, 560, 538, 539, 540, 546, + 550, 485, 358, 532, 537, 541, 487, 359, 350, 397, + 534, 532, 353, 528, 350, 487, 537, 538, 542, 551, + 359, 354 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 456, 457, 458, 458, 458, 458, 458, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 459, 459, - 459, 459, 459, 459, 460, 461, 462, 463, 463, 464, - 464, 465, 465, 466, 467, 467, 467, 468, 468, 468, - 468, 469, 469, 469, 469, 470, 470, 470, 470, 471, - 471, 471, 472, 472, 472, 473, 473, 473, 473, 473, - 474, 474, 474, 475, 475, 476, 476, 477, 477, 478, - 478, 479, 479, 480, 480, 481, 482, 481, 483, 483, - 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, - 484, 485, 485, 486, 487, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 487, 489, 488, 490, 490, 491, - 491, 491, 491, 492, 492, 493, 493, 494, 495, 495, - 496, 496, 496, 496, 497, 498, 498, 498, 498, 498, - 499, 499, 499, 499, 499, 500, 500, 501, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 503, 504, 504, - 505, 505, 505, 506, 507, 507, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 510, 511, 511, 512, 512, 513, 513, 513, - 513, 514, 514, 515, 516, 516, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 518, 518, 518, 520, 519, 521, 519, 522, 522, - 523, 523, 524, 524, 525, 525, 526, 526, 526, 526, - 527, 527, 528, 529, 529, 530, 530, 530, 530, 530, - 530, 530, 530, 531, 532, 533, 534, 532, 535, 535, - 537, 536, 538, 536, 539, 539, 540, 540, 541, 541, - 542, 542, 543, 544, 544, 545, 545, 546, 546, 548, - 547, 549, 549, 550, 550, 551, 551, 553, 552, 554, - 552, 555, 552, 556, 556, 557, 557, 558, 558, 559, - 559, 559, 559, 559, 559, 559, 559, 560, 560, 561, - 561, 561, 563, 562, 564, 565, 565, 566, 566, 567, - 567, 568, 568, 569, 569, 570, 570, 571, 571, 571, - 571, 571, 571, 572, 572, 573, 573, 573, 573, 573, - 574, 574, 575, 575, 576, 576, 576, 576, 576, 576, - 576, 576, 577, 577, 578, 578, 578, 578, 579, 579, - 580, 580, 581, 581, 581, 581, 582, 582, 583, 584, - 584, 585, 585, 586, 586 + 0, 458, 459, 460, 460, 460, 460, 460, 460, 460, + 460, 460, 460, 460, 460, 460, 460, 460, 461, 461, + 461, 461, 461, 461, 462, 463, 464, 465, 465, 466, + 466, 467, 467, 468, 469, 469, 469, 470, 470, 470, + 470, 471, 471, 471, 471, 472, 472, 472, 472, 473, + 473, 473, 474, 474, 474, 475, 475, 475, 475, 475, + 476, 476, 476, 477, 477, 478, 478, 479, 479, 480, + 480, 481, 481, 482, 482, 483, 484, 483, 485, 485, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 487, 487, 488, 489, 489, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 491, 490, 492, 492, 493, + 493, 493, 493, 494, 494, 495, 495, 496, 497, 497, + 498, 498, 498, 498, 499, 500, 500, 500, 500, 500, + 501, 501, 501, 501, 501, 502, 502, 503, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 505, 506, + 506, 507, 507, 507, 508, 509, 509, 510, 510, 510, + 510, 510, 510, 510, 510, 510, 510, 510, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 512, 513, 513, 514, 514, 515, + 515, 515, 515, 516, 516, 517, 518, 518, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 520, 520, 520, 522, 521, 523, 521, + 524, 524, 525, 525, 526, 526, 527, 527, 528, 528, + 528, 528, 529, 529, 530, 531, 531, 532, 532, 532, + 532, 532, 532, 532, 532, 533, 534, 535, 536, 534, + 537, 537, 539, 538, 540, 538, 541, 541, 542, 542, + 543, 543, 544, 544, 545, 546, 546, 547, 547, 548, + 548, 550, 549, 551, 551, 552, 552, 553, 553, 555, + 554, 556, 554, 557, 554, 558, 558, 559, 559, 560, + 560, 561, 561, 561, 561, 561, 561, 561, 561, 562, + 562, 563, 563, 563, 565, 564, 566, 567, 567, 568, + 568, 569, 569, 570, 570, 571, 571, 572, 572, 573, + 573, 573, 573, 573, 573, 574, 574, 575, 575, 575, + 575, 575, 576, 576, 577, 577, 578, 578, 578, 578, + 578, 578, 578, 578, 579, 579, 580, 580, 580, 580, + 581, 581, 582, 582, 583, 583, 583, 583, 584, 584, + 585, 586, 586, 587, 587, 588, 588 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4377,14 +4391,14 @@ static const yytype_int8 yyr2[] = 3, 3, 4, 1, 1, 2, 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, - 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, + 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 1, 1, 3, 2, 3, 2, 3, 3, - 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, + 1, 1, 4, 1, 1, 1, 3, 2, 3, 2, + 3, 3, 4, 1, 0, 3, 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, @@ -4416,22 +4430,22 @@ 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, 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, 3, 6, 8, 4, 6, 1, 3, 1, 4, - 6, 1, 3, 3, 3 + 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, 3, 6, 8, 4, 6, 1, 3, + 1, 4, 6, 1, 3, 3, 3 }; @@ -5181,7 +5195,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5185 "MachineIndependent/glslang_tab.cpp" +#line 5199 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ @@ -5189,7 +5203,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5193 "MachineIndependent/glslang_tab.cpp" +#line 5207 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ @@ -5199,7 +5213,7 @@ yyreduce: if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5203 "MachineIndependent/glslang_tab.cpp" +#line 5217 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ @@ -5207,7 +5221,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5211 "MachineIndependent/glslang_tab.cpp" +#line 5225 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ @@ -5215,7 +5229,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5219 "MachineIndependent/glslang_tab.cpp" +#line 5233 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ @@ -5224,7 +5238,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5228 "MachineIndependent/glslang_tab.cpp" +#line 5242 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ @@ -5232,7 +5246,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5236 "MachineIndependent/glslang_tab.cpp" +#line 5250 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ @@ -5240,7 +5254,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5244 "MachineIndependent/glslang_tab.cpp" +#line 5258 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ @@ -5249,7 +5263,7 @@ yyreduce: parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5253 "MachineIndependent/glslang_tab.cpp" +#line 5267 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ @@ -5258,7 +5272,7 @@ yyreduce: parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5262 "MachineIndependent/glslang_tab.cpp" +#line 5276 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ @@ -5267,7 +5281,7 @@ yyreduce: parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5271 "MachineIndependent/glslang_tab.cpp" +#line 5285 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ @@ -5276,7 +5290,7 @@ yyreduce: parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5280 "MachineIndependent/glslang_tab.cpp" +#line 5294 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ @@ -5285,7 +5299,7 @@ yyreduce: parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5289 "MachineIndependent/glslang_tab.cpp" +#line 5303 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ @@ -5294,7 +5308,7 @@ yyreduce: parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5298 "MachineIndependent/glslang_tab.cpp" +#line 5312 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ @@ -5305,7 +5319,7 @@ yyreduce: parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5309 "MachineIndependent/glslang_tab.cpp" +#line 5323 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ @@ -5314,7 +5328,7 @@ yyreduce: parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5318 "MachineIndependent/glslang_tab.cpp" +#line 5332 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ @@ -5322,7 +5336,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5326 "MachineIndependent/glslang_tab.cpp" +#line 5340 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ @@ -5330,7 +5344,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5334 "MachineIndependent/glslang_tab.cpp" +#line 5348 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ @@ -5338,7 +5352,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5342 "MachineIndependent/glslang_tab.cpp" +#line 5356 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ @@ -5346,7 +5360,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5350 "MachineIndependent/glslang_tab.cpp" +#line 5364 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ @@ -5356,7 +5370,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5360 "MachineIndependent/glslang_tab.cpp" +#line 5374 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ @@ -5366,7 +5380,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5370 "MachineIndependent/glslang_tab.cpp" +#line 5384 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ @@ -5375,7 +5389,7 @@ yyreduce: parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5379 "MachineIndependent/glslang_tab.cpp" +#line 5393 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ @@ -5384,7 +5398,7 @@ yyreduce: (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5388 "MachineIndependent/glslang_tab.cpp" +#line 5402 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ @@ -5392,7 +5406,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 5396 "MachineIndependent/glslang_tab.cpp" +#line 5410 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ @@ -5401,7 +5415,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5405 "MachineIndependent/glslang_tab.cpp" +#line 5419 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ @@ -5410,7 +5424,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5414 "MachineIndependent/glslang_tab.cpp" +#line 5428 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ @@ -5418,7 +5432,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 5422 "MachineIndependent/glslang_tab.cpp" +#line 5436 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ @@ -5426,7 +5440,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 5430 "MachineIndependent/glslang_tab.cpp" +#line 5444 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ @@ -5438,7 +5452,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 5442 "MachineIndependent/glslang_tab.cpp" +#line 5456 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ @@ -5450,7 +5464,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 5454 "MachineIndependent/glslang_tab.cpp" +#line 5468 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ @@ -5458,7 +5472,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 5462 "MachineIndependent/glslang_tab.cpp" +#line 5476 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ @@ -5468,7 +5482,7 @@ yyreduce: (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5472 "MachineIndependent/glslang_tab.cpp" +#line 5486 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ @@ -5500,7 +5514,7 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5504 "MachineIndependent/glslang_tab.cpp" +#line 5518 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ @@ -5510,7 +5524,7 @@ yyreduce: (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5514 "MachineIndependent/glslang_tab.cpp" +#line 5528 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ @@ -5521,7 +5535,7 @@ yyreduce: if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5525 "MachineIndependent/glslang_tab.cpp" +#line 5539 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ @@ -5530,7 +5544,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5534 "MachineIndependent/glslang_tab.cpp" +#line 5548 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ @@ -5539,7 +5553,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5543 "MachineIndependent/glslang_tab.cpp" +#line 5557 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ @@ -5560,38 +5574,38 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5564 "MachineIndependent/glslang_tab.cpp" +#line 5578 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ #line 627 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5570 "MachineIndependent/glslang_tab.cpp" +#line 5584 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ #line 628 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5576 "MachineIndependent/glslang_tab.cpp" +#line 5590 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ #line 629 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5582 "MachineIndependent/glslang_tab.cpp" +#line 5596 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ #line 630 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5589 "MachineIndependent/glslang_tab.cpp" +#line 5603 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ #line 636 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5595 "MachineIndependent/glslang_tab.cpp" +#line 5609 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ @@ -5601,7 +5615,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5605 "MachineIndependent/glslang_tab.cpp" +#line 5619 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ @@ -5611,7 +5625,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5615 "MachineIndependent/glslang_tab.cpp" +#line 5629 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ @@ -5622,13 +5636,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5626 "MachineIndependent/glslang_tab.cpp" +#line 5640 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ #line 656 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5632 "MachineIndependent/glslang_tab.cpp" +#line 5646 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ @@ -5638,7 +5652,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5642 "MachineIndependent/glslang_tab.cpp" +#line 5656 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ @@ -5648,13 +5662,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5652 "MachineIndependent/glslang_tab.cpp" +#line 5666 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ #line 670 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5658 "MachineIndependent/glslang_tab.cpp" +#line 5672 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ @@ -5665,7 +5679,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5669 "MachineIndependent/glslang_tab.cpp" +#line 5683 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ @@ -5676,13 +5690,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5680 "MachineIndependent/glslang_tab.cpp" +#line 5694 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ #line 686 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5686 "MachineIndependent/glslang_tab.cpp" +#line 5700 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ @@ -5692,7 +5706,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5696 "MachineIndependent/glslang_tab.cpp" +#line 5710 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ @@ -5702,7 +5716,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5706 "MachineIndependent/glslang_tab.cpp" +#line 5720 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ @@ -5712,7 +5726,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5716 "MachineIndependent/glslang_tab.cpp" +#line 5730 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ @@ -5722,13 +5736,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5726 "MachineIndependent/glslang_tab.cpp" +#line 5740 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ #line 710 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5732 "MachineIndependent/glslang_tab.cpp" +#line 5746 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ @@ -5742,7 +5756,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5746 "MachineIndependent/glslang_tab.cpp" +#line 5760 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ @@ -5756,13 +5770,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5760 "MachineIndependent/glslang_tab.cpp" +#line 5774 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ #line 732 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5766 "MachineIndependent/glslang_tab.cpp" +#line 5780 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ @@ -5773,13 +5787,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5777 "MachineIndependent/glslang_tab.cpp" +#line 5791 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ #line 742 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5783 "MachineIndependent/glslang_tab.cpp" +#line 5797 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ @@ -5790,13 +5804,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5794 "MachineIndependent/glslang_tab.cpp" +#line 5808 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ #line 752 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5800 "MachineIndependent/glslang_tab.cpp" +#line 5814 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ @@ -5807,13 +5821,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5811 "MachineIndependent/glslang_tab.cpp" +#line 5825 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ #line 762 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5817 "MachineIndependent/glslang_tab.cpp" +#line 5831 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ @@ -5823,13 +5837,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5827 "MachineIndependent/glslang_tab.cpp" +#line 5841 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ #line 771 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5833 "MachineIndependent/glslang_tab.cpp" +#line 5847 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ @@ -5839,13 +5853,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5843 "MachineIndependent/glslang_tab.cpp" +#line 5857 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ #line 780 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5849 "MachineIndependent/glslang_tab.cpp" +#line 5863 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ @@ -5855,13 +5869,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5859 "MachineIndependent/glslang_tab.cpp" +#line 5873 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ #line 789 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5865 "MachineIndependent/glslang_tab.cpp" +#line 5879 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ @@ -5869,7 +5883,7 @@ yyreduce: { ++parseContext.controlFlowNestingLevel; } -#line 5873 "MachineIndependent/glslang_tab.cpp" +#line 5887 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ @@ -5886,13 +5900,13 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5890 "MachineIndependent/glslang_tab.cpp" +#line 5904 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ #line 808 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5896 "MachineIndependent/glslang_tab.cpp" +#line 5910 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ @@ -5910,7 +5924,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5914 "MachineIndependent/glslang_tab.cpp" +#line 5928 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ @@ -5919,7 +5933,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5923 "MachineIndependent/glslang_tab.cpp" +#line 5937 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ @@ -5928,7 +5942,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5932 "MachineIndependent/glslang_tab.cpp" +#line 5946 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ @@ -5937,7 +5951,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5941 "MachineIndependent/glslang_tab.cpp" +#line 5955 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ @@ -5947,7 +5961,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5951 "MachineIndependent/glslang_tab.cpp" +#line 5965 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ @@ -5956,7 +5970,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5960 "MachineIndependent/glslang_tab.cpp" +#line 5974 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ @@ -5965,7 +5979,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5969 "MachineIndependent/glslang_tab.cpp" +#line 5983 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ @@ -5974,7 +5988,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 5978 "MachineIndependent/glslang_tab.cpp" +#line 5992 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ @@ -5983,7 +5997,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 5987 "MachineIndependent/glslang_tab.cpp" +#line 6001 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ @@ -5992,7 +6006,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 5996 "MachineIndependent/glslang_tab.cpp" +#line 6010 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ @@ -6001,7 +6015,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6005 "MachineIndependent/glslang_tab.cpp" +#line 6019 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ @@ -6010,7 +6024,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6014 "MachineIndependent/glslang_tab.cpp" +#line 6028 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ @@ -6018,7 +6032,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6022 "MachineIndependent/glslang_tab.cpp" +#line 6036 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ @@ -6031,7 +6045,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6035 "MachineIndependent/glslang_tab.cpp" +#line 6049 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ @@ -6040,7 +6054,7 @@ yyreduce: parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6044 "MachineIndependent/glslang_tab.cpp" +#line 6058 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ @@ -6050,7 +6064,7 @@ yyreduce: (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6054 "MachineIndependent/glslang_tab.cpp" +#line 6068 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ @@ -6062,7 +6076,7 @@ yyreduce: (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6066 "MachineIndependent/glslang_tab.cpp" +#line 6080 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ @@ -6072,7 +6086,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6076 "MachineIndependent/glslang_tab.cpp" +#line 6090 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ @@ -6082,7 +6096,7 @@ yyreduce: (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6086 "MachineIndependent/glslang_tab.cpp" +#line 6100 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ @@ -6094,7 +6108,7 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6098 "MachineIndependent/glslang_tab.cpp" +#line 6112 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ @@ -6103,7 +6117,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6107 "MachineIndependent/glslang_tab.cpp" +#line 6121 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ @@ -6112,7 +6126,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6116 "MachineIndependent/glslang_tab.cpp" +#line 6130 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ @@ -6121,7 +6135,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6125 "MachineIndependent/glslang_tab.cpp" +#line 6139 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ @@ -6131,7 +6145,7 @@ yyreduce: parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6135 "MachineIndependent/glslang_tab.cpp" +#line 6149 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ @@ -6141,7 +6155,7 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6145 "MachineIndependent/glslang_tab.cpp" +#line 6159 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ @@ -6152,13 +6166,13 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6156 "MachineIndependent/glslang_tab.cpp" +#line 6170 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ #line 956 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6162 "MachineIndependent/glslang_tab.cpp" +#line 6176 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ @@ -6172,7 +6186,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6176 "MachineIndependent/glslang_tab.cpp" +#line 6190 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ @@ -6181,7 +6195,7 @@ yyreduce: (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6185 "MachineIndependent/glslang_tab.cpp" +#line 6199 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ @@ -6190,7 +6204,7 @@ yyreduce: (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6194 "MachineIndependent/glslang_tab.cpp" +#line 6208 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ @@ -6199,7 +6213,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6203 "MachineIndependent/glslang_tab.cpp" +#line 6217 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ @@ -6210,7 +6224,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6214 "MachineIndependent/glslang_tab.cpp" +#line 6228 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ @@ -6221,7 +6235,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6225 "MachineIndependent/glslang_tab.cpp" +#line 6239 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ @@ -6233,7 +6247,7 @@ yyreduce: parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6237 "MachineIndependent/glslang_tab.cpp" +#line 6251 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ @@ -6241,7 +6255,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6245 "MachineIndependent/glslang_tab.cpp" +#line 6259 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ @@ -6249,7 +6263,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6253 "MachineIndependent/glslang_tab.cpp" +#line 6267 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ @@ -6262,7 +6276,7 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 6266 "MachineIndependent/glslang_tab.cpp" +#line 6280 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ @@ -6284,7 +6298,7 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6288 "MachineIndependent/glslang_tab.cpp" +#line 6302 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ @@ -6308,7 +6322,7 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6312 "MachineIndependent/glslang_tab.cpp" +#line 6326 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ @@ -6328,7 +6342,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6332 "MachineIndependent/glslang_tab.cpp" +#line 6346 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ @@ -6352,7 +6366,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6356 "MachineIndependent/glslang_tab.cpp" +#line 6370 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ @@ -6368,7 +6382,7 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6372 "MachineIndependent/glslang_tab.cpp" +#line 6386 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ @@ -6380,7 +6394,7 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6384 "MachineIndependent/glslang_tab.cpp" +#line 6398 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ @@ -6395,7 +6409,7 @@ yyreduce: parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6399 "MachineIndependent/glslang_tab.cpp" +#line 6413 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ @@ -6407,7 +6421,7 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6411 "MachineIndependent/glslang_tab.cpp" +#line 6425 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ @@ -6418,7 +6432,7 @@ yyreduce: if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6422 "MachineIndependent/glslang_tab.cpp" +#line 6436 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ @@ -6426,7 +6440,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 6430 "MachineIndependent/glslang_tab.cpp" +#line 6444 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ @@ -6435,7 +6449,7 @@ yyreduce: (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6439 "MachineIndependent/glslang_tab.cpp" +#line 6453 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ @@ -6444,7 +6458,7 @@ yyreduce: (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6448 "MachineIndependent/glslang_tab.cpp" +#line 6462 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ @@ -6454,7 +6468,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6458 "MachineIndependent/glslang_tab.cpp" +#line 6472 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ @@ -6464,7 +6478,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6468 "MachineIndependent/glslang_tab.cpp" +#line 6482 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ @@ -6476,7 +6490,7 @@ yyreduce: parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6480 "MachineIndependent/glslang_tab.cpp" +#line 6494 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ @@ -6486,7 +6500,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6490 "MachineIndependent/glslang_tab.cpp" +#line 6504 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ @@ -6496,7 +6510,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6500 "MachineIndependent/glslang_tab.cpp" +#line 6514 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ @@ -6506,7 +6520,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6510 "MachineIndependent/glslang_tab.cpp" +#line 6524 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ @@ -6516,7 +6530,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6520 "MachineIndependent/glslang_tab.cpp" +#line 6534 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ @@ -6531,7 +6545,7 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 6535 "MachineIndependent/glslang_tab.cpp" +#line 6549 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ @@ -6560,7 +6574,7 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6564 "MachineIndependent/glslang_tab.cpp" +#line 6578 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ @@ -6571,7 +6585,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6575 "MachineIndependent/glslang_tab.cpp" +#line 6589 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ @@ -6583,7 +6597,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6587 "MachineIndependent/glslang_tab.cpp" +#line 6601 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ @@ -6595,7 +6609,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6599 "MachineIndependent/glslang_tab.cpp" +#line 6613 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ @@ -6607,7 +6621,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6611 "MachineIndependent/glslang_tab.cpp" +#line 6625 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ @@ -6619,7 +6633,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6623 "MachineIndependent/glslang_tab.cpp" +#line 6637 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ @@ -6632,7 +6646,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6636 "MachineIndependent/glslang_tab.cpp" +#line 6650 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ @@ -6645,7 +6659,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6649 "MachineIndependent/glslang_tab.cpp" +#line 6663 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ @@ -6653,115 +6667,130 @@ yyreduce: { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV"); // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. if (parseContext.language == EShLangFragment) parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6664 "MachineIndependent/glslang_tab.cpp" +#line 6678 "MachineIndependent/glslang_tab.cpp" break; - case 145: /* interpolation_qualifier: PERVIEWNV */ + case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ #line 1311 "MachineIndependent/glslang.y" + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perPrimitiveNV = true; + } +#line 6693 "MachineIndependent/glslang_tab.cpp" + break; + + case 146: /* interpolation_qualifier: PERVIEWNV */ +#line 1321 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV"); + parseContext.requireStage((yyvsp[0].lex).loc, EShLangMesh, "perviewNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6676 "MachineIndependent/glslang_tab.cpp" +#line 6705 "MachineIndependent/glslang_tab.cpp" break; - case 146: /* interpolation_qualifier: PERTASKNV */ -#line 1318 "MachineIndependent/glslang.y" + case 147: /* interpolation_qualifier: PERTASKNV */ +#line 1328 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6688 "MachineIndependent/glslang_tab.cpp" +#line 6717 "MachineIndependent/glslang_tab.cpp" break; - case 147: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1329 "MachineIndependent/glslang.y" + case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ +#line 1339 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6696 "MachineIndependent/glslang_tab.cpp" +#line 6725 "MachineIndependent/glslang_tab.cpp" break; - case 148: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1335 "MachineIndependent/glslang.y" + case 149: /* layout_qualifier_id_list: layout_qualifier_id */ +#line 1345 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6704 "MachineIndependent/glslang_tab.cpp" +#line 6733 "MachineIndependent/glslang_tab.cpp" break; - case 149: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1338 "MachineIndependent/glslang.y" + case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ +#line 1348 "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 6714 "MachineIndependent/glslang_tab.cpp" +#line 6743 "MachineIndependent/glslang_tab.cpp" break; - case 150: /* layout_qualifier_id: IDENTIFIER */ -#line 1345 "MachineIndependent/glslang.y" + case 151: /* layout_qualifier_id: IDENTIFIER */ +#line 1355 "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 6723 "MachineIndependent/glslang_tab.cpp" +#line 6752 "MachineIndependent/glslang_tab.cpp" break; - case 151: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1349 "MachineIndependent/glslang.y" + case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ +#line 1359 "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 6732 "MachineIndependent/glslang_tab.cpp" +#line 6761 "MachineIndependent/glslang_tab.cpp" break; - case 152: /* layout_qualifier_id: SHARED */ -#line 1353 "MachineIndependent/glslang.y" + case 153: /* layout_qualifier_id: SHARED */ +#line 1363 "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 6742 "MachineIndependent/glslang_tab.cpp" +#line 6771 "MachineIndependent/glslang_tab.cpp" break; - case 153: /* precise_qualifier: PRECISE */ -#line 1362 "MachineIndependent/glslang.y" + case 154: /* precise_qualifier: PRECISE */ +#line 1372 "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 6753 "MachineIndependent/glslang_tab.cpp" +#line 6782 "MachineIndependent/glslang_tab.cpp" break; - case 154: /* type_qualifier: single_type_qualifier */ -#line 1372 "MachineIndependent/glslang.y" + case 155: /* type_qualifier: single_type_qualifier */ +#line 1382 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6761 "MachineIndependent/glslang_tab.cpp" +#line 6790 "MachineIndependent/glslang_tab.cpp" break; - case 155: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1375 "MachineIndependent/glslang.y" + case 156: /* type_qualifier: type_qualifier single_type_qualifier */ +#line 1385 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6770,151 +6799,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 6774 "MachineIndependent/glslang_tab.cpp" +#line 6803 "MachineIndependent/glslang_tab.cpp" break; - case 156: /* single_type_qualifier: storage_qualifier */ -#line 1386 "MachineIndependent/glslang.y" + case 157: /* single_type_qualifier: storage_qualifier */ +#line 1396 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6782 "MachineIndependent/glslang_tab.cpp" +#line 6811 "MachineIndependent/glslang_tab.cpp" break; - case 157: /* single_type_qualifier: layout_qualifier */ -#line 1389 "MachineIndependent/glslang.y" + case 158: /* single_type_qualifier: layout_qualifier */ +#line 1399 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6790 "MachineIndependent/glslang_tab.cpp" +#line 6819 "MachineIndependent/glslang_tab.cpp" break; - case 158: /* single_type_qualifier: precision_qualifier */ -#line 1392 "MachineIndependent/glslang.y" + case 159: /* single_type_qualifier: precision_qualifier */ +#line 1402 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6799 "MachineIndependent/glslang_tab.cpp" +#line 6828 "MachineIndependent/glslang_tab.cpp" break; - case 159: /* single_type_qualifier: interpolation_qualifier */ -#line 1396 "MachineIndependent/glslang.y" + case 160: /* single_type_qualifier: interpolation_qualifier */ +#line 1406 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6808 "MachineIndependent/glslang_tab.cpp" +#line 6837 "MachineIndependent/glslang_tab.cpp" break; - case 160: /* single_type_qualifier: invariant_qualifier */ -#line 1400 "MachineIndependent/glslang.y" + case 161: /* single_type_qualifier: invariant_qualifier */ +#line 1410 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6817 "MachineIndependent/glslang_tab.cpp" +#line 6846 "MachineIndependent/glslang_tab.cpp" break; - case 161: /* single_type_qualifier: precise_qualifier */ -#line 1405 "MachineIndependent/glslang.y" + case 162: /* 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 6826 "MachineIndependent/glslang_tab.cpp" +#line 6855 "MachineIndependent/glslang_tab.cpp" break; - case 162: /* single_type_qualifier: non_uniform_qualifier */ -#line 1409 "MachineIndependent/glslang.y" + case 163: /* single_type_qualifier: non_uniform_qualifier */ +#line 1419 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6834 "MachineIndependent/glslang_tab.cpp" +#line 6863 "MachineIndependent/glslang_tab.cpp" break; - case 163: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1412 "MachineIndependent/glslang.y" + case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ +#line 1422 "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 6844 "MachineIndependent/glslang_tab.cpp" +#line 6873 "MachineIndependent/glslang_tab.cpp" break; - case 164: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1417 "MachineIndependent/glslang.y" + case 165: /* single_type_qualifier: spirv_decorate_qualifier */ +#line 1427 "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 6853 "MachineIndependent/glslang_tab.cpp" +#line 6882 "MachineIndependent/glslang_tab.cpp" break; - case 165: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1421 "MachineIndependent/glslang.y" + case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ +#line 1431 "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 6863 "MachineIndependent/glslang_tab.cpp" +#line 6892 "MachineIndependent/glslang_tab.cpp" break; - case 166: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1426 "MachineIndependent/glslang.y" + case 167: /* single_type_qualifier: SPIRV_LITERAL */ +#line 1436 "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 6873 "MachineIndependent/glslang_tab.cpp" +#line 6902 "MachineIndependent/glslang_tab.cpp" break; - case 167: /* storage_qualifier: CONST */ -#line 1435 "MachineIndependent/glslang.y" + case 168: /* storage_qualifier: CONST */ +#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 6882 "MachineIndependent/glslang_tab.cpp" +#line 6911 "MachineIndependent/glslang_tab.cpp" break; - case 168: /* storage_qualifier: INOUT */ -#line 1439 "MachineIndependent/glslang.y" + case 169: /* storage_qualifier: INOUT */ +#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 6892 "MachineIndependent/glslang_tab.cpp" +#line 6921 "MachineIndependent/glslang_tab.cpp" break; - case 169: /* storage_qualifier: IN */ -#line 1444 "MachineIndependent/glslang.y" + case 170: /* storage_qualifier: IN */ +#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 6903 "MachineIndependent/glslang_tab.cpp" +#line 6932 "MachineIndependent/glslang_tab.cpp" break; - case 170: /* storage_qualifier: OUT */ -#line 1450 "MachineIndependent/glslang.y" + case 171: /* storage_qualifier: OUT */ +#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 6914 "MachineIndependent/glslang_tab.cpp" +#line 6943 "MachineIndependent/glslang_tab.cpp" break; - case 171: /* storage_qualifier: CENTROID */ -#line 1456 "MachineIndependent/glslang.y" + case 172: /* storage_qualifier: CENTROID */ +#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"); @@ -6922,44 +6951,44 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6926 "MachineIndependent/glslang_tab.cpp" +#line 6955 "MachineIndependent/glslang_tab.cpp" break; - case 172: /* storage_qualifier: UNIFORM */ -#line 1463 "MachineIndependent/glslang.y" + case 173: /* storage_qualifier: UNIFORM */ +#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 6936 "MachineIndependent/glslang_tab.cpp" +#line 6965 "MachineIndependent/glslang_tab.cpp" break; - case 173: /* storage_qualifier: SHARED */ -#line 1468 "MachineIndependent/glslang.y" + case 174: /* storage_qualifier: SHARED */ +#line 1478 "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"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6949 "MachineIndependent/glslang_tab.cpp" +#line 6978 "MachineIndependent/glslang_tab.cpp" break; - case 174: /* storage_qualifier: BUFFER */ -#line 1476 "MachineIndependent/glslang.y" + case 175: /* storage_qualifier: BUFFER */ +#line 1486 "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 6959 "MachineIndependent/glslang_tab.cpp" +#line 6988 "MachineIndependent/glslang_tab.cpp" break; - case 175: /* storage_qualifier: ATTRIBUTE */ -#line 1482 "MachineIndependent/glslang.y" + case 176: /* storage_qualifier: ATTRIBUTE */ +#line 1492 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -6972,11 +7001,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6976 "MachineIndependent/glslang_tab.cpp" +#line 7005 "MachineIndependent/glslang_tab.cpp" break; - case 176: /* storage_qualifier: VARYING */ -#line 1494 "MachineIndependent/glslang.y" + case 177: /* storage_qualifier: VARYING */ +#line 1504 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -6991,32 +7020,32 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6995 "MachineIndependent/glslang_tab.cpp" +#line 7024 "MachineIndependent/glslang_tab.cpp" break; - case 177: /* storage_qualifier: PATCH */ -#line 1508 "MachineIndependent/glslang.y" + case 178: /* storage_qualifier: PATCH */ +#line 1518 "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 7006 "MachineIndependent/glslang_tab.cpp" +#line 7035 "MachineIndependent/glslang_tab.cpp" break; - case 178: /* storage_qualifier: SAMPLE */ -#line 1514 "MachineIndependent/glslang.y" + case 179: /* storage_qualifier: SAMPLE */ +#line 1524 "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 7016 "MachineIndependent/glslang_tab.cpp" +#line 7045 "MachineIndependent/glslang_tab.cpp" break; - case 179: /* storage_qualifier: HITATTRNV */ -#line 1519 "MachineIndependent/glslang.y" + case 180: /* storage_qualifier: HITATTRNV */ +#line 1529 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7025,11 +7054,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7029 "MachineIndependent/glslang_tab.cpp" +#line 7058 "MachineIndependent/glslang_tab.cpp" break; - case 180: /* storage_qualifier: HITATTREXT */ -#line 1527 "MachineIndependent/glslang.y" + case 181: /* storage_qualifier: HITATTREXT */ +#line 1537 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7038,11 +7067,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7042 "MachineIndependent/glslang_tab.cpp" +#line 7071 "MachineIndependent/glslang_tab.cpp" break; - case 181: /* storage_qualifier: PAYLOADNV */ -#line 1535 "MachineIndependent/glslang.y" + case 182: /* storage_qualifier: PAYLOADNV */ +#line 1545 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7051,11 +7080,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7055 "MachineIndependent/glslang_tab.cpp" +#line 7084 "MachineIndependent/glslang_tab.cpp" break; - case 182: /* storage_qualifier: PAYLOADEXT */ -#line 1543 "MachineIndependent/glslang.y" + case 183: /* storage_qualifier: PAYLOADEXT */ +#line 1553 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7064,11 +7093,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7068 "MachineIndependent/glslang_tab.cpp" +#line 7097 "MachineIndependent/glslang_tab.cpp" break; - case 183: /* storage_qualifier: PAYLOADINNV */ -#line 1551 "MachineIndependent/glslang.y" + case 184: /* storage_qualifier: PAYLOADINNV */ +#line 1561 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7077,11 +7106,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7081 "MachineIndependent/glslang_tab.cpp" +#line 7110 "MachineIndependent/glslang_tab.cpp" break; - case 184: /* storage_qualifier: PAYLOADINEXT */ -#line 1559 "MachineIndependent/glslang.y" + case 185: /* storage_qualifier: PAYLOADINEXT */ +#line 1569 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7090,11 +7119,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7094 "MachineIndependent/glslang_tab.cpp" +#line 7123 "MachineIndependent/glslang_tab.cpp" break; - case 185: /* storage_qualifier: CALLDATANV */ -#line 1567 "MachineIndependent/glslang.y" + case 186: /* storage_qualifier: CALLDATANV */ +#line 1577 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7103,11 +7132,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7107 "MachineIndependent/glslang_tab.cpp" +#line 7136 "MachineIndependent/glslang_tab.cpp" break; - case 186: /* storage_qualifier: CALLDATAEXT */ -#line 1575 "MachineIndependent/glslang.y" + case 187: /* storage_qualifier: CALLDATAEXT */ +#line 1585 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7116,11 +7145,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7120 "MachineIndependent/glslang_tab.cpp" +#line 7149 "MachineIndependent/glslang_tab.cpp" break; - case 187: /* storage_qualifier: CALLDATAINNV */ -#line 1583 "MachineIndependent/glslang.y" + case 188: /* storage_qualifier: CALLDATAINNV */ +#line 1593 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7128,11 +7157,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7132 "MachineIndependent/glslang_tab.cpp" +#line 7161 "MachineIndependent/glslang_tab.cpp" break; - case 188: /* storage_qualifier: CALLDATAINEXT */ -#line 1590 "MachineIndependent/glslang.y" + case 189: /* storage_qualifier: CALLDATAINEXT */ +#line 1600 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7140,175 +7169,187 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7144 "MachineIndependent/glslang_tab.cpp" +#line 7173 "MachineIndependent/glslang_tab.cpp" break; - case 189: /* storage_qualifier: COHERENT */ -#line 1597 "MachineIndependent/glslang.y" + case 190: /* storage_qualifier: COHERENT */ +#line 1607 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7153 "MachineIndependent/glslang_tab.cpp" +#line 7182 "MachineIndependent/glslang_tab.cpp" break; - case 190: /* storage_qualifier: DEVICECOHERENT */ -#line 1601 "MachineIndependent/glslang.y" + case 191: /* storage_qualifier: DEVICECOHERENT */ +#line 1611 "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 7163 "MachineIndependent/glslang_tab.cpp" +#line 7192 "MachineIndependent/glslang_tab.cpp" break; - case 191: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1606 "MachineIndependent/glslang.y" + case 192: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1616 "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 7173 "MachineIndependent/glslang_tab.cpp" +#line 7202 "MachineIndependent/glslang_tab.cpp" break; - case 192: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1611 "MachineIndependent/glslang.y" + case 193: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1621 "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 7183 "MachineIndependent/glslang_tab.cpp" +#line 7212 "MachineIndependent/glslang_tab.cpp" break; - case 193: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1616 "MachineIndependent/glslang.y" + case 194: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1626 "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 7193 "MachineIndependent/glslang_tab.cpp" +#line 7222 "MachineIndependent/glslang_tab.cpp" break; - case 194: /* storage_qualifier: NONPRIVATE */ -#line 1621 "MachineIndependent/glslang.y" + case 195: /* storage_qualifier: NONPRIVATE */ +#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, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7203 "MachineIndependent/glslang_tab.cpp" +#line 7232 "MachineIndependent/glslang_tab.cpp" break; - case 195: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1626 "MachineIndependent/glslang.y" + case 196: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1636 "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 7213 "MachineIndependent/glslang_tab.cpp" +#line 7242 "MachineIndependent/glslang_tab.cpp" break; - case 196: /* storage_qualifier: VOLATILE */ -#line 1631 "MachineIndependent/glslang.y" + case 197: /* storage_qualifier: VOLATILE */ +#line 1641 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7222 "MachineIndependent/glslang_tab.cpp" +#line 7251 "MachineIndependent/glslang_tab.cpp" break; - case 197: /* storage_qualifier: RESTRICT */ -#line 1635 "MachineIndependent/glslang.y" + case 198: /* storage_qualifier: RESTRICT */ +#line 1645 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7231 "MachineIndependent/glslang_tab.cpp" +#line 7260 "MachineIndependent/glslang_tab.cpp" break; - case 198: /* storage_qualifier: READONLY */ -#line 1639 "MachineIndependent/glslang.y" + case 199: /* storage_qualifier: READONLY */ +#line 1649 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7240 "MachineIndependent/glslang_tab.cpp" +#line 7269 "MachineIndependent/glslang_tab.cpp" break; - case 199: /* storage_qualifier: WRITEONLY */ -#line 1643 "MachineIndependent/glslang.y" + case 200: /* storage_qualifier: WRITEONLY */ +#line 1653 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7249 "MachineIndependent/glslang_tab.cpp" +#line 7278 "MachineIndependent/glslang_tab.cpp" break; - case 200: /* storage_qualifier: SUBROUTINE */ -#line 1647 "MachineIndependent/glslang.y" + case 201: /* storage_qualifier: SUBROUTINE */ +#line 1657 "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 7260 "MachineIndependent/glslang_tab.cpp" +#line 7289 "MachineIndependent/glslang_tab.cpp" break; - case 201: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1653 "MachineIndependent/glslang.y" + case 202: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1663 "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 7271 "MachineIndependent/glslang_tab.cpp" +#line 7300 "MachineIndependent/glslang_tab.cpp" break; - case 202: /* non_uniform_qualifier: NONUNIFORM */ -#line 1664 "MachineIndependent/glslang.y" + case 203: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ +#line 1669 "MachineIndependent/glslang.y" + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT "); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; + } +#line 7312 "MachineIndependent/glslang_tab.cpp" + break; + + case 204: /* non_uniform_qualifier: NONUNIFORM */ +#line 1681 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7280 "MachineIndependent/glslang_tab.cpp" +#line 7321 "MachineIndependent/glslang_tab.cpp" break; - case 203: /* type_name_list: IDENTIFIER */ -#line 1671 "MachineIndependent/glslang.y" + case 205: /* type_name_list: IDENTIFIER */ +#line 1688 "MachineIndependent/glslang.y" { // TODO } -#line 7288 "MachineIndependent/glslang_tab.cpp" +#line 7329 "MachineIndependent/glslang_tab.cpp" break; - case 204: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1674 "MachineIndependent/glslang.y" + case 206: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1691 "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 7298 "MachineIndependent/glslang_tab.cpp" +#line 7339 "MachineIndependent/glslang_tab.cpp" break; - case 205: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1683 "MachineIndependent/glslang.y" + case 207: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1700 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 7308 "MachineIndependent/glslang_tab.cpp" +#line 7349 "MachineIndependent/glslang_tab.cpp" break; - case 206: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1688 "MachineIndependent/glslang.y" + case 208: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1705 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7316,21 +7357,21 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 7320 "MachineIndependent/glslang_tab.cpp" +#line 7361 "MachineIndependent/glslang_tab.cpp" break; - case 207: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1698 "MachineIndependent/glslang.y" + case 209: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1715 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7330 "MachineIndependent/glslang_tab.cpp" +#line 7371 "MachineIndependent/glslang_tab.cpp" break; - case 208: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1703 "MachineIndependent/glslang.y" + case 210: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1720 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7339,20 +7380,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7343 "MachineIndependent/glslang_tab.cpp" +#line 7384 "MachineIndependent/glslang_tab.cpp" break; - case 209: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1711 "MachineIndependent/glslang.y" + case 211: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1728 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7352 "MachineIndependent/glslang_tab.cpp" +#line 7393 "MachineIndependent/glslang_tab.cpp" break; - case 210: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1715 "MachineIndependent/glslang.y" + case 212: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1732 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7360,35 +7401,35 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7364 "MachineIndependent/glslang_tab.cpp" +#line 7405 "MachineIndependent/glslang_tab.cpp" break; - case 211: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1725 "MachineIndependent/glslang.y" + case 213: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1742 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7372 "MachineIndependent/glslang_tab.cpp" +#line 7413 "MachineIndependent/glslang_tab.cpp" break; - case 212: /* type_parameter_specifier_opt: %empty */ -#line 1728 "MachineIndependent/glslang.y" + case 214: /* type_parameter_specifier_opt: %empty */ +#line 1745 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7380 "MachineIndependent/glslang_tab.cpp" +#line 7421 "MachineIndependent/glslang_tab.cpp" break; - case 213: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1734 "MachineIndependent/glslang.y" + case 215: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1751 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7388 "MachineIndependent/glslang_tab.cpp" +#line 7429 "MachineIndependent/glslang_tab.cpp" break; - case 214: /* type_parameter_specifier_list: unary_expression */ -#line 1740 "MachineIndependent/glslang.y" + case 216: /* type_parameter_specifier_list: unary_expression */ +#line 1757 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TArraySizes; @@ -7396,11 +7437,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7400 "MachineIndependent/glslang_tab.cpp" +#line 7441 "MachineIndependent/glslang_tab.cpp" break; - case 215: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1747 "MachineIndependent/glslang.y" + case 217: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1764 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7408,300 +7449,300 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7412 "MachineIndependent/glslang_tab.cpp" +#line 7453 "MachineIndependent/glslang_tab.cpp" break; - case 216: /* type_specifier_nonarray: VOID */ -#line 1757 "MachineIndependent/glslang.y" + case 218: /* type_specifier_nonarray: VOID */ +#line 1774 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7421 "MachineIndependent/glslang_tab.cpp" +#line 7462 "MachineIndependent/glslang_tab.cpp" break; - case 217: /* type_specifier_nonarray: FLOAT */ -#line 1761 "MachineIndependent/glslang.y" + case 219: /* type_specifier_nonarray: FLOAT */ +#line 1778 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7430 "MachineIndependent/glslang_tab.cpp" +#line 7471 "MachineIndependent/glslang_tab.cpp" break; - case 218: /* type_specifier_nonarray: INT */ -#line 1765 "MachineIndependent/glslang.y" + case 220: /* type_specifier_nonarray: INT */ +#line 1782 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7439 "MachineIndependent/glslang_tab.cpp" +#line 7480 "MachineIndependent/glslang_tab.cpp" break; - case 219: /* type_specifier_nonarray: UINT */ -#line 1769 "MachineIndependent/glslang.y" + case 221: /* type_specifier_nonarray: UINT */ +#line 1786 "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 7449 "MachineIndependent/glslang_tab.cpp" +#line 7490 "MachineIndependent/glslang_tab.cpp" break; - case 220: /* type_specifier_nonarray: BOOL */ -#line 1774 "MachineIndependent/glslang.y" + case 222: /* type_specifier_nonarray: BOOL */ +#line 1791 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7458 "MachineIndependent/glslang_tab.cpp" +#line 7499 "MachineIndependent/glslang_tab.cpp" break; - case 221: /* type_specifier_nonarray: VEC2 */ -#line 1778 "MachineIndependent/glslang.y" + case 223: /* type_specifier_nonarray: VEC2 */ +#line 1795 "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 7468 "MachineIndependent/glslang_tab.cpp" +#line 7509 "MachineIndependent/glslang_tab.cpp" break; - case 222: /* type_specifier_nonarray: VEC3 */ -#line 1783 "MachineIndependent/glslang.y" + case 224: /* type_specifier_nonarray: VEC3 */ +#line 1800 "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 7478 "MachineIndependent/glslang_tab.cpp" +#line 7519 "MachineIndependent/glslang_tab.cpp" break; - case 223: /* type_specifier_nonarray: VEC4 */ -#line 1788 "MachineIndependent/glslang.y" + case 225: /* type_specifier_nonarray: VEC4 */ +#line 1805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7488 "MachineIndependent/glslang_tab.cpp" +#line 7529 "MachineIndependent/glslang_tab.cpp" break; - case 224: /* type_specifier_nonarray: BVEC2 */ -#line 1793 "MachineIndependent/glslang.y" + case 226: /* type_specifier_nonarray: BVEC2 */ +#line 1810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7498 "MachineIndependent/glslang_tab.cpp" +#line 7539 "MachineIndependent/glslang_tab.cpp" break; - case 225: /* type_specifier_nonarray: BVEC3 */ -#line 1798 "MachineIndependent/glslang.y" + case 227: /* type_specifier_nonarray: BVEC3 */ +#line 1815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7508 "MachineIndependent/glslang_tab.cpp" +#line 7549 "MachineIndependent/glslang_tab.cpp" break; - case 226: /* type_specifier_nonarray: BVEC4 */ -#line 1803 "MachineIndependent/glslang.y" + case 228: /* type_specifier_nonarray: BVEC4 */ +#line 1820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7518 "MachineIndependent/glslang_tab.cpp" - break; - - case 227: /* type_specifier_nonarray: IVEC2 */ -#line 1808 "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 7528 "MachineIndependent/glslang_tab.cpp" - break; - - case 228: /* type_specifier_nonarray: IVEC3 */ -#line 1813 "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 7538 "MachineIndependent/glslang_tab.cpp" - break; - - case 229: /* type_specifier_nonarray: IVEC4 */ -#line 1818 "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 7548 "MachineIndependent/glslang_tab.cpp" - break; - - case 230: /* type_specifier_nonarray: UVEC2 */ -#line 1823 "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 7559 "MachineIndependent/glslang_tab.cpp" break; - case 231: /* type_specifier_nonarray: UVEC3 */ -#line 1829 "MachineIndependent/glslang.y" + case 229: /* type_specifier_nonarray: IVEC2 */ +#line 1825 "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 7569 "MachineIndependent/glslang_tab.cpp" + break; + + case 230: /* type_specifier_nonarray: IVEC3 */ +#line 1830 "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 7579 "MachineIndependent/glslang_tab.cpp" + break; + + case 231: /* type_specifier_nonarray: IVEC4 */ +#line 1835 "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 7589 "MachineIndependent/glslang_tab.cpp" + break; + + case 232: /* type_specifier_nonarray: UVEC2 */ +#line 1840 "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 7600 "MachineIndependent/glslang_tab.cpp" + break; + + case 233: /* type_specifier_nonarray: UVEC3 */ +#line 1846 "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 7570 "MachineIndependent/glslang_tab.cpp" +#line 7611 "MachineIndependent/glslang_tab.cpp" break; - case 232: /* type_specifier_nonarray: UVEC4 */ -#line 1835 "MachineIndependent/glslang.y" + case 234: /* type_specifier_nonarray: UVEC4 */ +#line 1852 "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 7581 "MachineIndependent/glslang_tab.cpp" +#line 7622 "MachineIndependent/glslang_tab.cpp" break; - case 233: /* type_specifier_nonarray: MAT2 */ -#line 1841 "MachineIndependent/glslang.y" + case 235: /* type_specifier_nonarray: MAT2 */ +#line 1858 "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 7591 "MachineIndependent/glslang_tab.cpp" +#line 7632 "MachineIndependent/glslang_tab.cpp" break; - case 234: /* type_specifier_nonarray: MAT3 */ -#line 1846 "MachineIndependent/glslang.y" + case 236: /* type_specifier_nonarray: MAT3 */ +#line 1863 "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 7601 "MachineIndependent/glslang_tab.cpp" +#line 7642 "MachineIndependent/glslang_tab.cpp" break; - case 235: /* type_specifier_nonarray: MAT4 */ -#line 1851 "MachineIndependent/glslang.y" + case 237: /* type_specifier_nonarray: MAT4 */ +#line 1868 "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 7611 "MachineIndependent/glslang_tab.cpp" +#line 7652 "MachineIndependent/glslang_tab.cpp" break; - case 236: /* type_specifier_nonarray: MAT2X2 */ -#line 1856 "MachineIndependent/glslang.y" + case 238: /* type_specifier_nonarray: MAT2X2 */ +#line 1873 "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 7621 "MachineIndependent/glslang_tab.cpp" +#line 7662 "MachineIndependent/glslang_tab.cpp" break; - case 237: /* type_specifier_nonarray: MAT2X3 */ -#line 1861 "MachineIndependent/glslang.y" + case 239: /* type_specifier_nonarray: MAT2X3 */ +#line 1878 "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 7631 "MachineIndependent/glslang_tab.cpp" +#line 7672 "MachineIndependent/glslang_tab.cpp" break; - case 238: /* type_specifier_nonarray: MAT2X4 */ -#line 1866 "MachineIndependent/glslang.y" + case 240: /* type_specifier_nonarray: MAT2X4 */ +#line 1883 "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 7641 "MachineIndependent/glslang_tab.cpp" +#line 7682 "MachineIndependent/glslang_tab.cpp" break; - case 239: /* type_specifier_nonarray: MAT3X2 */ -#line 1871 "MachineIndependent/glslang.y" + case 241: /* type_specifier_nonarray: MAT3X2 */ +#line 1888 "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 7651 "MachineIndependent/glslang_tab.cpp" +#line 7692 "MachineIndependent/glslang_tab.cpp" break; - case 240: /* type_specifier_nonarray: MAT3X3 */ -#line 1876 "MachineIndependent/glslang.y" + case 242: /* type_specifier_nonarray: MAT3X3 */ +#line 1893 "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 7661 "MachineIndependent/glslang_tab.cpp" +#line 7702 "MachineIndependent/glslang_tab.cpp" break; - case 241: /* type_specifier_nonarray: MAT3X4 */ -#line 1881 "MachineIndependent/glslang.y" + case 243: /* type_specifier_nonarray: MAT3X4 */ +#line 1898 "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 7671 "MachineIndependent/glslang_tab.cpp" +#line 7712 "MachineIndependent/glslang_tab.cpp" break; - case 242: /* type_specifier_nonarray: MAT4X2 */ -#line 1886 "MachineIndependent/glslang.y" + case 244: /* type_specifier_nonarray: MAT4X2 */ +#line 1903 "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 7681 "MachineIndependent/glslang_tab.cpp" +#line 7722 "MachineIndependent/glslang_tab.cpp" break; - case 243: /* type_specifier_nonarray: MAT4X3 */ -#line 1891 "MachineIndependent/glslang.y" + case 245: /* type_specifier_nonarray: MAT4X3 */ +#line 1908 "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 7691 "MachineIndependent/glslang_tab.cpp" +#line 7732 "MachineIndependent/glslang_tab.cpp" break; - case 244: /* type_specifier_nonarray: MAT4X4 */ -#line 1896 "MachineIndependent/glslang.y" + case 246: /* type_specifier_nonarray: MAT4X4 */ +#line 1913 "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 7701 "MachineIndependent/glslang_tab.cpp" +#line 7742 "MachineIndependent/glslang_tab.cpp" break; - case 245: /* type_specifier_nonarray: DOUBLE */ -#line 1902 "MachineIndependent/glslang.y" + case 247: /* type_specifier_nonarray: DOUBLE */ +#line 1919 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7709,121 +7750,121 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7713 "MachineIndependent/glslang_tab.cpp" +#line 7754 "MachineIndependent/glslang_tab.cpp" break; - case 246: /* type_specifier_nonarray: FLOAT16_T */ -#line 1909 "MachineIndependent/glslang.y" + case 248: /* type_specifier_nonarray: FLOAT16_T */ +#line 1926 "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 7723 "MachineIndependent/glslang_tab.cpp" +#line 7764 "MachineIndependent/glslang_tab.cpp" break; - case 247: /* type_specifier_nonarray: FLOAT32_T */ -#line 1914 "MachineIndependent/glslang.y" + case 249: /* type_specifier_nonarray: FLOAT32_T */ +#line 1931 "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 7733 "MachineIndependent/glslang_tab.cpp" +#line 7774 "MachineIndependent/glslang_tab.cpp" break; - case 248: /* type_specifier_nonarray: FLOAT64_T */ -#line 1919 "MachineIndependent/glslang.y" + case 250: /* type_specifier_nonarray: FLOAT64_T */ +#line 1936 "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 7743 "MachineIndependent/glslang_tab.cpp" +#line 7784 "MachineIndependent/glslang_tab.cpp" break; - case 249: /* type_specifier_nonarray: INT8_T */ -#line 1924 "MachineIndependent/glslang.y" + case 251: /* type_specifier_nonarray: INT8_T */ +#line 1941 "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 7753 "MachineIndependent/glslang_tab.cpp" +#line 7794 "MachineIndependent/glslang_tab.cpp" break; - case 250: /* type_specifier_nonarray: UINT8_T */ -#line 1929 "MachineIndependent/glslang.y" + case 252: /* type_specifier_nonarray: UINT8_T */ +#line 1946 "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 7763 "MachineIndependent/glslang_tab.cpp" +#line 7804 "MachineIndependent/glslang_tab.cpp" break; - case 251: /* type_specifier_nonarray: INT16_T */ -#line 1934 "MachineIndependent/glslang.y" + case 253: /* type_specifier_nonarray: INT16_T */ +#line 1951 "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 7773 "MachineIndependent/glslang_tab.cpp" +#line 7814 "MachineIndependent/glslang_tab.cpp" break; - case 252: /* type_specifier_nonarray: UINT16_T */ -#line 1939 "MachineIndependent/glslang.y" + case 254: /* type_specifier_nonarray: UINT16_T */ +#line 1956 "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 7783 "MachineIndependent/glslang_tab.cpp" +#line 7824 "MachineIndependent/glslang_tab.cpp" break; - case 253: /* type_specifier_nonarray: INT32_T */ -#line 1944 "MachineIndependent/glslang.y" + case 255: /* type_specifier_nonarray: INT32_T */ +#line 1961 "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 7793 "MachineIndependent/glslang_tab.cpp" +#line 7834 "MachineIndependent/glslang_tab.cpp" break; - case 254: /* type_specifier_nonarray: UINT32_T */ -#line 1949 "MachineIndependent/glslang.y" + case 256: /* type_specifier_nonarray: UINT32_T */ +#line 1966 "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 7803 "MachineIndependent/glslang_tab.cpp" +#line 7844 "MachineIndependent/glslang_tab.cpp" break; - case 255: /* type_specifier_nonarray: INT64_T */ -#line 1954 "MachineIndependent/glslang.y" + case 257: /* type_specifier_nonarray: INT64_T */ +#line 1971 "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 7813 "MachineIndependent/glslang_tab.cpp" +#line 7854 "MachineIndependent/glslang_tab.cpp" break; - case 256: /* type_specifier_nonarray: UINT64_T */ -#line 1959 "MachineIndependent/glslang.y" + case 258: /* type_specifier_nonarray: UINT64_T */ +#line 1976 "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 7823 "MachineIndependent/glslang_tab.cpp" +#line 7864 "MachineIndependent/glslang_tab.cpp" break; - case 257: /* type_specifier_nonarray: DVEC2 */ -#line 1964 "MachineIndependent/glslang.y" + case 259: /* type_specifier_nonarray: DVEC2 */ +#line 1981 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7832,11 +7873,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7836 "MachineIndependent/glslang_tab.cpp" +#line 7877 "MachineIndependent/glslang_tab.cpp" break; - case 258: /* type_specifier_nonarray: DVEC3 */ -#line 1972 "MachineIndependent/glslang.y" + case 260: /* type_specifier_nonarray: DVEC3 */ +#line 1989 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7845,11 +7886,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7849 "MachineIndependent/glslang_tab.cpp" +#line 7890 "MachineIndependent/glslang_tab.cpp" break; - case 259: /* type_specifier_nonarray: DVEC4 */ -#line 1980 "MachineIndependent/glslang.y" + case 261: /* type_specifier_nonarray: DVEC4 */ +#line 1997 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7858,374 +7899,374 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7862 "MachineIndependent/glslang_tab.cpp" +#line 7903 "MachineIndependent/glslang_tab.cpp" break; - case 260: /* type_specifier_nonarray: F16VEC2 */ -#line 1988 "MachineIndependent/glslang.y" + case 262: /* type_specifier_nonarray: F16VEC2 */ +#line 2005 "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 7873 "MachineIndependent/glslang_tab.cpp" +#line 7914 "MachineIndependent/glslang_tab.cpp" break; - case 261: /* type_specifier_nonarray: F16VEC3 */ -#line 1994 "MachineIndependent/glslang.y" + case 263: /* type_specifier_nonarray: F16VEC3 */ +#line 2011 "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 7884 "MachineIndependent/glslang_tab.cpp" +#line 7925 "MachineIndependent/glslang_tab.cpp" break; - case 262: /* type_specifier_nonarray: F16VEC4 */ -#line 2000 "MachineIndependent/glslang.y" + case 264: /* type_specifier_nonarray: F16VEC4 */ +#line 2017 "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 7895 "MachineIndependent/glslang_tab.cpp" +#line 7936 "MachineIndependent/glslang_tab.cpp" break; - case 263: /* type_specifier_nonarray: F32VEC2 */ -#line 2006 "MachineIndependent/glslang.y" + case 265: /* type_specifier_nonarray: F32VEC2 */ +#line 2023 "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 7906 "MachineIndependent/glslang_tab.cpp" +#line 7947 "MachineIndependent/glslang_tab.cpp" break; - case 264: /* type_specifier_nonarray: F32VEC3 */ -#line 2012 "MachineIndependent/glslang.y" + case 266: /* type_specifier_nonarray: F32VEC3 */ +#line 2029 "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 7917 "MachineIndependent/glslang_tab.cpp" +#line 7958 "MachineIndependent/glslang_tab.cpp" break; - case 265: /* type_specifier_nonarray: F32VEC4 */ -#line 2018 "MachineIndependent/glslang.y" + case 267: /* type_specifier_nonarray: F32VEC4 */ +#line 2035 "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 7928 "MachineIndependent/glslang_tab.cpp" +#line 7969 "MachineIndependent/glslang_tab.cpp" break; - case 266: /* type_specifier_nonarray: F64VEC2 */ -#line 2024 "MachineIndependent/glslang.y" + case 268: /* type_specifier_nonarray: F64VEC2 */ +#line 2041 "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 7939 "MachineIndependent/glslang_tab.cpp" +#line 7980 "MachineIndependent/glslang_tab.cpp" break; - case 267: /* type_specifier_nonarray: F64VEC3 */ -#line 2030 "MachineIndependent/glslang.y" + case 269: /* type_specifier_nonarray: F64VEC3 */ +#line 2047 "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 7950 "MachineIndependent/glslang_tab.cpp" +#line 7991 "MachineIndependent/glslang_tab.cpp" break; - case 268: /* type_specifier_nonarray: F64VEC4 */ -#line 2036 "MachineIndependent/glslang.y" + case 270: /* type_specifier_nonarray: F64VEC4 */ +#line 2053 "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 7961 "MachineIndependent/glslang_tab.cpp" +#line 8002 "MachineIndependent/glslang_tab.cpp" break; - case 269: /* type_specifier_nonarray: I8VEC2 */ -#line 2042 "MachineIndependent/glslang.y" + case 271: /* type_specifier_nonarray: I8VEC2 */ +#line 2059 "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 7972 "MachineIndependent/glslang_tab.cpp" +#line 8013 "MachineIndependent/glslang_tab.cpp" break; - case 270: /* type_specifier_nonarray: I8VEC3 */ -#line 2048 "MachineIndependent/glslang.y" + case 272: /* type_specifier_nonarray: I8VEC3 */ +#line 2065 "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 7983 "MachineIndependent/glslang_tab.cpp" +#line 8024 "MachineIndependent/glslang_tab.cpp" break; - case 271: /* type_specifier_nonarray: I8VEC4 */ -#line 2054 "MachineIndependent/glslang.y" + case 273: /* type_specifier_nonarray: I8VEC4 */ +#line 2071 "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 7994 "MachineIndependent/glslang_tab.cpp" +#line 8035 "MachineIndependent/glslang_tab.cpp" break; - case 272: /* type_specifier_nonarray: I16VEC2 */ -#line 2060 "MachineIndependent/glslang.y" + case 274: /* type_specifier_nonarray: I16VEC2 */ +#line 2077 "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 8005 "MachineIndependent/glslang_tab.cpp" +#line 8046 "MachineIndependent/glslang_tab.cpp" break; - case 273: /* type_specifier_nonarray: I16VEC3 */ -#line 2066 "MachineIndependent/glslang.y" + case 275: /* type_specifier_nonarray: I16VEC3 */ +#line 2083 "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 8016 "MachineIndependent/glslang_tab.cpp" +#line 8057 "MachineIndependent/glslang_tab.cpp" break; - case 274: /* type_specifier_nonarray: I16VEC4 */ -#line 2072 "MachineIndependent/glslang.y" + case 276: /* type_specifier_nonarray: I16VEC4 */ +#line 2089 "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 8027 "MachineIndependent/glslang_tab.cpp" +#line 8068 "MachineIndependent/glslang_tab.cpp" break; - case 275: /* type_specifier_nonarray: I32VEC2 */ -#line 2078 "MachineIndependent/glslang.y" + case 277: /* type_specifier_nonarray: I32VEC2 */ +#line 2095 "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 8038 "MachineIndependent/glslang_tab.cpp" +#line 8079 "MachineIndependent/glslang_tab.cpp" break; - case 276: /* type_specifier_nonarray: I32VEC3 */ -#line 2084 "MachineIndependent/glslang.y" + case 278: /* type_specifier_nonarray: I32VEC3 */ +#line 2101 "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 8049 "MachineIndependent/glslang_tab.cpp" +#line 8090 "MachineIndependent/glslang_tab.cpp" break; - case 277: /* type_specifier_nonarray: I32VEC4 */ -#line 2090 "MachineIndependent/glslang.y" + case 279: /* type_specifier_nonarray: I32VEC4 */ +#line 2107 "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 8060 "MachineIndependent/glslang_tab.cpp" +#line 8101 "MachineIndependent/glslang_tab.cpp" break; - case 278: /* type_specifier_nonarray: I64VEC2 */ -#line 2096 "MachineIndependent/glslang.y" + case 280: /* type_specifier_nonarray: I64VEC2 */ +#line 2113 "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 8071 "MachineIndependent/glslang_tab.cpp" +#line 8112 "MachineIndependent/glslang_tab.cpp" break; - case 279: /* type_specifier_nonarray: I64VEC3 */ -#line 2102 "MachineIndependent/glslang.y" + case 281: /* type_specifier_nonarray: I64VEC3 */ +#line 2119 "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 8082 "MachineIndependent/glslang_tab.cpp" +#line 8123 "MachineIndependent/glslang_tab.cpp" break; - case 280: /* type_specifier_nonarray: I64VEC4 */ -#line 2108 "MachineIndependent/glslang.y" + case 282: /* type_specifier_nonarray: I64VEC4 */ +#line 2125 "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 8093 "MachineIndependent/glslang_tab.cpp" +#line 8134 "MachineIndependent/glslang_tab.cpp" break; - case 281: /* type_specifier_nonarray: U8VEC2 */ -#line 2114 "MachineIndependent/glslang.y" + case 283: /* type_specifier_nonarray: U8VEC2 */ +#line 2131 "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 8104 "MachineIndependent/glslang_tab.cpp" +#line 8145 "MachineIndependent/glslang_tab.cpp" break; - case 282: /* type_specifier_nonarray: U8VEC3 */ -#line 2120 "MachineIndependent/glslang.y" + case 284: /* type_specifier_nonarray: U8VEC3 */ +#line 2137 "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 8115 "MachineIndependent/glslang_tab.cpp" +#line 8156 "MachineIndependent/glslang_tab.cpp" break; - case 283: /* type_specifier_nonarray: U8VEC4 */ -#line 2126 "MachineIndependent/glslang.y" + case 285: /* type_specifier_nonarray: U8VEC4 */ +#line 2143 "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 8126 "MachineIndependent/glslang_tab.cpp" +#line 8167 "MachineIndependent/glslang_tab.cpp" break; - case 284: /* type_specifier_nonarray: U16VEC2 */ -#line 2132 "MachineIndependent/glslang.y" + case 286: /* type_specifier_nonarray: U16VEC2 */ +#line 2149 "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 8137 "MachineIndependent/glslang_tab.cpp" +#line 8178 "MachineIndependent/glslang_tab.cpp" break; - case 285: /* type_specifier_nonarray: U16VEC3 */ -#line 2138 "MachineIndependent/glslang.y" + case 287: /* type_specifier_nonarray: U16VEC3 */ +#line 2155 "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 8148 "MachineIndependent/glslang_tab.cpp" +#line 8189 "MachineIndependent/glslang_tab.cpp" break; - case 286: /* type_specifier_nonarray: U16VEC4 */ -#line 2144 "MachineIndependent/glslang.y" + case 288: /* type_specifier_nonarray: U16VEC4 */ +#line 2161 "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 8159 "MachineIndependent/glslang_tab.cpp" +#line 8200 "MachineIndependent/glslang_tab.cpp" break; - case 287: /* type_specifier_nonarray: U32VEC2 */ -#line 2150 "MachineIndependent/glslang.y" + case 289: /* type_specifier_nonarray: U32VEC2 */ +#line 2167 "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 8170 "MachineIndependent/glslang_tab.cpp" +#line 8211 "MachineIndependent/glslang_tab.cpp" break; - case 288: /* type_specifier_nonarray: U32VEC3 */ -#line 2156 "MachineIndependent/glslang.y" + case 290: /* type_specifier_nonarray: U32VEC3 */ +#line 2173 "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 8181 "MachineIndependent/glslang_tab.cpp" +#line 8222 "MachineIndependent/glslang_tab.cpp" break; - case 289: /* type_specifier_nonarray: U32VEC4 */ -#line 2162 "MachineIndependent/glslang.y" + case 291: /* type_specifier_nonarray: U32VEC4 */ +#line 2179 "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 8192 "MachineIndependent/glslang_tab.cpp" +#line 8233 "MachineIndependent/glslang_tab.cpp" break; - case 290: /* type_specifier_nonarray: U64VEC2 */ -#line 2168 "MachineIndependent/glslang.y" + case 292: /* type_specifier_nonarray: U64VEC2 */ +#line 2185 "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 8203 "MachineIndependent/glslang_tab.cpp" +#line 8244 "MachineIndependent/glslang_tab.cpp" break; - case 291: /* type_specifier_nonarray: U64VEC3 */ -#line 2174 "MachineIndependent/glslang.y" + case 293: /* type_specifier_nonarray: U64VEC3 */ +#line 2191 "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 8214 "MachineIndependent/glslang_tab.cpp" +#line 8255 "MachineIndependent/glslang_tab.cpp" break; - case 292: /* type_specifier_nonarray: U64VEC4 */ -#line 2180 "MachineIndependent/glslang.y" + case 294: /* type_specifier_nonarray: U64VEC4 */ +#line 2197 "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 8225 "MachineIndependent/glslang_tab.cpp" +#line 8266 "MachineIndependent/glslang_tab.cpp" break; - case 293: /* type_specifier_nonarray: DMAT2 */ -#line 2186 "MachineIndependent/glslang.y" + case 295: /* type_specifier_nonarray: DMAT2 */ +#line 2203 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8234,11 +8275,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8238 "MachineIndependent/glslang_tab.cpp" +#line 8279 "MachineIndependent/glslang_tab.cpp" break; - case 294: /* type_specifier_nonarray: DMAT3 */ -#line 2194 "MachineIndependent/glslang.y" + case 296: /* type_specifier_nonarray: DMAT3 */ +#line 2211 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8247,11 +8288,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8251 "MachineIndependent/glslang_tab.cpp" +#line 8292 "MachineIndependent/glslang_tab.cpp" break; - case 295: /* type_specifier_nonarray: DMAT4 */ -#line 2202 "MachineIndependent/glslang.y" + case 297: /* type_specifier_nonarray: DMAT4 */ +#line 2219 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8260,11 +8301,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8264 "MachineIndependent/glslang_tab.cpp" +#line 8305 "MachineIndependent/glslang_tab.cpp" break; - case 296: /* type_specifier_nonarray: DMAT2X2 */ -#line 2210 "MachineIndependent/glslang.y" + case 298: /* type_specifier_nonarray: DMAT2X2 */ +#line 2227 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8273,11 +8314,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8277 "MachineIndependent/glslang_tab.cpp" +#line 8318 "MachineIndependent/glslang_tab.cpp" break; - case 297: /* type_specifier_nonarray: DMAT2X3 */ -#line 2218 "MachineIndependent/glslang.y" + case 299: /* type_specifier_nonarray: DMAT2X3 */ +#line 2235 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8286,11 +8327,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8290 "MachineIndependent/glslang_tab.cpp" +#line 8331 "MachineIndependent/glslang_tab.cpp" break; - case 298: /* type_specifier_nonarray: DMAT2X4 */ -#line 2226 "MachineIndependent/glslang.y" + case 300: /* type_specifier_nonarray: DMAT2X4 */ +#line 2243 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8299,11 +8340,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8303 "MachineIndependent/glslang_tab.cpp" +#line 8344 "MachineIndependent/glslang_tab.cpp" break; - case 299: /* type_specifier_nonarray: DMAT3X2 */ -#line 2234 "MachineIndependent/glslang.y" + case 301: /* type_specifier_nonarray: DMAT3X2 */ +#line 2251 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8312,11 +8353,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8316 "MachineIndependent/glslang_tab.cpp" +#line 8357 "MachineIndependent/glslang_tab.cpp" break; - case 300: /* type_specifier_nonarray: DMAT3X3 */ -#line 2242 "MachineIndependent/glslang.y" + case 302: /* type_specifier_nonarray: DMAT3X3 */ +#line 2259 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8325,11 +8366,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8329 "MachineIndependent/glslang_tab.cpp" +#line 8370 "MachineIndependent/glslang_tab.cpp" break; - case 301: /* type_specifier_nonarray: DMAT3X4 */ -#line 2250 "MachineIndependent/glslang.y" + case 303: /* type_specifier_nonarray: DMAT3X4 */ +#line 2267 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8338,11 +8379,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8342 "MachineIndependent/glslang_tab.cpp" +#line 8383 "MachineIndependent/glslang_tab.cpp" break; - case 302: /* type_specifier_nonarray: DMAT4X2 */ -#line 2258 "MachineIndependent/glslang.y" + case 304: /* type_specifier_nonarray: DMAT4X2 */ +#line 2275 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8351,11 +8392,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8355 "MachineIndependent/glslang_tab.cpp" +#line 8396 "MachineIndependent/glslang_tab.cpp" break; - case 303: /* type_specifier_nonarray: DMAT4X3 */ -#line 2266 "MachineIndependent/glslang.y" + case 305: /* type_specifier_nonarray: DMAT4X3 */ +#line 2283 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8364,11 +8405,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8368 "MachineIndependent/glslang_tab.cpp" +#line 8409 "MachineIndependent/glslang_tab.cpp" break; - case 304: /* type_specifier_nonarray: DMAT4X4 */ -#line 2274 "MachineIndependent/glslang.y" + case 306: /* type_specifier_nonarray: DMAT4X4 */ +#line 2291 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8377,2228 +8418,2228 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8381 "MachineIndependent/glslang_tab.cpp" +#line 8422 "MachineIndependent/glslang_tab.cpp" break; - case 305: /* type_specifier_nonarray: F16MAT2 */ -#line 2282 "MachineIndependent/glslang.y" + case 307: /* type_specifier_nonarray: F16MAT2 */ +#line 2299 "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 8392 "MachineIndependent/glslang_tab.cpp" +#line 8433 "MachineIndependent/glslang_tab.cpp" break; - case 306: /* type_specifier_nonarray: F16MAT3 */ -#line 2288 "MachineIndependent/glslang.y" + case 308: /* type_specifier_nonarray: F16MAT3 */ +#line 2305 "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 8403 "MachineIndependent/glslang_tab.cpp" +#line 8444 "MachineIndependent/glslang_tab.cpp" break; - case 307: /* type_specifier_nonarray: F16MAT4 */ -#line 2294 "MachineIndependent/glslang.y" + case 309: /* type_specifier_nonarray: F16MAT4 */ +#line 2311 "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 8414 "MachineIndependent/glslang_tab.cpp" +#line 8455 "MachineIndependent/glslang_tab.cpp" break; - case 308: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2300 "MachineIndependent/glslang.y" + case 310: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2317 "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 8425 "MachineIndependent/glslang_tab.cpp" +#line 8466 "MachineIndependent/glslang_tab.cpp" break; - case 309: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2306 "MachineIndependent/glslang.y" + case 311: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2323 "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 8436 "MachineIndependent/glslang_tab.cpp" +#line 8477 "MachineIndependent/glslang_tab.cpp" break; - case 310: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2312 "MachineIndependent/glslang.y" + case 312: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2329 "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 8447 "MachineIndependent/glslang_tab.cpp" +#line 8488 "MachineIndependent/glslang_tab.cpp" break; - case 311: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2318 "MachineIndependent/glslang.y" + case 313: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2335 "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 8458 "MachineIndependent/glslang_tab.cpp" +#line 8499 "MachineIndependent/glslang_tab.cpp" break; - case 312: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2324 "MachineIndependent/glslang.y" + case 314: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2341 "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 8469 "MachineIndependent/glslang_tab.cpp" +#line 8510 "MachineIndependent/glslang_tab.cpp" break; - case 313: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2330 "MachineIndependent/glslang.y" + case 315: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2347 "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 8480 "MachineIndependent/glslang_tab.cpp" +#line 8521 "MachineIndependent/glslang_tab.cpp" break; - case 314: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2336 "MachineIndependent/glslang.y" + case 316: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2353 "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 8491 "MachineIndependent/glslang_tab.cpp" +#line 8532 "MachineIndependent/glslang_tab.cpp" break; - case 315: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2342 "MachineIndependent/glslang.y" + case 317: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2359 "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 8502 "MachineIndependent/glslang_tab.cpp" +#line 8543 "MachineIndependent/glslang_tab.cpp" break; - case 316: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2348 "MachineIndependent/glslang.y" + case 318: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2365 "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 8513 "MachineIndependent/glslang_tab.cpp" +#line 8554 "MachineIndependent/glslang_tab.cpp" break; - case 317: /* type_specifier_nonarray: F32MAT2 */ -#line 2354 "MachineIndependent/glslang.y" + case 319: /* type_specifier_nonarray: F32MAT2 */ +#line 2371 "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 8524 "MachineIndependent/glslang_tab.cpp" +#line 8565 "MachineIndependent/glslang_tab.cpp" break; - case 318: /* type_specifier_nonarray: F32MAT3 */ -#line 2360 "MachineIndependent/glslang.y" + case 320: /* type_specifier_nonarray: F32MAT3 */ +#line 2377 "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 8535 "MachineIndependent/glslang_tab.cpp" +#line 8576 "MachineIndependent/glslang_tab.cpp" break; - case 319: /* type_specifier_nonarray: F32MAT4 */ -#line 2366 "MachineIndependent/glslang.y" + case 321: /* type_specifier_nonarray: F32MAT4 */ +#line 2383 "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 8546 "MachineIndependent/glslang_tab.cpp" +#line 8587 "MachineIndependent/glslang_tab.cpp" break; - case 320: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2372 "MachineIndependent/glslang.y" + case 322: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2389 "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 8557 "MachineIndependent/glslang_tab.cpp" +#line 8598 "MachineIndependent/glslang_tab.cpp" break; - case 321: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2378 "MachineIndependent/glslang.y" + case 323: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2395 "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 8568 "MachineIndependent/glslang_tab.cpp" +#line 8609 "MachineIndependent/glslang_tab.cpp" break; - case 322: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2384 "MachineIndependent/glslang.y" + case 324: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2401 "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 8579 "MachineIndependent/glslang_tab.cpp" +#line 8620 "MachineIndependent/glslang_tab.cpp" break; - case 323: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2390 "MachineIndependent/glslang.y" + case 325: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2407 "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 8590 "MachineIndependent/glslang_tab.cpp" +#line 8631 "MachineIndependent/glslang_tab.cpp" break; - case 324: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2396 "MachineIndependent/glslang.y" + case 326: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2413 "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 8601 "MachineIndependent/glslang_tab.cpp" +#line 8642 "MachineIndependent/glslang_tab.cpp" break; - case 325: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2402 "MachineIndependent/glslang.y" + case 327: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2419 "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 8612 "MachineIndependent/glslang_tab.cpp" +#line 8653 "MachineIndependent/glslang_tab.cpp" break; - case 326: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2408 "MachineIndependent/glslang.y" + case 328: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2425 "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 8623 "MachineIndependent/glslang_tab.cpp" +#line 8664 "MachineIndependent/glslang_tab.cpp" break; - case 327: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2414 "MachineIndependent/glslang.y" + case 329: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2431 "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 8634 "MachineIndependent/glslang_tab.cpp" +#line 8675 "MachineIndependent/glslang_tab.cpp" break; - case 328: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2420 "MachineIndependent/glslang.y" + case 330: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2437 "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 8645 "MachineIndependent/glslang_tab.cpp" +#line 8686 "MachineIndependent/glslang_tab.cpp" break; - case 329: /* type_specifier_nonarray: F64MAT2 */ -#line 2426 "MachineIndependent/glslang.y" + case 331: /* type_specifier_nonarray: F64MAT2 */ +#line 2443 "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 8656 "MachineIndependent/glslang_tab.cpp" +#line 8697 "MachineIndependent/glslang_tab.cpp" break; - case 330: /* type_specifier_nonarray: F64MAT3 */ -#line 2432 "MachineIndependent/glslang.y" + case 332: /* type_specifier_nonarray: F64MAT3 */ +#line 2449 "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 8667 "MachineIndependent/glslang_tab.cpp" +#line 8708 "MachineIndependent/glslang_tab.cpp" break; - case 331: /* type_specifier_nonarray: F64MAT4 */ -#line 2438 "MachineIndependent/glslang.y" + case 333: /* type_specifier_nonarray: F64MAT4 */ +#line 2455 "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 8678 "MachineIndependent/glslang_tab.cpp" +#line 8719 "MachineIndependent/glslang_tab.cpp" break; - case 332: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2444 "MachineIndependent/glslang.y" + case 334: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2461 "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 8689 "MachineIndependent/glslang_tab.cpp" +#line 8730 "MachineIndependent/glslang_tab.cpp" break; - case 333: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2450 "MachineIndependent/glslang.y" + case 335: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2467 "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 8700 "MachineIndependent/glslang_tab.cpp" +#line 8741 "MachineIndependent/glslang_tab.cpp" break; - case 334: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2456 "MachineIndependent/glslang.y" + case 336: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2473 "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 8711 "MachineIndependent/glslang_tab.cpp" +#line 8752 "MachineIndependent/glslang_tab.cpp" break; - case 335: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2462 "MachineIndependent/glslang.y" + case 337: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2479 "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 8722 "MachineIndependent/glslang_tab.cpp" +#line 8763 "MachineIndependent/glslang_tab.cpp" break; - case 336: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2468 "MachineIndependent/glslang.y" + case 338: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2485 "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 8733 "MachineIndependent/glslang_tab.cpp" +#line 8774 "MachineIndependent/glslang_tab.cpp" break; - case 337: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2474 "MachineIndependent/glslang.y" + case 339: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2491 "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 8744 "MachineIndependent/glslang_tab.cpp" +#line 8785 "MachineIndependent/glslang_tab.cpp" break; - case 338: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2480 "MachineIndependent/glslang.y" + case 340: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2497 "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 8755 "MachineIndependent/glslang_tab.cpp" +#line 8796 "MachineIndependent/glslang_tab.cpp" break; - case 339: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2486 "MachineIndependent/glslang.y" + case 341: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2503 "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 8766 "MachineIndependent/glslang_tab.cpp" +#line 8807 "MachineIndependent/glslang_tab.cpp" break; - case 340: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2492 "MachineIndependent/glslang.y" + case 342: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2509 "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 8777 "MachineIndependent/glslang_tab.cpp" +#line 8818 "MachineIndependent/glslang_tab.cpp" break; - case 341: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2498 "MachineIndependent/glslang.y" + case 343: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2515 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8786 "MachineIndependent/glslang_tab.cpp" +#line 8827 "MachineIndependent/glslang_tab.cpp" break; - case 342: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2502 "MachineIndependent/glslang.y" + case 344: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2519 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8795 "MachineIndependent/glslang_tab.cpp" +#line 8836 "MachineIndependent/glslang_tab.cpp" break; - case 343: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2506 "MachineIndependent/glslang.y" + case 345: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2523 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8804 "MachineIndependent/glslang_tab.cpp" +#line 8845 "MachineIndependent/glslang_tab.cpp" break; - case 344: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2510 "MachineIndependent/glslang.y" + case 346: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2527 "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 8814 "MachineIndependent/glslang_tab.cpp" +#line 8855 "MachineIndependent/glslang_tab.cpp" break; - case 345: /* type_specifier_nonarray: SAMPLER1D */ -#line 2515 "MachineIndependent/glslang.y" + case 347: /* type_specifier_nonarray: SAMPLER1D */ +#line 2532 "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 8824 "MachineIndependent/glslang_tab.cpp" +#line 8865 "MachineIndependent/glslang_tab.cpp" break; - case 346: /* type_specifier_nonarray: SAMPLER2D */ -#line 2521 "MachineIndependent/glslang.y" + case 348: /* type_specifier_nonarray: SAMPLER2D */ +#line 2538 "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 8834 "MachineIndependent/glslang_tab.cpp" +#line 8875 "MachineIndependent/glslang_tab.cpp" break; - case 347: /* type_specifier_nonarray: SAMPLER3D */ -#line 2526 "MachineIndependent/glslang.y" + case 349: /* type_specifier_nonarray: SAMPLER3D */ +#line 2543 "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 8844 "MachineIndependent/glslang_tab.cpp" +#line 8885 "MachineIndependent/glslang_tab.cpp" break; - case 348: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2531 "MachineIndependent/glslang.y" + case 350: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2548 "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 8854 "MachineIndependent/glslang_tab.cpp" +#line 8895 "MachineIndependent/glslang_tab.cpp" break; - case 349: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2536 "MachineIndependent/glslang.y" + case 351: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2553 "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 8864 "MachineIndependent/glslang_tab.cpp" +#line 8905 "MachineIndependent/glslang_tab.cpp" break; - case 350: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2541 "MachineIndependent/glslang.y" + case 352: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2558 "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 8874 "MachineIndependent/glslang_tab.cpp" +#line 8915 "MachineIndependent/glslang_tab.cpp" break; - case 351: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2546 "MachineIndependent/glslang.y" + case 353: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2563 "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 8884 "MachineIndependent/glslang_tab.cpp" +#line 8925 "MachineIndependent/glslang_tab.cpp" break; - case 352: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2551 "MachineIndependent/glslang.y" + case 354: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2568 "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 8894 "MachineIndependent/glslang_tab.cpp" +#line 8935 "MachineIndependent/glslang_tab.cpp" break; - case 353: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2557 "MachineIndependent/glslang.y" + case 355: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2574 "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 8904 "MachineIndependent/glslang_tab.cpp" +#line 8945 "MachineIndependent/glslang_tab.cpp" break; - case 354: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2562 "MachineIndependent/glslang.y" + case 356: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2579 "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 8914 "MachineIndependent/glslang_tab.cpp" +#line 8955 "MachineIndependent/glslang_tab.cpp" break; - case 355: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2567 "MachineIndependent/glslang.y" + case 357: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2584 "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 8924 "MachineIndependent/glslang_tab.cpp" +#line 8965 "MachineIndependent/glslang_tab.cpp" break; - case 356: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2572 "MachineIndependent/glslang.y" + case 358: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2589 "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 8934 "MachineIndependent/glslang_tab.cpp" +#line 8975 "MachineIndependent/glslang_tab.cpp" break; - case 357: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2577 "MachineIndependent/glslang.y" + case 359: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2594 "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 8944 "MachineIndependent/glslang_tab.cpp" +#line 8985 "MachineIndependent/glslang_tab.cpp" break; - case 358: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2582 "MachineIndependent/glslang.y" + case 360: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2599 "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 8955 "MachineIndependent/glslang_tab.cpp" +#line 8996 "MachineIndependent/glslang_tab.cpp" break; - case 359: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2588 "MachineIndependent/glslang.y" + case 361: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2605 "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 8966 "MachineIndependent/glslang_tab.cpp" +#line 9007 "MachineIndependent/glslang_tab.cpp" break; - case 360: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2594 "MachineIndependent/glslang.y" + case 362: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2611 "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 8977 "MachineIndependent/glslang_tab.cpp" +#line 9018 "MachineIndependent/glslang_tab.cpp" break; - case 361: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2600 "MachineIndependent/glslang.y" + case 363: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2617 "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 8988 "MachineIndependent/glslang_tab.cpp" +#line 9029 "MachineIndependent/glslang_tab.cpp" break; - case 362: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2606 "MachineIndependent/glslang.y" + case 364: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2623 "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 8999 "MachineIndependent/glslang_tab.cpp" +#line 9040 "MachineIndependent/glslang_tab.cpp" break; - case 363: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2612 "MachineIndependent/glslang.y" + case 365: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2629 "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 9010 "MachineIndependent/glslang_tab.cpp" +#line 9051 "MachineIndependent/glslang_tab.cpp" break; - case 364: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2618 "MachineIndependent/glslang.y" + case 366: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2635 "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 9021 "MachineIndependent/glslang_tab.cpp" +#line 9062 "MachineIndependent/glslang_tab.cpp" break; - case 365: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2624 "MachineIndependent/glslang.y" + case 367: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2641 "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 9032 "MachineIndependent/glslang_tab.cpp" +#line 9073 "MachineIndependent/glslang_tab.cpp" break; - case 366: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2630 "MachineIndependent/glslang.y" + case 368: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2647 "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 9043 "MachineIndependent/glslang_tab.cpp" +#line 9084 "MachineIndependent/glslang_tab.cpp" break; - case 367: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2636 "MachineIndependent/glslang.y" + case 369: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2653 "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 9054 "MachineIndependent/glslang_tab.cpp" +#line 9095 "MachineIndependent/glslang_tab.cpp" break; - case 368: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2642 "MachineIndependent/glslang.y" + case 370: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2659 "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 9065 "MachineIndependent/glslang_tab.cpp" +#line 9106 "MachineIndependent/glslang_tab.cpp" break; - case 369: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2648 "MachineIndependent/glslang.y" + case 371: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2665 "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 9076 "MachineIndependent/glslang_tab.cpp" +#line 9117 "MachineIndependent/glslang_tab.cpp" break; - case 370: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2654 "MachineIndependent/glslang.y" + case 372: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2671 "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 9087 "MachineIndependent/glslang_tab.cpp" +#line 9128 "MachineIndependent/glslang_tab.cpp" break; - case 371: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2660 "MachineIndependent/glslang.y" + case 373: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2677 "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 9097 "MachineIndependent/glslang_tab.cpp" +#line 9138 "MachineIndependent/glslang_tab.cpp" break; - case 372: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2666 "MachineIndependent/glslang.y" + case 374: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2683 "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 9107 "MachineIndependent/glslang_tab.cpp" +#line 9148 "MachineIndependent/glslang_tab.cpp" break; - case 373: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2671 "MachineIndependent/glslang.y" + case 375: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2688 "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 9117 "MachineIndependent/glslang_tab.cpp" +#line 9158 "MachineIndependent/glslang_tab.cpp" break; - case 374: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2676 "MachineIndependent/glslang.y" + case 376: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2693 "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 9127 "MachineIndependent/glslang_tab.cpp" +#line 9168 "MachineIndependent/glslang_tab.cpp" break; - case 375: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2681 "MachineIndependent/glslang.y" + case 377: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2698 "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 9137 "MachineIndependent/glslang_tab.cpp" +#line 9178 "MachineIndependent/glslang_tab.cpp" break; - case 376: /* type_specifier_nonarray: USAMPLER2D */ -#line 2686 "MachineIndependent/glslang.y" + case 378: /* type_specifier_nonarray: USAMPLER2D */ +#line 2703 "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 9147 "MachineIndependent/glslang_tab.cpp" +#line 9188 "MachineIndependent/glslang_tab.cpp" break; - case 377: /* type_specifier_nonarray: USAMPLER3D */ -#line 2691 "MachineIndependent/glslang.y" + case 379: /* type_specifier_nonarray: USAMPLER3D */ +#line 2708 "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 9157 "MachineIndependent/glslang_tab.cpp" +#line 9198 "MachineIndependent/glslang_tab.cpp" break; - case 378: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2696 "MachineIndependent/glslang.y" + case 380: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2713 "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 9167 "MachineIndependent/glslang_tab.cpp" +#line 9208 "MachineIndependent/glslang_tab.cpp" break; - case 379: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2702 "MachineIndependent/glslang.y" + case 381: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2719 "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 9177 "MachineIndependent/glslang_tab.cpp" +#line 9218 "MachineIndependent/glslang_tab.cpp" break; - case 380: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2707 "MachineIndependent/glslang.y" + case 382: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2724 "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 9187 "MachineIndependent/glslang_tab.cpp" +#line 9228 "MachineIndependent/glslang_tab.cpp" break; - case 381: /* type_specifier_nonarray: USAMPLER1D */ -#line 2712 "MachineIndependent/glslang.y" + case 383: /* type_specifier_nonarray: USAMPLER1D */ +#line 2729 "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 9197 "MachineIndependent/glslang_tab.cpp" +#line 9238 "MachineIndependent/glslang_tab.cpp" break; - case 382: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2717 "MachineIndependent/glslang.y" + case 384: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2734 "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 9207 "MachineIndependent/glslang_tab.cpp" +#line 9248 "MachineIndependent/glslang_tab.cpp" break; - case 383: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2722 "MachineIndependent/glslang.y" + case 385: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2739 "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 9217 "MachineIndependent/glslang_tab.cpp" +#line 9258 "MachineIndependent/glslang_tab.cpp" break; - case 384: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2727 "MachineIndependent/glslang.y" + case 386: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2744 "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 9227 "MachineIndependent/glslang_tab.cpp" +#line 9268 "MachineIndependent/glslang_tab.cpp" break; - case 385: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2732 "MachineIndependent/glslang.y" + case 387: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2749 "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 9237 "MachineIndependent/glslang_tab.cpp" +#line 9278 "MachineIndependent/glslang_tab.cpp" break; - case 386: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2737 "MachineIndependent/glslang.y" + case 388: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2754 "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 9247 "MachineIndependent/glslang_tab.cpp" +#line 9288 "MachineIndependent/glslang_tab.cpp" break; - case 387: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2743 "MachineIndependent/glslang.y" + case 389: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2760 "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 9257 "MachineIndependent/glslang_tab.cpp" +#line 9298 "MachineIndependent/glslang_tab.cpp" break; - case 388: /* type_specifier_nonarray: TEXTURE2D */ -#line 2748 "MachineIndependent/glslang.y" + case 390: /* type_specifier_nonarray: TEXTURE2D */ +#line 2765 "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 9267 "MachineIndependent/glslang_tab.cpp" +#line 9308 "MachineIndependent/glslang_tab.cpp" break; - case 389: /* type_specifier_nonarray: TEXTURE3D */ -#line 2753 "MachineIndependent/glslang.y" + case 391: /* type_specifier_nonarray: TEXTURE3D */ +#line 2770 "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 9277 "MachineIndependent/glslang_tab.cpp" +#line 9318 "MachineIndependent/glslang_tab.cpp" break; - case 390: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2758 "MachineIndependent/glslang.y" + case 392: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2775 "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 9287 "MachineIndependent/glslang_tab.cpp" +#line 9328 "MachineIndependent/glslang_tab.cpp" break; - case 391: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2763 "MachineIndependent/glslang.y" + case 393: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2780 "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 9297 "MachineIndependent/glslang_tab.cpp" +#line 9338 "MachineIndependent/glslang_tab.cpp" break; - case 392: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2768 "MachineIndependent/glslang.y" + case 394: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2785 "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 9307 "MachineIndependent/glslang_tab.cpp" +#line 9348 "MachineIndependent/glslang_tab.cpp" break; - case 393: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2773 "MachineIndependent/glslang.y" + case 395: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2790 "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 9317 "MachineIndependent/glslang_tab.cpp" +#line 9358 "MachineIndependent/glslang_tab.cpp" break; - case 394: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2778 "MachineIndependent/glslang.y" + case 396: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2795 "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 9327 "MachineIndependent/glslang_tab.cpp" +#line 9368 "MachineIndependent/glslang_tab.cpp" break; - case 395: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2783 "MachineIndependent/glslang.y" + case 397: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2800 "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 9337 "MachineIndependent/glslang_tab.cpp" +#line 9378 "MachineIndependent/glslang_tab.cpp" break; - case 396: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2788 "MachineIndependent/glslang.y" + case 398: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2805 "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 9347 "MachineIndependent/glslang_tab.cpp" +#line 9388 "MachineIndependent/glslang_tab.cpp" break; - case 397: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2793 "MachineIndependent/glslang.y" + case 399: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2810 "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 9357 "MachineIndependent/glslang_tab.cpp" +#line 9398 "MachineIndependent/glslang_tab.cpp" break; - case 398: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2798 "MachineIndependent/glslang.y" + case 400: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2815 "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 9367 "MachineIndependent/glslang_tab.cpp" +#line 9408 "MachineIndependent/glslang_tab.cpp" break; - case 399: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2803 "MachineIndependent/glslang.y" + case 401: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2820 "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 9377 "MachineIndependent/glslang_tab.cpp" +#line 9418 "MachineIndependent/glslang_tab.cpp" break; - case 400: /* type_specifier_nonarray: SAMPLER */ -#line 2808 "MachineIndependent/glslang.y" + case 402: /* type_specifier_nonarray: SAMPLER */ +#line 2825 "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 9387 "MachineIndependent/glslang_tab.cpp" +#line 9428 "MachineIndependent/glslang_tab.cpp" break; - case 401: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2813 "MachineIndependent/glslang.y" + case 403: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2830 "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 9397 "MachineIndependent/glslang_tab.cpp" +#line 9438 "MachineIndependent/glslang_tab.cpp" break; - case 402: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2819 "MachineIndependent/glslang.y" + case 404: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2836 "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 9407 "MachineIndependent/glslang_tab.cpp" +#line 9448 "MachineIndependent/glslang_tab.cpp" break; - case 403: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2824 "MachineIndependent/glslang.y" + case 405: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2841 "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 9417 "MachineIndependent/glslang_tab.cpp" +#line 9458 "MachineIndependent/glslang_tab.cpp" break; - case 404: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2829 "MachineIndependent/glslang.y" + case 406: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2846 "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 9428 "MachineIndependent/glslang_tab.cpp" +#line 9469 "MachineIndependent/glslang_tab.cpp" break; - case 405: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2835 "MachineIndependent/glslang.y" + case 407: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2852 "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 9439 "MachineIndependent/glslang_tab.cpp" +#line 9480 "MachineIndependent/glslang_tab.cpp" break; - case 406: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2841 "MachineIndependent/glslang.y" + case 408: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2858 "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 9449 "MachineIndependent/glslang_tab.cpp" +#line 9490 "MachineIndependent/glslang_tab.cpp" break; - case 407: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2846 "MachineIndependent/glslang.y" + case 409: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2863 "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 9459 "MachineIndependent/glslang_tab.cpp" +#line 9500 "MachineIndependent/glslang_tab.cpp" break; - case 408: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2851 "MachineIndependent/glslang.y" + case 410: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2868 "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 9469 "MachineIndependent/glslang_tab.cpp" +#line 9510 "MachineIndependent/glslang_tab.cpp" break; - case 409: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2856 "MachineIndependent/glslang.y" + case 411: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2873 "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 9480 "MachineIndependent/glslang_tab.cpp" +#line 9521 "MachineIndependent/glslang_tab.cpp" break; - case 410: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2862 "MachineIndependent/glslang.y" + case 412: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#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.set(EbtInt, EsdBuffer); } -#line 9490 "MachineIndependent/glslang_tab.cpp" +#line 9531 "MachineIndependent/glslang_tab.cpp" break; - case 411: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2867 "MachineIndependent/glslang.y" + case 413: /* type_specifier_nonarray: USAMPLERBUFFER */ +#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.set(EbtUint, EsdBuffer); } -#line 9500 "MachineIndependent/glslang_tab.cpp" +#line 9541 "MachineIndependent/glslang_tab.cpp" break; - case 412: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2872 "MachineIndependent/glslang.y" + case 414: /* type_specifier_nonarray: SAMPLER2DMS */ +#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.set(EbtFloat, Esd2D, false, false, true); } -#line 9510 "MachineIndependent/glslang_tab.cpp" +#line 9551 "MachineIndependent/glslang_tab.cpp" break; - case 413: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2877 "MachineIndependent/glslang.y" + case 415: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2894 "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 9521 "MachineIndependent/glslang_tab.cpp" +#line 9562 "MachineIndependent/glslang_tab.cpp" break; - case 414: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2883 "MachineIndependent/glslang.y" + case 416: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2900 "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 9531 "MachineIndependent/glslang_tab.cpp" +#line 9572 "MachineIndependent/glslang_tab.cpp" break; - case 415: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2888 "MachineIndependent/glslang.y" + case 417: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2905 "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 9541 "MachineIndependent/glslang_tab.cpp" +#line 9582 "MachineIndependent/glslang_tab.cpp" break; - case 416: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2893 "MachineIndependent/glslang.y" + case 418: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2910 "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 9551 "MachineIndependent/glslang_tab.cpp" +#line 9592 "MachineIndependent/glslang_tab.cpp" break; - case 417: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2898 "MachineIndependent/glslang.y" + case 419: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2915 "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 9562 "MachineIndependent/glslang_tab.cpp" +#line 9603 "MachineIndependent/glslang_tab.cpp" break; - case 418: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2904 "MachineIndependent/glslang.y" + case 420: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 2921 "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 9572 "MachineIndependent/glslang_tab.cpp" +#line 9613 "MachineIndependent/glslang_tab.cpp" break; - case 419: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2909 "MachineIndependent/glslang.y" + case 421: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 2926 "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 9582 "MachineIndependent/glslang_tab.cpp" +#line 9623 "MachineIndependent/glslang_tab.cpp" break; - case 420: /* type_specifier_nonarray: TEXTURE1D */ -#line 2914 "MachineIndependent/glslang.y" + case 422: /* type_specifier_nonarray: TEXTURE1D */ +#line 2931 "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 9592 "MachineIndependent/glslang_tab.cpp" +#line 9633 "MachineIndependent/glslang_tab.cpp" break; - case 421: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2919 "MachineIndependent/glslang.y" + case 423: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 2936 "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 9603 "MachineIndependent/glslang_tab.cpp" +#line 9644 "MachineIndependent/glslang_tab.cpp" break; - case 422: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2925 "MachineIndependent/glslang.y" + case 424: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 2942 "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 9614 "MachineIndependent/glslang_tab.cpp" +#line 9655 "MachineIndependent/glslang_tab.cpp" break; - case 423: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2931 "MachineIndependent/glslang.y" + case 425: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 2948 "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 9625 "MachineIndependent/glslang_tab.cpp" +#line 9666 "MachineIndependent/glslang_tab.cpp" break; - case 424: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2937 "MachineIndependent/glslang.y" + case 426: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 2954 "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 9636 "MachineIndependent/glslang_tab.cpp" +#line 9677 "MachineIndependent/glslang_tab.cpp" break; - case 425: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2943 "MachineIndependent/glslang.y" + case 427: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 2960 "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 9646 "MachineIndependent/glslang_tab.cpp" +#line 9687 "MachineIndependent/glslang_tab.cpp" break; - case 426: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2948 "MachineIndependent/glslang.y" + case 428: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 2965 "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 9657 "MachineIndependent/glslang_tab.cpp" +#line 9698 "MachineIndependent/glslang_tab.cpp" break; - case 427: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2954 "MachineIndependent/glslang.y" + case 429: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 2971 "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 9668 "MachineIndependent/glslang_tab.cpp" +#line 9709 "MachineIndependent/glslang_tab.cpp" break; - case 428: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2960 "MachineIndependent/glslang.y" + case 430: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 2977 "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 9679 "MachineIndependent/glslang_tab.cpp" +#line 9720 "MachineIndependent/glslang_tab.cpp" break; - case 429: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2966 "MachineIndependent/glslang.y" + case 431: /* type_specifier_nonarray: ITEXTURE1D */ +#line 2983 "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 9689 "MachineIndependent/glslang_tab.cpp" +#line 9730 "MachineIndependent/glslang_tab.cpp" break; - case 430: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2971 "MachineIndependent/glslang.y" + case 432: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 2988 "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 9699 "MachineIndependent/glslang_tab.cpp" +#line 9740 "MachineIndependent/glslang_tab.cpp" break; - case 431: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2976 "MachineIndependent/glslang.y" + case 433: /* type_specifier_nonarray: UTEXTURE1D */ +#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.setTexture(EbtUint, Esd1D); } -#line 9709 "MachineIndependent/glslang_tab.cpp" +#line 9750 "MachineIndependent/glslang_tab.cpp" break; - case 432: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2981 "MachineIndependent/glslang.y" + case 434: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#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.setTexture(EbtUint, Esd1D, true); } -#line 9719 "MachineIndependent/glslang_tab.cpp" +#line 9760 "MachineIndependent/glslang_tab.cpp" break; - case 433: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 2986 "MachineIndependent/glslang.y" + case 435: /* type_specifier_nonarray: TEXTURE2DRECT */ +#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.setTexture(EbtFloat, EsdRect); } -#line 9729 "MachineIndependent/glslang_tab.cpp" +#line 9770 "MachineIndependent/glslang_tab.cpp" break; - case 434: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 2991 "MachineIndependent/glslang.y" + case 436: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 3008 "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 9740 "MachineIndependent/glslang_tab.cpp" +#line 9781 "MachineIndependent/glslang_tab.cpp" break; - case 435: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 2997 "MachineIndependent/glslang.y" + case 437: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#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.setTexture(EbtInt, EsdRect); } -#line 9750 "MachineIndependent/glslang_tab.cpp" +#line 9791 "MachineIndependent/glslang_tab.cpp" break; - case 436: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3002 "MachineIndependent/glslang.y" + case 438: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#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.setTexture(EbtUint, EsdRect); } -#line 9760 "MachineIndependent/glslang_tab.cpp" +#line 9801 "MachineIndependent/glslang_tab.cpp" break; - case 437: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3007 "MachineIndependent/glslang.y" + case 439: /* type_specifier_nonarray: TEXTUREBUFFER */ +#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, EsdBuffer); } -#line 9770 "MachineIndependent/glslang_tab.cpp" +#line 9811 "MachineIndependent/glslang_tab.cpp" break; - case 438: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3012 "MachineIndependent/glslang.y" + case 440: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#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, EsdBuffer); } -#line 9781 "MachineIndependent/glslang_tab.cpp" +#line 9822 "MachineIndependent/glslang_tab.cpp" break; - case 439: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3018 "MachineIndependent/glslang.y" + case 441: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3035 "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 9791 "MachineIndependent/glslang_tab.cpp" +#line 9832 "MachineIndependent/glslang_tab.cpp" break; - case 440: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3023 "MachineIndependent/glslang.y" + case 442: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3040 "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 9801 "MachineIndependent/glslang_tab.cpp" +#line 9842 "MachineIndependent/glslang_tab.cpp" break; - case 441: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3028 "MachineIndependent/glslang.y" + case 443: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3045 "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 9811 "MachineIndependent/glslang_tab.cpp" +#line 9852 "MachineIndependent/glslang_tab.cpp" break; - case 442: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3033 "MachineIndependent/glslang.y" + case 444: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3050 "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 9822 "MachineIndependent/glslang_tab.cpp" +#line 9863 "MachineIndependent/glslang_tab.cpp" break; - case 443: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3039 "MachineIndependent/glslang.y" + case 445: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3056 "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 9832 "MachineIndependent/glslang_tab.cpp" +#line 9873 "MachineIndependent/glslang_tab.cpp" break; - case 444: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3044 "MachineIndependent/glslang.y" + case 446: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3061 "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 9842 "MachineIndependent/glslang_tab.cpp" +#line 9883 "MachineIndependent/glslang_tab.cpp" break; - case 445: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3049 "MachineIndependent/glslang.y" + case 447: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3066 "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 9852 "MachineIndependent/glslang_tab.cpp" +#line 9893 "MachineIndependent/glslang_tab.cpp" break; - case 446: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3054 "MachineIndependent/glslang.y" + case 448: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3071 "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 9863 "MachineIndependent/glslang_tab.cpp" +#line 9904 "MachineIndependent/glslang_tab.cpp" break; - case 447: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3060 "MachineIndependent/glslang.y" + case 449: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3077 "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 9873 "MachineIndependent/glslang_tab.cpp" +#line 9914 "MachineIndependent/glslang_tab.cpp" break; - case 448: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3065 "MachineIndependent/glslang.y" + case 450: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3082 "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 9883 "MachineIndependent/glslang_tab.cpp" +#line 9924 "MachineIndependent/glslang_tab.cpp" break; - case 449: /* type_specifier_nonarray: IMAGE1D */ -#line 3070 "MachineIndependent/glslang.y" + case 451: /* type_specifier_nonarray: IMAGE1D */ +#line 3087 "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 9893 "MachineIndependent/glslang_tab.cpp" +#line 9934 "MachineIndependent/glslang_tab.cpp" break; - case 450: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3075 "MachineIndependent/glslang.y" + case 452: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3092 "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 9904 "MachineIndependent/glslang_tab.cpp" +#line 9945 "MachineIndependent/glslang_tab.cpp" break; - case 451: /* type_specifier_nonarray: IIMAGE1D */ -#line 3081 "MachineIndependent/glslang.y" + case 453: /* type_specifier_nonarray: IIMAGE1D */ +#line 3098 "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 9914 "MachineIndependent/glslang_tab.cpp" +#line 9955 "MachineIndependent/glslang_tab.cpp" break; - case 452: /* type_specifier_nonarray: UIMAGE1D */ -#line 3086 "MachineIndependent/glslang.y" + case 454: /* type_specifier_nonarray: UIMAGE1D */ +#line 3103 "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 9924 "MachineIndependent/glslang_tab.cpp" +#line 9965 "MachineIndependent/glslang_tab.cpp" break; - case 453: /* type_specifier_nonarray: IMAGE2D */ -#line 3091 "MachineIndependent/glslang.y" + case 455: /* type_specifier_nonarray: IMAGE2D */ +#line 3108 "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 9934 "MachineIndependent/glslang_tab.cpp" +#line 9975 "MachineIndependent/glslang_tab.cpp" break; - case 454: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3096 "MachineIndependent/glslang.y" + case 456: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3113 "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 9945 "MachineIndependent/glslang_tab.cpp" +#line 9986 "MachineIndependent/glslang_tab.cpp" break; - case 455: /* type_specifier_nonarray: IIMAGE2D */ -#line 3102 "MachineIndependent/glslang.y" + case 457: /* type_specifier_nonarray: IIMAGE2D */ +#line 3119 "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 9955 "MachineIndependent/glslang_tab.cpp" +#line 9996 "MachineIndependent/glslang_tab.cpp" break; - case 456: /* type_specifier_nonarray: UIMAGE2D */ -#line 3107 "MachineIndependent/glslang.y" + case 458: /* type_specifier_nonarray: UIMAGE2D */ +#line 3124 "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 9965 "MachineIndependent/glslang_tab.cpp" +#line 10006 "MachineIndependent/glslang_tab.cpp" break; - case 457: /* type_specifier_nonarray: IMAGE3D */ -#line 3112 "MachineIndependent/glslang.y" + case 459: /* type_specifier_nonarray: IMAGE3D */ +#line 3129 "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 9975 "MachineIndependent/glslang_tab.cpp" +#line 10016 "MachineIndependent/glslang_tab.cpp" break; - case 458: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3117 "MachineIndependent/glslang.y" + case 460: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3134 "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 9986 "MachineIndependent/glslang_tab.cpp" +#line 10027 "MachineIndependent/glslang_tab.cpp" break; - case 459: /* type_specifier_nonarray: IIMAGE3D */ -#line 3123 "MachineIndependent/glslang.y" + case 461: /* type_specifier_nonarray: IIMAGE3D */ +#line 3140 "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 9996 "MachineIndependent/glslang_tab.cpp" +#line 10037 "MachineIndependent/glslang_tab.cpp" break; - case 460: /* type_specifier_nonarray: UIMAGE3D */ -#line 3128 "MachineIndependent/glslang.y" + case 462: /* type_specifier_nonarray: UIMAGE3D */ +#line 3145 "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 10006 "MachineIndependent/glslang_tab.cpp" +#line 10047 "MachineIndependent/glslang_tab.cpp" break; - case 461: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3133 "MachineIndependent/glslang.y" + case 463: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3150 "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 10016 "MachineIndependent/glslang_tab.cpp" +#line 10057 "MachineIndependent/glslang_tab.cpp" break; - case 462: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3138 "MachineIndependent/glslang.y" + case 464: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3155 "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 10027 "MachineIndependent/glslang_tab.cpp" +#line 10068 "MachineIndependent/glslang_tab.cpp" break; - case 463: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3144 "MachineIndependent/glslang.y" + case 465: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3161 "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 10037 "MachineIndependent/glslang_tab.cpp" +#line 10078 "MachineIndependent/glslang_tab.cpp" break; - case 464: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3149 "MachineIndependent/glslang.y" + case 466: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3166 "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 10047 "MachineIndependent/glslang_tab.cpp" +#line 10088 "MachineIndependent/glslang_tab.cpp" break; - case 465: /* type_specifier_nonarray: IMAGECUBE */ -#line 3154 "MachineIndependent/glslang.y" + case 467: /* type_specifier_nonarray: IMAGECUBE */ +#line 3171 "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 10057 "MachineIndependent/glslang_tab.cpp" +#line 10098 "MachineIndependent/glslang_tab.cpp" break; - case 466: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3159 "MachineIndependent/glslang.y" + case 468: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3176 "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 10068 "MachineIndependent/glslang_tab.cpp" +#line 10109 "MachineIndependent/glslang_tab.cpp" break; - case 467: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3165 "MachineIndependent/glslang.y" + case 469: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3182 "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 10078 "MachineIndependent/glslang_tab.cpp" +#line 10119 "MachineIndependent/glslang_tab.cpp" break; - case 468: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3170 "MachineIndependent/glslang.y" + case 470: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3187 "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 10088 "MachineIndependent/glslang_tab.cpp" +#line 10129 "MachineIndependent/glslang_tab.cpp" break; - case 469: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3175 "MachineIndependent/glslang.y" + case 471: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3192 "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 10098 "MachineIndependent/glslang_tab.cpp" +#line 10139 "MachineIndependent/glslang_tab.cpp" break; - case 470: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3180 "MachineIndependent/glslang.y" + case 472: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3197 "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 10109 "MachineIndependent/glslang_tab.cpp" +#line 10150 "MachineIndependent/glslang_tab.cpp" break; - case 471: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3186 "MachineIndependent/glslang.y" + case 473: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3203 "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 10119 "MachineIndependent/glslang_tab.cpp" +#line 10160 "MachineIndependent/glslang_tab.cpp" break; - case 472: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3191 "MachineIndependent/glslang.y" + case 474: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3208 "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 10129 "MachineIndependent/glslang_tab.cpp" +#line 10170 "MachineIndependent/glslang_tab.cpp" break; - case 473: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3196 "MachineIndependent/glslang.y" + case 475: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3213 "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 10139 "MachineIndependent/glslang_tab.cpp" +#line 10180 "MachineIndependent/glslang_tab.cpp" break; - case 474: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3201 "MachineIndependent/glslang.y" + case 476: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3218 "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 10150 "MachineIndependent/glslang_tab.cpp" +#line 10191 "MachineIndependent/glslang_tab.cpp" break; - case 475: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3207 "MachineIndependent/glslang.y" + case 477: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3224 "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 10160 "MachineIndependent/glslang_tab.cpp" +#line 10201 "MachineIndependent/glslang_tab.cpp" break; - case 476: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3212 "MachineIndependent/glslang.y" + case 478: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3229 "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 10170 "MachineIndependent/glslang_tab.cpp" +#line 10211 "MachineIndependent/glslang_tab.cpp" break; - case 477: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3217 "MachineIndependent/glslang.y" + case 479: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3234 "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 10180 "MachineIndependent/glslang_tab.cpp" +#line 10221 "MachineIndependent/glslang_tab.cpp" break; - case 478: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3222 "MachineIndependent/glslang.y" + case 480: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3239 "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 10191 "MachineIndependent/glslang_tab.cpp" +#line 10232 "MachineIndependent/glslang_tab.cpp" break; - case 479: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3228 "MachineIndependent/glslang.y" + case 481: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3245 "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 10201 "MachineIndependent/glslang_tab.cpp" +#line 10242 "MachineIndependent/glslang_tab.cpp" break; - case 480: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3233 "MachineIndependent/glslang.y" + case 482: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3250 "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 10211 "MachineIndependent/glslang_tab.cpp" +#line 10252 "MachineIndependent/glslang_tab.cpp" break; - case 481: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3238 "MachineIndependent/glslang.y" + case 483: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3255 "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 10221 "MachineIndependent/glslang_tab.cpp" +#line 10262 "MachineIndependent/glslang_tab.cpp" break; - case 482: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3243 "MachineIndependent/glslang.y" + case 484: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3260 "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 10232 "MachineIndependent/glslang_tab.cpp" +#line 10273 "MachineIndependent/glslang_tab.cpp" break; - case 483: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3249 "MachineIndependent/glslang.y" + case 485: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3266 "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 10242 "MachineIndependent/glslang_tab.cpp" +#line 10283 "MachineIndependent/glslang_tab.cpp" break; - case 484: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3254 "MachineIndependent/glslang.y" + case 486: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3271 "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 10252 "MachineIndependent/glslang_tab.cpp" +#line 10293 "MachineIndependent/glslang_tab.cpp" break; - case 485: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3259 "MachineIndependent/glslang.y" + case 487: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3276 "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 10262 "MachineIndependent/glslang_tab.cpp" +#line 10303 "MachineIndependent/glslang_tab.cpp" break; - case 486: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3264 "MachineIndependent/glslang.y" + case 488: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3281 "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 10273 "MachineIndependent/glslang_tab.cpp" +#line 10314 "MachineIndependent/glslang_tab.cpp" break; - case 487: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3270 "MachineIndependent/glslang.y" + case 489: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3287 "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 10283 "MachineIndependent/glslang_tab.cpp" +#line 10324 "MachineIndependent/glslang_tab.cpp" break; - case 488: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3275 "MachineIndependent/glslang.y" + case 490: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3292 "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 10293 "MachineIndependent/glslang_tab.cpp" +#line 10334 "MachineIndependent/glslang_tab.cpp" break; - case 489: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3280 "MachineIndependent/glslang.y" + case 491: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3297 "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 10303 "MachineIndependent/glslang_tab.cpp" +#line 10344 "MachineIndependent/glslang_tab.cpp" break; - case 490: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3285 "MachineIndependent/glslang.y" + case 492: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3302 "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 10314 "MachineIndependent/glslang_tab.cpp" +#line 10355 "MachineIndependent/glslang_tab.cpp" break; - case 491: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3291 "MachineIndependent/glslang.y" + case 493: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3308 "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 10324 "MachineIndependent/glslang_tab.cpp" +#line 10365 "MachineIndependent/glslang_tab.cpp" break; - case 492: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3296 "MachineIndependent/glslang.y" + case 494: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3313 "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 10334 "MachineIndependent/glslang_tab.cpp" +#line 10375 "MachineIndependent/glslang_tab.cpp" break; - case 493: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3301 "MachineIndependent/glslang.y" + case 495: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3318 "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 10344 "MachineIndependent/glslang_tab.cpp" +#line 10385 "MachineIndependent/glslang_tab.cpp" break; - case 494: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3306 "MachineIndependent/glslang.y" + case 496: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3323 "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 10354 "MachineIndependent/glslang_tab.cpp" +#line 10395 "MachineIndependent/glslang_tab.cpp" break; - case 495: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3311 "MachineIndependent/glslang.y" + case 497: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3328 "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 10364 "MachineIndependent/glslang_tab.cpp" +#line 10405 "MachineIndependent/glslang_tab.cpp" break; - case 496: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3316 "MachineIndependent/glslang.y" + case 498: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3333 "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 10374 "MachineIndependent/glslang_tab.cpp" +#line 10415 "MachineIndependent/glslang_tab.cpp" break; - case 497: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3321 "MachineIndependent/glslang.y" + case 499: /* type_specifier_nonarray: I64IMAGE3D */ +#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(EbtInt64, Esd3D); } -#line 10384 "MachineIndependent/glslang_tab.cpp" +#line 10425 "MachineIndependent/glslang_tab.cpp" break; - case 498: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3326 "MachineIndependent/glslang.y" + case 500: /* type_specifier_nonarray: U64IMAGE3D */ +#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(EbtUint64, Esd3D); } -#line 10394 "MachineIndependent/glslang_tab.cpp" +#line 10435 "MachineIndependent/glslang_tab.cpp" break; - case 499: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3331 "MachineIndependent/glslang.y" + case 501: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#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(EbtInt64, EsdRect); } -#line 10404 "MachineIndependent/glslang_tab.cpp" +#line 10445 "MachineIndependent/glslang_tab.cpp" break; - case 500: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3336 "MachineIndependent/glslang.y" + case 502: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3353 "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 10414 "MachineIndependent/glslang_tab.cpp" +#line 10455 "MachineIndependent/glslang_tab.cpp" break; - case 501: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3341 "MachineIndependent/glslang.y" + case 503: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3358 "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 10424 "MachineIndependent/glslang_tab.cpp" +#line 10465 "MachineIndependent/glslang_tab.cpp" break; - case 502: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3346 "MachineIndependent/glslang.y" + case 504: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3363 "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 10434 "MachineIndependent/glslang_tab.cpp" +#line 10475 "MachineIndependent/glslang_tab.cpp" break; - case 503: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3351 "MachineIndependent/glslang.y" + case 505: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3368 "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 10444 "MachineIndependent/glslang_tab.cpp" +#line 10485 "MachineIndependent/glslang_tab.cpp" break; - case 504: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3356 "MachineIndependent/glslang.y" + case 506: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3373 "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 10454 "MachineIndependent/glslang_tab.cpp" +#line 10495 "MachineIndependent/glslang_tab.cpp" break; - case 505: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3361 "MachineIndependent/glslang.y" + case 507: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3378 "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 10464 "MachineIndependent/glslang_tab.cpp" +#line 10505 "MachineIndependent/glslang_tab.cpp" break; - case 506: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3366 "MachineIndependent/glslang.y" + case 508: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3383 "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 10474 "MachineIndependent/glslang_tab.cpp" +#line 10515 "MachineIndependent/glslang_tab.cpp" break; - case 507: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3371 "MachineIndependent/glslang.y" + case 509: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3388 "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 10484 "MachineIndependent/glslang_tab.cpp" +#line 10525 "MachineIndependent/glslang_tab.cpp" break; - case 508: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3376 "MachineIndependent/glslang.y" + case 510: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3393 "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 10494 "MachineIndependent/glslang_tab.cpp" +#line 10535 "MachineIndependent/glslang_tab.cpp" break; - case 509: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3381 "MachineIndependent/glslang.y" + case 511: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3398 "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 10504 "MachineIndependent/glslang_tab.cpp" +#line 10545 "MachineIndependent/glslang_tab.cpp" break; - case 510: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3386 "MachineIndependent/glslang.y" + case 512: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3403 "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 10514 "MachineIndependent/glslang_tab.cpp" +#line 10555 "MachineIndependent/glslang_tab.cpp" break; - case 511: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3391 "MachineIndependent/glslang.y" + case 513: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3408 "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 10524 "MachineIndependent/glslang_tab.cpp" +#line 10565 "MachineIndependent/glslang_tab.cpp" break; - case 512: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3396 "MachineIndependent/glslang.y" + case 514: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3413 "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 10534 "MachineIndependent/glslang_tab.cpp" +#line 10575 "MachineIndependent/glslang_tab.cpp" break; - case 513: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3401 "MachineIndependent/glslang.y" + case 515: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3418 "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 10544 "MachineIndependent/glslang_tab.cpp" +#line 10585 "MachineIndependent/glslang_tab.cpp" break; - case 514: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3406 "MachineIndependent/glslang.y" + case 516: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3423 "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 10554 "MachineIndependent/glslang_tab.cpp" +#line 10595 "MachineIndependent/glslang_tab.cpp" break; - case 515: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3411 "MachineIndependent/glslang.y" + case 517: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3428 "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 10565 "MachineIndependent/glslang_tab.cpp" +#line 10606 "MachineIndependent/glslang_tab.cpp" break; - case 516: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3417 "MachineIndependent/glslang.y" + case 518: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3434 "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 10576 "MachineIndependent/glslang_tab.cpp" +#line 10617 "MachineIndependent/glslang_tab.cpp" break; - case 517: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3423 "MachineIndependent/glslang.y" + case 519: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3440 "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 10587 "MachineIndependent/glslang_tab.cpp" +#line 10628 "MachineIndependent/glslang_tab.cpp" break; - case 518: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3429 "MachineIndependent/glslang.y" + case 520: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3446 "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 10598 "MachineIndependent/glslang_tab.cpp" +#line 10639 "MachineIndependent/glslang_tab.cpp" break; - case 519: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3435 "MachineIndependent/glslang.y" + case 521: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3452 "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"); @@ -10606,11 +10647,11 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10610 "MachineIndependent/glslang_tab.cpp" +#line 10651 "MachineIndependent/glslang_tab.cpp" break; - case 520: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3442 "MachineIndependent/glslang.y" + case 522: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3459 "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"); @@ -10618,107 +10659,107 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10622 "MachineIndependent/glslang_tab.cpp" +#line 10663 "MachineIndependent/glslang_tab.cpp" break; - case 521: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3449 "MachineIndependent/glslang.y" + case 523: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3466 "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 10633 "MachineIndependent/glslang_tab.cpp" +#line 10674 "MachineIndependent/glslang_tab.cpp" break; - case 522: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3455 "MachineIndependent/glslang.y" + case 524: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3472 "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 10644 "MachineIndependent/glslang_tab.cpp" +#line 10685 "MachineIndependent/glslang_tab.cpp" break; - case 523: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3461 "MachineIndependent/glslang.y" + case 525: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3478 "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 10655 "MachineIndependent/glslang_tab.cpp" +#line 10696 "MachineIndependent/glslang_tab.cpp" break; - case 524: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3467 "MachineIndependent/glslang.y" + case 526: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3484 "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 10666 "MachineIndependent/glslang_tab.cpp" +#line 10707 "MachineIndependent/glslang_tab.cpp" break; - case 525: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3473 "MachineIndependent/glslang.y" + case 527: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3490 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 10677 "MachineIndependent/glslang_tab.cpp" +#line 10718 "MachineIndependent/glslang_tab.cpp" break; - case 526: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3479 "MachineIndependent/glslang.y" + case 528: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3496 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 10688 "MachineIndependent/glslang_tab.cpp" +#line 10729 "MachineIndependent/glslang_tab.cpp" break; - case 527: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3485 "MachineIndependent/glslang.y" + case 529: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3502 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 10699 "MachineIndependent/glslang_tab.cpp" +#line 10740 "MachineIndependent/glslang_tab.cpp" break; - case 528: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3491 "MachineIndependent/glslang.y" + case 530: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3508 "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 10708 "MachineIndependent/glslang_tab.cpp" +#line 10749 "MachineIndependent/glslang_tab.cpp" break; - case 529: /* type_specifier_nonarray: struct_specifier */ -#line 3496 "MachineIndependent/glslang.y" + case 531: /* type_specifier_nonarray: struct_specifier */ +#line 3513 "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 10718 "MachineIndependent/glslang_tab.cpp" +#line 10759 "MachineIndependent/glslang_tab.cpp" break; - case 530: /* type_specifier_nonarray: TYPE_NAME */ -#line 3501 "MachineIndependent/glslang.y" + case 532: /* type_specifier_nonarray: TYPE_NAME */ +#line 3518 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10732,47 +10773,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10736 "MachineIndependent/glslang_tab.cpp" +#line 10777 "MachineIndependent/glslang_tab.cpp" break; - case 531: /* precision_qualifier: HIGH_PRECISION */ -#line 3517 "MachineIndependent/glslang.y" + case 533: /* precision_qualifier: HIGH_PRECISION */ +#line 3534 "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 10746 "MachineIndependent/glslang_tab.cpp" +#line 10787 "MachineIndependent/glslang_tab.cpp" break; - case 532: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3522 "MachineIndependent/glslang.y" + case 534: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3539 "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 10756 "MachineIndependent/glslang_tab.cpp" +#line 10797 "MachineIndependent/glslang_tab.cpp" break; - case 533: /* precision_qualifier: LOW_PRECISION */ -#line 3527 "MachineIndependent/glslang.y" + case 535: /* precision_qualifier: LOW_PRECISION */ +#line 3544 "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 10766 "MachineIndependent/glslang_tab.cpp" +#line 10807 "MachineIndependent/glslang_tab.cpp" break; - case 534: /* $@3: %empty */ -#line 3535 "MachineIndependent/glslang.y" + case 536: /* $@3: %empty */ +#line 3552 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10772 "MachineIndependent/glslang_tab.cpp" +#line 10813 "MachineIndependent/glslang_tab.cpp" break; - case 535: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3535 "MachineIndependent/glslang.y" + case 537: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3552 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -10784,17 +10825,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10788 "MachineIndependent/glslang_tab.cpp" +#line 10829 "MachineIndependent/glslang_tab.cpp" break; - case 536: /* $@4: %empty */ -#line 3546 "MachineIndependent/glslang.y" + case 538: /* $@4: %empty */ +#line 3563 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10794 "MachineIndependent/glslang_tab.cpp" +#line 10835 "MachineIndependent/glslang_tab.cpp" break; - case 537: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3546 "MachineIndependent/glslang.y" + case 539: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3563 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10802,19 +10843,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10806 "MachineIndependent/glslang_tab.cpp" +#line 10847 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* struct_declaration_list: struct_declaration */ -#line 3556 "MachineIndependent/glslang.y" + case 540: /* struct_declaration_list: struct_declaration */ +#line 3573 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10814 "MachineIndependent/glslang_tab.cpp" +#line 10855 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3559 "MachineIndependent/glslang.y" + case 541: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3576 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10825,11 +10866,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10829 "MachineIndependent/glslang_tab.cpp" +#line 10870 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3572 "MachineIndependent/glslang.y" + case 542: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3589 "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"); @@ -10852,11 +10893,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10856 "MachineIndependent/glslang_tab.cpp" +#line 10897 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3594 "MachineIndependent/glslang.y" + case 543: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3611 "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"); @@ -10881,38 +10922,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10885 "MachineIndependent/glslang_tab.cpp" +#line 10926 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* struct_declarator_list: struct_declarator */ -#line 3621 "MachineIndependent/glslang.y" + case 544: /* struct_declarator_list: struct_declarator */ +#line 3638 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10894 "MachineIndependent/glslang_tab.cpp" +#line 10935 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3625 "MachineIndependent/glslang.y" + case 545: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3642 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10902 "MachineIndependent/glslang_tab.cpp" +#line 10943 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* struct_declarator: IDENTIFIER */ -#line 3631 "MachineIndependent/glslang.y" + case 546: /* struct_declarator: IDENTIFIER */ +#line 3648 "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 10912 "MachineIndependent/glslang_tab.cpp" +#line 10953 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3636 "MachineIndependent/glslang.y" + case 547: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3653 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -10921,246 +10962,246 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 10925 "MachineIndependent/glslang_tab.cpp" +#line 10966 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* initializer: assignment_expression */ -#line 3647 "MachineIndependent/glslang.y" + case 548: /* initializer: assignment_expression */ +#line 3664 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10933 "MachineIndependent/glslang_tab.cpp" +#line 10974 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3651 "MachineIndependent/glslang.y" + case 549: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3668 "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 10944 "MachineIndependent/glslang_tab.cpp" +#line 10985 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3657 "MachineIndependent/glslang.y" + case 550: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3674 "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 10955 "MachineIndependent/glslang_tab.cpp" +#line 10996 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3663 "MachineIndependent/glslang.y" + case 551: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3680 "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 10966 "MachineIndependent/glslang_tab.cpp" +#line 11007 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* initializer_list: initializer */ -#line 3674 "MachineIndependent/glslang.y" + case 552: /* initializer_list: initializer */ +#line 3691 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 10974 "MachineIndependent/glslang_tab.cpp" +#line 11015 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* initializer_list: initializer_list COMMA initializer */ -#line 3677 "MachineIndependent/glslang.y" + case 553: /* initializer_list: initializer_list COMMA initializer */ +#line 3694 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 10982 "MachineIndependent/glslang_tab.cpp" +#line 11023 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* declaration_statement: declaration */ -#line 3684 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10988 "MachineIndependent/glslang_tab.cpp" - break; - - case 553: /* statement: compound_statement */ -#line 3688 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10994 "MachineIndependent/glslang_tab.cpp" - break; - - case 554: /* statement: simple_statement */ -#line 3689 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11000 "MachineIndependent/glslang_tab.cpp" - break; - - case 555: /* simple_statement: declaration_statement */ -#line 3695 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11006 "MachineIndependent/glslang_tab.cpp" - break; - - case 556: /* simple_statement: expression_statement */ -#line 3696 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11012 "MachineIndependent/glslang_tab.cpp" - break; - - case 557: /* simple_statement: selection_statement */ -#line 3697 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11018 "MachineIndependent/glslang_tab.cpp" - break; - - case 558: /* simple_statement: switch_statement */ -#line 3698 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11024 "MachineIndependent/glslang_tab.cpp" - break; - - case 559: /* simple_statement: case_label */ -#line 3699 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11030 "MachineIndependent/glslang_tab.cpp" - break; - - case 560: /* simple_statement: iteration_statement */ -#line 3700 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11036 "MachineIndependent/glslang_tab.cpp" - break; - - case 561: /* simple_statement: jump_statement */ + case 554: /* declaration_statement: declaration */ #line 3701 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11042 "MachineIndependent/glslang_tab.cpp" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11029 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* simple_statement: demote_statement */ -#line 3703 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11048 "MachineIndependent/glslang_tab.cpp" + case 555: /* statement: compound_statement */ +#line 3705 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11035 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* demote_statement: DEMOTE SEMICOLON */ -#line 3709 "MachineIndependent/glslang.y" + case 556: /* statement: simple_statement */ +#line 3706 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11041 "MachineIndependent/glslang_tab.cpp" + break; + + case 557: /* simple_statement: declaration_statement */ +#line 3712 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11047 "MachineIndependent/glslang_tab.cpp" + break; + + case 558: /* simple_statement: expression_statement */ +#line 3713 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11053 "MachineIndependent/glslang_tab.cpp" + break; + + case 559: /* simple_statement: selection_statement */ +#line 3714 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11059 "MachineIndependent/glslang_tab.cpp" + break; + + case 560: /* simple_statement: switch_statement */ +#line 3715 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11065 "MachineIndependent/glslang_tab.cpp" + break; + + case 561: /* simple_statement: case_label */ +#line 3716 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11071 "MachineIndependent/glslang_tab.cpp" + break; + + case 562: /* simple_statement: iteration_statement */ +#line 3717 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11077 "MachineIndependent/glslang_tab.cpp" + break; + + case 563: /* simple_statement: jump_statement */ +#line 3718 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11083 "MachineIndependent/glslang_tab.cpp" + break; + + case 564: /* simple_statement: demote_statement */ +#line 3720 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 11089 "MachineIndependent/glslang_tab.cpp" + break; + + case 565: /* demote_statement: DEMOTE SEMICOLON */ +#line 3726 "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 11058 "MachineIndependent/glslang_tab.cpp" +#line 11099 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3718 "MachineIndependent/glslang.y" + case 566: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3735 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11064 "MachineIndependent/glslang_tab.cpp" +#line 11105 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* $@5: %empty */ -#line 3719 "MachineIndependent/glslang.y" + case 567: /* $@5: %empty */ +#line 3736 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11073 "MachineIndependent/glslang_tab.cpp" +#line 11114 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* $@6: %empty */ -#line 3723 "MachineIndependent/glslang.y" + case 568: /* $@6: %empty */ +#line 3740 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11082 "MachineIndependent/glslang_tab.cpp" +#line 11123 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3727 "MachineIndependent/glslang.y" + case 569: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3744 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11092 "MachineIndependent/glslang_tab.cpp" +#line 11133 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3735 "MachineIndependent/glslang.y" + case 570: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3752 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11098 "MachineIndependent/glslang_tab.cpp" +#line 11139 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* statement_no_new_scope: simple_statement */ -#line 3736 "MachineIndependent/glslang.y" + case 571: /* statement_no_new_scope: simple_statement */ +#line 3753 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11104 "MachineIndependent/glslang_tab.cpp" +#line 11145 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* $@7: %empty */ -#line 3740 "MachineIndependent/glslang.y" + case 572: /* $@7: %empty */ +#line 3757 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11112 "MachineIndependent/glslang_tab.cpp" +#line 11153 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* statement_scoped: $@7 compound_statement */ -#line 3743 "MachineIndependent/glslang.y" + case 573: /* statement_scoped: $@7 compound_statement */ +#line 3760 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11121 "MachineIndependent/glslang_tab.cpp" +#line 11162 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* $@8: %empty */ -#line 3747 "MachineIndependent/glslang.y" + case 574: /* $@8: %empty */ +#line 3764 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11131 "MachineIndependent/glslang_tab.cpp" +#line 11172 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* statement_scoped: $@8 simple_statement */ -#line 3752 "MachineIndependent/glslang.y" + case 575: /* statement_scoped: $@8 simple_statement */ +#line 3769 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11142 "MachineIndependent/glslang_tab.cpp" +#line 11183 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3761 "MachineIndependent/glslang.y" + case 576: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3778 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11150 "MachineIndependent/glslang_tab.cpp" +#line 11191 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3764 "MachineIndependent/glslang.y" + case 577: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3781 "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 11160 "MachineIndependent/glslang_tab.cpp" +#line 11201 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* statement_list: statement */ -#line 3772 "MachineIndependent/glslang.y" + case 578: /* statement_list: statement */ +#line 3789 "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 || @@ -11169,11 +11210,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11173 "MachineIndependent/glslang_tab.cpp" +#line 11214 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* statement_list: statement_list statement */ -#line 3780 "MachineIndependent/glslang.y" + case 579: /* statement_list: statement_list statement */ +#line 3797 "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)) { @@ -11182,77 +11223,77 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11186 "MachineIndependent/glslang_tab.cpp" +#line 11227 "MachineIndependent/glslang_tab.cpp" break; - case 578: /* expression_statement: SEMICOLON */ -#line 3791 "MachineIndependent/glslang.y" + case 580: /* expression_statement: SEMICOLON */ +#line 3808 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11192 "MachineIndependent/glslang_tab.cpp" +#line 11233 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* expression_statement: expression SEMICOLON */ -#line 3792 "MachineIndependent/glslang.y" + case 581: /* expression_statement: expression SEMICOLON */ +#line 3809 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11198 "MachineIndependent/glslang_tab.cpp" +#line 11239 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* selection_statement: selection_statement_nonattributed */ -#line 3796 "MachineIndependent/glslang.y" + case 582: /* selection_statement: selection_statement_nonattributed */ +#line 3813 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11206 "MachineIndependent/glslang_tab.cpp" +#line 11247 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3800 "MachineIndependent/glslang.y" + case 583: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3817 "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 11216 "MachineIndependent/glslang_tab.cpp" +#line 11257 "MachineIndependent/glslang_tab.cpp" break; - case 582: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3808 "MachineIndependent/glslang.y" + case 584: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3825 "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 11225 "MachineIndependent/glslang_tab.cpp" +#line 11266 "MachineIndependent/glslang_tab.cpp" break; - case 583: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3815 "MachineIndependent/glslang.y" + case 585: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3832 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11234 "MachineIndependent/glslang_tab.cpp" +#line 11275 "MachineIndependent/glslang_tab.cpp" break; - case 584: /* selection_rest_statement: statement_scoped */ -#line 3819 "MachineIndependent/glslang.y" + case 586: /* selection_rest_statement: statement_scoped */ +#line 3836 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11243 "MachineIndependent/glslang_tab.cpp" +#line 11284 "MachineIndependent/glslang_tab.cpp" break; - case 585: /* condition: expression */ -#line 3827 "MachineIndependent/glslang.y" + case 587: /* condition: expression */ +#line 3844 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11252 "MachineIndependent/glslang_tab.cpp" +#line 11293 "MachineIndependent/glslang_tab.cpp" break; - case 586: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3831 "MachineIndependent/glslang.y" + case 588: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3848 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11263,29 +11304,29 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 11267 "MachineIndependent/glslang_tab.cpp" +#line 11308 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* switch_statement: switch_statement_nonattributed */ -#line 3844 "MachineIndependent/glslang.y" + case 589: /* switch_statement: switch_statement_nonattributed */ +#line 3861 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11275 "MachineIndependent/glslang_tab.cpp" +#line 11316 "MachineIndependent/glslang_tab.cpp" break; - case 588: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3848 "MachineIndependent/glslang.y" + case 590: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3865 "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 11285 "MachineIndependent/glslang_tab.cpp" +#line 11326 "MachineIndependent/glslang_tab.cpp" break; - case 589: /* $@9: %empty */ -#line 3856 "MachineIndependent/glslang.y" + case 591: /* $@9: %empty */ +#line 3873 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11294,11 +11335,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11298 "MachineIndependent/glslang_tab.cpp" +#line 11339 "MachineIndependent/glslang_tab.cpp" break; - case 590: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3864 "MachineIndependent/glslang.y" + case 592: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3881 "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(); @@ -11308,27 +11349,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11312 "MachineIndependent/glslang_tab.cpp" +#line 11353 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* switch_statement_list: %empty */ -#line 3876 "MachineIndependent/glslang.y" + case 593: /* switch_statement_list: %empty */ +#line 3893 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11320 "MachineIndependent/glslang_tab.cpp" +#line 11361 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* switch_statement_list: statement_list */ -#line 3879 "MachineIndependent/glslang.y" + case 594: /* switch_statement_list: statement_list */ +#line 3896 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11328 "MachineIndependent/glslang_tab.cpp" +#line 11369 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* case_label: CASE expression COLON */ -#line 3885 "MachineIndependent/glslang.y" + case 595: /* case_label: CASE expression COLON */ +#line 3902 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11341,11 +11382,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11345 "MachineIndependent/glslang_tab.cpp" +#line 11386 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* case_label: DEFAULT COLON */ -#line 3897 "MachineIndependent/glslang.y" + case 596: /* case_label: DEFAULT COLON */ +#line 3914 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11355,29 +11396,29 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11359 "MachineIndependent/glslang_tab.cpp" +#line 11400 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* iteration_statement: iteration_statement_nonattributed */ -#line 3909 "MachineIndependent/glslang.y" + case 597: /* iteration_statement: iteration_statement_nonattributed */ +#line 3926 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11367 "MachineIndependent/glslang_tab.cpp" +#line 11408 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3913 "MachineIndependent/glslang.y" + case 598: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3930 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11377 "MachineIndependent/glslang_tab.cpp" +#line 11418 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* $@10: %empty */ -#line 3921 "MachineIndependent/glslang.y" + case 599: /* $@10: %empty */ +#line 3938 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11386,11 +11427,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11390 "MachineIndependent/glslang_tab.cpp" +#line 11431 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3929 "MachineIndependent/glslang.y" + case 600: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 3946 "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); @@ -11398,22 +11439,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11402 "MachineIndependent/glslang_tab.cpp" +#line 11443 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* $@11: %empty */ -#line 3936 "MachineIndependent/glslang.y" + case 601: /* $@11: %empty */ +#line 3953 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11413 "MachineIndependent/glslang_tab.cpp" +#line 11454 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3942 "MachineIndependent/glslang.y" + case 602: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 3959 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11426,22 +11467,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11430 "MachineIndependent/glslang_tab.cpp" +#line 11471 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* $@12: %empty */ -#line 3954 "MachineIndependent/glslang.y" + case 603: /* $@12: %empty */ +#line 3971 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11441 "MachineIndependent/glslang_tab.cpp" +#line 11482 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3960 "MachineIndependent/glslang.y" + case 604: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 3977 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11454,81 +11495,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11458 "MachineIndependent/glslang_tab.cpp" +#line 11499 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* for_init_statement: expression_statement */ -#line 3975 "MachineIndependent/glslang.y" + case 605: /* for_init_statement: expression_statement */ +#line 3992 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11466 "MachineIndependent/glslang_tab.cpp" +#line 11507 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* for_init_statement: declaration_statement */ -#line 3978 "MachineIndependent/glslang.y" + case 606: /* for_init_statement: declaration_statement */ +#line 3995 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11474 "MachineIndependent/glslang_tab.cpp" +#line 11515 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* conditionopt: condition */ -#line 3984 "MachineIndependent/glslang.y" + case 607: /* conditionopt: condition */ +#line 4001 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11482 "MachineIndependent/glslang_tab.cpp" +#line 11523 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* conditionopt: %empty */ -#line 3987 "MachineIndependent/glslang.y" + case 608: /* conditionopt: %empty */ +#line 4004 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11490 "MachineIndependent/glslang_tab.cpp" +#line 11531 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* for_rest_statement: conditionopt SEMICOLON */ -#line 3993 "MachineIndependent/glslang.y" + case 609: /* for_rest_statement: conditionopt SEMICOLON */ +#line 4010 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11499 "MachineIndependent/glslang_tab.cpp" +#line 11540 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 3997 "MachineIndependent/glslang.y" + case 610: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 4014 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11508 "MachineIndependent/glslang_tab.cpp" +#line 11549 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* jump_statement: CONTINUE SEMICOLON */ -#line 4004 "MachineIndependent/glslang.y" + case 611: /* jump_statement: CONTINUE SEMICOLON */ +#line 4021 "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 11518 "MachineIndependent/glslang_tab.cpp" +#line 11559 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* jump_statement: BREAK SEMICOLON */ -#line 4009 "MachineIndependent/glslang.y" + case 612: /* jump_statement: BREAK SEMICOLON */ +#line 4026 "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 11528 "MachineIndependent/glslang_tab.cpp" +#line 11569 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* jump_statement: RETURN SEMICOLON */ -#line 4014 "MachineIndependent/glslang.y" + case 613: /* jump_statement: RETURN SEMICOLON */ +#line 4031 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11536,101 +11577,101 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11540 "MachineIndependent/glslang_tab.cpp" +#line 11581 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* jump_statement: RETURN expression SEMICOLON */ -#line 4021 "MachineIndependent/glslang.y" + case 614: /* jump_statement: RETURN expression SEMICOLON */ +#line 4038 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11548 "MachineIndependent/glslang_tab.cpp" +#line 11589 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* jump_statement: DISCARD SEMICOLON */ -#line 4024 "MachineIndependent/glslang.y" + case 615: /* jump_statement: DISCARD SEMICOLON */ +#line 4041 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11557 "MachineIndependent/glslang_tab.cpp" +#line 11598 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4028 "MachineIndependent/glslang.y" + case 616: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4045 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11566 "MachineIndependent/glslang_tab.cpp" +#line 11607 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4033 "MachineIndependent/glslang.y" + case 617: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4050 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11575 "MachineIndependent/glslang_tab.cpp" +#line 11616 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4037 "MachineIndependent/glslang.y" + case 618: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4054 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11584 "MachineIndependent/glslang_tab.cpp" +#line 11625 "MachineIndependent/glslang_tab.cpp" break; - case 617: /* translation_unit: external_declaration */ -#line 4047 "MachineIndependent/glslang.y" + case 619: /* translation_unit: external_declaration */ +#line 4064 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11593 "MachineIndependent/glslang_tab.cpp" +#line 11634 "MachineIndependent/glslang_tab.cpp" break; - case 618: /* translation_unit: translation_unit external_declaration */ -#line 4051 "MachineIndependent/glslang.y" + case 620: /* translation_unit: translation_unit external_declaration */ +#line 4068 "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 11604 "MachineIndependent/glslang_tab.cpp" +#line 11645 "MachineIndependent/glslang_tab.cpp" break; - case 619: /* external_declaration: function_definition */ -#line 4060 "MachineIndependent/glslang.y" + case 621: /* external_declaration: function_definition */ +#line 4077 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11612 "MachineIndependent/glslang_tab.cpp" +#line 11653 "MachineIndependent/glslang_tab.cpp" break; - case 620: /* external_declaration: declaration */ -#line 4063 "MachineIndependent/glslang.y" + case 622: /* external_declaration: declaration */ +#line 4080 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11620 "MachineIndependent/glslang_tab.cpp" +#line 11661 "MachineIndependent/glslang_tab.cpp" break; - case 621: /* external_declaration: SEMICOLON */ -#line 4067 "MachineIndependent/glslang.y" + case 623: /* external_declaration: SEMICOLON */ +#line 4084 "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 11630 "MachineIndependent/glslang_tab.cpp" +#line 11671 "MachineIndependent/glslang_tab.cpp" break; - case 622: /* $@13: %empty */ -#line 4076 "MachineIndependent/glslang.y" + case 624: /* $@13: %empty */ +#line 4093 "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); @@ -11643,11 +11684,11 @@ yyreduce: ++parseContext.statementNestingLevel; } } -#line 11647 "MachineIndependent/glslang_tab.cpp" +#line 11688 "MachineIndependent/glslang_tab.cpp" break; - case 623: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4088 "MachineIndependent/glslang.y" + case 625: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4105 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11674,228 +11715,228 @@ yyreduce: --parseContext.statementNestingLevel; } } -#line 11678 "MachineIndependent/glslang_tab.cpp" +#line 11719 "MachineIndependent/glslang_tab.cpp" break; - case 624: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4118 "MachineIndependent/glslang.y" + case 626: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4135 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11686 "MachineIndependent/glslang_tab.cpp" +#line 11727 "MachineIndependent/glslang_tab.cpp" break; - case 625: /* attribute_list: single_attribute */ -#line 4123 "MachineIndependent/glslang.y" + case 627: /* attribute_list: single_attribute */ +#line 4140 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11694 "MachineIndependent/glslang_tab.cpp" +#line 11735 "MachineIndependent/glslang_tab.cpp" break; - case 626: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4126 "MachineIndependent/glslang.y" + case 628: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4143 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11702 "MachineIndependent/glslang_tab.cpp" +#line 11743 "MachineIndependent/glslang_tab.cpp" break; - case 627: /* single_attribute: IDENTIFIER */ -#line 4131 "MachineIndependent/glslang.y" + case 629: /* single_attribute: IDENTIFIER */ +#line 4148 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11710 "MachineIndependent/glslang_tab.cpp" +#line 11751 "MachineIndependent/glslang_tab.cpp" break; - case 628: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4134 "MachineIndependent/glslang.y" + case 630: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4151 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11718 "MachineIndependent/glslang_tab.cpp" +#line 11759 "MachineIndependent/glslang_tab.cpp" break; - case 629: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4141 "MachineIndependent/glslang.y" + case 631: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4158 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11726 "MachineIndependent/glslang_tab.cpp" +#line 11767 "MachineIndependent/glslang_tab.cpp" break; - case 630: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4144 "MachineIndependent/glslang.y" + case 632: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4161 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11734 "MachineIndependent/glslang_tab.cpp" +#line 11775 "MachineIndependent/glslang_tab.cpp" break; - case 631: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4149 "MachineIndependent/glslang.y" + case 633: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4166 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11742 "MachineIndependent/glslang_tab.cpp" +#line 11783 "MachineIndependent/glslang_tab.cpp" break; - case 632: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4152 "MachineIndependent/glslang.y" + case 634: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4169 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11750 "MachineIndependent/glslang_tab.cpp" - break; - - case 633: /* spirv_extension_list: STRING_LITERAL */ -#line 4157 "MachineIndependent/glslang.y" - { - (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); - } -#line 11758 "MachineIndependent/glslang_tab.cpp" - break; - - case 634: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4160 "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 11766 "MachineIndependent/glslang_tab.cpp" - break; - - case 635: /* spirv_capability_list: INTCONSTANT */ -#line 4165 "MachineIndependent/glslang.y" - { - (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); - } -#line 11774 "MachineIndependent/glslang_tab.cpp" - break; - - case 636: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4168 "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 11782 "MachineIndependent/glslang_tab.cpp" - break; - - case 637: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4173 "MachineIndependent/glslang.y" - { - parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); - (yyval.interm.intermNode) = 0; - } #line 11791 "MachineIndependent/glslang_tab.cpp" break; - case 638: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ + case 635: /* spirv_extension_list: STRING_LITERAL */ +#line 4174 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); + } +#line 11799 "MachineIndependent/glslang_tab.cpp" + break; + + case 636: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ #line 4177 "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 11807 "MachineIndependent/glslang_tab.cpp" + break; + + case 637: /* spirv_capability_list: INTCONSTANT */ +#line 4182 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); + } +#line 11815 "MachineIndependent/glslang_tab.cpp" + break; + + case 638: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4185 "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 11823 "MachineIndependent/glslang_tab.cpp" + break; + + case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4190 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); + (yyval.interm.intermNode) = 0; + } +#line 11832 "MachineIndependent/glslang_tab.cpp" + break; + + case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4194 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11801 "MachineIndependent/glslang_tab.cpp" +#line 11842 "MachineIndependent/glslang_tab.cpp" break; - case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4182 "MachineIndependent/glslang.y" + case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4199 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11810 "MachineIndependent/glslang_tab.cpp" +#line 11851 "MachineIndependent/glslang_tab.cpp" break; - case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4186 "MachineIndependent/glslang.y" + case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4203 "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 11820 "MachineIndependent/glslang_tab.cpp" +#line 11861 "MachineIndependent/glslang_tab.cpp" break; - case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4191 "MachineIndependent/glslang.y" + case 643: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4208 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11829 "MachineIndependent/glslang_tab.cpp" +#line 11870 "MachineIndependent/glslang_tab.cpp" break; - case 642: /* 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 4195 "MachineIndependent/glslang.y" + case 644: /* 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 4212 "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 11839 "MachineIndependent/glslang_tab.cpp" +#line 11880 "MachineIndependent/glslang_tab.cpp" break; - case 643: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4202 "MachineIndependent/glslang.y" + case 645: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4219 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 11847 "MachineIndependent/glslang_tab.cpp" +#line 11888 "MachineIndependent/glslang_tab.cpp" break; - case 644: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4205 "MachineIndependent/glslang.y" + case 646: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4222 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11855 "MachineIndependent/glslang_tab.cpp" +#line 11896 "MachineIndependent/glslang_tab.cpp" break; - case 645: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4210 "MachineIndependent/glslang.y" + case 647: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4227 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 11863 "MachineIndependent/glslang_tab.cpp" +#line 11904 "MachineIndependent/glslang_tab.cpp" break; - case 646: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4213 "MachineIndependent/glslang.y" + case 648: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4230 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 11871 "MachineIndependent/glslang_tab.cpp" +#line 11912 "MachineIndependent/glslang_tab.cpp" break; - case 647: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4216 "MachineIndependent/glslang.y" + case 649: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4233 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 11879 "MachineIndependent/glslang_tab.cpp" +#line 11920 "MachineIndependent/glslang_tab.cpp" break; - case 648: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4219 "MachineIndependent/glslang.y" + case 650: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4236 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 11887 "MachineIndependent/glslang_tab.cpp" +#line 11928 "MachineIndependent/glslang_tab.cpp" break; - case 649: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4222 "MachineIndependent/glslang.y" + case 651: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4239 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 11895 "MachineIndependent/glslang_tab.cpp" +#line 11936 "MachineIndependent/glslang_tab.cpp" break; - case 650: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4227 "MachineIndependent/glslang.y" + case 652: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4244 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11905,11 +11946,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 11909 "MachineIndependent/glslang_tab.cpp" +#line 11950 "MachineIndependent/glslang_tab.cpp" break; - case 651: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4236 "MachineIndependent/glslang.y" + case 653: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4253 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11919,156 +11960,156 @@ 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 11923 "MachineIndependent/glslang_tab.cpp" +#line 11964 "MachineIndependent/glslang_tab.cpp" break; - case 652: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4247 "MachineIndependent/glslang.y" + case 654: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4264 "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 11933 "MachineIndependent/glslang_tab.cpp" +#line 11974 "MachineIndependent/glslang_tab.cpp" break; - case 653: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4252 "MachineIndependent/glslang.y" + case 655: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4269 "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 11944 "MachineIndependent/glslang_tab.cpp" +#line 11985 "MachineIndependent/glslang_tab.cpp" break; - case 654: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4260 "MachineIndependent/glslang.y" + case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4277 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 11953 "MachineIndependent/glslang_tab.cpp" +#line 11994 "MachineIndependent/glslang_tab.cpp" break; - case 655: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4264 "MachineIndependent/glslang.y" + case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4281 "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 11963 "MachineIndependent/glslang_tab.cpp" +#line 12004 "MachineIndependent/glslang_tab.cpp" break; - case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4269 "MachineIndependent/glslang.y" + case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4286 "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 11972 "MachineIndependent/glslang_tab.cpp" +#line 12013 "MachineIndependent/glslang_tab.cpp" break; - case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4273 "MachineIndependent/glslang.y" + case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4290 "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 11982 "MachineIndependent/glslang_tab.cpp" +#line 12023 "MachineIndependent/glslang_tab.cpp" break; - case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4278 "MachineIndependent/glslang.y" + case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4295 "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 11991 "MachineIndependent/glslang_tab.cpp" +#line 12032 "MachineIndependent/glslang_tab.cpp" break; - case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4282 "MachineIndependent/glslang.y" + case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4299 "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 12001 "MachineIndependent/glslang_tab.cpp" +#line 12042 "MachineIndependent/glslang_tab.cpp" break; - case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4287 "MachineIndependent/glslang.y" + case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4304 "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 12010 "MachineIndependent/glslang_tab.cpp" +#line 12051 "MachineIndependent/glslang_tab.cpp" break; - case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4291 "MachineIndependent/glslang.y" + case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4308 "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 12020 "MachineIndependent/glslang_tab.cpp" +#line 12061 "MachineIndependent/glslang_tab.cpp" break; - case 662: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4298 "MachineIndependent/glslang.y" + case 664: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4315 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12028 "MachineIndependent/glslang_tab.cpp" +#line 12069 "MachineIndependent/glslang_tab.cpp" break; - case 663: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4301 "MachineIndependent/glslang.y" + case 665: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4318 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12036 "MachineIndependent/glslang_tab.cpp" +#line 12077 "MachineIndependent/glslang_tab.cpp" break; - case 664: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4306 "MachineIndependent/glslang.y" + case 666: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4323 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12044 "MachineIndependent/glslang_tab.cpp" +#line 12085 "MachineIndependent/glslang_tab.cpp" break; - case 665: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4309 "MachineIndependent/glslang.y" + case 667: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4326 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12052 "MachineIndependent/glslang_tab.cpp" +#line 12093 "MachineIndependent/glslang_tab.cpp" break; - case 666: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4312 "MachineIndependent/glslang.y" + case 668: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4329 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12060 "MachineIndependent/glslang_tab.cpp" +#line 12101 "MachineIndependent/glslang_tab.cpp" break; - case 667: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4315 "MachineIndependent/glslang.y" + case 669: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4332 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12068 "MachineIndependent/glslang_tab.cpp" +#line 12109 "MachineIndependent/glslang_tab.cpp" break; - case 668: /* spirv_decorate_id_parameter_list: constant_expression */ -#line 4320 "MachineIndependent/glslang.y" + case 670: /* spirv_decorate_id_parameter_list: constant_expression */ +#line 4337 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12077,11 +12118,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 12081 "MachineIndependent/glslang_tab.cpp" +#line 12122 "MachineIndependent/glslang_tab.cpp" break; - case 669: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ -#line 4328 "MachineIndependent/glslang.y" + case 671: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ +#line 4345 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12090,139 +12131,139 @@ 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 12094 "MachineIndependent/glslang_tab.cpp" +#line 12135 "MachineIndependent/glslang_tab.cpp" break; - case 670: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4338 "MachineIndependent/glslang.y" + case 672: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4355 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12103 "MachineIndependent/glslang_tab.cpp" +#line 12144 "MachineIndependent/glslang_tab.cpp" break; - case 671: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4342 "MachineIndependent/glslang.y" + case 673: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4359 "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 12111 "MachineIndependent/glslang_tab.cpp" +#line 12152 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4347 "MachineIndependent/glslang.y" + case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4364 "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 12120 "MachineIndependent/glslang_tab.cpp" +#line 12161 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4351 "MachineIndependent/glslang.y" + case 675: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4368 "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 12130 "MachineIndependent/glslang_tab.cpp" +#line 12171 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4356 "MachineIndependent/glslang.y" + case 676: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4373 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12139 "MachineIndependent/glslang_tab.cpp" +#line 12180 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4360 "MachineIndependent/glslang.y" + case 677: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4377 "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 12149 "MachineIndependent/glslang_tab.cpp" - break; - - case 676: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4367 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); - } -#line 12157 "MachineIndependent/glslang_tab.cpp" - break; - - case 677: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4370 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); - } -#line 12165 "MachineIndependent/glslang_tab.cpp" - break; - - case 678: /* spirv_type_parameter: constant_expression */ -#line 4375 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); - } -#line 12173 "MachineIndependent/glslang_tab.cpp" - break; - - case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4380 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); - } -#line 12181 "MachineIndependent/glslang_tab.cpp" - break; - - case 680: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4383 "MachineIndependent/glslang.y" - { - parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); - (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); - } #line 12190 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4389 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); + case 678: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4384 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } #line 12198 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4392 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); + case 679: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4387 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } #line 12206 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4397 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); + case 680: /* spirv_type_parameter: constant_expression */ +#line 4392 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } #line 12214 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4400 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); + case 681: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4397 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } #line 12222 "MachineIndependent/glslang_tab.cpp" break; + case 682: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4400 "MachineIndependent/glslang.y" + { + parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); + (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); + } +#line 12231 "MachineIndependent/glslang_tab.cpp" + break; -#line 12226 "MachineIndependent/glslang_tab.cpp" + case 683: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4406 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); + } +#line 12239 "MachineIndependent/glslang_tab.cpp" + break; + + case 684: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4409 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); + } +#line 12247 "MachineIndependent/glslang_tab.cpp" + break; + + case 685: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4414 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); + } +#line 12255 "MachineIndependent/glslang_tab.cpp" + break; + + case 686: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4417 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); + } +#line 12263 "MachineIndependent/glslang_tab.cpp" + break; + + +#line 12267 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12447,5 +12488,5 @@ yyreturn: return yyresult; } -#line 4405 "MachineIndependent/glslang.y" +#line 4422 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index a6871b319..18cef4688 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -506,7 +506,9 @@ extern int yydebug; PERPRIMITIVENV = 707, /* PERPRIMITIVENV */ PERVIEWNV = 708, /* PERVIEWNV */ PERTASKNV = 709, /* PERTASKNV */ - PRECISE = 710 /* PRECISE */ + PERPRIMITIVEEXT = 710, /* PERPRIMITIVEEXT */ + TASKPAYLOADWORKGROUPEXT = 711, /* TASKPAYLOADWORKGROUPEXT */ + PRECISE = 712 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -554,7 +556,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 558 "MachineIndependent/glslang_tab.cpp.h" +#line 560 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index d8a3aab5d..173a012aa 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1068,6 +1068,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpExecuteCallableNV: out.debug << "executeCallableNV"; break; case EOpExecuteCallableKHR: out.debug << "executeCallableKHR"; break; case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break; + case EOpEmitMeshTasksEXT: out.debug << "EmitMeshTasksEXT"; break; + case EOpSetMeshOutputsEXT: out.debug << "SetMeshOutputsEXT"; break; case EOpRayQueryInitialize: out.debug << "rayQueryInitializeEXT"; break; case EOpRayQueryTerminate: out.debug << "rayQueryTerminateEXT"; break; @@ -1522,12 +1524,12 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) infoSink.debug << "interlock ordering = " << TQualifier::getInterlockOrderingString(interlockOrdering) << "\n"; break; - case EShLangMeshNV: + case EShLangMesh: infoSink.debug << "max_vertices = " << vertices << "\n"; infoSink.debug << "max_primitives = " << primitives << "\n"; infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n"; // Fall through - case EShLangTaskNV: + case EShLangTask: // Fall through case EShLangCompute: infoSink.debug << "local_size = (" << localSize[0] << ", " << localSize[1] << ", " << localSize[2] << ")\n"; diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 6e60155aa..fdb2dfdda 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -120,7 +120,7 @@ void TIntermediate::mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit } // -// do error checking on the shader boundary in / out vars +// do error checking on the shader boundary in / out vars // void TIntermediate::checkStageIO(TInfoSink& infoSink, TIntermediate& unit) { if (unit.treeRoot == nullptr || treeRoot == nullptr) @@ -212,7 +212,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) if (vertices == TQualifier::layoutNotSet) vertices = unit.vertices; else if (unit.vertices != TQualifier::layoutNotSet && vertices != unit.vertices) { - if (language == EShLangGeometry || language == EShLangMeshNV) + if (language == EShLangGeometry || language == EShLangMesh) error(infoSink, "Contradictory layout max_vertices values"); else if (language == EShLangTessControl) error(infoSink, "Contradictory layout vertices values"); @@ -222,7 +222,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) if (primitives == TQualifier::layoutNotSet) primitives = unit.primitives; else if (primitives != unit.primitives) { - if (language == EShLangMeshNV) + if (language == EShLangMesh) error(infoSink, "Contradictory layout max_primitives values"); else assert(0); @@ -692,7 +692,7 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl TMergeBlockTraverser finalLinkTraverser(block); getTreeRoot()->traverse(&finalLinkTraverser); - // The 'unit' intermediate needs the block structures update, but also structure entry indices + // The 'unit' intermediate needs the block structures update, but also structure entry indices // may have changed from the old block to the new one that it was merged into, so update those // in 'visitBinary' TType unitType; @@ -1012,7 +1012,7 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy } // Auxiliary and interpolation... - // "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ. + // "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ. // These mismatches are allowed between any pair of stages ... // those provided in the fragment shader supersede those provided in previous stages." if (!crossStage && @@ -1294,8 +1294,8 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) error(infoSink, "At least one shader must specify a layout(max_vertices = value)"); break; case EShLangFragment: - // for GL_ARB_post_depth_coverage, EarlyFragmentTest is set automatically in - // ParseHelper.cpp. So if we reach here, this must be GL_EXT_post_depth_coverage + // for GL_ARB_post_depth_coverage, EarlyFragmentTest is set automatically in + // ParseHelper.cpp. So if we reach here, this must be GL_EXT_post_depth_coverage // requiring explicit early_fragment_tests if (getPostDepthCoverage() && !getEarlyFragmentTests()) error(infoSink, "post_depth_coverage requires early_fragment_tests"); @@ -1312,7 +1312,7 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) if (numShaderRecordBlocks > 1) error(infoSink, "Only one shaderRecordNV buffer block is allowed per stage"); break; - case EShLangMeshNV: + case EShLangMesh: // NV_mesh_shader doesn't allow use of both single-view and per-view builtins. if (inIoAccessed("gl_Position") && inIoAccessed("gl_PositionPerViewNV")) error(infoSink, "Can only use one of gl_Position or gl_PositionPerViewNV"); @@ -1331,9 +1331,11 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) if (primitives == TQualifier::layoutNotSet) error(infoSink, "At least one shader must specify a layout(max_primitives = value)"); // fall through - case EShLangTaskNV: + case EShLangTask: if (numTaskNVBlocks > 1) error(infoSink, "Only one taskNV interface block is allowed per shader"); + if (numTaskEXTPayloads > 1) + error(infoSink, "Only single variable of type taskPayloadSharedEXT is allowed per shader"); sharedBlockCheck(infoSink); break; default: @@ -2226,7 +2228,7 @@ int TIntermediate::getScalarAlignment(const TType& type, int& size, int& stride, if (type.isVector()) { int scalarAlign = getBaseAlignmentScalar(type, size); - + size *= type.getVectorSize(); return scalarAlign; } @@ -2247,7 +2249,7 @@ int TIntermediate::getScalarAlignment(const TType& type, int& size, int& stride, assert(0); // all cases should be covered above size = 1; - return 1; + return 1; } int TIntermediate::getMemberAlignment(const TType& type, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor) @@ -2338,7 +2340,7 @@ bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) { (language == EShLangTessEvaluation && type.getQualifier().storage == EvqVaryingIn) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) || - (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && + (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } #endif // not GLSLANG_WEB diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index ddeaa3530..0d4945c81 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -322,6 +322,7 @@ public: primitives(TQualifier::layoutNotSet), numTaskNVBlocks(0), layoutPrimitiveCulling(false), + numTaskEXTPayloads(0), autoMapBindings(false), autoMapLocations(false), flattenUniformArrays(false), @@ -639,6 +640,7 @@ public: int getNumPushConstants() const { return 0; } void addShaderRecordCount() { } void addTaskNVCount() { } + void addTaskPayloadEXTCount() { } void setUseVulkanMemoryModel() { } bool usingVulkanMemoryModel() const { return false; } bool usingPhysicalStorageBuffer() const { return false; } @@ -756,6 +758,7 @@ public: int getNumPushConstants() const { return numPushConstants; } void addShaderRecordCount() { ++numShaderRecordBlocks; } void addTaskNVCount() { ++numTaskNVBlocks; } + void addTaskPayloadEXTCount() { ++numTaskEXTPayloads; } bool setInvocations(int i) { @@ -1160,6 +1163,7 @@ protected: int primitives; int numTaskNVBlocks; bool layoutPrimitiveCulling; + int numTaskEXTPayloads; // Base shift values std::array shiftBinding; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index e44339db5..992db213b 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -108,8 +108,10 @@ typedef enum { EShLangMissNV = EShLangMiss, EShLangCallable, EShLangCallableNV = EShLangCallable, - EShLangTaskNV, - EShLangMeshNV, + EShLangTask, + EShLangTaskNV = EShLangTask, + EShLangMesh, + EShLangMeshNV = EShLangMesh, LAST_ELEMENT_MARKER(EShLangCount), } EShLanguage; // would be better as stage, but this is ancient now @@ -132,8 +134,10 @@ typedef enum : unsigned { EShLangMissNVMask = EShLangMissMask, EShLangCallableMask = (1 << EShLangCallable), EShLangCallableNVMask = EShLangCallableMask, - EShLangTaskNVMask = (1 << EShLangTaskNV), - EShLangMeshNVMask = (1 << EShLangMeshNV), + EShLangTaskMask = (1 << EShLangTask), + EShLangTaskNVMask = EShLangTaskMask, + EShLangMeshMask = (1 << EShLangMesh), + EShLangMeshNVMask = EShLangMeshMask, LAST_ELEMENT_MARKER(EShLanguageMaskCount), } EShLanguageMask; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 5d60ccde7..0f3cd0c3b 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -630,6 +630,17 @@ INSTANTIATE_TEST_SUITE_P( "spv.WorkgroupMemoryExplicitLayout.std140.comp", "spv.WorkgroupMemoryExplicitLayout.std430.comp", "spv.WorkgroupMemoryExplicitLayout.scalar.comp", + + // SPV_EXT_mesh_shader + "spv.ext.meshShaderBuiltins.mesh", + "spv.ext.meshShaderRedeclBuiltins.mesh", + "spv.ext.meshShaderTaskMem.mesh", + "spv.ext.meshShaderUserDefined.mesh", + "spv.ext.meshTaskShader.task", + "spv.atomiAddEXT.error.mesh", + "spv.atomiAddEXT.task", + "spv.460.subgroupEXT.task", + "spv.460.subgroupEXT.mesh", })), FileNameAsCustomTestSuffix ); diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp index ced6fcce6..4c935f885 100644 --- a/gtests/TestFixture.cpp +++ b/gtests/TestFixture.cpp @@ -73,9 +73,9 @@ EShLanguage GetShaderStage(const std::string& stage) } else if (stage == "rcall") { return EShLangCallable; } else if (stage == "task") { - return EShLangTaskNV; + return EShLangTask; } else if (stage == "mesh") { - return EShLangMeshNV; + return EShLangMesh; } else { assert(0 && "Unknown shader stage"); return EShLangCount; diff --git a/known_good.json b/known_good.json index 1a3202d03..2f965750d 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "5e61ea2098220059e89523f1f47b0bcd8c33b89a" + "commit" : "4c456f7da67c5437a6fb7d4d20d78e2a5ae2acf2" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "b2a156e1c0434bc8c99aaebba1c7be98be7ac580" + "commit" : "87d5b782bec60822aa878941e6b13c0a9a954c9b" } ] }