diff --git a/SPIRV/GLSL.ext.NV.h b/SPIRV/GLSL.ext.NV.h index 148d4b45..6abc469b 100644 --- a/SPIRV/GLSL.ext.NV.h +++ b/SPIRV/GLSL.ext.NV.h @@ -33,7 +33,7 @@ enum Op; enum Capability; static const int GLSLextNVVersion = 100; -static const int GLSLextNVRevision = 5; +static const int GLSLextNVRevision = 11; //SPV_NV_sample_mask_override_coverage const char* const E_SPV_NV_sample_mask_override_coverage = "SPV_NV_sample_mask_override_coverage"; @@ -54,4 +54,22 @@ const char* const E_SPV_NVX_multiview_per_view_attributes = "SPV_NVX_multiview_p //SPV_NV_shader_subgroup_partitioned const char* const E_SPV_NV_shader_subgroup_partitioned = "SPV_NV_shader_subgroup_partitioned"; -#endif // #ifndef GLSLextNV_H \ No newline at end of file +//SPV_NV_fragment_shader_barycentric +const char* const E_SPV_NV_fragment_shader_barycentric = "SPV_NV_fragment_shader_barycentric"; + +//SPV_NV_compute_shader_derivatives +const char* const E_SPV_NV_compute_shader_derivatives = "SPV_NV_compute_shader_derivatives"; + +//SPV_NV_shader_image_footprint +const char* const E_SPV_NV_shader_image_footprint = "SPV_NV_shader_image_footprint"; + +//SPV_NV_mesh_shader +const char* const E_SPV_NV_mesh_shader = "SPV_NV_mesh_shader"; + +//SPV_NVX_raytracing +const char* const E_SPV_NVX_raytracing = "SPV_NVX_raytracing"; + +//SPV_NV_shading_rate +const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate"; + +#endif // #ifndef GLSLextNV_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 3a36b38a..f0040b80 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -194,6 +194,9 @@ protected: spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId); spv::Id getSymbolId(const glslang::TIntermSymbol* node); +#ifdef NV_EXTENSIONS + void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier); +#endif spv::Id createSpvConstant(const glslang::TIntermTyped&); spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&, int& nextConst, bool specConstant); bool isTrivialLeaf(const glslang::TIntermTyped* node); @@ -272,6 +275,16 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage) case EShLangGeometry: return spv::ExecutionModelGeometry; case EShLangFragment: return spv::ExecutionModelFragment; case EShLangCompute: return spv::ExecutionModelGLCompute; +#ifdef NV_EXTENSIONS + case EShLangRayGenNV: return spv::ExecutionModelRayGenerationNVX; + case EShLangIntersectNV: return spv::ExecutionModelIntersectionNVX; + case EShLangAnyHitNV: return spv::ExecutionModelAnyHitNVX; + case EShLangClosestHitNV: return spv::ExecutionModelClosestHitNVX; + case EShLangMissNV: return spv::ExecutionModelMissNVX; + case EShLangCallableNV: return spv::ExecutionModelCallableNVX; + case EShLangTaskNV: return spv::ExecutionModelTaskNV; + case EShLangMeshNV: return spv::ExecutionModelMeshNV; +#endif default: assert(0); return spv::ExecutionModelFragment; @@ -321,6 +334,11 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useSto case glslang::EvqBuffer: return useStorageBuffer ? spv::DecorationBlock : spv::DecorationBufferBlock; case glslang::EvqVaryingIn: return spv::DecorationBlock; case glslang::EvqVaryingOut: return spv::DecorationBlock; +#ifdef NV_EXTENSIONS + case glslang::EvqPayloadNV: return spv::DecorationBlock; + case glslang::EvqPayloadInNV: return spv::DecorationBlock; + case glslang::EvqHitAttrNV: return spv::DecorationBlock; +#endif default: assert(0); break; @@ -379,8 +397,22 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T } case glslang::EvqVaryingIn: case glslang::EvqVaryingOut: - assert(type.getQualifier().layoutPacking == glslang::ElpNone); + if (type.getQualifier().isTaskMemory()) { + switch (type.getQualifier().layoutPacking) { + case glslang::ElpShared: return spv::DecorationGLSLShared; + case glslang::ElpPacked: return spv::DecorationGLSLPacked; + default: break; + } + } else { + assert(type.getQualifier().layoutPacking == glslang::ElpNone); + } return spv::DecorationMax; +#ifdef NV_EXTENSIONS + case glslang::EvqPayloadNV: + case glslang::EvqPayloadInNV: + case glslang::EvqHitAttrNV: + return spv::DecorationMax; +#endif default: assert(0); return spv::DecorationMax; @@ -619,6 +651,11 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInSampleMask; case glslang::EbvLayer: +#ifdef NV_EXTENSIONS + if (glslangIntermediate->getStage() == EShLangMeshNV) { + return spv::BuiltInLayer; + } +#endif builder.addCapability(spv::CapabilityGeometry); if (glslangIntermediate->getStage() == EShLangVertex || glslangIntermediate->getStage() == EShLangTessControl || @@ -827,6 +864,66 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI builder.addExtension(spv::E_SPV_EXT_fragment_fully_covered); builder.addCapability(spv::CapabilityFragmentFullyCoveredEXT); return spv::BuiltInFullyCoveredEXT; + case glslang::EbvFragmentSizeNV: + builder.addExtension(spv::E_SPV_NV_shading_rate); + builder.addCapability(spv::CapabilityShadingRateNV); + return spv::BuiltInFragmentSizeNV; + case glslang::EbvInvocationsPerPixelNV: + builder.addExtension(spv::E_SPV_NV_shading_rate); + builder.addCapability(spv::CapabilityShadingRateNV); + return spv::BuiltInInvocationsPerPixelNV; + + // raytracing + case glslang::EbvLaunchIdNV: + return spv::BuiltInLaunchIdNVX; + case glslang::EbvLaunchSizeNV: + return spv::BuiltInLaunchSizeNVX; + case glslang::EbvWorldRayOriginNV: + return spv::BuiltInWorldRayOriginNVX; + case glslang::EbvWorldRayDirectionNV: + return spv::BuiltInWorldRayDirectionNVX; + case glslang::EbvObjectRayOriginNV: + return spv::BuiltInObjectRayOriginNVX; + case glslang::EbvObjectRayDirectionNV: + return spv::BuiltInObjectRayDirectionNVX; + case glslang::EbvRayTminNV: + return spv::BuiltInRayTminNVX; + case glslang::EbvRayTmaxNV: + return spv::BuiltInRayTmaxNVX; + case glslang::EbvInstanceCustomIndexNV: + return spv::BuiltInInstanceCustomIndexNVX; + case glslang::EbvHitTNV: + return spv::BuiltInHitTNVX; + case glslang::EbvHitKindNV: + return spv::BuiltInHitKindNVX; + case glslang::EbvObjectToWorldNV: + return spv::BuiltInObjectToWorldNVX; + case glslang::EbvWorldToObjectNV: + return spv::BuiltInWorldToObjectNVX; + case glslang::EbvBaryCoordNV: + builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric); + builder.addCapability(spv::CapabilityFragmentBarycentricNV); + return spv::BuiltInBaryCoordNV; + case glslang::EbvBaryCoordNoPerspNV: + builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric); + builder.addCapability(spv::CapabilityFragmentBarycentricNV); + return spv::BuiltInBaryCoordNoPerspNV; + case glslang::EbvTaskCountNV: + return spv::BuiltInTaskCountNV; + case glslang::EbvPrimitiveCountNV: + return spv::BuiltInPrimitiveCountNV; + case glslang::EbvPrimitiveIndicesNV: + return spv::BuiltInPrimitiveIndicesNV; + case glslang::EbvClipDistancePerViewNV: + return spv::BuiltInClipDistancePerViewNV; + case glslang::EbvCullDistancePerViewNV: + return spv::BuiltInCullDistancePerViewNV; + case glslang::EbvLayerPerViewNV: + return spv::BuiltInLayerPerViewNV; + case glslang::EbvMeshViewCountNV: + return spv::BuiltInMeshViewCountNV; + case glslang::EbvMeshViewIndicesNV: + return spv::BuiltInMeshViewIndicesNV; #endif default: return spv::BuiltInMax; @@ -983,6 +1080,10 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T if (type.getQualifier().isUniformOrBuffer()) { if (type.getQualifier().layoutPushConstant) return spv::StorageClassPushConstant; +#ifdef NV_EXTENSIONS + if (type.getQualifier().layoutShaderRecordNV) + return spv::StorageClassShaderRecordBufferNVX; +#endif if (type.getBasicType() == glslang::EbtBlock) return spv::StorageClassUniform; return spv::StorageClassUniformConstant; @@ -993,6 +1094,11 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T case glslang::EvqGlobal: return spv::StorageClassPrivate; case glslang::EvqConstReadOnly: return spv::StorageClassFunction; case glslang::EvqTemporary: return spv::StorageClassFunction; +#ifdef NV_EXTENSIONS + case glslang::EvqPayloadNV: return spv::StorageClassRayPayloadNVX; + case glslang::EvqPayloadInNV: return spv::StorageClassIncomingRayPayloadNVX; + case glslang::EvqHitAttrNV: return spv::StorageClassHitAttributeNVX; +#endif default: assert(0); break; @@ -1048,7 +1154,11 @@ bool IsDescriptorResource(const glslang::TType& type) { // uniform and buffer blocks are included, unless it is a push_constant if (type.getBasicType() == glslang::EbtBlock) - return type.getQualifier().isUniformOrBuffer() && ! type.getQualifier().layoutPushConstant; + return type.getQualifier().isUniformOrBuffer() && +#ifdef NV_EXTENSIONS + ! type.getQualifier().layoutShaderRecordNV && +#endif + ! type.getQualifier().layoutPushConstant; // non block... // basically samplerXXX/subpass/sampler/texture are all included @@ -1102,6 +1212,14 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa child.readonly = true; if (parent.writeonly) child.writeonly = true; +#ifdef NV_EXTENSIONS + if (parent.perPrimitiveNV) + child.perPrimitiveNV = true; + if (parent.perViewNV) + child.perViewNV = true; + if (parent.perTaskNV) + child.perTaskNV = true; +#endif } bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifier& qualifier) @@ -1292,8 +1410,52 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), glslangIntermediate->getLocalSize(1), glslangIntermediate->getLocalSize(2)); +#ifdef NV_EXTENSIONS + if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { + builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV); + builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); + } else if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupLinear) { + builder.addCapability(spv::CapabilityComputeDerivativeGroupLinearNV); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupLinearNV); + builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); + } +#endif break; +#ifdef NV_EXTENSIONS + case EShLangRayGenNV: + case EShLangIntersectNV: + case EShLangAnyHitNV: + case EShLangClosestHitNV: + case EShLangMissNV: + case EShLangCallableNV: + builder.addCapability(spv::CapabilityRaytracingNVX); + builder.addExtension("SPV_NVX_raytracing"); + break; + case EShLangTaskNV: + case EShLangMeshNV: + builder.addCapability(spv::CapabilityMeshShadingNV); + builder.addExtension(spv::E_SPV_NV_mesh_shader); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), + glslangIntermediate->getLocalSize(1), + glslangIntermediate->getLocalSize(2)); + if (glslangIntermediate->getStage() == EShLangMeshNV) { + builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputPrimitivesNV, glslangIntermediate->getPrimitives()); + + switch (glslangIntermediate->getOutputPrimitive()) { + case glslang::ElgPoints: mode = spv::ExecutionModeOutputPoints; break; + case glslang::ElgLines: mode = spv::ExecutionModeOutputLinesNV; break; + case glslang::ElgTriangles: mode = spv::ExecutionModeOutputTrianglesNV; break; + default: mode = spv::ExecutionModeMax; break; + } + if (mode != spv::ExecutionModeMax) + builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); + } + break; +#endif + default: break; } @@ -2101,6 +2263,15 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt atomic = true; break; +#ifdef NV_EXTENSIONS + case glslang::EOpIgnoreIntersectionNV: + case glslang::EOpTerminateRayNV: + case glslang::EOpTraceNV: + case glslang::EOpWritePackedPrimitiveIndices4x8NV: + noReturnValue = true; + break; +#endif + default: break; } @@ -2767,6 +2938,11 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addCapability(spv::CapabilityAtomicStorage); spvType = builder.makeUintType(32); break; +#ifdef NV_EXTENSIONS + case glslang::EbtAccStructNV: + spvType = builder.makeAccelerationStructureNVType(); + break; +#endif case glslang::EbtSampler: { const glslang::TSampler& sampler = type.getSampler(); @@ -2873,23 +3049,28 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty // bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) { +#ifdef NV_EXTENSIONS auto& extensions = glslangIntermediate->getRequestedExtensions(); - if (member.getFieldName() == "gl_ViewportMask" && - extensions.find("GL_NV_viewport_array2") == extensions.end()) - return true; if (member.getFieldName() == "gl_SecondaryViewportMaskNV" && extensions.find("GL_NV_stereo_view_rendering") == extensions.end()) return true; if (member.getFieldName() == "gl_SecondaryPositionNV" && extensions.find("GL_NV_stereo_view_rendering") == extensions.end()) return true; - if (member.getFieldName() == "gl_PositionPerViewNV" && - extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end()) - return true; - if (member.getFieldName() == "gl_ViewportMaskPerViewNV" && - extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end()) - return true; + + if (glslangIntermediate->getStage() != EShLangMeshNV) { + if (member.getFieldName() == "gl_ViewportMask" && + extensions.find("GL_NV_viewport_array2") == extensions.end()) + return true; + if (member.getFieldName() == "gl_PositionPerViewNV" && + extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end()) + return true; + if (member.getFieldName() == "gl_ViewportMaskPerViewNV" && + extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end()) + return true; + } +#endif return false; }; @@ -2982,6 +3163,9 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, glslangIntermediate->getSource() == glslang::EShSourceHlsl) { builder.addMemberDecoration(spvType, member, TranslateInterpolationDecoration(memberQualifier)); builder.addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(memberQualifier)); +#ifdef NV_EXTENSIONS + addMeshNVDecoration(spvType, member, memberQualifier); +#endif } } builder.addMemberDecoration(spvType, member, TranslateInvariantDecoration(memberQualifier)); @@ -3253,9 +3437,10 @@ glslang::TLayoutPacking TGlslangToSpvTraverser::getExplicitLayout(const glslang: if (type.getBasicType() != glslang::EbtBlock) return glslang::ElpNone; - // has to be a uniform or buffer block + // has to be a uniform or buffer block or task in/out blocks if (type.getQualifier().storage != glslang::EvqUniform && - type.getQualifier().storage != glslang::EvqBuffer) + type.getQualifier().storage != glslang::EvqBuffer && + !type.getQualifier().isTaskMemory()) return glslang::ElpNone; // return the layout to use @@ -3369,6 +3554,14 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList& case glslang::EbvSecondaryViewportMaskNV: case glslang::EbvPositionPerViewNV: case glslang::EbvViewportMaskPerViewNV: + case glslang::EbvTaskCountNV: + case glslang::EbvPrimitiveCountNV: + case glslang::EbvPrimitiveIndicesNV: + case glslang::EbvClipDistancePerViewNV: + case glslang::EbvCullDistancePerViewNV: + case glslang::EbvLayerPerViewNV: + case glslang::EbvMeshViewCountNV: + case glslang::EbvMeshViewIndicesNV: #endif // Generate the associated capability. Delegate to TranslateBuiltInDecoration. // Alternately, we could just call this for any glslang built-in, since the @@ -3648,6 +3841,25 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& if (i == 3) lvalue = true; break; +#endif +#ifdef NV_EXTENSIONS + case glslang::EOpImageSampleFootprintNV: + if (i == 4) + lvalue = true; + break; + case glslang::EOpImageSampleFootprintClampNV: + case glslang::EOpImageSampleFootprintLodNV: + if (i == 5) + lvalue = true; + break; + case glslang::EOpImageSampleFootprintGradNV: + if (i == 6) + lvalue = true; + break; + case glslang::EOpImageSampleFootprintGradClampNV: + if (i == 7) + lvalue = true; + break; #endif default: break; @@ -4001,6 +4213,10 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // Check for texture functions other than queries bool sparse = node->isSparseTexture(); +#ifdef NV_EXTENSIONS + bool imageFootprint = node->isImageFootprint(); +#endif + bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow; // check for bias argument @@ -4030,7 +4246,12 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO ++nonBiasArgCount; if (sparse) ++nonBiasArgCount; - +#ifdef NV_EXTENSIONS + if (imageFootprint) + //Following three extra arguments + // int granularity, bool coarse, out gl_TextureFootprint2DNV footprint + nonBiasArgCount += 3; +#endif if ((int)arguments.size() > nonBiasArgCount) bias = true; } @@ -4085,7 +4306,13 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO if (cracked.lod) { params.lod = arguments[2 + extraArgs]; ++extraArgs; - } else if (glslangIntermediate->getStage() != EShLangFragment) { + } else if (glslangIntermediate->getStage() != EShLangFragment +#ifdef NV_EXTENSIONS + // NV_compute_shader_derivatives layout qualifiers allow for implicit LODs + && !(glslangIntermediate->getStage() == EShLangCompute && + (glslangIntermediate->getLayoutDerivativeModeNone() != glslang::LayoutDerivativeNone)) +#endif + ) { // we need to invent the default lod for an explicit lod instruction for a non-fragment stage noImplicitLod = true; } @@ -4117,7 +4344,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO params.lodClamp = arguments[2 + extraArgs]; ++extraArgs; } - // sparse if (sparse) { params.texelOut = arguments[2 + extraArgs]; @@ -4133,13 +4359,81 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } else params.component = builder.makeIntConstant(0); } - +#ifdef NV_EXTENSIONS + spv::Id resultStruct = spv::NoResult; + if (imageFootprint) { + //Following three extra arguments + // int granularity, bool coarse, out gl_TextureFootprint2DNV footprint + params.granularity = arguments[2 + extraArgs]; + params.coarse = arguments[3 + extraArgs]; + resultStruct = arguments[4 + extraArgs]; + extraArgs += 3; + } +#endif // bias if (bias) { params.bias = arguments[2 + extraArgs]; ++extraArgs; } +#ifdef NV_EXTENSIONS + if (imageFootprint) { + builder.addExtension(spv::E_SPV_NV_shader_image_footprint); + builder.addCapability(spv::CapabilityImageFootprintNV); + + + //resultStructType(OpenGL type) contains 5 elements: + //struct gl_TextureFootprint2DNV { + // uvec2 anchor; + // uvec2 offset; + // uvec2 mask; + // uint lod; + // uint granularity; + //}; + //or + //struct gl_TextureFootprint3DNV { + // uvec3 anchor; + // uvec3 offset; + // uvec2 mask; + // uint lod; + // uint granularity; + //}; + spv::Id resultStructType = builder.getContainedTypeId(builder.getTypeId(resultStruct)); + 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 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; + members.push_back(resultType()); + for (int i = 0; i < 5; i++) { + members.push_back(builder.getContainedTypeId(resultStructType, i)); + } + spv::Id resType = builder.makeStructType(members, "ResType"); + + //call ImageFootprintNV + spv::Id res = builder.createTextureCall(precision, resType, sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params); + + //copy resType (SPIR-V type) to resultStructType(OpenGL type) + for (int i = 0; i < 5; i++) { + builder.clearAccessChain(); + builder.setAccessChainLValue(resultStruct); + + //Accessing to a struct we created, no coherent flag is set + spv::Builder::AccessChain::CoherentFlags flags; + flags.clear(); + + builder.accessChainPush(builder.makeIntConstant(i), flags); + builder.accessChainStore(builder.createCompositeExtract(res, builder.getContainedTypeId(resType, i+1), i+1)); + } + return builder.createCompositeExtract(res, resultType(), 0); + } +#endif + // projective component (might not to move) // GLSL: "The texture coordinates consumed from P, not including the last component of P, // are divided by the last component of P." @@ -6571,6 +6865,24 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: return 0; } break; + +#ifdef NV_EXTENSIONS + case glslang::EOpReportIntersectionNV: + { + typeId = builder.makeBoolType(); + opCode = spv::OpReportIntersectionNVX; + } + break; + case glslang::EOpTraceNV: + { + builder.createNoResultOp(spv::OpTraceNVX, operands); + return 0; + } + break; + case glslang::EOpWritePackedPrimitiveIndices4x8NV: + builder.createNoResultOp(spv::OpWritePackedPrimitiveIndices4x8NV, operands); + return 0; +#endif default: return 0; } @@ -6744,6 +7056,14 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: spv::Id id = builder.createBuiltinCall(typeId, getExtBuiltins(spv::E_SPV_AMD_gcn_shader), spv::TimeAMD, args); return builder.setPrecision(id, precision); } +#endif +#ifdef NV_EXTENSIONS + case glslang::EOpIgnoreIntersectionNV: + builder.createNoResultOp(spv::OpIgnoreIntersectionNVX); + return 0; + case glslang::EOpTerminateRayNV: + builder.createNoResultOp(spv::OpTerminateRayNVX); + return 0; #endif default: logger->missingFunctionality("unknown operation with no arguments"); @@ -6768,6 +7088,9 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, TranslatePrecisionDecoration(symbol->getType())); builder.addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier())); builder.addDecoration(id, TranslateAuxiliaryStorageDecoration(symbol->getType().getQualifier())); +#ifdef NV_EXTENSIONS + addMeshNVDecoration(id, /*member*/ -1, symbol->getType().getQualifier()); +#endif if (symbol->getType().getQualifier().hasSpecConstantId()) builder.addDecoration(id, spv::DecorationSpecId, symbol->getType().getQualifier().layoutSpecConstantId); if (symbol->getQualifier().hasIndex()) @@ -6858,6 +7181,11 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addCapability(spv::CapabilityGeometryShaderPassthroughNV); builder.addExtension(spv::E_SPV_NV_geometry_shader_passthrough); } + if (symbol->getQualifier().pervertexNV) { + builder.addDecoration(id, spv::DecorationPerVertexNV); + builder.addCapability(spv::CapabilityFragmentBarycentricNV); + builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric); + } #endif if (glslangIntermediate->getHlslFunctionality1() && symbol->getType().getQualifier().semanticName != nullptr) { @@ -6869,6 +7197,28 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol return id; } +#ifdef NV_EXTENSIONS +// 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) +{ + if (member >= 0) { + if (qualifier.perPrimitiveNV) + builder.addMemberDecoration(id, (unsigned)member, spv::DecorationPerPrimitiveNV); + if (qualifier.perViewNV) + builder.addMemberDecoration(id, (unsigned)member, spv::DecorationPerViewNV); + if (qualifier.perTaskNV) + builder.addMemberDecoration(id, (unsigned)member, spv::DecorationPerTaskNV); + } else { + if (qualifier.perPrimitiveNV) + builder.addDecoration(id, spv::DecorationPerPrimitiveNV); + if (qualifier.perViewNV) + builder.addDecoration(id, spv::DecorationPerViewNV); + if (qualifier.perTaskNV) + builder.addDecoration(id, spv::DecorationPerTaskNV); + } +} +#endif + // Make a full tree of instructions to build a SPIR-V specialization constant, // or regular constant if possible. // diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 0891e8c7..e74c7b94 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -503,6 +503,21 @@ Id Builder::makeSampledImageType(Id imageType) return type->getResultId(); } +#ifdef NV_EXTENSIONS +Id Builder::makeAccelerationStructureNVType() +{ + Instruction *type; + if (groupedTypes[OpTypeAccelerationStructureNVX].size() == 0) { + type = new Instruction(getUniqueId(), NoType, OpTypeAccelerationStructureNVX); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + } else { + type = groupedTypes[OpTypeAccelerationStructureNVX].back(); + } + + return type->getResultId(); +} +#endif Id Builder::getDerefTypeId(Id resultId) const { Id typeId = getTypeId(resultId); @@ -1377,7 +1392,7 @@ void Builder::createNoResultOp(Op opCode, Id operand) buildPoint->addInstruction(std::unique_ptr(op)); } -// An opcode that has multiple operands, no result id, and no type +// An opcode that has one or more operands, no result id, and no type void Builder::createNoResultOp(Op opCode, const std::vector& operands) { Instruction* op = new Instruction(opCode); @@ -1654,6 +1669,13 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, if (parameters.component != NoResult) texArgs[numArgs++] = parameters.component; +#ifdef NV_EXTENSIONS + if (parameters.granularity != NoResult) + texArgs[numArgs++] = parameters.granularity; + if (parameters.coarse != NoResult) + texArgs[numArgs++] = parameters.coarse; +#endif + // // Set up the optional arguments // @@ -1725,6 +1747,10 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, opCode = OpImageSparseFetch; else opCode = OpImageFetch; +#ifdef NV_EXTENSIONS + } else if (parameters.granularity && parameters.coarse) { + opCode = OpImageSampleFootprintNV; +#endif } else if (gather) { if (parameters.Dref) if (sparse) diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index eb52d014..bfa6b612 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -131,6 +131,11 @@ public: Id makeSamplerType(); Id makeSampledImageType(Id imageType); +#ifdef NV_EXTENSIONS + // accelerationStructureNV type + Id makeAccelerationStructureNVType(); +#endif + // For querying about types. Id getTypeId(Id resultId) const { return module.getTypeId(resultId); } Id getDerefTypeId(Id resultId) const; @@ -366,6 +371,10 @@ public: Id component; Id texelOut; Id lodClamp; +#ifdef NV_EXTENSIONS + Id granularity; + Id coarse; +#endif bool nonprivate; bool volatil; }; diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 042d5582..22c83ea9 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -510,7 +510,9 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, }else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 || strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 || strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 || - strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0) { + strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 || + strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 || + strcmp(spv::E_SPV_NV_mesh_shader, name) == 0) { extInstSet = GLSLextNVInst; #endif } @@ -691,21 +693,45 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint) strcmp(name, spv::E_SPV_NV_geometry_shader_passthrough) == 0 || strcmp(name, spv::E_ARB_shader_viewport_layer_array) == 0 || strcmp(name, spv::E_SPV_NV_viewport_array2) == 0 || - strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0) { + strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 || + strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 || + strcmp(name, spv::E_SPV_NV_mesh_shader) == 0) { switch (entrypoint) { - case DecorationOverrideCoverageNV: return "OverrideCoverageNV"; - case DecorationPassthroughNV: return "PassthroughNV"; - case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; - case DecorationViewportRelativeNV: return "ViewportRelativeNV"; + // NV builtins case BuiltInViewportMaskNV: return "ViewportMaskNV"; - case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV"; - case DecorationSecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV"; case BuiltInSecondaryPositionNV: return "SecondaryPositionNV"; case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; - case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV"; case BuiltInPositionPerViewNV: return "PositionPerViewNV"; case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; + case BuiltInBaryCoordNV: return "BaryCoordNV"; + case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; + case BuiltInTaskCountNV: return "TaskCountNV"; + case BuiltInPrimitiveCountNV: return "PrimitiveCountNV"; + case BuiltInPrimitiveIndicesNV: return "PrimitiveIndicesNV"; + case BuiltInClipDistancePerViewNV: return "ClipDistancePerViewNV"; + case BuiltInCullDistancePerViewNV: return "CullDistancePerViewNV"; + case BuiltInLayerPerViewNV: return "LayerPerViewNV"; + case BuiltInMeshViewCountNV: return "MeshViewCountNV"; + case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV"; + + // NV Capabilities + case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; + case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV"; + case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV"; case CapabilityPerViewAttributesNV: return "PerViewAttributesNV"; + case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV"; + case CapabilityMeshShadingNV: return "MeshShadingNV"; + + // NV Decorations + case DecorationOverrideCoverageNV: return "OverrideCoverageNV"; + case DecorationPassthroughNV: return "PassthroughNV"; + case DecorationViewportRelativeNV: return "ViewportRelativeNV"; + case DecorationSecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV"; + case DecorationPerVertexNV: return "PerVertexNV"; + case DecorationPerPrimitiveNV: return "PerPrimitiveNV"; + case DecorationPerViewNV: return "PerViewNV"; + case DecorationPerTaskNV: return "PerTaskNV"; + default: return "Bad"; } } diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index a68df0d1..dbbe97dd 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -98,8 +98,22 @@ const char* ExecutionModelString(int model) case 4: return "Fragment"; case 5: return "GLCompute"; case 6: return "Kernel"; +#ifdef NV_EXTENSIONS + case ExecutionModelTaskNV: return "TaskNV"; + case ExecutionModelMeshNV: return "MeshNV"; +#endif default: return "Bad"; + +#ifdef NV_EXTENSIONS + case ExecutionModelRayGenerationNVX: return "RayGenerationNVX"; + case ExecutionModelIntersectionNVX: return "IntersectionNVX"; + case ExecutionModelAnyHitNVX: return "AnyHitNVX"; + case ExecutionModelClosestHitNVX: return "ClosestHitNVX"; + case ExecutionModelMissNVX: return "MissNVX"; + case ExecutionModelCallableNVX: return "CallableNVX"; +#endif + } } @@ -166,6 +180,15 @@ const char* ExecutionModeString(int mode) case 32: return "Bad"; case 4446: return "PostDepthCoverage"; + +#ifdef NV_EXTENSIONS + case ExecutionModeOutputLinesNV: return "OutputLinesNV"; + case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; + case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV"; + case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV"; + case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV"; +#endif + case ExecutionModeCeiling: default: return "Bad"; } @@ -188,6 +211,13 @@ const char* StorageClassString(int StorageClass) case 11: return "Image"; case 12: return "StorageBuffer"; +#ifdef NV_EXTENSIONS + case StorageClassRayPayloadNVX: return "RayPayloadNVX"; + case StorageClassHitAttributeNVX: return "HitAttributeNVX"; + case StorageClassIncomingRayPayloadNVX: return "IncomingRayPayloadNVX"; + case StorageClassShaderRecordBufferNVX: return "ShaderRecordBufferNVX"; +#endif + default: return "Bad"; } } @@ -254,6 +284,10 @@ const char* DecorationString(int decoration) case DecorationPassthroughNV: return "PassthroughNV"; case DecorationViewportRelativeNV: return "ViewportRelativeNV"; case DecorationSecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV"; + case DecorationPerPrimitiveNV: return "PerPrimitiveNV"; + case DecorationPerViewNV: return "PerViewNV"; + case DecorationPerTaskNV: return "PerTaskNV"; + case DecorationPerVertexNV: return "PerVertexNV"; #endif case DecorationNonUniformEXT: return "DecorationNonUniformEXT"; @@ -333,15 +367,44 @@ const char* BuiltInString(int builtIn) #endif #ifdef NV_EXTENSIONS - case 5253: return "ViewportMaskNV"; - case 5257: return "SecondaryPositionNV"; - case 5258: return "SecondaryViewportMaskNV"; - case 5261: return "PositionPerViewNV"; - case 5262: return "ViewportMaskPerViewNV"; + case BuiltInLaunchIdNVX: return "LaunchIdNVX"; + case BuiltInLaunchSizeNVX: return "LaunchSizeNVX"; + case BuiltInWorldRayOriginNVX: return "WorldRayOriginNVX"; + case BuiltInWorldRayDirectionNVX: return "WorldRayDirectionNVX"; + case BuiltInObjectRayOriginNVX: return "ObjectRayOriginNVX"; + case BuiltInObjectRayDirectionNVX: return "ObjectRayDirectionNVX"; + case BuiltInRayTminNVX: return "RayTminNVX"; + case BuiltInRayTmaxNVX: return "RayTmaxNVX"; + case BuiltInInstanceCustomIndexNVX: return "InstanceCustomIndexNVX"; + case BuiltInObjectToWorldNVX: return "ObjectToWorldNVX"; + case BuiltInWorldToObjectNVX: return "WorldToObjectNVX"; + case BuiltInHitTNVX: return "HitTNVX"; + case BuiltInHitKindNVX: return "HitKindNVX"; + case BuiltInViewportMaskNV: return "ViewportMaskNV"; + case BuiltInSecondaryPositionNV: return "SecondaryPositionNV"; + case BuiltInSecondaryViewportMaskNV: return "SecondaryViewportMaskNV"; + case BuiltInPositionPerViewNV: return "PositionPerViewNV"; + case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; + case BuiltInFragmentSizeNV: return "FragmentSizeNV"; + case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; + case BuiltInBaryCoordNV: return "BaryCoordNV"; + case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; #endif case 5264: return "FullyCoveredEXT"; + +#ifdef NV_EXTENSIONS + case BuiltInTaskCountNV: return "TaskCountNV"; + case BuiltInPrimitiveCountNV: return "PrimitiveCountNV"; + case BuiltInPrimitiveIndicesNV: return "PrimitiveIndicesNV"; + case BuiltInClipDistancePerViewNV: return "ClipDistancePerViewNV"; + case BuiltInCullDistancePerViewNV: return "CullDistancePerViewNV"; + case BuiltInLayerPerViewNV: return "LayerPerViewNV"; + case BuiltInMeshViewCountNV: return "MeshViewCountNV"; + case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV"; +#endif + default: return "Bad"; } } @@ -820,12 +883,18 @@ const char* CapabilityString(int info) case CapabilitySampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage"; #ifdef NV_EXTENSIONS - case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; - case CapabilityShaderViewportIndexLayerNV: return "ShaderViewportIndexLayerNV"; - case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV"; - case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV"; - case CapabilityPerViewAttributesNV: return "PerViewAttributesNV"; - case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; + case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV"; + case CapabilityShaderViewportIndexLayerNV: return "ShaderViewportIndexLayerNV"; + case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV"; + case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV"; + case CapabilityPerViewAttributesNV: return "PerViewAttributesNV"; + case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; + case CapabilityRaytracingNVX: return "RaytracingNVX"; + case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; + case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; + case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV"; + case CapabilityMeshShadingNV: return "MeshShadingNV"; + case CapabilityShadingRateNV: return "ShadingRateNV"; #endif case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT"; @@ -1238,8 +1307,16 @@ const char* OpcodeString(int op) case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; #ifdef NV_EXTENSIONS - case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; + case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; + case OpReportIntersectionNVX: return "OpReportIntersectionNVX"; + case OpIgnoreIntersectionNVX: return "OpIgnoreIntersectionNVX"; + case OpTerminateRayNVX: return "OpTerminateRayNVX"; + case OpTraceNVX: return "OpTraceNVX"; + case OpTypeAccelerationStructureNVX: return "OpTypeAccelerationStructureNVX"; + case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; + case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; #endif + default: return "Bad"; } @@ -2584,6 +2661,38 @@ void Parameterize() #ifdef NV_EXTENSIONS InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X"); + + InstructionDesc[OpTypeAccelerationStructureNVX].setResultAndType(true, false); + + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'NV Acceleration Structure'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Ray Flags'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Cull Mask'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Ray Origin'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Ray Direction'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpTraceNVX].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpTraceNVX].setResultAndType(false, false); + + InstructionDesc[OpReportIntersectionNVX].operands.push(OperandId, "'Hit Parameter'"); + InstructionDesc[OpReportIntersectionNVX].operands.push(OperandId, "'Hit Kind'"); + + InstructionDesc[OpIgnoreIntersectionNVX].setResultAndType(false, false); + + InstructionDesc[OpTerminateRayNVX].setResultAndType(false, false); + + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'"); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coarse'"); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); + InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); #endif } diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp index e22ec801..0765ed1d 100644 --- a/StandAlone/ResourceLimits.cpp +++ b/StandAlone/ResourceLimits.cpp @@ -125,6 +125,18 @@ const TBuiltInResource DefaultTBuiltInResource = { /* .MaxCullDistances = */ 8, /* .MaxCombinedClipAndCullDistances = */ 8, /* .MaxSamples = */ 4, +#ifdef NV_EXTENSIONS + /* .maxMeshOutputVerticesNV = */ 256, + /* .maxMeshOutputPrimitivesNV = */ 512, + /* .maxMeshWorkGroupSizeX_NV = */ 32, + /* .maxMeshWorkGroupSizeY_NV = */ 1, + /* .maxMeshWorkGroupSizeZ_NV = */ 1, + /* .maxTaskWorkGroupSizeX_NV = */ 32, + /* .maxTaskWorkGroupSizeY_NV = */ 1, + /* .maxTaskWorkGroupSizeZ_NV = */ 1, + /* .maxMeshViewCountNV = */ 4, +#endif + /* .limits = */ { /* .nonInductiveForLoops = */ 1, /* .whileLoops = */ 1, @@ -224,7 +236,17 @@ std::string GetDefaultTBuiltInResourceString() << "MaxCullDistances " << DefaultTBuiltInResource.maxCullDistances << "\n" << "MaxCombinedClipAndCullDistances " << DefaultTBuiltInResource.maxCombinedClipAndCullDistances << "\n" << "MaxSamples " << DefaultTBuiltInResource.maxSamples << "\n" - +#ifdef NV_EXTENSIONS + << "MaxMeshOutputVerticesNV " << DefaultTBuiltInResource.maxMeshOutputVerticesNV << "\n" + << "MaxMeshOutputPrimitivesNV " << DefaultTBuiltInResource.maxMeshOutputPrimitivesNV << "\n" + << "MaxMeshWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_NV << "\n" + << "MaxMeshWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_NV << "\n" + << "MaxMeshWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_NV << "\n" + << "MaxTaskWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_NV << "\n" + << "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n" + << "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n" + << "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n" +#endif << "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n" << "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n" << "doWhileLoops " << DefaultTBuiltInResource.limits.doWhileLoops << "\n" @@ -431,6 +453,26 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) resources->maxCombinedClipAndCullDistances = value; else if (tokenStr == "MaxSamples") resources->maxSamples = value; +#ifdef NV_EXTENSIONS + else if (tokenStr == "MaxMeshOutputVerticesNV") + resources->maxMeshOutputVerticesNV = value; + else if (tokenStr == "MaxMeshOutputPrimitivesNV") + resources->maxMeshOutputPrimitivesNV = value; + else if (tokenStr == "MaxMeshWorkGroupSizeX_NV") + resources->maxMeshWorkGroupSizeX_NV = value; + else if (tokenStr == "MaxMeshWorkGroupSizeY_NV") + resources->maxMeshWorkGroupSizeY_NV = value; + else if (tokenStr == "MaxMeshWorkGroupSizeZ_NV") + resources->maxMeshWorkGroupSizeZ_NV = value; + else if (tokenStr == "MaxTaskWorkGroupSizeX_NV") + resources->maxTaskWorkGroupSizeX_NV = value; + else if (tokenStr == "MaxTaskWorkGroupSizeY_NV") + resources->maxTaskWorkGroupSizeY_NV = value; + else if (tokenStr == "MaxTaskWorkGroupSizeZ_NV") + resources->maxTaskWorkGroupSizeZ_NV = value; + else if (tokenStr == "MaxMeshViewCountNV") + resources->maxMeshViewCountNV = value; +#endif else if (tokenStr == "nonInductiveForLoops") resources->limits.nonInductiveForLoops = (value != 0); else if (tokenStr == "whileLoops") diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 38ba597d..fd14476c 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -244,6 +244,16 @@ const char* GetBinaryName(EShLanguage stage) case EShLangGeometry: name = "geom.spv"; break; case EShLangFragment: name = "frag.spv"; break; case EShLangCompute: name = "comp.spv"; break; +#ifdef NV_EXTENSIONS + case EShLangRayGenNV: name = "rgen.spv"; break; + case EShLangIntersectNV: name = "rint.spv"; break; + case EShLangAnyHitNV: name = "rahit.spv"; break; + case EShLangClosestHitNV: name = "rchit.spv"; break; + case EShLangMissNV: name = "rmiss.spv"; break; + case EShLangCallableNV: name = "rcall.spv"; break; + case EShLangMeshNV: name = "mesh.spv"; break; + case EShLangTaskNV: name = "task.spv"; break; +#endif default: name = "unknown"; break; } } else @@ -1206,7 +1216,12 @@ int C_DECL main(int argc, char* argv[]) // .geom = geometry // .frag = fragment // .comp = compute -// +// .rgen = ray generation +// .rint = ray intersection +// .rahit = ray any hit +// .rchit = ray closest hit +// .rmiss = ray miss +// .rcall = ray callable // Additionally, the file names may end in ..glsl and ..hlsl // where is one of the stages listed above. // @@ -1250,6 +1265,24 @@ EShLanguage FindLanguage(const std::string& name, bool parseStageName) return EShLangFragment; else if (stageName == "comp") return EShLangCompute; +#ifdef NV_EXTENSIONS + else if (stageName == "rgen") + return EShLangRayGenNV; + else if (stageName == "rint") + return EShLangIntersectNV; + else if (stageName == "rahit") + return EShLangAnyHitNV; + else if (stageName == "rchit") + return EShLangClosestHitNV; + else if (stageName == "rmiss") + return EShLangMissNV; + else if (stageName == "rcall") + return EShLangCallableNV; + else if (stageName == "mesh") + return EShLangMeshNV; + else if (stageName == "task") + return EShLangTaskNV; +#endif usage(); return EShLangVertex; @@ -1319,6 +1352,16 @@ void usage() " .geom for a geometry shader\n" " .frag for a fragment shader\n" " .comp for a compute shader\n" +#ifdef NV_EXTENSIONS + " .mesh for a mesh shader\n" + " .task for a task shader\n" + " .rgen for a ray generation shader\n" + " .rint for a ray intersection shader\n" + " .rahit for a ray any hit shader\n" + " .rchit for a ray closest hit shader\n" + " .rmiss for a ray miss shader\n" + " .rcall for a ray callable shader" +#endif " .glsl for .vert.glsl, .tesc.glsl, ..., .comp.glsl compound suffixes\n" " .hlsl for .vert.hlsl, .tesc.hlsl, ..., .comp.hlsl compound suffixes\n" "\n" diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out new file mode 100644 index 00000000..12d53829 --- /dev/null +++ b/Test/baseResults/spv.AnyHitShader.rahit.out @@ -0,0 +1,165 @@ +spv.AnyHitShader.rahit +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5340 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 81 + + Capability RaytracingNVX + Extension "SPV_NVX_raytracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint AnyHitNVX 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 + Source GLSL 460 + SourceExtension "GL_NVX_raytracing" + Name 4 "main" + Name 9 "v0" + Name 11 "gl_LaunchIDNVX" + Name 13 "v1" + Name 14 "gl_LaunchSizeNVX" + Name 18 "v2" + Name 20 "gl_PrimitiveID" + Name 22 "v3" + Name 23 "gl_InstanceID" + Name 25 "v4" + Name 26 "gl_InstanceCustomIndexNVX" + Name 31 "v5" + Name 33 "gl_WorldRayOriginNVX" + Name 35 "v6" + Name 36 "gl_WorldRayDirectionNVX" + Name 38 "v7" + Name 39 "gl_ObjectRayOriginNVX" + Name 41 "v8" + Name 42 "gl_ObjectRayDirectionNVX" + Name 45 "v9" + Name 47 "gl_RayTminNVX" + Name 49 "v10" + Name 50 "gl_RayTmaxNVX" + Name 52 "v11" + Name 53 "gl_HitTNVX" + Name 56 "v12" + Name 58 "gl_HitKindNVX" + Name 62 "v13" + Name 64 "gl_ObjectToWorldNVX" + Name 66 "v14" + Name 67 "gl_WorldToObjectNVX" + Name 71 "incomingPayload" + Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX + Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX + Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 23(gl_InstanceID) BuiltIn InstanceId + Decorate 26(gl_InstanceCustomIndexNVX) BuiltIn InstanceCustomIndexNVX + Decorate 33(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX + Decorate 36(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX + Decorate 39(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX + Decorate 42(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX + Decorate 47(gl_RayTminNVX) BuiltIn RayTminNVX + Decorate 50(gl_RayTmaxNVX) BuiltIn RayTmaxNVX + Decorate 53(gl_HitTNVX) BuiltIn HitTNVX + Decorate 58(gl_HitKindNVX) BuiltIn HitKindNVX + Decorate 64(gl_ObjectToWorldNVX) BuiltIn ObjectToWorldNVX + Decorate 67(gl_WorldToObjectNVX) BuiltIn WorldToObjectNVX + Decorate 71(incomingPayload) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypePointer Input 7(ivec2) +11(gl_LaunchIDNVX): 10(ptr) Variable Input +14(gl_LaunchSizeNVX): 10(ptr) Variable Input + 16: TypeInt 32 1 + 17: TypePointer Function 16(int) + 19: TypePointer Input 16(int) +20(gl_PrimitiveID): 19(ptr) Variable Input +23(gl_InstanceID): 19(ptr) Variable Input +26(gl_InstanceCustomIndexNVX): 19(ptr) Variable Input + 28: TypeFloat 32 + 29: TypeVector 28(float) 3 + 30: TypePointer Function 29(fvec3) + 32: TypePointer Input 29(fvec3) +33(gl_WorldRayOriginNVX): 32(ptr) Variable Input +36(gl_WorldRayDirectionNVX): 32(ptr) Variable Input +39(gl_ObjectRayOriginNVX): 32(ptr) Variable Input +42(gl_ObjectRayDirectionNVX): 32(ptr) Variable Input + 44: TypePointer Function 28(float) + 46: TypePointer Input 28(float) +47(gl_RayTminNVX): 46(ptr) Variable Input +50(gl_RayTmaxNVX): 46(ptr) Variable Input + 53(gl_HitTNVX): 46(ptr) Variable Input + 55: TypePointer Function 6(int) + 57: TypePointer Input 6(int) +58(gl_HitKindNVX): 57(ptr) Variable Input + 60: TypeMatrix 29(fvec3) 4 + 61: TypePointer Function 60 + 63: TypePointer Input 60 +64(gl_ObjectToWorldNVX): 63(ptr) Variable Input +67(gl_WorldToObjectNVX): 63(ptr) Variable Input + 69: TypeVector 28(float) 4 + 70: TypePointer IncomingRayPayloadNVX 69(fvec4) +71(incomingPayload): 70(ptr) Variable IncomingRayPayloadNVX + 72: 28(float) Constant 1056964608 + 73: 69(fvec4) ConstantComposite 72 72 72 72 + 75: 16(int) Constant 1 + 76: TypeBool + 4(main): 2 Function None 3 + 5: Label + 9(v0): 8(ptr) Variable Function + 13(v1): 8(ptr) Variable Function + 18(v2): 17(ptr) Variable Function + 22(v3): 17(ptr) Variable Function + 25(v4): 17(ptr) Variable Function + 31(v5): 30(ptr) Variable Function + 35(v6): 30(ptr) Variable Function + 38(v7): 30(ptr) Variable Function + 41(v8): 30(ptr) Variable Function + 45(v9): 44(ptr) Variable Function + 49(v10): 44(ptr) Variable Function + 52(v11): 44(ptr) Variable Function + 56(v12): 55(ptr) Variable Function + 62(v13): 61(ptr) Variable Function + 66(v14): 61(ptr) Variable Function + 12: 7(ivec2) Load 11(gl_LaunchIDNVX) + Store 9(v0) 12 + 15: 7(ivec2) Load 14(gl_LaunchSizeNVX) + Store 13(v1) 15 + 21: 16(int) Load 20(gl_PrimitiveID) + Store 18(v2) 21 + 24: 16(int) Load 23(gl_InstanceID) + Store 22(v3) 24 + 27: 16(int) Load 26(gl_InstanceCustomIndexNVX) + Store 25(v4) 27 + 34: 29(fvec3) Load 33(gl_WorldRayOriginNVX) + Store 31(v5) 34 + 37: 29(fvec3) Load 36(gl_WorldRayDirectionNVX) + Store 35(v6) 37 + 40: 29(fvec3) Load 39(gl_ObjectRayOriginNVX) + Store 38(v7) 40 + 43: 29(fvec3) Load 42(gl_ObjectRayDirectionNVX) + Store 41(v8) 43 + 48: 28(float) Load 47(gl_RayTminNVX) + Store 45(v9) 48 + 51: 28(float) Load 50(gl_RayTmaxNVX) + Store 49(v10) 51 + 54: 28(float) Load 53(gl_HitTNVX) + Store 52(v11) 54 + 59: 6(int) Load 58(gl_HitKindNVX) + Store 56(v12) 59 + 65: 60 Load 64(gl_ObjectToWorldNVX) + Store 62(v13) 65 + 68: 60 Load 67(gl_WorldToObjectNVX) + Store 66(v14) 68 + Store 71(incomingPayload) 73 + 74: 16(int) Load 18(v2) + 77: 76(bool) IEqual 74 75 + SelectionMerge 79 None + BranchConditional 77 78 80 + 78: Label + IgnoreIntersectionNVX + Branch 79 + 80: Label + TerminateRayNVX + Branch 79 + 79: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.AnyHitShader_Errors.rahit.out b/Test/baseResults/spv.AnyHitShader_Errors.rahit.out new file mode 100644 index 00000000..5a863be4 --- /dev/null +++ b/Test/baseResults/spv.AnyHitShader_Errors.rahit.out @@ -0,0 +1,8 @@ +spv.AnyHitShader_Errors.rahit +ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNVX in this stage) +ERROR: 0:9: 'reportIntersectionNVX' : no matching overloaded function found +ERROR: 0:10: 'traceNVX' : no matching overloaded function found +ERROR: 3 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out new file mode 100644 index 00000000..dcf6fa3c --- /dev/null +++ b/Test/baseResults/spv.ClosestHitShader.rchit.out @@ -0,0 +1,171 @@ +spv.ClosestHitShader.rchit +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5340 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 88 + + Capability RaytracingNVX + Extension "SPV_NVX_raytracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint ClosestHitNVX 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 + Source GLSL 460 + SourceExtension "GL_NVX_raytracing" + Name 4 "main" + Name 9 "v0" + Name 11 "gl_LaunchIDNVX" + Name 13 "v1" + Name 14 "gl_LaunchSizeNVX" + Name 18 "v2" + Name 20 "gl_PrimitiveID" + Name 22 "v3" + Name 23 "gl_InstanceID" + Name 25 "v4" + Name 26 "gl_InstanceCustomIndexNVX" + Name 31 "v5" + Name 33 "gl_WorldRayOriginNVX" + Name 35 "v6" + Name 36 "gl_WorldRayDirectionNVX" + Name 38 "v7" + Name 39 "gl_ObjectRayOriginNVX" + Name 41 "v8" + Name 42 "gl_ObjectRayDirectionNVX" + Name 45 "v9" + Name 47 "gl_RayTminNVX" + Name 49 "v10" + Name 50 "gl_RayTmaxNVX" + Name 52 "v11" + Name 53 "gl_HitTNVX" + Name 56 "v12" + Name 58 "gl_HitKindNVX" + Name 62 "v13" + Name 64 "gl_ObjectToWorldNVX" + Name 66 "v14" + Name 67 "gl_WorldToObjectNVX" + Name 71 "accNV" + Name 85 "localPayload" + Name 87 "incomingPayload" + Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX + Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX + Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 23(gl_InstanceID) BuiltIn InstanceId + Decorate 26(gl_InstanceCustomIndexNVX) BuiltIn InstanceCustomIndexNVX + Decorate 33(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX + Decorate 36(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX + Decorate 39(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX + Decorate 42(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX + Decorate 47(gl_RayTminNVX) BuiltIn RayTminNVX + Decorate 50(gl_RayTmaxNVX) BuiltIn RayTmaxNVX + Decorate 53(gl_HitTNVX) BuiltIn HitTNVX + Decorate 58(gl_HitKindNVX) BuiltIn HitKindNVX + Decorate 64(gl_ObjectToWorldNVX) BuiltIn ObjectToWorldNVX + Decorate 67(gl_WorldToObjectNVX) BuiltIn WorldToObjectNVX + Decorate 71(accNV) DescriptorSet 0 + Decorate 71(accNV) Binding 0 + Decorate 85(localPayload) Location 0 + Decorate 87(incomingPayload) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypePointer Input 7(ivec2) +11(gl_LaunchIDNVX): 10(ptr) Variable Input +14(gl_LaunchSizeNVX): 10(ptr) Variable Input + 16: TypeInt 32 1 + 17: TypePointer Function 16(int) + 19: TypePointer Input 16(int) +20(gl_PrimitiveID): 19(ptr) Variable Input +23(gl_InstanceID): 19(ptr) Variable Input +26(gl_InstanceCustomIndexNVX): 19(ptr) Variable Input + 28: TypeFloat 32 + 29: TypeVector 28(float) 3 + 30: TypePointer Function 29(fvec3) + 32: TypePointer Input 29(fvec3) +33(gl_WorldRayOriginNVX): 32(ptr) Variable Input +36(gl_WorldRayDirectionNVX): 32(ptr) Variable Input +39(gl_ObjectRayOriginNVX): 32(ptr) Variable Input +42(gl_ObjectRayDirectionNVX): 32(ptr) Variable Input + 44: TypePointer Function 28(float) + 46: TypePointer Input 28(float) +47(gl_RayTminNVX): 46(ptr) Variable Input +50(gl_RayTmaxNVX): 46(ptr) Variable Input + 53(gl_HitTNVX): 46(ptr) Variable Input + 55: TypePointer Function 6(int) + 57: TypePointer Input 6(int) +58(gl_HitKindNVX): 57(ptr) Variable Input + 60: TypeMatrix 29(fvec3) 4 + 61: TypePointer Function 60 + 63: TypePointer Input 60 +64(gl_ObjectToWorldNVX): 63(ptr) Variable Input +67(gl_WorldToObjectNVX): 63(ptr) Variable Input + 69: TypeAccelerationStructureNVX + 70: TypePointer UniformConstant 69 + 71(accNV): 70(ptr) Variable UniformConstant + 73: 6(int) Constant 0 + 74: 6(int) Constant 1 + 75: 6(int) Constant 2 + 76: 6(int) Constant 3 + 77: 28(float) Constant 1056964608 + 78: 29(fvec3) ConstantComposite 77 77 77 + 79: 28(float) Constant 1065353216 + 80: 29(fvec3) ConstantComposite 79 79 79 + 81: 28(float) Constant 1061158912 + 82: 16(int) Constant 1 + 83: TypeVector 28(float) 4 + 84: TypePointer RayPayloadNVX 83(fvec4) +85(localPayload): 84(ptr) Variable RayPayloadNVX + 86: TypePointer IncomingRayPayloadNVX 83(fvec4) +87(incomingPayload): 86(ptr) Variable IncomingRayPayloadNVX + 4(main): 2 Function None 3 + 5: Label + 9(v0): 8(ptr) Variable Function + 13(v1): 8(ptr) Variable Function + 18(v2): 17(ptr) Variable Function + 22(v3): 17(ptr) Variable Function + 25(v4): 17(ptr) Variable Function + 31(v5): 30(ptr) Variable Function + 35(v6): 30(ptr) Variable Function + 38(v7): 30(ptr) Variable Function + 41(v8): 30(ptr) Variable Function + 45(v9): 44(ptr) Variable Function + 49(v10): 44(ptr) Variable Function + 52(v11): 44(ptr) Variable Function + 56(v12): 55(ptr) Variable Function + 62(v13): 61(ptr) Variable Function + 66(v14): 61(ptr) Variable Function + 12: 7(ivec2) Load 11(gl_LaunchIDNVX) + Store 9(v0) 12 + 15: 7(ivec2) Load 14(gl_LaunchSizeNVX) + Store 13(v1) 15 + 21: 16(int) Load 20(gl_PrimitiveID) + Store 18(v2) 21 + 24: 16(int) Load 23(gl_InstanceID) + Store 22(v3) 24 + 27: 16(int) Load 26(gl_InstanceCustomIndexNVX) + Store 25(v4) 27 + 34: 29(fvec3) Load 33(gl_WorldRayOriginNVX) + Store 31(v5) 34 + 37: 29(fvec3) Load 36(gl_WorldRayDirectionNVX) + Store 35(v6) 37 + 40: 29(fvec3) Load 39(gl_ObjectRayOriginNVX) + Store 38(v7) 40 + 43: 29(fvec3) Load 42(gl_ObjectRayDirectionNVX) + Store 41(v8) 43 + 48: 28(float) Load 47(gl_RayTminNVX) + Store 45(v9) 48 + 51: 28(float) Load 50(gl_RayTmaxNVX) + Store 49(v10) 51 + 54: 28(float) Load 53(gl_HitTNVX) + Store 52(v11) 54 + 59: 6(int) Load 58(gl_HitKindNVX) + Store 56(v12) 59 + 65: 60 Load 64(gl_ObjectToWorldNVX) + Store 62(v13) 65 + 68: 60 Load 67(gl_WorldToObjectNVX) + Store 66(v14) 68 + 72: 69 Load 71(accNV) + TraceNVX 72 73 74 75 76 73 78 77 80 81 82 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ClosestHitShader_Errors.rchit.out b/Test/baseResults/spv.ClosestHitShader_Errors.rchit.out new file mode 100644 index 00000000..36352ae2 --- /dev/null +++ b/Test/baseResults/spv.ClosestHitShader_Errors.rchit.out @@ -0,0 +1,9 @@ +spv.ClosestHitShader_Errors.rchit +ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNVX in this stage) +ERROR: 0:9: 'reportIntersectionNVX' : no matching overloaded function found +ERROR: 0:10: 'terminateRayNVX' : no matching overloaded function found +ERROR: 0:11: 'ignoreIntersectionNVX' : no matching overloaded function found +ERROR: 4 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.IntersectShader.rint.out b/Test/baseResults/spv.IntersectShader.rint.out new file mode 100644 index 00000000..be53d355 --- /dev/null +++ b/Test/baseResults/spv.IntersectShader.rint.out @@ -0,0 +1,140 @@ +spv.IntersectShader.rint +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5340 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 71 + + Capability RaytracingNVX + Extension "SPV_NVX_raytracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint IntersectionNVX 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 + Source GLSL 460 + SourceExtension "GL_NVX_raytracing" + Name 4 "main" + Name 9 "v0" + Name 11 "gl_LaunchIDNVX" + Name 13 "v1" + Name 14 "gl_LaunchSizeNVX" + Name 18 "v2" + Name 20 "gl_PrimitiveID" + Name 22 "v3" + Name 23 "gl_InstanceID" + Name 25 "v4" + Name 26 "gl_InstanceCustomIndexNVX" + Name 31 "v5" + Name 33 "gl_WorldRayOriginNVX" + Name 35 "v6" + Name 36 "gl_WorldRayDirectionNVX" + Name 38 "v7" + Name 39 "gl_ObjectRayOriginNVX" + Name 41 "v8" + Name 42 "gl_ObjectRayDirectionNVX" + Name 45 "v9" + Name 47 "gl_RayTminNVX" + Name 49 "v10" + Name 50 "gl_RayTmaxNVX" + Name 54 "v11" + Name 56 "gl_ObjectToWorldNVX" + Name 58 "v12" + Name 59 "gl_WorldToObjectNVX" + Name 63 "iAttr" + Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX + Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX + Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 23(gl_InstanceID) BuiltIn InstanceId + Decorate 26(gl_InstanceCustomIndexNVX) BuiltIn InstanceCustomIndexNVX + Decorate 33(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX + Decorate 36(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX + Decorate 39(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX + Decorate 42(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX + Decorate 47(gl_RayTminNVX) BuiltIn RayTminNVX + Decorate 50(gl_RayTmaxNVX) BuiltIn RayTmaxNVX + Decorate 56(gl_ObjectToWorldNVX) BuiltIn ObjectToWorldNVX + Decorate 59(gl_WorldToObjectNVX) BuiltIn WorldToObjectNVX + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypePointer Input 7(ivec2) +11(gl_LaunchIDNVX): 10(ptr) Variable Input +14(gl_LaunchSizeNVX): 10(ptr) Variable Input + 16: TypeInt 32 1 + 17: TypePointer Function 16(int) + 19: TypePointer Input 16(int) +20(gl_PrimitiveID): 19(ptr) Variable Input +23(gl_InstanceID): 19(ptr) Variable Input +26(gl_InstanceCustomIndexNVX): 19(ptr) Variable Input + 28: TypeFloat 32 + 29: TypeVector 28(float) 3 + 30: TypePointer Function 29(fvec3) + 32: TypePointer Input 29(fvec3) +33(gl_WorldRayOriginNVX): 32(ptr) Variable Input +36(gl_WorldRayDirectionNVX): 32(ptr) Variable Input +39(gl_ObjectRayOriginNVX): 32(ptr) Variable Input +42(gl_ObjectRayDirectionNVX): 32(ptr) Variable Input + 44: TypePointer Function 28(float) + 46: TypePointer Input 28(float) +47(gl_RayTminNVX): 46(ptr) Variable Input +50(gl_RayTmaxNVX): 46(ptr) Variable Input + 52: TypeMatrix 29(fvec3) 4 + 53: TypePointer Function 52 + 55: TypePointer Input 52 +56(gl_ObjectToWorldNVX): 55(ptr) Variable Input +59(gl_WorldToObjectNVX): 55(ptr) Variable Input + 61: TypeVector 28(float) 4 + 62: TypePointer HitAttributeNVX 61(fvec4) + 63(iAttr): 62(ptr) Variable HitAttributeNVX + 64: 28(float) Constant 1056964608 + 65: 28(float) Constant 0 + 66: 28(float) Constant 1065353216 + 67: 61(fvec4) ConstantComposite 64 64 65 66 + 68: 6(int) Constant 1 + 69: TypeBool + 4(main): 2 Function None 3 + 5: Label + 9(v0): 8(ptr) Variable Function + 13(v1): 8(ptr) Variable Function + 18(v2): 17(ptr) Variable Function + 22(v3): 17(ptr) Variable Function + 25(v4): 17(ptr) Variable Function + 31(v5): 30(ptr) Variable Function + 35(v6): 30(ptr) Variable Function + 38(v7): 30(ptr) Variable Function + 41(v8): 30(ptr) Variable Function + 45(v9): 44(ptr) Variable Function + 49(v10): 44(ptr) Variable Function + 54(v11): 53(ptr) Variable Function + 58(v12): 53(ptr) Variable Function + 12: 7(ivec2) Load 11(gl_LaunchIDNVX) + Store 9(v0) 12 + 15: 7(ivec2) Load 14(gl_LaunchSizeNVX) + Store 13(v1) 15 + 21: 16(int) Load 20(gl_PrimitiveID) + Store 18(v2) 21 + 24: 16(int) Load 23(gl_InstanceID) + Store 22(v3) 24 + 27: 16(int) Load 26(gl_InstanceCustomIndexNVX) + Store 25(v4) 27 + 34: 29(fvec3) Load 33(gl_WorldRayOriginNVX) + Store 31(v5) 34 + 37: 29(fvec3) Load 36(gl_WorldRayDirectionNVX) + Store 35(v6) 37 + 40: 29(fvec3) Load 39(gl_ObjectRayOriginNVX) + Store 38(v7) 40 + 43: 29(fvec3) Load 42(gl_ObjectRayDirectionNVX) + Store 41(v8) 43 + 48: 28(float) Load 47(gl_RayTminNVX) + Store 45(v9) 48 + 51: 28(float) Load 50(gl_RayTmaxNVX) + Store 49(v10) 51 + 57: 52 Load 56(gl_ObjectToWorldNVX) + Store 54(v11) 57 + 60: 52 Load 59(gl_WorldToObjectNVX) + Store 58(v12) 60 + Store 63(iAttr) 67 + 70: 69(bool) ReportIntersectionNVX 64 68 + Return + FunctionEnd diff --git a/Test/baseResults/spv.IntersectShader_Errors.rint.out b/Test/baseResults/spv.IntersectShader_Errors.rint.out new file mode 100644 index 00000000..804ddb4f --- /dev/null +++ b/Test/baseResults/spv.IntersectShader_Errors.rint.out @@ -0,0 +1,10 @@ +spv.IntersectShader_Errors.rint +ERROR: 0:3: 'rayPayloadInNVX' : not supported in this stage: intersection +ERROR: 0:4: 'rayPayloadNVX' : not supported in this stage: intersection +ERROR: 0:8: 'gl_HitTNVX' : undeclared identifier +ERROR: 0:9: 'gl_HitKindNVX' : undeclared identifier +ERROR: 0:10: 'traceNVX' : no matching overloaded function found +ERROR: 5 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out new file mode 100644 index 00000000..6de3a4ee --- /dev/null +++ b/Test/baseResults/spv.MissShader.rmiss.out @@ -0,0 +1,115 @@ +spv.MissShader.rmiss +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5340 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 60 + + Capability RaytracingNVX + Extension "SPV_NVX_raytracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MissNVX 4 "main" 11 14 21 24 27 30 35 38 + Source GLSL 460 + SourceExtension "GL_NVX_raytracing" + Name 4 "main" + Name 9 "v0" + Name 11 "gl_LaunchIDNVX" + Name 13 "v1" + Name 14 "gl_LaunchSizeNVX" + Name 19 "v2" + Name 21 "gl_WorldRayOriginNVX" + Name 23 "v3" + Name 24 "gl_WorldRayDirectionNVX" + Name 26 "v4" + Name 27 "gl_ObjectRayOriginNVX" + Name 29 "v5" + Name 30 "gl_ObjectRayDirectionNVX" + Name 33 "v6" + Name 35 "gl_RayTminNVX" + Name 37 "v7" + Name 38 "gl_RayTmaxNVX" + Name 42 "accNV" + Name 57 "localPayload" + Name 59 "incomingPayload" + Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX + Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX + Decorate 21(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX + Decorate 24(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX + Decorate 27(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX + Decorate 30(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX + Decorate 35(gl_RayTminNVX) BuiltIn RayTminNVX + Decorate 38(gl_RayTmaxNVX) BuiltIn RayTmaxNVX + Decorate 42(accNV) DescriptorSet 0 + Decorate 42(accNV) Binding 0 + Decorate 57(localPayload) Location 0 + Decorate 59(incomingPayload) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypePointer Input 7(ivec2) +11(gl_LaunchIDNVX): 10(ptr) Variable Input +14(gl_LaunchSizeNVX): 10(ptr) Variable Input + 16: TypeFloat 32 + 17: TypeVector 16(float) 3 + 18: TypePointer Function 17(fvec3) + 20: TypePointer Input 17(fvec3) +21(gl_WorldRayOriginNVX): 20(ptr) Variable Input +24(gl_WorldRayDirectionNVX): 20(ptr) Variable Input +27(gl_ObjectRayOriginNVX): 20(ptr) Variable Input +30(gl_ObjectRayDirectionNVX): 20(ptr) Variable Input + 32: TypePointer Function 16(float) + 34: TypePointer Input 16(float) +35(gl_RayTminNVX): 34(ptr) Variable Input +38(gl_RayTmaxNVX): 34(ptr) Variable Input + 40: TypeAccelerationStructureNVX + 41: TypePointer UniformConstant 40 + 42(accNV): 41(ptr) Variable UniformConstant + 44: 6(int) Constant 0 + 45: 6(int) Constant 1 + 46: 6(int) Constant 2 + 47: 6(int) Constant 3 + 48: 16(float) Constant 1056964608 + 49: 17(fvec3) ConstantComposite 48 48 48 + 50: 16(float) Constant 1065353216 + 51: 17(fvec3) ConstantComposite 50 50 50 + 52: 16(float) Constant 1061158912 + 53: TypeInt 32 1 + 54: 53(int) Constant 1 + 55: TypeVector 16(float) 4 + 56: TypePointer RayPayloadNVX 55(fvec4) +57(localPayload): 56(ptr) Variable RayPayloadNVX + 58: TypePointer IncomingRayPayloadNVX 55(fvec4) +59(incomingPayload): 58(ptr) Variable IncomingRayPayloadNVX + 4(main): 2 Function None 3 + 5: Label + 9(v0): 8(ptr) Variable Function + 13(v1): 8(ptr) Variable Function + 19(v2): 18(ptr) Variable Function + 23(v3): 18(ptr) Variable Function + 26(v4): 18(ptr) Variable Function + 29(v5): 18(ptr) Variable Function + 33(v6): 32(ptr) Variable Function + 37(v7): 32(ptr) Variable Function + 12: 7(ivec2) Load 11(gl_LaunchIDNVX) + Store 9(v0) 12 + 15: 7(ivec2) Load 14(gl_LaunchSizeNVX) + Store 13(v1) 15 + 22: 17(fvec3) Load 21(gl_WorldRayOriginNVX) + Store 19(v2) 22 + 25: 17(fvec3) Load 24(gl_WorldRayDirectionNVX) + Store 23(v3) 25 + 28: 17(fvec3) Load 27(gl_ObjectRayOriginNVX) + Store 26(v4) 28 + 31: 17(fvec3) Load 30(gl_ObjectRayDirectionNVX) + Store 29(v5) 31 + 36: 16(float) Load 35(gl_RayTminNVX) + Store 33(v6) 36 + 39: 16(float) Load 38(gl_RayTmaxNVX) + Store 37(v7) 39 + 43: 40 Load 42(accNV) + TraceNVX 43 44 45 46 47 44 49 48 51 52 54 + Return + FunctionEnd diff --git a/Test/baseResults/spv.MissShader_Errors.rmiss.out b/Test/baseResults/spv.MissShader_Errors.rmiss.out new file mode 100644 index 00000000..bfc2f6c2 --- /dev/null +++ b/Test/baseResults/spv.MissShader_Errors.rmiss.out @@ -0,0 +1,21 @@ +spv.MissShader_Errors.rmiss +ERROR: 0:3: 'hitAttributeNVX' : not supported in this stage: miss +ERROR: 0:6: 'gl_PrimitiveID' : undeclared identifier +ERROR: 0:6: '=' : cannot convert from ' temp float' to ' temp highp int' +ERROR: 0:7: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) +ERROR: 0:7: '=' : cannot convert from ' temp float' to ' temp highp int' +ERROR: 0:8: 'gl_InstanceCustomIndexNVX' : undeclared identifier +ERROR: 0:8: '=' : cannot convert from ' temp float' to ' temp highp int' +ERROR: 0:9: 'gl_ObjectToWorldNVX' : undeclared identifier +ERROR: 0:9: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' +ERROR: 0:10: 'gl_WorldToObjectNVX' : undeclared identifier +ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' +ERROR: 0:11: 'gl_HitTNVX' : undeclared identifier +ERROR: 0:12: 'gl_HitKindNVX' : undeclared identifier +ERROR: 0:13: 'reportIntersectionNVX' : no matching overloaded function found +ERROR: 0:14: 'ignoreIntersectionNVX' : no matching overloaded function found +ERROR: 0:15: 'terminateRayNVX' : no matching overloaded function found +ERROR: 16 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out new file mode 100644 index 00000000..2f391e94 --- /dev/null +++ b/Test/baseResults/spv.RayConstants.rgen.out @@ -0,0 +1,48 @@ +spv.RayConstants.rgen +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5340 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 27 + + Capability RaytracingNVX + Extension "SPV_NVX_raytracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationNVX 4 "main" + Source GLSL 460 + SourceExtension "GL_NVX_raytracing" + Name 4 "main" + Name 8 "accNV" + Name 26 "payload" + Decorate 8(accNV) DescriptorSet 0 + Decorate 8(accNV) Binding 0 + Decorate 26(payload) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeAccelerationStructureNVX + 7: TypePointer UniformConstant 6 + 8(accNV): 7(ptr) Variable UniformConstant + 10: TypeInt 32 0 + 11: 10(int) Constant 255 + 12: 10(int) Constant 0 + 13: 10(int) Constant 1 + 14: TypeFloat 32 + 15: TypeVector 14(float) 3 + 16: 14(float) Constant 0 + 17: 15(fvec3) ConstantComposite 16 16 16 + 18: 14(float) Constant 1056964608 + 19: 14(float) Constant 1065353216 + 20: 15(fvec3) ConstantComposite 19 19 19 + 21: 14(float) Constant 1061158912 + 22: TypeInt 32 1 + 23: 22(int) Constant 1 + 24: TypeVector 14(float) 4 + 25: TypePointer RayPayloadNVX 24(fvec4) + 26(payload): 25(ptr) Variable RayPayloadNVX + 4(main): 2 Function None 3 + 5: Label + 9: 6 Load 8(accNV) + TraceNVX 9 11 12 13 13 12 17 18 20 21 23 + Return + FunctionEnd diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out new file mode 100644 index 00000000..749e5dc9 --- /dev/null +++ b/Test/baseResults/spv.RayGenShader.rgen.out @@ -0,0 +1,103 @@ +spv.RayGenShader.rgen +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5340 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 60 + + Capability RaytracingNVX + Extension "SPV_NVX_raytracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationNVX 4 "main" 11 21 + Source GLSL 460 + SourceExtension "GL_NVX_raytracing" + Name 4 "main" + Name 8 "lx" + Name 11 "gl_LaunchIDNVX" + Name 16 "ly" + Name 20 "sx" + Name 21 "gl_LaunchSizeNVX" + Name 24 "sy" + Name 29 "accNV" + Name 48 "block" + MemberName 48(block) 0 "arr" + MemberName 48(block) 1 "pad" + Name 50 "" + Name 56 "payload" + Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX + Decorate 21(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX + Decorate 29(accNV) DescriptorSet 0 + Decorate 29(accNV) Binding 0 + Decorate 46 ArrayStride 4 + MemberDecorate 48(block) 0 Offset 0 + MemberDecorate 48(block) 1 Offset 16 + Decorate 48(block) BufferBlock + Decorate 56(payload) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 2 + 10: TypePointer Input 9(ivec2) +11(gl_LaunchIDNVX): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) + 17: 6(int) Constant 1 +21(gl_LaunchSizeNVX): 10(ptr) Variable Input + 27: TypeAccelerationStructureNVX + 28: TypePointer UniformConstant 27 + 29(accNV): 28(ptr) Variable UniformConstant + 35: TypeFloat 32 + 36: TypeVector 35(float) 3 + 37: 35(float) Constant 0 + 38: 36(fvec3) ConstantComposite 37 37 37 + 39: 35(float) Constant 1056964608 + 40: 35(float) Constant 1065353216 + 41: 36(fvec3) ConstantComposite 40 40 40 + 42: 35(float) Constant 1061158912 + 43: TypeInt 32 1 + 44: 43(int) Constant 1 + 45: 6(int) Constant 4 + 46: TypeArray 35(float) 45 + 47: TypeVector 35(float) 4 + 48(block): TypeStruct 46 47(fvec4) + 49: TypePointer ShaderRecordBufferNVX 48(block) + 50: 49(ptr) Variable ShaderRecordBufferNVX + 51: 43(int) Constant 0 + 52: 43(int) Constant 3 + 53: TypePointer ShaderRecordBufferNVX 35(float) + 55: TypePointer RayPayloadNVX 47(fvec4) + 56(payload): 55(ptr) Variable RayPayloadNVX + 58: TypePointer ShaderRecordBufferNVX 47(fvec4) + 4(main): 2 Function None 3 + 5: Label + 8(lx): 7(ptr) Variable Function + 16(ly): 7(ptr) Variable Function + 20(sx): 7(ptr) Variable Function + 24(sy): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LaunchIDNVX) 12 + 15: 6(int) Load 14 + Store 8(lx) 15 + 18: 13(ptr) AccessChain 11(gl_LaunchIDNVX) 17 + 19: 6(int) Load 18 + Store 16(ly) 19 + 22: 13(ptr) AccessChain 21(gl_LaunchSizeNVX) 12 + 23: 6(int) Load 22 + Store 20(sx) 23 + 25: 13(ptr) AccessChain 21(gl_LaunchSizeNVX) 17 + 26: 6(int) Load 25 + Store 24(sy) 26 + 30: 27 Load 29(accNV) + 31: 6(int) Load 8(lx) + 32: 6(int) Load 16(ly) + 33: 6(int) Load 20(sx) + 34: 6(int) Load 24(sy) + TraceNVX 30 31 32 33 34 12 38 39 41 42 44 + 54: 53(ptr) AccessChain 50 51 52 + Store 54 40 + 57: 47(fvec4) Load 56(payload) + 59: 58(ptr) AccessChain 50 44 + Store 59 57 + Return + FunctionEnd diff --git a/Test/baseResults/spv.RayGenShader_Errors.rgen.out b/Test/baseResults/spv.RayGenShader_Errors.rgen.out new file mode 100644 index 00000000..7d9e2c28 --- /dev/null +++ b/Test/baseResults/spv.RayGenShader_Errors.rgen.out @@ -0,0 +1,39 @@ +spv.RayGenShader_Errors.rgen +ERROR: 0:3: 'hitAttributeNVX' : not supported in this stage: ray-generation +ERROR: 0:4: 'rayPayloadInNVX' : not supported in this stage: ray-generation +ERROR: 0:5: 'shaderRecordNVX' : can only be used with a buffer +ERROR: 0:9: 'binding' : cannot be used with shaderRecordNVX +ERROR: 0:12: 'set' : cannot be used with shaderRecordNVX +ERROR: 0:23: 'accelerationStructureNVX' : accelerationStructureNVX can only be used in uniform variables or function parameters: a +ERROR: 0:23: '=' : cannot convert from ' const int' to ' temp accelerationStructureNVX' +ERROR: 0:24: 'gl_PrimitiveID' : undeclared identifier +ERROR: 0:24: '=' : cannot convert from ' temp float' to ' temp highp int' +ERROR: 0:25: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) +ERROR: 0:25: '=' : cannot convert from ' temp float' to ' temp highp int' +ERROR: 0:26: 'gl_InstanceCustomIndexNVX' : undeclared identifier +ERROR: 0:26: '=' : cannot convert from ' temp float' to ' temp highp int' +ERROR: 0:27: 'gl_WorldRayOriginNVX' : undeclared identifier +ERROR: 0:27: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' +ERROR: 0:28: 'gl_WorldRayDirectionNVX' : undeclared identifier +ERROR: 0:28: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' +ERROR: 0:29: 'gl_ObjectRayOriginNVX' : undeclared identifier +ERROR: 0:29: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' +ERROR: 0:30: 'gl_ObjectRayDirectionNVX' : undeclared identifier +ERROR: 0:30: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' +ERROR: 0:31: 'gl_RayTminNVX' : undeclared identifier +ERROR: 0:32: 'gl_RayTmaxNVX' : undeclared identifier +ERROR: 0:33: 'gl_ObjectToWorldNVX' : undeclared identifier +ERROR: 0:33: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' +ERROR: 0:34: 'gl_WorldToObjectNVX' : undeclared identifier +ERROR: 0:34: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' +ERROR: 0:35: 'gl_HitTNVX' : undeclared identifier +ERROR: 0:36: 'gl_HitKindNVX' : undeclared identifier +ERROR: 0:37: 'reportIntersectionNVX' : no matching overloaded function found +ERROR: 0:38: 'ignoreIntersectionNVX' : no matching overloaded function found +ERROR: 0:39: 'terminateRayNVX' : no matching overloaded function found +ERROR: 32 compilation errors. No code generated. + + +ERROR: Linking ray-generation stage: Only one shaderRecordNVX buffer block is allowed per stage + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.computeShaderDerivatives.comp.out b/Test/baseResults/spv.computeShaderDerivatives.comp.out new file mode 100644 index 00000000..40bc7136 --- /dev/null +++ b/Test/baseResults/spv.computeShaderDerivatives.comp.out @@ -0,0 +1,360 @@ +spv.computeShaderDerivatives.comp +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5288 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 212 + + Capability Shader + Capability DerivativeControl + Capability ComputeDerivativeGroupQuadsNV + Extension "SPV_NV_compute_shader_derivatives" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 2 4 1 + ExecutionMode 4 DerivativeGroupQuadsNV + Source GLSL 450 + SourceExtension "GL_NV_compute_shader_derivatives" + Name 4 "main" + Name 10 "block" + MemberName 10(block) 0 "fDerivativeX" + MemberName 10(block) 1 "fDerivativeY" + MemberName 10(block) 2 "fDerivativeWidth" + MemberName 10(block) 3 "fCoarseDerivativeX" + MemberName 10(block) 4 "fCoarseDerivativeY" + MemberName 10(block) 5 "fCoarseDerivativeWidth" + MemberName 10(block) 6 "fFineDerivativeX" + MemberName 10(block) 7 "fFineDerivativeY" + MemberName 10(block) 8 "fFineDerivativeWidth" + MemberName 10(block) 9 "fX" + MemberName 10(block) 10 "fY" + MemberName 10(block) 11 "v2DerivativeX" + MemberName 10(block) 12 "v2DerivativeY" + MemberName 10(block) 13 "v2DerivativeWidth" + MemberName 10(block) 14 "v2CoarseDerivativeX" + MemberName 10(block) 15 "v2CoarseDerivativeY" + MemberName 10(block) 16 "v2CoarseDerivativeWidth" + MemberName 10(block) 17 "v2FineDerivativeX" + MemberName 10(block) 18 "v2FineDerivativeY" + MemberName 10(block) 19 "v2FineDerivativeWidth" + MemberName 10(block) 20 "v2X" + MemberName 10(block) 21 "v2Y" + MemberName 10(block) 22 "v3DerivativeX" + MemberName 10(block) 23 "v3DerivativeY" + MemberName 10(block) 24 "v3DerivativeWidth" + MemberName 10(block) 25 "v3CoarseDerivativeX" + MemberName 10(block) 26 "v3CoarseDerivativeY" + MemberName 10(block) 27 "v3CoarseDerivativeWidth" + MemberName 10(block) 28 "v3FineDerivativeX" + MemberName 10(block) 29 "v3FineDerivativeY" + MemberName 10(block) 30 "v3FineDerivativeWidth" + MemberName 10(block) 31 "v3X" + MemberName 10(block) 32 "v3Y" + MemberName 10(block) 33 "v4DerivativeX" + MemberName 10(block) 34 "v4DerivativeY" + MemberName 10(block) 35 "v4DerivativeWidth" + MemberName 10(block) 36 "v4CoarseDerivativeX" + MemberName 10(block) 37 "v4CoarseDerivativeY" + MemberName 10(block) 38 "v4CoarseDerivativeWidth" + MemberName 10(block) 39 "v4FineDerivativeX" + MemberName 10(block) 40 "v4FineDerivativeY" + MemberName 10(block) 41 "v4FineDerivativeWidth" + MemberName 10(block) 42 "v4X" + MemberName 10(block) 43 "v4Y" + Name 12 "" + MemberDecorate 10(block) 0 Offset 0 + MemberDecorate 10(block) 1 Offset 4 + MemberDecorate 10(block) 2 Offset 8 + MemberDecorate 10(block) 3 Offset 12 + MemberDecorate 10(block) 4 Offset 16 + MemberDecorate 10(block) 5 Offset 20 + MemberDecorate 10(block) 6 Offset 24 + MemberDecorate 10(block) 7 Offset 28 + MemberDecorate 10(block) 8 Offset 32 + MemberDecorate 10(block) 9 Offset 36 + MemberDecorate 10(block) 10 Offset 40 + MemberDecorate 10(block) 11 Offset 48 + MemberDecorate 10(block) 12 Offset 56 + MemberDecorate 10(block) 13 Offset 64 + MemberDecorate 10(block) 14 Offset 72 + MemberDecorate 10(block) 15 Offset 80 + MemberDecorate 10(block) 16 Offset 88 + MemberDecorate 10(block) 17 Offset 96 + MemberDecorate 10(block) 18 Offset 104 + MemberDecorate 10(block) 19 Offset 112 + MemberDecorate 10(block) 20 Offset 120 + MemberDecorate 10(block) 21 Offset 128 + MemberDecorate 10(block) 22 Offset 144 + MemberDecorate 10(block) 23 Offset 160 + MemberDecorate 10(block) 24 Offset 176 + MemberDecorate 10(block) 25 Offset 192 + MemberDecorate 10(block) 26 Offset 208 + MemberDecorate 10(block) 27 Offset 224 + MemberDecorate 10(block) 28 Offset 240 + MemberDecorate 10(block) 29 Offset 256 + MemberDecorate 10(block) 30 Offset 272 + MemberDecorate 10(block) 31 Offset 288 + MemberDecorate 10(block) 32 Offset 304 + MemberDecorate 10(block) 33 Offset 320 + MemberDecorate 10(block) 34 Offset 336 + MemberDecorate 10(block) 35 Offset 352 + MemberDecorate 10(block) 36 Offset 368 + MemberDecorate 10(block) 37 Offset 384 + MemberDecorate 10(block) 38 Offset 400 + MemberDecorate 10(block) 39 Offset 416 + MemberDecorate 10(block) 40 Offset 432 + MemberDecorate 10(block) 41 Offset 448 + MemberDecorate 10(block) 42 Offset 464 + MemberDecorate 10(block) 43 Offset 480 + Decorate 10(block) BufferBlock + Decorate 12 DescriptorSet 0 + Decorate 211 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypeVector 6(float) 3 + 9: TypeVector 6(float) 4 + 10(block): TypeStruct 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) + 11: TypePointer Uniform 10(block) + 12: 11(ptr) Variable Uniform + 13: TypeInt 32 1 + 14: 13(int) Constant 0 + 15: 13(int) Constant 9 + 16: TypePointer Uniform 6(float) + 21: 13(int) Constant 1 + 22: 13(int) Constant 10 + 27: 13(int) Constant 2 + 32: 13(int) Constant 3 + 37: 13(int) Constant 4 + 42: 13(int) Constant 5 + 47: 13(int) Constant 6 + 52: 13(int) Constant 7 + 57: 13(int) Constant 8 + 62: 13(int) Constant 11 + 63: 13(int) Constant 20 + 64: TypePointer Uniform 7(fvec2) + 69: 13(int) Constant 12 + 70: 13(int) Constant 21 + 75: 13(int) Constant 13 + 80: 13(int) Constant 14 + 85: 13(int) Constant 15 + 90: 13(int) Constant 16 + 95: 13(int) Constant 17 + 100: 13(int) Constant 18 + 105: 13(int) Constant 19 + 110: 13(int) Constant 22 + 111: 13(int) Constant 31 + 112: TypePointer Uniform 8(fvec3) + 117: 13(int) Constant 23 + 118: 13(int) Constant 32 + 123: 13(int) Constant 24 + 128: 13(int) Constant 25 + 133: 13(int) Constant 26 + 138: 13(int) Constant 27 + 143: 13(int) Constant 28 + 148: 13(int) Constant 29 + 153: 13(int) Constant 30 + 158: 13(int) Constant 33 + 159: 13(int) Constant 42 + 160: TypePointer Uniform 9(fvec4) + 165: 13(int) Constant 34 + 166: 13(int) Constant 43 + 171: 13(int) Constant 35 + 176: 13(int) Constant 36 + 181: 13(int) Constant 37 + 186: 13(int) Constant 38 + 191: 13(int) Constant 39 + 196: 13(int) Constant 40 + 201: 13(int) Constant 41 + 206: TypeInt 32 0 + 207: TypeVector 206(int) 3 + 208: 206(int) Constant 2 + 209: 206(int) Constant 4 + 210: 206(int) Constant 1 + 211: 207(ivec3) ConstantComposite 208 209 210 + 4(main): 2 Function None 3 + 5: Label + 17: 16(ptr) AccessChain 12 15 + 18: 6(float) Load 17 + 19: 6(float) DPdx 18 + 20: 16(ptr) AccessChain 12 14 + Store 20 19 + 23: 16(ptr) AccessChain 12 22 + 24: 6(float) Load 23 + 25: 6(float) DPdy 24 + 26: 16(ptr) AccessChain 12 21 + Store 26 25 + 28: 16(ptr) AccessChain 12 15 + 29: 6(float) Load 28 + 30: 6(float) Fwidth 29 + 31: 16(ptr) AccessChain 12 27 + Store 31 30 + 33: 16(ptr) AccessChain 12 15 + 34: 6(float) Load 33 + 35: 6(float) DPdxCoarse 34 + 36: 16(ptr) AccessChain 12 32 + Store 36 35 + 38: 16(ptr) AccessChain 12 22 + 39: 6(float) Load 38 + 40: 6(float) DPdyCoarse 39 + 41: 16(ptr) AccessChain 12 37 + Store 41 40 + 43: 16(ptr) AccessChain 12 15 + 44: 6(float) Load 43 + 45: 6(float) FwidthCoarse 44 + 46: 16(ptr) AccessChain 12 42 + Store 46 45 + 48: 16(ptr) AccessChain 12 15 + 49: 6(float) Load 48 + 50: 6(float) DPdxFine 49 + 51: 16(ptr) AccessChain 12 47 + Store 51 50 + 53: 16(ptr) AccessChain 12 22 + 54: 6(float) Load 53 + 55: 6(float) DPdyFine 54 + 56: 16(ptr) AccessChain 12 52 + Store 56 55 + 58: 16(ptr) AccessChain 12 15 + 59: 6(float) Load 58 + 60: 6(float) FwidthFine 59 + 61: 16(ptr) AccessChain 12 57 + Store 61 60 + 65: 64(ptr) AccessChain 12 63 + 66: 7(fvec2) Load 65 + 67: 7(fvec2) DPdx 66 + 68: 64(ptr) AccessChain 12 62 + Store 68 67 + 71: 64(ptr) AccessChain 12 70 + 72: 7(fvec2) Load 71 + 73: 7(fvec2) DPdy 72 + 74: 64(ptr) AccessChain 12 69 + Store 74 73 + 76: 64(ptr) AccessChain 12 63 + 77: 7(fvec2) Load 76 + 78: 7(fvec2) Fwidth 77 + 79: 64(ptr) AccessChain 12 75 + Store 79 78 + 81: 64(ptr) AccessChain 12 63 + 82: 7(fvec2) Load 81 + 83: 7(fvec2) DPdxCoarse 82 + 84: 64(ptr) AccessChain 12 80 + Store 84 83 + 86: 64(ptr) AccessChain 12 70 + 87: 7(fvec2) Load 86 + 88: 7(fvec2) DPdyCoarse 87 + 89: 64(ptr) AccessChain 12 85 + Store 89 88 + 91: 64(ptr) AccessChain 12 63 + 92: 7(fvec2) Load 91 + 93: 7(fvec2) FwidthCoarse 92 + 94: 64(ptr) AccessChain 12 90 + Store 94 93 + 96: 64(ptr) AccessChain 12 63 + 97: 7(fvec2) Load 96 + 98: 7(fvec2) DPdxFine 97 + 99: 64(ptr) AccessChain 12 95 + Store 99 98 + 101: 64(ptr) AccessChain 12 70 + 102: 7(fvec2) Load 101 + 103: 7(fvec2) DPdyFine 102 + 104: 64(ptr) AccessChain 12 100 + Store 104 103 + 106: 64(ptr) AccessChain 12 63 + 107: 7(fvec2) Load 106 + 108: 7(fvec2) FwidthFine 107 + 109: 64(ptr) AccessChain 12 105 + Store 109 108 + 113: 112(ptr) AccessChain 12 111 + 114: 8(fvec3) Load 113 + 115: 8(fvec3) DPdx 114 + 116: 112(ptr) AccessChain 12 110 + Store 116 115 + 119: 112(ptr) AccessChain 12 118 + 120: 8(fvec3) Load 119 + 121: 8(fvec3) DPdy 120 + 122: 112(ptr) AccessChain 12 117 + Store 122 121 + 124: 112(ptr) AccessChain 12 111 + 125: 8(fvec3) Load 124 + 126: 8(fvec3) Fwidth 125 + 127: 112(ptr) AccessChain 12 123 + Store 127 126 + 129: 112(ptr) AccessChain 12 111 + 130: 8(fvec3) Load 129 + 131: 8(fvec3) DPdxCoarse 130 + 132: 112(ptr) AccessChain 12 128 + Store 132 131 + 134: 112(ptr) AccessChain 12 118 + 135: 8(fvec3) Load 134 + 136: 8(fvec3) DPdyCoarse 135 + 137: 112(ptr) AccessChain 12 133 + Store 137 136 + 139: 112(ptr) AccessChain 12 111 + 140: 8(fvec3) Load 139 + 141: 8(fvec3) FwidthCoarse 140 + 142: 112(ptr) AccessChain 12 138 + Store 142 141 + 144: 112(ptr) AccessChain 12 111 + 145: 8(fvec3) Load 144 + 146: 8(fvec3) DPdxFine 145 + 147: 112(ptr) AccessChain 12 143 + Store 147 146 + 149: 112(ptr) AccessChain 12 118 + 150: 8(fvec3) Load 149 + 151: 8(fvec3) DPdyFine 150 + 152: 112(ptr) AccessChain 12 148 + Store 152 151 + 154: 112(ptr) AccessChain 12 111 + 155: 8(fvec3) Load 154 + 156: 8(fvec3) FwidthFine 155 + 157: 112(ptr) AccessChain 12 153 + Store 157 156 + 161: 160(ptr) AccessChain 12 159 + 162: 9(fvec4) Load 161 + 163: 9(fvec4) DPdx 162 + 164: 160(ptr) AccessChain 12 158 + Store 164 163 + 167: 160(ptr) AccessChain 12 166 + 168: 9(fvec4) Load 167 + 169: 9(fvec4) DPdy 168 + 170: 160(ptr) AccessChain 12 165 + Store 170 169 + 172: 160(ptr) AccessChain 12 159 + 173: 9(fvec4) Load 172 + 174: 9(fvec4) Fwidth 173 + 175: 160(ptr) AccessChain 12 171 + Store 175 174 + 177: 160(ptr) AccessChain 12 159 + 178: 9(fvec4) Load 177 + 179: 9(fvec4) DPdxCoarse 178 + 180: 160(ptr) AccessChain 12 176 + Store 180 179 + 182: 160(ptr) AccessChain 12 166 + 183: 9(fvec4) Load 182 + 184: 9(fvec4) DPdyCoarse 183 + 185: 160(ptr) AccessChain 12 181 + Store 185 184 + 187: 160(ptr) AccessChain 12 159 + 188: 9(fvec4) Load 187 + 189: 9(fvec4) FwidthCoarse 188 + 190: 160(ptr) AccessChain 12 186 + Store 190 189 + 192: 160(ptr) AccessChain 12 159 + 193: 9(fvec4) Load 192 + 194: 9(fvec4) DPdxFine 193 + 195: 160(ptr) AccessChain 12 191 + Store 195 194 + 197: 160(ptr) AccessChain 12 166 + 198: 9(fvec4) Load 197 + 199: 9(fvec4) DPdyFine 198 + 200: 160(ptr) AccessChain 12 196 + Store 200 199 + 202: 160(ptr) AccessChain 12 159 + 203: 9(fvec4) Load 202 + 204: 9(fvec4) FwidthFine 203 + 205: 160(ptr) AccessChain 12 201 + Store 205 204 + Return + FunctionEnd diff --git a/Test/baseResults/spv.computeShaderDerivatives2.comp.out b/Test/baseResults/spv.computeShaderDerivatives2.comp.out new file mode 100644 index 00000000..b746c666 --- /dev/null +++ b/Test/baseResults/spv.computeShaderDerivatives2.comp.out @@ -0,0 +1,360 @@ +spv.computeShaderDerivatives2.comp +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5350 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 212 + + Capability Shader + Capability DerivativeControl + Capability ComputeDerivativeGroupLinearNV + Extension "SPV_NV_compute_shader_derivatives" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 2 4 1 + ExecutionMode 4 DerivativeGroupLinearNV + Source ESSL 320 + SourceExtension "GL_NV_compute_shader_derivatives" + Name 4 "main" + Name 10 "block" + MemberName 10(block) 0 "fDerivativeX" + MemberName 10(block) 1 "fDerivativeY" + MemberName 10(block) 2 "fDerivativeWidth" + MemberName 10(block) 3 "fCoarseDerivativeX" + MemberName 10(block) 4 "fCoarseDerivativeY" + MemberName 10(block) 5 "fCoarseDerivativeWidth" + MemberName 10(block) 6 "fFineDerivativeX" + MemberName 10(block) 7 "fFineDerivativeY" + MemberName 10(block) 8 "fFineDerivativeWidth" + MemberName 10(block) 9 "fX" + MemberName 10(block) 10 "fY" + MemberName 10(block) 11 "v2DerivativeX" + MemberName 10(block) 12 "v2DerivativeY" + MemberName 10(block) 13 "v2DerivativeWidth" + MemberName 10(block) 14 "v2CoarseDerivativeX" + MemberName 10(block) 15 "v2CoarseDerivativeY" + MemberName 10(block) 16 "v2CoarseDerivativeWidth" + MemberName 10(block) 17 "v2FineDerivativeX" + MemberName 10(block) 18 "v2FineDerivativeY" + MemberName 10(block) 19 "v2FineDerivativeWidth" + MemberName 10(block) 20 "v2X" + MemberName 10(block) 21 "v2Y" + MemberName 10(block) 22 "v3DerivativeX" + MemberName 10(block) 23 "v3DerivativeY" + MemberName 10(block) 24 "v3DerivativeWidth" + MemberName 10(block) 25 "v3CoarseDerivativeX" + MemberName 10(block) 26 "v3CoarseDerivativeY" + MemberName 10(block) 27 "v3CoarseDerivativeWidth" + MemberName 10(block) 28 "v3FineDerivativeX" + MemberName 10(block) 29 "v3FineDerivativeY" + MemberName 10(block) 30 "v3FineDerivativeWidth" + MemberName 10(block) 31 "v3X" + MemberName 10(block) 32 "v3Y" + MemberName 10(block) 33 "v4DerivativeX" + MemberName 10(block) 34 "v4DerivativeY" + MemberName 10(block) 35 "v4DerivativeWidth" + MemberName 10(block) 36 "v4CoarseDerivativeX" + MemberName 10(block) 37 "v4CoarseDerivativeY" + MemberName 10(block) 38 "v4CoarseDerivativeWidth" + MemberName 10(block) 39 "v4FineDerivativeX" + MemberName 10(block) 40 "v4FineDerivativeY" + MemberName 10(block) 41 "v4FineDerivativeWidth" + MemberName 10(block) 42 "v4X" + MemberName 10(block) 43 "v4Y" + Name 12 "" + MemberDecorate 10(block) 0 Offset 0 + MemberDecorate 10(block) 1 Offset 4 + MemberDecorate 10(block) 2 Offset 8 + MemberDecorate 10(block) 3 Offset 12 + MemberDecorate 10(block) 4 Offset 16 + MemberDecorate 10(block) 5 Offset 20 + MemberDecorate 10(block) 6 Offset 24 + MemberDecorate 10(block) 7 Offset 28 + MemberDecorate 10(block) 8 Offset 32 + MemberDecorate 10(block) 9 Offset 36 + MemberDecorate 10(block) 10 Offset 40 + MemberDecorate 10(block) 11 Offset 48 + MemberDecorate 10(block) 12 Offset 56 + MemberDecorate 10(block) 13 Offset 64 + MemberDecorate 10(block) 14 Offset 72 + MemberDecorate 10(block) 15 Offset 80 + MemberDecorate 10(block) 16 Offset 88 + MemberDecorate 10(block) 17 Offset 96 + MemberDecorate 10(block) 18 Offset 104 + MemberDecorate 10(block) 19 Offset 112 + MemberDecorate 10(block) 20 Offset 120 + MemberDecorate 10(block) 21 Offset 128 + MemberDecorate 10(block) 22 Offset 144 + MemberDecorate 10(block) 23 Offset 160 + MemberDecorate 10(block) 24 Offset 176 + MemberDecorate 10(block) 25 Offset 192 + MemberDecorate 10(block) 26 Offset 208 + MemberDecorate 10(block) 27 Offset 224 + MemberDecorate 10(block) 28 Offset 240 + MemberDecorate 10(block) 29 Offset 256 + MemberDecorate 10(block) 30 Offset 272 + MemberDecorate 10(block) 31 Offset 288 + MemberDecorate 10(block) 32 Offset 304 + MemberDecorate 10(block) 33 Offset 320 + MemberDecorate 10(block) 34 Offset 336 + MemberDecorate 10(block) 35 Offset 352 + MemberDecorate 10(block) 36 Offset 368 + MemberDecorate 10(block) 37 Offset 384 + MemberDecorate 10(block) 38 Offset 400 + MemberDecorate 10(block) 39 Offset 416 + MemberDecorate 10(block) 40 Offset 432 + MemberDecorate 10(block) 41 Offset 448 + MemberDecorate 10(block) 42 Offset 464 + MemberDecorate 10(block) 43 Offset 480 + Decorate 10(block) BufferBlock + Decorate 12 DescriptorSet 0 + Decorate 211 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypeVector 6(float) 3 + 9: TypeVector 6(float) 4 + 10(block): TypeStruct 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 7(fvec2) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 8(fvec3) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) 9(fvec4) + 11: TypePointer Uniform 10(block) + 12: 11(ptr) Variable Uniform + 13: TypeInt 32 1 + 14: 13(int) Constant 0 + 15: 13(int) Constant 9 + 16: TypePointer Uniform 6(float) + 21: 13(int) Constant 1 + 22: 13(int) Constant 10 + 27: 13(int) Constant 2 + 32: 13(int) Constant 3 + 37: 13(int) Constant 4 + 42: 13(int) Constant 5 + 47: 13(int) Constant 6 + 52: 13(int) Constant 7 + 57: 13(int) Constant 8 + 62: 13(int) Constant 11 + 63: 13(int) Constant 20 + 64: TypePointer Uniform 7(fvec2) + 69: 13(int) Constant 12 + 70: 13(int) Constant 21 + 75: 13(int) Constant 13 + 80: 13(int) Constant 14 + 85: 13(int) Constant 15 + 90: 13(int) Constant 16 + 95: 13(int) Constant 17 + 100: 13(int) Constant 18 + 105: 13(int) Constant 19 + 110: 13(int) Constant 22 + 111: 13(int) Constant 31 + 112: TypePointer Uniform 8(fvec3) + 117: 13(int) Constant 23 + 118: 13(int) Constant 32 + 123: 13(int) Constant 24 + 128: 13(int) Constant 25 + 133: 13(int) Constant 26 + 138: 13(int) Constant 27 + 143: 13(int) Constant 28 + 148: 13(int) Constant 29 + 153: 13(int) Constant 30 + 158: 13(int) Constant 33 + 159: 13(int) Constant 42 + 160: TypePointer Uniform 9(fvec4) + 165: 13(int) Constant 34 + 166: 13(int) Constant 43 + 171: 13(int) Constant 35 + 176: 13(int) Constant 36 + 181: 13(int) Constant 37 + 186: 13(int) Constant 38 + 191: 13(int) Constant 39 + 196: 13(int) Constant 40 + 201: 13(int) Constant 41 + 206: TypeInt 32 0 + 207: TypeVector 206(int) 3 + 208: 206(int) Constant 2 + 209: 206(int) Constant 4 + 210: 206(int) Constant 1 + 211: 207(ivec3) ConstantComposite 208 209 210 + 4(main): 2 Function None 3 + 5: Label + 17: 16(ptr) AccessChain 12 15 + 18: 6(float) Load 17 + 19: 6(float) DPdx 18 + 20: 16(ptr) AccessChain 12 14 + Store 20 19 + 23: 16(ptr) AccessChain 12 22 + 24: 6(float) Load 23 + 25: 6(float) DPdy 24 + 26: 16(ptr) AccessChain 12 21 + Store 26 25 + 28: 16(ptr) AccessChain 12 15 + 29: 6(float) Load 28 + 30: 6(float) Fwidth 29 + 31: 16(ptr) AccessChain 12 27 + Store 31 30 + 33: 16(ptr) AccessChain 12 15 + 34: 6(float) Load 33 + 35: 6(float) DPdxCoarse 34 + 36: 16(ptr) AccessChain 12 32 + Store 36 35 + 38: 16(ptr) AccessChain 12 22 + 39: 6(float) Load 38 + 40: 6(float) DPdyCoarse 39 + 41: 16(ptr) AccessChain 12 37 + Store 41 40 + 43: 16(ptr) AccessChain 12 15 + 44: 6(float) Load 43 + 45: 6(float) FwidthCoarse 44 + 46: 16(ptr) AccessChain 12 42 + Store 46 45 + 48: 16(ptr) AccessChain 12 15 + 49: 6(float) Load 48 + 50: 6(float) DPdxFine 49 + 51: 16(ptr) AccessChain 12 47 + Store 51 50 + 53: 16(ptr) AccessChain 12 22 + 54: 6(float) Load 53 + 55: 6(float) DPdyFine 54 + 56: 16(ptr) AccessChain 12 52 + Store 56 55 + 58: 16(ptr) AccessChain 12 15 + 59: 6(float) Load 58 + 60: 6(float) FwidthFine 59 + 61: 16(ptr) AccessChain 12 57 + Store 61 60 + 65: 64(ptr) AccessChain 12 63 + 66: 7(fvec2) Load 65 + 67: 7(fvec2) DPdx 66 + 68: 64(ptr) AccessChain 12 62 + Store 68 67 + 71: 64(ptr) AccessChain 12 70 + 72: 7(fvec2) Load 71 + 73: 7(fvec2) DPdy 72 + 74: 64(ptr) AccessChain 12 69 + Store 74 73 + 76: 64(ptr) AccessChain 12 63 + 77: 7(fvec2) Load 76 + 78: 7(fvec2) Fwidth 77 + 79: 64(ptr) AccessChain 12 75 + Store 79 78 + 81: 64(ptr) AccessChain 12 63 + 82: 7(fvec2) Load 81 + 83: 7(fvec2) DPdxCoarse 82 + 84: 64(ptr) AccessChain 12 80 + Store 84 83 + 86: 64(ptr) AccessChain 12 70 + 87: 7(fvec2) Load 86 + 88: 7(fvec2) DPdyCoarse 87 + 89: 64(ptr) AccessChain 12 85 + Store 89 88 + 91: 64(ptr) AccessChain 12 63 + 92: 7(fvec2) Load 91 + 93: 7(fvec2) FwidthCoarse 92 + 94: 64(ptr) AccessChain 12 90 + Store 94 93 + 96: 64(ptr) AccessChain 12 63 + 97: 7(fvec2) Load 96 + 98: 7(fvec2) DPdxFine 97 + 99: 64(ptr) AccessChain 12 95 + Store 99 98 + 101: 64(ptr) AccessChain 12 70 + 102: 7(fvec2) Load 101 + 103: 7(fvec2) DPdyFine 102 + 104: 64(ptr) AccessChain 12 100 + Store 104 103 + 106: 64(ptr) AccessChain 12 63 + 107: 7(fvec2) Load 106 + 108: 7(fvec2) FwidthFine 107 + 109: 64(ptr) AccessChain 12 105 + Store 109 108 + 113: 112(ptr) AccessChain 12 111 + 114: 8(fvec3) Load 113 + 115: 8(fvec3) DPdx 114 + 116: 112(ptr) AccessChain 12 110 + Store 116 115 + 119: 112(ptr) AccessChain 12 118 + 120: 8(fvec3) Load 119 + 121: 8(fvec3) DPdy 120 + 122: 112(ptr) AccessChain 12 117 + Store 122 121 + 124: 112(ptr) AccessChain 12 111 + 125: 8(fvec3) Load 124 + 126: 8(fvec3) Fwidth 125 + 127: 112(ptr) AccessChain 12 123 + Store 127 126 + 129: 112(ptr) AccessChain 12 111 + 130: 8(fvec3) Load 129 + 131: 8(fvec3) DPdxCoarse 130 + 132: 112(ptr) AccessChain 12 128 + Store 132 131 + 134: 112(ptr) AccessChain 12 118 + 135: 8(fvec3) Load 134 + 136: 8(fvec3) DPdyCoarse 135 + 137: 112(ptr) AccessChain 12 133 + Store 137 136 + 139: 112(ptr) AccessChain 12 111 + 140: 8(fvec3) Load 139 + 141: 8(fvec3) FwidthCoarse 140 + 142: 112(ptr) AccessChain 12 138 + Store 142 141 + 144: 112(ptr) AccessChain 12 111 + 145: 8(fvec3) Load 144 + 146: 8(fvec3) DPdxFine 145 + 147: 112(ptr) AccessChain 12 143 + Store 147 146 + 149: 112(ptr) AccessChain 12 118 + 150: 8(fvec3) Load 149 + 151: 8(fvec3) DPdyFine 150 + 152: 112(ptr) AccessChain 12 148 + Store 152 151 + 154: 112(ptr) AccessChain 12 111 + 155: 8(fvec3) Load 154 + 156: 8(fvec3) FwidthFine 155 + 157: 112(ptr) AccessChain 12 153 + Store 157 156 + 161: 160(ptr) AccessChain 12 159 + 162: 9(fvec4) Load 161 + 163: 9(fvec4) DPdx 162 + 164: 160(ptr) AccessChain 12 158 + Store 164 163 + 167: 160(ptr) AccessChain 12 166 + 168: 9(fvec4) Load 167 + 169: 9(fvec4) DPdy 168 + 170: 160(ptr) AccessChain 12 165 + Store 170 169 + 172: 160(ptr) AccessChain 12 159 + 173: 9(fvec4) Load 172 + 174: 9(fvec4) Fwidth 173 + 175: 160(ptr) AccessChain 12 171 + Store 175 174 + 177: 160(ptr) AccessChain 12 159 + 178: 9(fvec4) Load 177 + 179: 9(fvec4) DPdxCoarse 178 + 180: 160(ptr) AccessChain 12 176 + Store 180 179 + 182: 160(ptr) AccessChain 12 166 + 183: 9(fvec4) Load 182 + 184: 9(fvec4) DPdyCoarse 183 + 185: 160(ptr) AccessChain 12 181 + Store 185 184 + 187: 160(ptr) AccessChain 12 159 + 188: 9(fvec4) Load 187 + 189: 9(fvec4) FwidthCoarse 188 + 190: 160(ptr) AccessChain 12 186 + Store 190 189 + 192: 160(ptr) AccessChain 12 159 + 193: 9(fvec4) Load 192 + 194: 9(fvec4) DPdxFine 193 + 195: 160(ptr) AccessChain 12 191 + Store 195 194 + 197: 160(ptr) AccessChain 12 166 + 198: 9(fvec4) Load 197 + 199: 9(fvec4) DPdyFine 198 + 200: 160(ptr) AccessChain 12 196 + Store 200 199 + 202: 160(ptr) AccessChain 12 159 + 203: 9(fvec4) Load 202 + 204: 9(fvec4) FwidthFine 203 + 205: 160(ptr) AccessChain 12 201 + Store 205 204 + Return + FunctionEnd diff --git a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out new file mode 100644 index 00000000..309ae80d --- /dev/null +++ b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out @@ -0,0 +1,71 @@ +spv.fragmentShaderBarycentric.frag +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5284 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 43 + + Capability Shader + Capability FragmentBarycentricNV + Extension "SPV_NV_fragment_shader_barycentric" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 11 21 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_NV_fragment_shader_barycentric" + Name 4 "main" + Name 8 "value" + Name 11 "gl_BaryCoordNV" + Name 17 "vertices" + MemberName 17(vertices) 0 "attrib" + Name 21 "v" + Decorate 8(value) Location 1 + Decorate 11(gl_BaryCoordNV) BuiltIn BaryCoordNV + Decorate 17(vertices) Block + Decorate 21(v) Location 0 + Decorate 21(v) PerVertexNV + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Output 6(float) + 8(value): 7(ptr) Variable Output + 9: TypeVector 6(float) 3 + 10: TypePointer Input 9(fvec3) +11(gl_BaryCoordNV): 10(ptr) Variable Input + 12: TypeInt 32 0 + 13: 12(int) Constant 0 + 14: TypePointer Input 6(float) + 17(vertices): TypeStruct 6(float) + 18: 12(int) Constant 3 + 19: TypeArray 17(vertices) 18 + 20: TypePointer Input 19 + 21(v): 20(ptr) Variable Input + 22: TypeInt 32 1 + 23: 22(int) Constant 0 + 27: 12(int) Constant 1 + 30: 22(int) Constant 1 + 35: 12(int) Constant 2 + 38: 22(int) Constant 2 + 4(main): 2 Function None 3 + 5: Label + 15: 14(ptr) AccessChain 11(gl_BaryCoordNV) 13 + 16: 6(float) Load 15 + 24: 14(ptr) AccessChain 21(v) 23 23 + 25: 6(float) Load 24 + 26: 6(float) FMul 16 25 + 28: 14(ptr) AccessChain 11(gl_BaryCoordNV) 27 + 29: 6(float) Load 28 + 31: 14(ptr) AccessChain 21(v) 30 23 + 32: 6(float) Load 31 + 33: 6(float) FMul 29 32 + 34: 6(float) FAdd 26 33 + 36: 14(ptr) AccessChain 11(gl_BaryCoordNV) 35 + 37: 6(float) Load 36 + 39: 14(ptr) AccessChain 21(v) 38 23 + 40: 6(float) Load 39 + 41: 6(float) FMul 37 40 + 42: 6(float) FAdd 34 41 + Store 8(value) 42 + Return + FunctionEnd diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out new file mode 100644 index 00000000..31141f9a --- /dev/null +++ b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out @@ -0,0 +1,67 @@ +spv.fragmentShaderBarycentric2.frag +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5284 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 42 + + Capability Shader + Capability FragmentBarycentricNV + Extension "SPV_NV_fragment_shader_barycentric" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 11 20 + ExecutionMode 4 OriginUpperLeft + Source ESSL 320 + SourceExtension "GL_NV_fragment_shader_barycentric" + Name 4 "main" + Name 8 "value" + Name 11 "gl_BaryCoordNoPerspNV" + Name 20 "vertexIDs" + Decorate 8(value) Location 1 + Decorate 11(gl_BaryCoordNoPerspNV) BuiltIn BaryCoordNoPerspNV + Decorate 20(vertexIDs) Location 0 + Decorate 20(vertexIDs) PerVertexNV + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Output 6(float) + 8(value): 7(ptr) Variable Output + 9: TypeVector 6(float) 3 + 10: TypePointer Input 9(fvec3) +11(gl_BaryCoordNoPerspNV): 10(ptr) Variable Input + 12: TypeInt 32 0 + 13: 12(int) Constant 0 + 14: TypePointer Input 6(float) + 17: 12(int) Constant 3 + 18: TypeArray 6(float) 17 + 19: TypePointer Input 18 + 20(vertexIDs): 19(ptr) Variable Input + 21: TypeInt 32 1 + 22: 21(int) Constant 0 + 26: 12(int) Constant 1 + 29: 21(int) Constant 1 + 34: 12(int) Constant 2 + 37: 21(int) Constant 2 + 4(main): 2 Function None 3 + 5: Label + 15: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 13 + 16: 6(float) Load 15 + 23: 14(ptr) AccessChain 20(vertexIDs) 22 + 24: 6(float) Load 23 + 25: 6(float) FMul 16 24 + 27: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 26 + 28: 6(float) Load 27 + 30: 14(ptr) AccessChain 20(vertexIDs) 29 + 31: 6(float) Load 30 + 32: 6(float) FMul 28 31 + 33: 6(float) FAdd 25 32 + 35: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 34 + 36: 6(float) Load 35 + 38: 14(ptr) AccessChain 20(vertexIDs) 37 + 39: 6(float) Load 38 + 40: 6(float) FMul 36 39 + 41: 6(float) FAdd 33 40 + Store 8(value) 41 + Return + FunctionEnd diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out new file mode 100644 index 00000000..9f5f3941 --- /dev/null +++ b/Test/baseResults/spv.meshShaderBuiltins.mesh.out @@ -0,0 +1,261 @@ +spv.meshShaderBuiltins.mesh +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5266 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 147 + + Capability ClipDistance + Capability CullDistance + Capability MultiViewport + Capability DrawParameters + Capability ShaderViewportMaskNV + Capability MeshShadingNV + Extension "SPV_KHR_shader_draw_parameters" + Extension "SPV_NV_mesh_shader" + Extension "SPV_NV_viewport_array2" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshNV 4 "main" 11 17 34 89 129 140 144 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 460 + SourceExtension "GL_NV_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "gid" + Name 17 "gl_WorkGroupID" + Name 30 "gl_MeshPerVertexNV" + MemberName 30(gl_MeshPerVertexNV) 0 "gl_Position" + MemberName 30(gl_MeshPerVertexNV) 1 "gl_PointSize" + MemberName 30(gl_MeshPerVertexNV) 2 "gl_ClipDistance" + MemberName 30(gl_MeshPerVertexNV) 3 "gl_CullDistance" + MemberName 30(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV" + MemberName 30(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV" + MemberName 30(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV" + Name 34 "gl_MeshVerticesNV" + Name 85 "gl_MeshPerPrimitiveNV" + MemberName 85(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID" + MemberName 85(gl_MeshPerPrimitiveNV) 1 "gl_Layer" + MemberName 85(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex" + MemberName 85(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask" + MemberName 85(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV" + MemberName 85(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV" + Name 89 "gl_MeshPrimitivesNV" + Name 129 "gl_PrimitiveIndicesNV" + Name 140 "gl_DrawID" + Name 144 "gl_PrimitiveCountNV" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 30(gl_MeshPerVertexNV) 0 BuiltIn Position + MemberDecorate 30(gl_MeshPerVertexNV) 1 BuiltIn PointSize + MemberDecorate 30(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance + MemberDecorate 30(gl_MeshPerVertexNV) 3 BuiltIn CullDistance + MemberDecorate 30(gl_MeshPerVertexNV) 4 PerViewNV + MemberDecorate 30(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV + MemberDecorate 30(gl_MeshPerVertexNV) 5 PerViewNV + MemberDecorate 30(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV + MemberDecorate 30(gl_MeshPerVertexNV) 6 PerViewNV + MemberDecorate 30(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV + Decorate 30(gl_MeshPerVertexNV) Block + MemberDecorate 85(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId + MemberDecorate 85(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer + MemberDecorate 85(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex + MemberDecorate 85(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 PerViewNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 PerViewNV + MemberDecorate 85(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV + Decorate 85(gl_MeshPerPrimitiveNV) Block + Decorate 129(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV + Decorate 140(gl_DrawID) BuiltIn DrawIndex + Decorate 144(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV + Decorate 146 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: TypeVector 20(float) 4 + 22: 6(int) Constant 4 + 23: TypeArray 20(float) 22 + 24: 6(int) Constant 3 + 25: TypeArray 20(float) 24 + 26: TypeArray 21(fvec4) 22 + 27: 6(int) Constant 8 + 28: TypeArray 20(float) 27 + 29: TypeArray 28 22 +30(gl_MeshPerVertexNV): TypeStruct 21(fvec4) 20(float) 23 25 26 29 29 + 31: 6(int) Constant 81 + 32: TypeArray 30(gl_MeshPerVertexNV) 31 + 33: TypePointer Output 32 +34(gl_MeshVerticesNV): 33(ptr) Variable Output + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 20(float) Constant 1065353216 + 39: 21(fvec4) ConstantComposite 38 38 38 38 + 40: TypePointer Output 21(fvec4) + 43: 36(int) Constant 1 + 44: 20(float) Constant 1073741824 + 45: TypePointer Output 20(float) + 48: 36(int) Constant 2 + 49: 36(int) Constant 3 + 50: 20(float) Constant 1077936128 + 53: 20(float) Constant 1082130432 + 55: 6(int) Constant 1 + 56: 6(int) Constant 264 + 57: 6(int) Constant 2 + 82: TypeArray 36(int) 55 + 83: TypeArray 36(int) 22 + 84: TypeArray 82 22 +85(gl_MeshPerPrimitiveNV): TypeStruct 36(int) 36(int) 36(int) 82 83 84 + 86: 6(int) Constant 32 + 87: TypeArray 85(gl_MeshPerPrimitiveNV) 86 + 88: TypePointer Output 87 +89(gl_MeshPrimitivesNV): 88(ptr) Variable Output + 91: 36(int) Constant 6 + 92: TypePointer Output 36(int) + 95: 36(int) Constant 7 + 98: 36(int) Constant 8 + 101: 36(int) Constant 9 + 127: TypeArray 6(int) 31 + 128: TypePointer Output 127 +129(gl_PrimitiveIndicesNV): 128(ptr) Variable Output + 130: 6(int) Constant 257 + 131: TypePointer Output 6(int) + 139: TypePointer Input 36(int) + 140(gl_DrawID): 139(ptr) Variable Input + 143: 6(int) Constant 16909060 +144(gl_PrimitiveCountNV): 131(ptr) Variable Output + 145: 6(int) Constant 96 + 146: 9(ivec3) ConstantComposite 86 55 55 + 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) + 41: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 35 37 + Store 41 39 + 42: 6(int) Load 8(iid) + 46: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 42 43 + Store 46 44 + 47: 6(int) Load 8(iid) + 51: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 47 48 49 + Store 51 50 + 52: 6(int) Load 8(iid) + 54: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 52 49 48 + Store 54 53 + MemoryBarrier 55 56 + ControlBarrier 57 57 56 + 58: 6(int) Load 8(iid) + 59: 6(int) IAdd 58 55 + 60: 6(int) Load 8(iid) + 61: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 60 37 + 62: 21(fvec4) Load 61 + 63: 40(ptr) AccessChain 34(gl_MeshVerticesNV) 59 37 + Store 63 62 + 64: 6(int) Load 8(iid) + 65: 6(int) IAdd 64 55 + 66: 6(int) Load 8(iid) + 67: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 66 43 + 68: 20(float) Load 67 + 69: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 65 43 + Store 69 68 + 70: 6(int) Load 8(iid) + 71: 6(int) IAdd 70 55 + 72: 6(int) Load 8(iid) + 73: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 72 48 49 + 74: 20(float) Load 73 + 75: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 71 48 49 + Store 75 74 + 76: 6(int) Load 8(iid) + 77: 6(int) IAdd 76 55 + 78: 6(int) Load 8(iid) + 79: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 78 49 48 + 80: 20(float) Load 79 + 81: 45(ptr) AccessChain 34(gl_MeshVerticesNV) 77 49 48 + Store 81 80 + MemoryBarrier 55 56 + ControlBarrier 57 57 56 + 90: 6(int) Load 8(iid) + 93: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 90 37 + Store 93 91 + 94: 6(int) Load 8(iid) + 96: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 94 43 + Store 96 95 + 97: 6(int) Load 8(iid) + 99: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 97 48 + Store 99 98 + 100: 6(int) Load 8(iid) + 102: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 100 49 37 + Store 102 101 + MemoryBarrier 55 56 + ControlBarrier 57 57 56 + 103: 6(int) Load 8(iid) + 104: 6(int) IAdd 103 55 + 105: 6(int) Load 8(iid) + 106: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 105 37 + 107: 36(int) Load 106 + 108: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 104 37 + Store 108 107 + 109: 6(int) Load 8(iid) + 110: 6(int) IAdd 109 55 + 111: 6(int) Load 8(iid) + 112: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 111 43 + 113: 36(int) Load 112 + 114: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 110 43 + Store 114 113 + 115: 6(int) Load 8(iid) + 116: 6(int) IAdd 115 55 + 117: 6(int) Load 8(iid) + 118: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 117 48 + 119: 36(int) Load 118 + 120: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 116 48 + Store 120 119 + 121: 6(int) Load 8(iid) + 122: 6(int) IAdd 121 55 + 123: 6(int) Load 8(iid) + 124: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 123 49 37 + 125: 36(int) Load 124 + 126: 92(ptr) AccessChain 89(gl_MeshPrimitivesNV) 122 49 37 + Store 126 125 + MemoryBarrier 55 56 + ControlBarrier 57 57 56 + 132: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 37 + Store 132 130 + 133: 6(int) Load 16(gid) + 134: 6(int) Load 16(gid) + 135: 6(int) ISub 134 55 + 136: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 135 + 137: 6(int) Load 136 + 138: 131(ptr) AccessChain 129(gl_PrimitiveIndicesNV) 133 + Store 138 137 + 141: 36(int) Load 140(gl_DrawID) + 142: 6(int) Bitcast 141 + 143: 142 WritePackedPrimitiveIndices4x8NV + Store 144(gl_PrimitiveCountNV) 145 + MemoryBarrier 55 56 + ControlBarrier 57 57 56 + Return + FunctionEnd diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out new file mode 100644 index 00000000..25775dfb --- /dev/null +++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out @@ -0,0 +1,214 @@ +spv.meshShaderPerViewBuiltins.mesh +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5266 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 124 + + Capability MultiViewport + Capability PerViewAttributesNV + Capability MeshShadingNV + Extension "SPV_NVX_multiview_per_view_attributes" + Extension "SPV_NV_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshNV 4 "main" 11 20 21 38 70 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_NV_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "viewID" + Name 20 "gl_MeshViewIndicesNV" + Name 21 "gl_MeshViewCountNV" + Name 34 "gl_MeshPerVertexNV" + MemberName 34(gl_MeshPerVertexNV) 0 "gl_Position" + MemberName 34(gl_MeshPerVertexNV) 1 "gl_PointSize" + MemberName 34(gl_MeshPerVertexNV) 2 "gl_ClipDistance" + MemberName 34(gl_MeshPerVertexNV) 3 "gl_CullDistance" + MemberName 34(gl_MeshPerVertexNV) 4 "gl_PositionPerViewNV" + MemberName 34(gl_MeshPerVertexNV) 5 "gl_ClipDistancePerViewNV" + MemberName 34(gl_MeshPerVertexNV) 6 "gl_CullDistancePerViewNV" + Name 38 "gl_MeshVerticesNV" + Name 66 "gl_MeshPerPrimitiveNV" + MemberName 66(gl_MeshPerPrimitiveNV) 0 "gl_PrimitiveID" + MemberName 66(gl_MeshPerPrimitiveNV) 1 "gl_Layer" + MemberName 66(gl_MeshPerPrimitiveNV) 2 "gl_ViewportIndex" + MemberName 66(gl_MeshPerPrimitiveNV) 3 "gl_ViewportMask" + MemberName 66(gl_MeshPerPrimitiveNV) 4 "gl_LayerPerViewNV" + MemberName 66(gl_MeshPerPrimitiveNV) 5 "gl_ViewportMaskPerViewNV" + Name 70 "gl_MeshPrimitivesNV" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV + Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV + MemberDecorate 34(gl_MeshPerVertexNV) 0 BuiltIn Position + MemberDecorate 34(gl_MeshPerVertexNV) 1 BuiltIn PointSize + MemberDecorate 34(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance + MemberDecorate 34(gl_MeshPerVertexNV) 3 BuiltIn CullDistance + MemberDecorate 34(gl_MeshPerVertexNV) 4 PerViewNV + MemberDecorate 34(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV + MemberDecorate 34(gl_MeshPerVertexNV) 5 PerViewNV + MemberDecorate 34(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV + MemberDecorate 34(gl_MeshPerVertexNV) 6 PerViewNV + MemberDecorate 34(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV + Decorate 34(gl_MeshPerVertexNV) Block + MemberDecorate 66(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId + MemberDecorate 66(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer + MemberDecorate 66(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex + MemberDecorate 66(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 4 PerViewNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 5 PerViewNV + MemberDecorate 66(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV + Decorate 66(gl_MeshPerPrimitiveNV) Block + Decorate 123 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: 6(int) Constant 4 + 18: TypeArray 6(int) 17 + 19: TypePointer Input 18 +20(gl_MeshViewIndicesNV): 19(ptr) Variable Input +21(gl_MeshViewCountNV): 13(ptr) Variable Input + 26: TypeFloat 32 + 27: TypeVector 26(float) 4 + 28: 6(int) Constant 1 + 29: TypeArray 26(float) 28 + 30: TypeArray 27(fvec4) 17 + 31: 6(int) Constant 8 + 32: TypeArray 26(float) 31 + 33: TypeArray 32 17 +34(gl_MeshPerVertexNV): TypeStruct 27(fvec4) 26(float) 29 29 30 33 33 + 35: 6(int) Constant 81 + 36: TypeArray 34(gl_MeshPerVertexNV) 35 + 37: TypePointer Output 36 +38(gl_MeshVerticesNV): 37(ptr) Variable Output + 40: TypeInt 32 1 + 41: 40(int) Constant 4 + 43: 26(float) Constant 1065353216 + 44: 26(float) Constant 1073741824 + 45: 26(float) Constant 1077936128 + 46: 26(float) Constant 1082130432 + 47: 27(fvec4) ConstantComposite 43 44 45 46 + 48: TypePointer Output 27(fvec4) + 51: 40(int) Constant 5 + 53: 40(int) Constant 2 + 54: 26(float) Constant 1084227584 + 55: TypePointer Output 26(float) + 58: 40(int) Constant 6 + 60: 40(int) Constant 3 + 61: 26(float) Constant 1086324736 + 63: TypeArray 40(int) 28 + 64: TypeArray 40(int) 17 + 65: TypeArray 63 17 +66(gl_MeshPerPrimitiveNV): TypeStruct 40(int) 40(int) 40(int) 63 64 65 + 67: 6(int) Constant 32 + 68: TypeArray 66(gl_MeshPerPrimitiveNV) 67 + 69: TypePointer Output 68 +70(gl_MeshPrimitivesNV): 69(ptr) Variable Output + 73: 40(int) Constant 7 + 74: TypePointer Output 40(int) + 78: 40(int) Constant 0 + 79: 40(int) Constant 8 + 81: 6(int) Constant 264 + 82: 6(int) Constant 2 + 123: 9(ivec3) ConstantComposite 67 28 28 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 16(viewID): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 22: 6(int) Load 21(gl_MeshViewCountNV) + 23: 6(int) UMod 22 17 + 24: 13(ptr) AccessChain 20(gl_MeshViewIndicesNV) 23 + 25: 6(int) Load 24 + Store 16(viewID) 25 + 39: 6(int) Load 8(iid) + 42: 6(int) Load 16(viewID) + 49: 48(ptr) AccessChain 38(gl_MeshVerticesNV) 39 41 42 + Store 49 47 + 50: 6(int) Load 8(iid) + 52: 6(int) Load 16(viewID) + 56: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 50 51 52 53 + Store 56 54 + 57: 6(int) Load 8(iid) + 59: 6(int) Load 16(viewID) + 62: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 57 58 59 60 + Store 62 61 + 71: 6(int) Load 8(iid) + 72: 6(int) Load 16(viewID) + 75: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 71 41 72 + Store 75 73 + 76: 6(int) Load 8(iid) + 77: 6(int) Load 16(viewID) + 80: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 76 51 77 78 + Store 80 79 + MemoryBarrier 28 81 + ControlBarrier 82 82 81 + 83: 6(int) Load 8(iid) + 84: 6(int) IAdd 83 28 + 85: 6(int) Load 16(viewID) + 86: 6(int) Load 8(iid) + 87: 6(int) Load 16(viewID) + 88: 48(ptr) AccessChain 38(gl_MeshVerticesNV) 86 41 87 + 89: 27(fvec4) Load 88 + 90: 48(ptr) AccessChain 38(gl_MeshVerticesNV) 84 41 85 + Store 90 89 + 91: 6(int) Load 8(iid) + 92: 6(int) IAdd 91 28 + 93: 6(int) Load 16(viewID) + 94: 6(int) Load 8(iid) + 95: 6(int) Load 16(viewID) + 96: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 94 51 95 53 + 97: 26(float) Load 96 + 98: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 92 51 93 53 + Store 98 97 + 99: 6(int) Load 8(iid) + 100: 6(int) IAdd 99 28 + 101: 6(int) Load 16(viewID) + 102: 6(int) Load 8(iid) + 103: 6(int) Load 16(viewID) + 104: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 102 58 103 60 + 105: 26(float) Load 104 + 106: 55(ptr) AccessChain 38(gl_MeshVerticesNV) 100 58 101 60 + Store 106 105 + 107: 6(int) Load 8(iid) + 108: 6(int) IAdd 107 28 + 109: 6(int) Load 16(viewID) + 110: 6(int) Load 8(iid) + 111: 6(int) Load 16(viewID) + 112: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 110 41 111 + 113: 40(int) Load 112 + 114: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 108 41 109 + Store 114 113 + 115: 6(int) Load 8(iid) + 116: 6(int) IAdd 115 28 + 117: 6(int) Load 16(viewID) + 118: 6(int) Load 8(iid) + 119: 6(int) Load 16(viewID) + 120: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 118 51 119 78 + 121: 40(int) Load 120 + 122: 74(ptr) AccessChain 70(gl_MeshPrimitivesNV) 116 51 117 78 + Store 122 121 + MemoryBarrier 28 81 + ControlBarrier 82 82 81 + Return + FunctionEnd diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out new file mode 100644 index 00000000..972b0156 --- /dev/null +++ b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out @@ -0,0 +1,158 @@ +spv.meshShaderPerViewUserDefined.mesh +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5266 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 90 + + Capability MeshShadingNV + Extension "SPV_NV_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshNV 4 "main" 11 20 21 35 67 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_NV_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "viewID" + Name 20 "gl_MeshViewIndicesNV" + Name 21 "gl_MeshViewCountNV" + Name 31 "block" + MemberName 31(block) 0 "color1" + MemberName 31(block) 1 "color2" + MemberName 31(block) 2 "color3" + MemberName 31(block) 3 "color4" + Name 35 "b" + Name 64 "perviewBlock" + MemberName 64(perviewBlock) 0 "color5" + MemberName 64(perviewBlock) 1 "color6" + MemberName 64(perviewBlock) 2 "color7" + MemberName 64(perviewBlock) 3 "color8" + Name 67 "b2" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV + Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV + MemberDecorate 31(block) 0 PerPrimitiveNV + MemberDecorate 31(block) 0 PerViewNV + MemberDecorate 31(block) 1 PerPrimitiveNV + MemberDecorate 31(block) 2 PerViewNV + Decorate 31(block) Block + Decorate 35(b) Location 0 + MemberDecorate 64(perviewBlock) 0 PerPrimitiveNV + MemberDecorate 64(perviewBlock) 0 PerViewNV + MemberDecorate 64(perviewBlock) 1 PerPrimitiveNV + MemberDecorate 64(perviewBlock) 1 PerViewNV + MemberDecorate 64(perviewBlock) 2 PerViewNV + MemberDecorate 64(perviewBlock) 3 PerViewNV + Decorate 64(perviewBlock) Block + Decorate 67(b2) Location 10 + Decorate 89 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: 6(int) Constant 4 + 18: TypeArray 6(int) 17 + 19: TypePointer Input 18 +20(gl_MeshViewIndicesNV): 19(ptr) Variable Input +21(gl_MeshViewCountNV): 13(ptr) Variable Input + 26: TypeFloat 32 + 27: TypeVector 26(float) 4 + 28: 6(int) Constant 3 + 29: TypeArray 27(fvec4) 28 + 30: TypeArray 29 17 + 31(block): TypeStruct 30 29 30 27(fvec4) + 32: 6(int) Constant 81 + 33: TypeArray 31(block) 32 + 34: TypePointer Output 33 + 35(b): 34(ptr) Variable Output + 37: TypeInt 32 1 + 38: 37(int) Constant 0 + 40: 37(int) Constant 2 + 41: 26(float) Constant 1065353216 + 42: 27(fvec4) ConstantComposite 41 41 41 41 + 43: TypePointer Output 27(fvec4) + 46: 37(int) Constant 1 + 47: 26(float) Constant 1073741824 + 48: 27(fvec4) ConstantComposite 47 47 47 47 + 52: 26(float) Constant 1077936128 + 53: 27(fvec4) ConstantComposite 52 52 52 52 + 56: 37(int) Constant 3 + 57: 26(float) Constant 1082130432 + 58: 27(fvec4) ConstantComposite 57 57 57 57 + 60: 6(int) Constant 1 + 61: 6(int) Constant 264 + 62: 6(int) Constant 2 + 63: TypeArray 27(fvec4) 17 +64(perviewBlock): TypeStruct 63 30 30 63 + 65: TypeArray 64(perviewBlock) 32 + 66: TypePointer Output 65 + 67(b2): 66(ptr) Variable Output + 70: 26(float) Constant 1084227584 + 71: 27(fvec4) ConstantComposite 70 70 70 70 + 75: 26(float) Constant 1086324736 + 76: 27(fvec4) ConstantComposite 75 75 75 75 + 80: 26(float) Constant 1088421888 + 81: 27(fvec4) ConstantComposite 80 80 80 80 + 85: 26(float) Constant 1090519040 + 86: 27(fvec4) ConstantComposite 85 85 85 85 + 88: 6(int) Constant 32 + 89: 9(ivec3) ConstantComposite 88 60 60 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 16(viewID): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 22: 6(int) Load 21(gl_MeshViewCountNV) + 23: 6(int) UMod 22 17 + 24: 13(ptr) AccessChain 20(gl_MeshViewIndicesNV) 23 + 25: 6(int) Load 24 + Store 16(viewID) 25 + 36: 6(int) Load 8(iid) + 39: 6(int) Load 16(viewID) + 44: 43(ptr) AccessChain 35(b) 36 38 39 40 + Store 44 42 + 45: 6(int) Load 8(iid) + 49: 43(ptr) AccessChain 35(b) 45 46 46 + Store 49 48 + 50: 6(int) Load 8(iid) + 51: 6(int) Load 16(viewID) + 54: 43(ptr) AccessChain 35(b) 50 40 51 40 + Store 54 53 + 55: 6(int) Load 8(iid) + 59: 43(ptr) AccessChain 35(b) 55 56 + Store 59 58 + MemoryBarrier 60 61 + ControlBarrier 62 62 61 + 68: 6(int) Load 8(iid) + 69: 6(int) Load 16(viewID) + 72: 43(ptr) AccessChain 67(b2) 68 38 69 + Store 72 71 + 73: 6(int) Load 8(iid) + 74: 6(int) Load 16(viewID) + 77: 43(ptr) AccessChain 67(b2) 73 46 74 46 + Store 77 76 + 78: 6(int) Load 8(iid) + 79: 6(int) Load 16(viewID) + 82: 43(ptr) AccessChain 67(b2) 78 40 79 40 + Store 82 81 + 83: 6(int) Load 8(iid) + 84: 6(int) Load 16(viewID) + 87: 43(ptr) AccessChain 67(b2) 83 56 84 + Store 87 86 + MemoryBarrier 60 61 + ControlBarrier 62 62 61 + Return + FunctionEnd diff --git a/Test/baseResults/spv.meshShaderSharedMem.mesh.out b/Test/baseResults/spv.meshShaderSharedMem.mesh.out new file mode 100644 index 00000000..c0a481fb --- /dev/null +++ b/Test/baseResults/spv.meshShaderSharedMem.mesh.out @@ -0,0 +1,130 @@ +spv.meshShaderSharedMem.mesh +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5266 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 77 + + Capability StorageImageWriteWithoutFormat + Capability MeshShadingNV + Extension "SPV_NV_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshNV 4 "main" 11 17 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_NV_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" + 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 55(uni_image) DescriptorSet 0 + Decorate 55(uni_image) NonReadable + Decorate 76 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: 6(int) Constant 32 + 76: 9(ivec3) ConstantComposite 75 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 + Return + FunctionEnd diff --git a/Test/baseResults/spv.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.meshShaderTaskMem.mesh.out new file mode 100644 index 00000000..fc4ff515 --- /dev/null +++ b/Test/baseResults/spv.meshShaderTaskMem.mesh.out @@ -0,0 +1,109 @@ +spv.meshShaderTaskMem.mesh +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5266 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 58 + + Capability MeshShadingNV + Extension "SPV_NV_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshNV 4 "main" 11 22 30 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_NV_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 27 ArrayStride 4 + MemberDecorate 28(taskBlock) 0 PerTaskNV + MemberDecorate 28(taskBlock) 0 Offset 0 + MemberDecorate 28(taskBlock) 1 PerTaskNV + MemberDecorate 28(taskBlock) 1 Offset 16 + Decorate 28(taskBlock) Block + Decorate 35 ArrayStride 4 + MemberDecorate 36(bufferBlock) 0 Offset 0 + MemberDecorate 36(bufferBlock) 1 Offset 16 + Decorate 36(bufferBlock) BufferBlock + Decorate 38(mybuf) DescriptorSet 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 Input 28(taskBlock) + 30(mytask): 29(ptr) Variable Input + 31: 24(int) Constant 1 + 32: TypePointer Input 16(float) + 35: TypeArray 16(float) 26 + 36(bufferBlock): TypeStruct 35 17(fvec4) + 37: TypePointer Uniform 36(bufferBlock) + 38(mybuf): 37(ptr) Variable Uniform + 39: TypePointer Uniform 16(float) + 43: TypePointer Output 16(float) + 46: TypePointer Input 17(fvec4) + 49: TypePointer Uniform 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.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.meshShaderUserDefined.mesh.out new file mode 100644 index 00000000..c14e19c7 --- /dev/null +++ b/Test/baseResults/spv.meshShaderUserDefined.mesh.out @@ -0,0 +1,205 @@ +spv.meshShaderUserDefined.mesh +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5266 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 138 + + Capability MeshShadingNV + Extension "SPV_NV_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshNV 4 "main" 11 17 34 101 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_NV_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 97 "myblock2" + MemberName 97(myblock2) 0 "f" + MemberName 97(myblock2) 1 "pos" + MemberName 97(myblock2) 2 "m" + Name 101 "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 97(myblock2) Block + Decorate 101(blk2) Location 20 + Decorate 137 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 + 68: TypePointer Output 24(fvec4) + 74: 36(int) Constant 4 + 75: 20(float) Constant 1098907648 + 76: 24(fvec4) ConstantComposite 55 53 54 75 + 81: 36(int) Constant 5 + 84: 6(int) Constant 3 + 91: 20(float) Constant 1099431936 + 92: 20(float) Constant 1099956224 + 93: 20(float) Constant 1100480512 + 94: 23(fvec3) ConstantComposite 91 92 93 + 96: 6(int) Constant 264 + 97(myblock2): TypeStruct 20(float) 24(fvec4) 26 + 98: 6(int) Constant 81 + 99: TypeArray 97(myblock2) 98 + 100: TypePointer Output 99 + 101(blk2): 100(ptr) Variable Output + 107: 20(float) Constant 1101004800 + 111: 20(float) Constant 1101529088 + 112: 20(float) Constant 1102053376 + 113: 20(float) Constant 1102577664 + 114: 20(float) Constant 1103101952 + 115: 24(fvec4) ConstantComposite 111 112 113 114 + 127: 20(float) Constant 1105723392 + 137: 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 + 69: 68(ptr) AccessChain 34(blk) 62 63 44 + 70: 24(fvec4) Load 69 + 71: 24(fvec4) VectorShuffle 70 67 0 4 5 6 + Store 69 71 + 72: 6(int) Load 8(iid) + 73: 6(int) UDiv 72 21 + 77: 68(ptr) AccessChain 34(blk) 73 74 52 + 78: 24(fvec4) Load 77 + 79: 24(fvec4) VectorShuffle 78 76 7 6 5 4 + Store 77 79 + 80: 6(int) Load 8(iid) + 82: 6(int) Load 8(iid) + 83: 6(int) UDiv 82 21 + 85: 39(ptr) AccessChain 34(blk) 83 74 52 84 + 86: 20(float) Load 85 + 87: 39(ptr) AccessChain 34(blk) 80 81 37 44 42 + Store 87 86 + 88: 6(int) Load 8(iid) + 89: 6(int) IMul 88 21 + 90: 6(int) Load 16(gid) + 95: 57(ptr) AccessChain 34(blk) 89 81 44 90 + Store 95 94 + MemoryBarrier 42 96 + ControlBarrier 28 28 96 + 102: 6(int) Load 8(iid) + 103: 6(int) Load 8(iid) + 104: 6(int) ISub 103 42 + 105: 39(ptr) AccessChain 101(blk2) 104 37 + 106: 20(float) Load 105 + 108: 20(float) FAdd 106 107 + 109: 39(ptr) AccessChain 101(blk2) 102 37 + Store 109 108 + 110: 6(int) Load 8(iid) + 116: 68(ptr) AccessChain 101(blk2) 110 44 + Store 116 115 + 117: 6(int) Load 8(iid) + 118: 6(int) IAdd 117 42 + 119: 6(int) Load 16(gid) + 120: 6(int) Load 8(iid) + 121: 68(ptr) AccessChain 101(blk2) 120 44 + 122: 24(fvec4) Load 121 + 123: 68(ptr) AccessChain 101(blk2) 118 52 119 + Store 123 122 + 124: 6(int) Load 8(iid) + 125: 6(int) IAdd 124 42 + 126: 6(int) Load 16(gid) + 128: 39(ptr) AccessChain 101(blk2) 125 52 126 28 + Store 128 127 + 129: 6(int) Load 8(iid) + 130: 6(int) IAdd 129 28 + 131: 6(int) Load 8(iid) + 132: 6(int) IAdd 131 42 + 133: 6(int) Load 16(gid) + 134: 68(ptr) AccessChain 101(blk2) 132 52 133 + 135: 24(fvec4) Load 134 + 136: 68(ptr) AccessChain 101(blk2) 130 52 63 + Store 136 135 + MemoryBarrier 42 96 + ControlBarrier 28 28 96 + Return + FunctionEnd diff --git a/Test/baseResults/spv.meshTaskShader.task.out b/Test/baseResults/spv.meshTaskShader.task.out new file mode 100644 index 00000000..30475b27 --- /dev/null +++ b/Test/baseResults/spv.meshTaskShader.task.out @@ -0,0 +1,174 @@ +spv.meshTaskShader.task +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5266 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 104 + + Capability StorageImageWriteWithoutFormat + Capability MeshShadingNV + Extension "SPV_NV_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TaskNV 4 "main" 11 17 80 101 + ExecutionMode 4 LocalSize 32 1 1 + Source GLSL 450 + SourceExtension "GL_NV_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" + Name 101 "gl_TaskCountNV" + 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 55(uni_image) DescriptorSet 0 + Decorate 55(uni_image) Binding 0 + Decorate 55(uni_image) NonReadable + Decorate 77 ArrayStride 8 + MemberDecorate 78(Task) 0 PerTaskNV + MemberDecorate 78(Task) 0 Offset 0 + MemberDecorate 78(Task) 1 PerTaskNV + MemberDecorate 78(Task) 1 Offset 8 + Decorate 78(Task) Block + Decorate 101(gl_TaskCountNV) BuiltIn TaskCountNV + Decorate 103 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 Output 78(Task) + 80(mytask): 79(ptr) Variable Output + 81: 30(float) Constant 1106247680 + 82: 30(float) Constant 1106771968 + 83: 75(fvec2) ConstantComposite 81 82 + 84: TypePointer Output 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: TypePointer Output 6(int) +101(gl_TaskCountNV): 100(ptr) Variable Output + 102: 6(int) Constant 32 + 103: 9(ivec3) ConstantComposite 102 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 + Store 101(gl_TaskCountNV) 76 + Return + FunctionEnd diff --git a/Test/baseResults/spv.shaderImageFootprint.frag.out b/Test/baseResults/spv.shaderImageFootprint.frag.out new file mode 100644 index 00000000..31a5f9c5 --- /dev/null +++ b/Test/baseResults/spv.shaderImageFootprint.frag.out @@ -0,0 +1,851 @@ +spv.shaderImageFootprint.frag +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5282 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 622 + + Capability Shader + Capability MinLod + Capability Bad + Extension "SPV_NV_shader_image_footprint" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 21 24 76 125 225 275 277 387 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_NV_shader_texture_footprint" + Name 4 "main" + Name 8 "result2D" + MemberName 8(result2D) 0 "ret2D" + MemberName 8(result2D) 1 "anchor2D" + MemberName 8(result2D) 2 "offset2D" + MemberName 8(result2D) 3 "mask2D" + MemberName 8(result2D) 4 "lod2D" + MemberName 8(result2D) 5 "granularity2D" + Name 10 "" + Name 17 "sample2D" + Name 21 "P2" + Name 24 "granularity" + Name 28 "gl_TextureFootprint2DNV" + MemberName 28(gl_TextureFootprint2DNV) 0 "anchor" + MemberName 28(gl_TextureFootprint2DNV) 1 "offset" + MemberName 28(gl_TextureFootprint2DNV) 2 "mask" + MemberName 28(gl_TextureFootprint2DNV) 3 "lod" + MemberName 28(gl_TextureFootprint2DNV) 4 "granularity" + Name 30 "fp2D" + Name 31 "ResType" + Name 76 "bias" + Name 78 "ResType" + Name 125 "lodClamp" + Name 128 "ResType" + Name 178 "ResType" + Name 225 "lod" + Name 228 "ResType" + Name 275 "dx" + Name 277 "dy" + Name 280 "ResType" + Name 331 "ResType" + Name 377 "result3D" + MemberName 377(result3D) 0 "ret3D" + MemberName 377(result3D) 1 "anchor3D" + MemberName 377(result3D) 2 "offset3D" + MemberName 377(result3D) 3 "mask3D" + MemberName 377(result3D) 4 "lod3D" + MemberName 377(result3D) 5 "granularity3D" + Name 379 "" + Name 383 "sample3D" + Name 387 "P3" + Name 390 "gl_TextureFootprint3DNV" + MemberName 390(gl_TextureFootprint3DNV) 0 "anchor" + MemberName 390(gl_TextureFootprint3DNV) 1 "offset" + MemberName 390(gl_TextureFootprint3DNV) 2 "mask" + MemberName 390(gl_TextureFootprint3DNV) 3 "lod" + MemberName 390(gl_TextureFootprint3DNV) 4 "granularity" + Name 392 "fp3D" + Name 393 "ResType" + Name 429 "ResType" + Name 478 "ResType" + Name 528 "ResType" + Name 577 "ResType" + MemberDecorate 8(result2D) 0 Offset 0 + MemberDecorate 8(result2D) 1 Offset 8 + MemberDecorate 8(result2D) 2 Offset 16 + MemberDecorate 8(result2D) 3 Offset 24 + MemberDecorate 8(result2D) 4 Offset 32 + MemberDecorate 8(result2D) 5 Offset 36 + Decorate 8(result2D) BufferBlock + Decorate 10 DescriptorSet 0 + Decorate 17(sample2D) DescriptorSet 0 + Decorate 21(P2) Location 0 + Decorate 24(granularity) Flat + Decorate 24(granularity) Location 3 + Decorate 76(bias) Location 9 + Decorate 125(lodClamp) Location 4 + Decorate 225(lod) Location 5 + Decorate 275(dx) Location 6 + Decorate 277(dy) Location 8 + MemberDecorate 377(result3D) 0 Offset 0 + MemberDecorate 377(result3D) 1 Offset 16 + MemberDecorate 377(result3D) 2 Offset 32 + MemberDecorate 377(result3D) 3 Offset 48 + MemberDecorate 377(result3D) 4 Offset 56 + MemberDecorate 377(result3D) 5 Offset 60 + Decorate 377(result3D) BufferBlock + Decorate 379 DescriptorSet 0 + Decorate 383(sample3D) DescriptorSet 0 + Decorate 387(P3) Location 2 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8(result2D): TypeStruct 6(int) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 9: TypePointer Uniform 8(result2D) + 10: 9(ptr) Variable Uniform + 11: TypeInt 32 1 + 12: 11(int) Constant 0 + 13: TypeFloat 32 + 14: TypeImage 13(float) 2D sampled format:Unknown + 15: TypeSampledImage 14 + 16: TypePointer UniformConstant 15 + 17(sample2D): 16(ptr) Variable UniformConstant + 19: TypeVector 13(float) 2 + 20: TypePointer Input 19(fvec2) + 21(P2): 20(ptr) Variable Input + 23: TypePointer Input 11(int) + 24(granularity): 23(ptr) Variable Input + 26: TypeBool + 27: 26(bool) ConstantTrue +28(gl_TextureFootprint2DNV): TypeStruct 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 29: TypePointer Function 28(gl_TextureFootprint2DNV) + 31(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 34: TypePointer Function 7(ivec2) + 36: 11(int) Constant 1 + 39: 11(int) Constant 2 + 42: 11(int) Constant 3 + 44: TypePointer Function 6(int) + 46: 11(int) Constant 4 + 50: 6(int) Constant 1 + 51: 6(int) Constant 0 + 53: TypePointer Uniform 6(int) + 57: TypePointer Uniform 7(ivec2) + 68: 11(int) Constant 5 + 75: TypePointer Input 13(float) + 76(bias): 75(ptr) Variable Input + 78(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 125(lodClamp): 75(ptr) Variable Input + 128(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 178(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 225(lod): 75(ptr) Variable Input + 228(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 275(dx): 20(ptr) Variable Input + 277(dy): 20(ptr) Variable Input + 280(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 331(ResType): TypeStruct 26(bool) 7(ivec2) 7(ivec2) 7(ivec2) 6(int) 6(int) + 376: TypeVector 6(int) 3 + 377(result3D): TypeStruct 6(int) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) + 378: TypePointer Uniform 377(result3D) + 379: 378(ptr) Variable Uniform + 380: TypeImage 13(float) 3D sampled format:Unknown + 381: TypeSampledImage 380 + 382: TypePointer UniformConstant 381 + 383(sample3D): 382(ptr) Variable UniformConstant + 385: TypeVector 13(float) 3 + 386: TypePointer Input 385(fvec3) + 387(P3): 386(ptr) Variable Input +390(gl_TextureFootprint3DNV): TypeStruct 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) + 391: TypePointer Function 390(gl_TextureFootprint3DNV) + 393(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) + 396: TypePointer Function 376(ivec3) + 411: TypePointer Uniform 376(ivec3) + 429(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) + 478(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) + 528(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) + 577(ResType): TypeStruct 26(bool) 376(ivec3) 376(ivec3) 7(ivec2) 6(int) 6(int) + 4(main): 2 Function None 3 + 5: Label + 30(fp2D): 29(ptr) Variable Function + 392(fp3D): 391(ptr) Variable Function + 18: 15 Load 17(sample2D) + 22: 19(fvec2) Load 21(P2) + 25: 11(int) Load 24(granularity) + 32: 31(ResType) ImageSampleFootprintNV 18 22 25 27 + 33: 7(ivec2) CompositeExtract 32 1 + 35: 34(ptr) AccessChain 30(fp2D) 12 + Store 35 33 + 37: 7(ivec2) CompositeExtract 32 2 + 38: 34(ptr) AccessChain 30(fp2D) 36 + Store 38 37 + 40: 7(ivec2) CompositeExtract 32 3 + 41: 34(ptr) AccessChain 30(fp2D) 39 + Store 41 40 + 43: 6(int) CompositeExtract 32 4 + 45: 44(ptr) AccessChain 30(fp2D) 42 + Store 45 43 + 47: 6(int) CompositeExtract 32 5 + 48: 44(ptr) AccessChain 30(fp2D) 46 + Store 48 47 + 49: 26(bool) CompositeExtract 32 0 + 52: 6(int) Select 49 50 51 + 54: 53(ptr) AccessChain 10 12 + Store 54 52 + 55: 34(ptr) AccessChain 30(fp2D) 12 + 56: 7(ivec2) Load 55 + 58: 57(ptr) AccessChain 10 36 + Store 58 56 + 59: 34(ptr) AccessChain 30(fp2D) 36 + 60: 7(ivec2) Load 59 + 61: 57(ptr) AccessChain 10 39 + Store 61 60 + 62: 34(ptr) AccessChain 30(fp2D) 39 + 63: 7(ivec2) Load 62 + 64: 57(ptr) AccessChain 10 42 + Store 64 63 + 65: 44(ptr) AccessChain 30(fp2D) 42 + 66: 6(int) Load 65 + 67: 53(ptr) AccessChain 10 46 + Store 67 66 + 69: 44(ptr) AccessChain 30(fp2D) 46 + 70: 6(int) Load 69 + 71: 53(ptr) AccessChain 10 68 + Store 71 70 + 72: 15 Load 17(sample2D) + 73: 19(fvec2) Load 21(P2) + 74: 11(int) Load 24(granularity) + 77: 13(float) Load 76(bias) + 79: 78(ResType) ImageSampleFootprintNV 72 73 74 27 Bias 77 + 80: 7(ivec2) CompositeExtract 79 1 + 81: 34(ptr) AccessChain 30(fp2D) 12 + Store 81 80 + 82: 7(ivec2) CompositeExtract 79 2 + 83: 34(ptr) AccessChain 30(fp2D) 36 + Store 83 82 + 84: 7(ivec2) CompositeExtract 79 3 + 85: 34(ptr) AccessChain 30(fp2D) 39 + Store 85 84 + 86: 6(int) CompositeExtract 79 4 + 87: 44(ptr) AccessChain 30(fp2D) 42 + Store 87 86 + 88: 6(int) CompositeExtract 79 5 + 89: 44(ptr) AccessChain 30(fp2D) 46 + Store 89 88 + 90: 26(bool) CompositeExtract 79 0 + 91: 6(int) Select 90 50 51 + 92: 53(ptr) AccessChain 10 12 + Store 92 91 + 93: 34(ptr) AccessChain 30(fp2D) 12 + 94: 7(ivec2) Load 93 + 95: 57(ptr) AccessChain 10 36 + 96: 7(ivec2) Load 95 + 97: 7(ivec2) IAdd 96 94 + 98: 57(ptr) AccessChain 10 36 + Store 98 97 + 99: 34(ptr) AccessChain 30(fp2D) 36 + 100: 7(ivec2) Load 99 + 101: 57(ptr) AccessChain 10 39 + 102: 7(ivec2) Load 101 + 103: 7(ivec2) IAdd 102 100 + 104: 57(ptr) AccessChain 10 39 + Store 104 103 + 105: 34(ptr) AccessChain 30(fp2D) 39 + 106: 7(ivec2) Load 105 + 107: 57(ptr) AccessChain 10 42 + 108: 7(ivec2) Load 107 + 109: 7(ivec2) IAdd 108 106 + 110: 57(ptr) AccessChain 10 42 + Store 110 109 + 111: 44(ptr) AccessChain 30(fp2D) 42 + 112: 6(int) Load 111 + 113: 53(ptr) AccessChain 10 46 + 114: 6(int) Load 113 + 115: 6(int) IAdd 114 112 + 116: 53(ptr) AccessChain 10 46 + Store 116 115 + 117: 44(ptr) AccessChain 30(fp2D) 46 + 118: 6(int) Load 117 + 119: 53(ptr) AccessChain 10 68 + 120: 6(int) Load 119 + 121: 6(int) IAdd 120 118 + 122: 53(ptr) AccessChain 10 68 + Store 122 121 + 123: 15 Load 17(sample2D) + 124: 19(fvec2) Load 21(P2) + 126: 13(float) Load 125(lodClamp) + 127: 11(int) Load 24(granularity) + 129:128(ResType) ImageSampleFootprintNV 123 124 127 27 MinLod 126 + 130: 7(ivec2) CompositeExtract 129 1 + 131: 34(ptr) AccessChain 30(fp2D) 12 + Store 131 130 + 132: 7(ivec2) CompositeExtract 129 2 + 133: 34(ptr) AccessChain 30(fp2D) 36 + Store 133 132 + 134: 7(ivec2) CompositeExtract 129 3 + 135: 34(ptr) AccessChain 30(fp2D) 39 + Store 135 134 + 136: 6(int) CompositeExtract 129 4 + 137: 44(ptr) AccessChain 30(fp2D) 42 + Store 137 136 + 138: 6(int) CompositeExtract 129 5 + 139: 44(ptr) AccessChain 30(fp2D) 46 + Store 139 138 + 140: 26(bool) CompositeExtract 129 0 + 141: 6(int) Select 140 50 51 + 142: 53(ptr) AccessChain 10 12 + Store 142 141 + 143: 34(ptr) AccessChain 30(fp2D) 12 + 144: 7(ivec2) Load 143 + 145: 57(ptr) AccessChain 10 36 + 146: 7(ivec2) Load 145 + 147: 7(ivec2) IAdd 146 144 + 148: 57(ptr) AccessChain 10 36 + Store 148 147 + 149: 34(ptr) AccessChain 30(fp2D) 36 + 150: 7(ivec2) Load 149 + 151: 57(ptr) AccessChain 10 39 + 152: 7(ivec2) Load 151 + 153: 7(ivec2) IAdd 152 150 + 154: 57(ptr) AccessChain 10 39 + Store 154 153 + 155: 34(ptr) AccessChain 30(fp2D) 39 + 156: 7(ivec2) Load 155 + 157: 57(ptr) AccessChain 10 42 + 158: 7(ivec2) Load 157 + 159: 7(ivec2) IAdd 158 156 + 160: 57(ptr) AccessChain 10 42 + Store 160 159 + 161: 44(ptr) AccessChain 30(fp2D) 42 + 162: 6(int) Load 161 + 163: 53(ptr) AccessChain 10 46 + 164: 6(int) Load 163 + 165: 6(int) IAdd 164 162 + 166: 53(ptr) AccessChain 10 46 + Store 166 165 + 167: 44(ptr) AccessChain 30(fp2D) 46 + 168: 6(int) Load 167 + 169: 53(ptr) AccessChain 10 68 + 170: 6(int) Load 169 + 171: 6(int) IAdd 170 168 + 172: 53(ptr) AccessChain 10 68 + Store 172 171 + 173: 15 Load 17(sample2D) + 174: 19(fvec2) Load 21(P2) + 175: 13(float) Load 125(lodClamp) + 176: 11(int) Load 24(granularity) + 177: 13(float) Load 76(bias) + 179:178(ResType) ImageSampleFootprintNV 173 174 176 27 Bias MinLod 177 175 + 180: 7(ivec2) CompositeExtract 179 1 + 181: 34(ptr) AccessChain 30(fp2D) 12 + Store 181 180 + 182: 7(ivec2) CompositeExtract 179 2 + 183: 34(ptr) AccessChain 30(fp2D) 36 + Store 183 182 + 184: 7(ivec2) CompositeExtract 179 3 + 185: 34(ptr) AccessChain 30(fp2D) 39 + Store 185 184 + 186: 6(int) CompositeExtract 179 4 + 187: 44(ptr) AccessChain 30(fp2D) 42 + Store 187 186 + 188: 6(int) CompositeExtract 179 5 + 189: 44(ptr) AccessChain 30(fp2D) 46 + Store 189 188 + 190: 26(bool) CompositeExtract 179 0 + 191: 6(int) Select 190 50 51 + 192: 53(ptr) AccessChain 10 12 + Store 192 191 + 193: 34(ptr) AccessChain 30(fp2D) 12 + 194: 7(ivec2) Load 193 + 195: 57(ptr) AccessChain 10 36 + 196: 7(ivec2) Load 195 + 197: 7(ivec2) IAdd 196 194 + 198: 57(ptr) AccessChain 10 36 + Store 198 197 + 199: 34(ptr) AccessChain 30(fp2D) 36 + 200: 7(ivec2) Load 199 + 201: 57(ptr) AccessChain 10 39 + 202: 7(ivec2) Load 201 + 203: 7(ivec2) IAdd 202 200 + 204: 57(ptr) AccessChain 10 39 + Store 204 203 + 205: 34(ptr) AccessChain 30(fp2D) 39 + 206: 7(ivec2) Load 205 + 207: 57(ptr) AccessChain 10 42 + 208: 7(ivec2) Load 207 + 209: 7(ivec2) IAdd 208 206 + 210: 57(ptr) AccessChain 10 42 + Store 210 209 + 211: 44(ptr) AccessChain 30(fp2D) 42 + 212: 6(int) Load 211 + 213: 53(ptr) AccessChain 10 46 + 214: 6(int) Load 213 + 215: 6(int) IAdd 214 212 + 216: 53(ptr) AccessChain 10 46 + Store 216 215 + 217: 44(ptr) AccessChain 30(fp2D) 46 + 218: 6(int) Load 217 + 219: 53(ptr) AccessChain 10 68 + 220: 6(int) Load 219 + 221: 6(int) IAdd 220 218 + 222: 53(ptr) AccessChain 10 68 + Store 222 221 + 223: 15 Load 17(sample2D) + 224: 19(fvec2) Load 21(P2) + 226: 13(float) Load 225(lod) + 227: 11(int) Load 24(granularity) + 229:228(ResType) ImageSampleFootprintNV 223 224 227 27 Lod 226 + 230: 7(ivec2) CompositeExtract 229 1 + 231: 34(ptr) AccessChain 30(fp2D) 12 + Store 231 230 + 232: 7(ivec2) CompositeExtract 229 2 + 233: 34(ptr) AccessChain 30(fp2D) 36 + Store 233 232 + 234: 7(ivec2) CompositeExtract 229 3 + 235: 34(ptr) AccessChain 30(fp2D) 39 + Store 235 234 + 236: 6(int) CompositeExtract 229 4 + 237: 44(ptr) AccessChain 30(fp2D) 42 + Store 237 236 + 238: 6(int) CompositeExtract 229 5 + 239: 44(ptr) AccessChain 30(fp2D) 46 + Store 239 238 + 240: 26(bool) CompositeExtract 229 0 + 241: 6(int) Select 240 50 51 + 242: 53(ptr) AccessChain 10 12 + Store 242 241 + 243: 34(ptr) AccessChain 30(fp2D) 12 + 244: 7(ivec2) Load 243 + 245: 57(ptr) AccessChain 10 36 + 246: 7(ivec2) Load 245 + 247: 7(ivec2) IAdd 246 244 + 248: 57(ptr) AccessChain 10 36 + Store 248 247 + 249: 34(ptr) AccessChain 30(fp2D) 36 + 250: 7(ivec2) Load 249 + 251: 57(ptr) AccessChain 10 39 + 252: 7(ivec2) Load 251 + 253: 7(ivec2) IAdd 252 250 + 254: 57(ptr) AccessChain 10 39 + Store 254 253 + 255: 34(ptr) AccessChain 30(fp2D) 39 + 256: 7(ivec2) Load 255 + 257: 57(ptr) AccessChain 10 42 + 258: 7(ivec2) Load 257 + 259: 7(ivec2) IAdd 258 256 + 260: 57(ptr) AccessChain 10 42 + Store 260 259 + 261: 44(ptr) AccessChain 30(fp2D) 42 + 262: 6(int) Load 261 + 263: 53(ptr) AccessChain 10 46 + 264: 6(int) Load 263 + 265: 6(int) IAdd 264 262 + 266: 53(ptr) AccessChain 10 46 + Store 266 265 + 267: 44(ptr) AccessChain 30(fp2D) 46 + 268: 6(int) Load 267 + 269: 53(ptr) AccessChain 10 68 + 270: 6(int) Load 269 + 271: 6(int) IAdd 270 268 + 272: 53(ptr) AccessChain 10 68 + Store 272 271 + 273: 15 Load 17(sample2D) + 274: 19(fvec2) Load 21(P2) + 276: 19(fvec2) Load 275(dx) + 278: 19(fvec2) Load 277(dy) + 279: 11(int) Load 24(granularity) + 281:280(ResType) ImageSampleFootprintNV 273 274 279 27 Grad 276 278 + 282: 7(ivec2) CompositeExtract 281 1 + 283: 34(ptr) AccessChain 30(fp2D) 12 + Store 283 282 + 284: 7(ivec2) CompositeExtract 281 2 + 285: 34(ptr) AccessChain 30(fp2D) 36 + Store 285 284 + 286: 7(ivec2) CompositeExtract 281 3 + 287: 34(ptr) AccessChain 30(fp2D) 39 + Store 287 286 + 288: 6(int) CompositeExtract 281 4 + 289: 44(ptr) AccessChain 30(fp2D) 42 + Store 289 288 + 290: 6(int) CompositeExtract 281 5 + 291: 44(ptr) AccessChain 30(fp2D) 46 + Store 291 290 + 292: 26(bool) CompositeExtract 281 0 + 293: 6(int) Select 292 50 51 + 294: 53(ptr) AccessChain 10 12 + Store 294 293 + 295: 34(ptr) AccessChain 30(fp2D) 12 + 296: 7(ivec2) Load 295 + 297: 57(ptr) AccessChain 10 36 + 298: 7(ivec2) Load 297 + 299: 7(ivec2) IAdd 298 296 + 300: 57(ptr) AccessChain 10 36 + Store 300 299 + 301: 34(ptr) AccessChain 30(fp2D) 36 + 302: 7(ivec2) Load 301 + 303: 57(ptr) AccessChain 10 39 + 304: 7(ivec2) Load 303 + 305: 7(ivec2) IAdd 304 302 + 306: 57(ptr) AccessChain 10 39 + Store 306 305 + 307: 34(ptr) AccessChain 30(fp2D) 39 + 308: 7(ivec2) Load 307 + 309: 57(ptr) AccessChain 10 42 + 310: 7(ivec2) Load 309 + 311: 7(ivec2) IAdd 310 308 + 312: 57(ptr) AccessChain 10 42 + Store 312 311 + 313: 44(ptr) AccessChain 30(fp2D) 42 + 314: 6(int) Load 313 + 315: 53(ptr) AccessChain 10 46 + 316: 6(int) Load 315 + 317: 6(int) IAdd 316 314 + 318: 53(ptr) AccessChain 10 46 + Store 318 317 + 319: 44(ptr) AccessChain 30(fp2D) 46 + 320: 6(int) Load 319 + 321: 53(ptr) AccessChain 10 68 + 322: 6(int) Load 321 + 323: 6(int) IAdd 322 320 + 324: 53(ptr) AccessChain 10 68 + Store 324 323 + 325: 15 Load 17(sample2D) + 326: 19(fvec2) Load 21(P2) + 327: 19(fvec2) Load 275(dx) + 328: 19(fvec2) Load 277(dy) + 329: 13(float) Load 125(lodClamp) + 330: 11(int) Load 24(granularity) + 332:331(ResType) ImageSampleFootprintNV 325 326 330 27 Grad MinLod 327 328 329 + 333: 7(ivec2) CompositeExtract 332 1 + 334: 34(ptr) AccessChain 30(fp2D) 12 + Store 334 333 + 335: 7(ivec2) CompositeExtract 332 2 + 336: 34(ptr) AccessChain 30(fp2D) 36 + Store 336 335 + 337: 7(ivec2) CompositeExtract 332 3 + 338: 34(ptr) AccessChain 30(fp2D) 39 + Store 338 337 + 339: 6(int) CompositeExtract 332 4 + 340: 44(ptr) AccessChain 30(fp2D) 42 + Store 340 339 + 341: 6(int) CompositeExtract 332 5 + 342: 44(ptr) AccessChain 30(fp2D) 46 + Store 342 341 + 343: 26(bool) CompositeExtract 332 0 + 344: 6(int) Select 343 50 51 + 345: 53(ptr) AccessChain 10 12 + Store 345 344 + 346: 34(ptr) AccessChain 30(fp2D) 12 + 347: 7(ivec2) Load 346 + 348: 57(ptr) AccessChain 10 36 + 349: 7(ivec2) Load 348 + 350: 7(ivec2) IAdd 349 347 + 351: 57(ptr) AccessChain 10 36 + Store 351 350 + 352: 34(ptr) AccessChain 30(fp2D) 36 + 353: 7(ivec2) Load 352 + 354: 57(ptr) AccessChain 10 39 + 355: 7(ivec2) Load 354 + 356: 7(ivec2) IAdd 355 353 + 357: 57(ptr) AccessChain 10 39 + Store 357 356 + 358: 34(ptr) AccessChain 30(fp2D) 39 + 359: 7(ivec2) Load 358 + 360: 57(ptr) AccessChain 10 42 + 361: 7(ivec2) Load 360 + 362: 7(ivec2) IAdd 361 359 + 363: 57(ptr) AccessChain 10 42 + Store 363 362 + 364: 44(ptr) AccessChain 30(fp2D) 42 + 365: 6(int) Load 364 + 366: 53(ptr) AccessChain 10 46 + 367: 6(int) Load 366 + 368: 6(int) IAdd 367 365 + 369: 53(ptr) AccessChain 10 46 + Store 369 368 + 370: 44(ptr) AccessChain 30(fp2D) 46 + 371: 6(int) Load 370 + 372: 53(ptr) AccessChain 10 68 + 373: 6(int) Load 372 + 374: 6(int) IAdd 373 371 + 375: 53(ptr) AccessChain 10 68 + Store 375 374 + 384: 381 Load 383(sample3D) + 388: 385(fvec3) Load 387(P3) + 389: 11(int) Load 24(granularity) + 394:393(ResType) ImageSampleFootprintNV 384 388 389 27 + 395: 376(ivec3) CompositeExtract 394 1 + 397: 396(ptr) AccessChain 392(fp3D) 12 + Store 397 395 + 398: 376(ivec3) CompositeExtract 394 2 + 399: 396(ptr) AccessChain 392(fp3D) 36 + Store 399 398 + 400: 7(ivec2) CompositeExtract 394 3 + 401: 34(ptr) AccessChain 392(fp3D) 39 + Store 401 400 + 402: 6(int) CompositeExtract 394 4 + 403: 44(ptr) AccessChain 392(fp3D) 42 + Store 403 402 + 404: 6(int) CompositeExtract 394 5 + 405: 44(ptr) AccessChain 392(fp3D) 46 + Store 405 404 + 406: 26(bool) CompositeExtract 394 0 + 407: 6(int) Select 406 50 51 + 408: 53(ptr) AccessChain 379 12 + Store 408 407 + 409: 396(ptr) AccessChain 392(fp3D) 12 + 410: 376(ivec3) Load 409 + 412: 411(ptr) AccessChain 379 36 + Store 412 410 + 413: 396(ptr) AccessChain 392(fp3D) 36 + 414: 376(ivec3) Load 413 + 415: 411(ptr) AccessChain 379 39 + Store 415 414 + 416: 34(ptr) AccessChain 392(fp3D) 39 + 417: 7(ivec2) Load 416 + 418: 57(ptr) AccessChain 379 42 + Store 418 417 + 419: 44(ptr) AccessChain 392(fp3D) 42 + 420: 6(int) Load 419 + 421: 53(ptr) AccessChain 379 46 + Store 421 420 + 422: 44(ptr) AccessChain 392(fp3D) 46 + 423: 6(int) Load 422 + 424: 53(ptr) AccessChain 379 68 + Store 424 423 + 425: 381 Load 383(sample3D) + 426: 385(fvec3) Load 387(P3) + 427: 11(int) Load 24(granularity) + 428: 13(float) Load 76(bias) + 430:429(ResType) ImageSampleFootprintNV 425 426 427 27 Bias 428 + 431: 376(ivec3) CompositeExtract 430 1 + 432: 396(ptr) AccessChain 392(fp3D) 12 + Store 432 431 + 433: 376(ivec3) CompositeExtract 430 2 + 434: 396(ptr) AccessChain 392(fp3D) 36 + Store 434 433 + 435: 7(ivec2) CompositeExtract 430 3 + 436: 34(ptr) AccessChain 392(fp3D) 39 + Store 436 435 + 437: 6(int) CompositeExtract 430 4 + 438: 44(ptr) AccessChain 392(fp3D) 42 + Store 438 437 + 439: 6(int) CompositeExtract 430 5 + 440: 44(ptr) AccessChain 392(fp3D) 46 + Store 440 439 + 441: 26(bool) CompositeExtract 430 0 + 442: 6(int) Select 441 50 51 + 443: 53(ptr) AccessChain 379 12 + Store 443 442 + 444: 396(ptr) AccessChain 392(fp3D) 12 + 445: 376(ivec3) Load 444 + 446: 411(ptr) AccessChain 379 36 + 447: 376(ivec3) Load 446 + 448: 376(ivec3) IAdd 447 445 + 449: 411(ptr) AccessChain 379 36 + Store 449 448 + 450: 396(ptr) AccessChain 392(fp3D) 36 + 451: 376(ivec3) Load 450 + 452: 411(ptr) AccessChain 379 39 + 453: 376(ivec3) Load 452 + 454: 376(ivec3) IAdd 453 451 + 455: 411(ptr) AccessChain 379 39 + Store 455 454 + 456: 34(ptr) AccessChain 392(fp3D) 39 + 457: 7(ivec2) Load 456 + 458: 57(ptr) AccessChain 379 42 + 459: 7(ivec2) Load 458 + 460: 7(ivec2) IAdd 459 457 + 461: 57(ptr) AccessChain 379 42 + Store 461 460 + 462: 44(ptr) AccessChain 392(fp3D) 42 + 463: 6(int) Load 462 + 464: 53(ptr) AccessChain 379 46 + 465: 6(int) Load 464 + 466: 6(int) IAdd 465 463 + 467: 53(ptr) AccessChain 379 46 + Store 467 466 + 468: 44(ptr) AccessChain 392(fp3D) 46 + 469: 6(int) Load 468 + 470: 53(ptr) AccessChain 379 68 + 471: 6(int) Load 470 + 472: 6(int) IAdd 471 469 + 473: 53(ptr) AccessChain 379 68 + Store 473 472 + 474: 381 Load 383(sample3D) + 475: 385(fvec3) Load 387(P3) + 476: 13(float) Load 125(lodClamp) + 477: 11(int) Load 24(granularity) + 479:478(ResType) ImageSampleFootprintNV 474 475 477 27 MinLod 476 + 480: 376(ivec3) CompositeExtract 479 1 + 481: 396(ptr) AccessChain 392(fp3D) 12 + Store 481 480 + 482: 376(ivec3) CompositeExtract 479 2 + 483: 396(ptr) AccessChain 392(fp3D) 36 + Store 483 482 + 484: 7(ivec2) CompositeExtract 479 3 + 485: 34(ptr) AccessChain 392(fp3D) 39 + Store 485 484 + 486: 6(int) CompositeExtract 479 4 + 487: 44(ptr) AccessChain 392(fp3D) 42 + Store 487 486 + 488: 6(int) CompositeExtract 479 5 + 489: 44(ptr) AccessChain 392(fp3D) 46 + Store 489 488 + 490: 26(bool) CompositeExtract 479 0 + 491: 6(int) Select 490 50 51 + 492: 53(ptr) AccessChain 379 12 + Store 492 491 + 493: 396(ptr) AccessChain 392(fp3D) 12 + 494: 376(ivec3) Load 493 + 495: 411(ptr) AccessChain 379 36 + 496: 376(ivec3) Load 495 + 497: 376(ivec3) IAdd 496 494 + 498: 411(ptr) AccessChain 379 36 + Store 498 497 + 499: 396(ptr) AccessChain 392(fp3D) 36 + 500: 376(ivec3) Load 499 + 501: 411(ptr) AccessChain 379 39 + 502: 376(ivec3) Load 501 + 503: 376(ivec3) IAdd 502 500 + 504: 411(ptr) AccessChain 379 39 + Store 504 503 + 505: 34(ptr) AccessChain 392(fp3D) 39 + 506: 7(ivec2) Load 505 + 507: 57(ptr) AccessChain 379 42 + 508: 7(ivec2) Load 507 + 509: 7(ivec2) IAdd 508 506 + 510: 57(ptr) AccessChain 379 42 + Store 510 509 + 511: 44(ptr) AccessChain 392(fp3D) 42 + 512: 6(int) Load 511 + 513: 53(ptr) AccessChain 379 46 + 514: 6(int) Load 513 + 515: 6(int) IAdd 514 512 + 516: 53(ptr) AccessChain 379 46 + Store 516 515 + 517: 44(ptr) AccessChain 392(fp3D) 46 + 518: 6(int) Load 517 + 519: 53(ptr) AccessChain 379 68 + 520: 6(int) Load 519 + 521: 6(int) IAdd 520 518 + 522: 53(ptr) AccessChain 379 68 + Store 522 521 + 523: 381 Load 383(sample3D) + 524: 385(fvec3) Load 387(P3) + 525: 13(float) Load 125(lodClamp) + 526: 11(int) Load 24(granularity) + 527: 13(float) Load 76(bias) + 529:528(ResType) ImageSampleFootprintNV 523 524 526 27 Bias MinLod 527 525 + 530: 376(ivec3) CompositeExtract 529 1 + 531: 396(ptr) AccessChain 392(fp3D) 12 + Store 531 530 + 532: 376(ivec3) CompositeExtract 529 2 + 533: 396(ptr) AccessChain 392(fp3D) 36 + Store 533 532 + 534: 7(ivec2) CompositeExtract 529 3 + 535: 34(ptr) AccessChain 392(fp3D) 39 + Store 535 534 + 536: 6(int) CompositeExtract 529 4 + 537: 44(ptr) AccessChain 392(fp3D) 42 + Store 537 536 + 538: 6(int) CompositeExtract 529 5 + 539: 44(ptr) AccessChain 392(fp3D) 46 + Store 539 538 + 540: 26(bool) CompositeExtract 529 0 + 541: 6(int) Select 540 50 51 + 542: 53(ptr) AccessChain 379 12 + Store 542 541 + 543: 396(ptr) AccessChain 392(fp3D) 12 + 544: 376(ivec3) Load 543 + 545: 411(ptr) AccessChain 379 36 + 546: 376(ivec3) Load 545 + 547: 376(ivec3) IAdd 546 544 + 548: 411(ptr) AccessChain 379 36 + Store 548 547 + 549: 396(ptr) AccessChain 392(fp3D) 36 + 550: 376(ivec3) Load 549 + 551: 411(ptr) AccessChain 379 39 + 552: 376(ivec3) Load 551 + 553: 376(ivec3) IAdd 552 550 + 554: 411(ptr) AccessChain 379 39 + Store 554 553 + 555: 34(ptr) AccessChain 392(fp3D) 39 + 556: 7(ivec2) Load 555 + 557: 57(ptr) AccessChain 379 42 + 558: 7(ivec2) Load 557 + 559: 7(ivec2) IAdd 558 556 + 560: 57(ptr) AccessChain 379 42 + Store 560 559 + 561: 44(ptr) AccessChain 392(fp3D) 42 + 562: 6(int) Load 561 + 563: 53(ptr) AccessChain 379 46 + 564: 6(int) Load 563 + 565: 6(int) IAdd 564 562 + 566: 53(ptr) AccessChain 379 46 + Store 566 565 + 567: 44(ptr) AccessChain 392(fp3D) 46 + 568: 6(int) Load 567 + 569: 53(ptr) AccessChain 379 68 + 570: 6(int) Load 569 + 571: 6(int) IAdd 570 568 + 572: 53(ptr) AccessChain 379 68 + Store 572 571 + 573: 381 Load 383(sample3D) + 574: 385(fvec3) Load 387(P3) + 575: 13(float) Load 225(lod) + 576: 11(int) Load 24(granularity) + 578:577(ResType) ImageSampleFootprintNV 573 574 576 27 Lod 575 + 579: 376(ivec3) CompositeExtract 578 1 + 580: 396(ptr) AccessChain 392(fp3D) 12 + Store 580 579 + 581: 376(ivec3) CompositeExtract 578 2 + 582: 396(ptr) AccessChain 392(fp3D) 36 + Store 582 581 + 583: 7(ivec2) CompositeExtract 578 3 + 584: 34(ptr) AccessChain 392(fp3D) 39 + Store 584 583 + 585: 6(int) CompositeExtract 578 4 + 586: 44(ptr) AccessChain 392(fp3D) 42 + Store 586 585 + 587: 6(int) CompositeExtract 578 5 + 588: 44(ptr) AccessChain 392(fp3D) 46 + Store 588 587 + 589: 26(bool) CompositeExtract 578 0 + 590: 6(int) Select 589 50 51 + 591: 53(ptr) AccessChain 379 12 + Store 591 590 + 592: 396(ptr) AccessChain 392(fp3D) 12 + 593: 376(ivec3) Load 592 + 594: 411(ptr) AccessChain 379 36 + 595: 376(ivec3) Load 594 + 596: 376(ivec3) IAdd 595 593 + 597: 411(ptr) AccessChain 379 36 + Store 597 596 + 598: 396(ptr) AccessChain 392(fp3D) 36 + 599: 376(ivec3) Load 598 + 600: 411(ptr) AccessChain 379 39 + 601: 376(ivec3) Load 600 + 602: 376(ivec3) IAdd 601 599 + 603: 411(ptr) AccessChain 379 39 + Store 603 602 + 604: 34(ptr) AccessChain 392(fp3D) 39 + 605: 7(ivec2) Load 604 + 606: 57(ptr) AccessChain 379 42 + 607: 7(ivec2) Load 606 + 608: 7(ivec2) IAdd 607 605 + 609: 57(ptr) AccessChain 379 42 + Store 609 608 + 610: 44(ptr) AccessChain 392(fp3D) 42 + 611: 6(int) Load 610 + 612: 53(ptr) AccessChain 379 46 + 613: 6(int) Load 612 + 614: 6(int) IAdd 613 611 + 615: 53(ptr) AccessChain 379 46 + Store 615 614 + 616: 44(ptr) AccessChain 392(fp3D) 46 + 617: 6(int) Load 616 + 618: 53(ptr) AccessChain 379 68 + 619: 6(int) Load 618 + 620: 6(int) IAdd 619 617 + 621: 53(ptr) AccessChain 379 68 + Store 621 620 + Return + FunctionEnd diff --git a/Test/baseResults/spv.shadingRate.frag.out b/Test/baseResults/spv.shadingRate.frag.out new file mode 100644 index 00000000..78017f68 --- /dev/null +++ b/Test/baseResults/spv.shadingRate.frag.out @@ -0,0 +1,50 @@ +spv.shadingRate.frag +error: SPIRV-Tools Validation Errors +error: Invalid capability operand: 5291 +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 21 + + Capability Shader + Capability ShadingRateNV + Extension "SPV_NV_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 13 17 19 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_NV_shading_rate_image" + Name 4 "main" + Name 9 "FragmentSize" + Name 13 "gl_FragmentSizeNV" + Name 17 "InvocationsPerPixel" + Name 19 "gl_InvocationsPerPixelNV" + Decorate 9(FragmentSize) Location 0 + Decorate 13(gl_FragmentSizeNV) Flat + Decorate 13(gl_FragmentSizeNV) BuiltIn FragmentSizeNV + Decorate 17(InvocationsPerPixel) Location 2 + Decorate 19(gl_InvocationsPerPixelNV) Flat + Decorate 19(gl_InvocationsPerPixelNV) BuiltIn InvocationsPerPixelNV + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypePointer Output 7(fvec2) + 9(FragmentSize): 8(ptr) Variable Output + 10: TypeInt 32 1 + 11: TypeVector 10(int) 2 + 12: TypePointer Input 11(ivec2) +13(gl_FragmentSizeNV): 12(ptr) Variable Input + 16: TypePointer Output 10(int) +17(InvocationsPerPixel): 16(ptr) Variable Output + 18: TypePointer Input 10(int) +19(gl_InvocationsPerPixelNV): 18(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 14: 11(ivec2) Load 13(gl_FragmentSizeNV) + 15: 7(fvec2) ConvertSToF 14 + Store 9(FragmentSize) 15 + 20: 10(int) Load 19(gl_InvocationsPerPixelNV) + Store 17(InvocationsPerPixel) 20 + Return + FunctionEnd diff --git a/Test/baseResults/test.conf b/Test/baseResults/test.conf index f156c5c6..cff77168 100644 --- a/Test/baseResults/test.conf +++ b/Test/baseResults/test.conf @@ -81,6 +81,15 @@ MaxTransformFeedbackInterleavedComponents 64 MaxCullDistances 8 MaxCombinedClipAndCullDistances 8 MaxSamples 4 +MaxMeshOutputVerticesNV 256 +MaxMeshOutputPrimitivesNV 512 +MaxMeshWorkGroupSizeX_NV 32 +MaxMeshWorkGroupSizeY_NV 1 +MaxMeshWorkGroupSizeZ_NV 1 +MaxTaskWorkGroupSizeX_NV 32 +MaxTaskWorkGroupSizeY_NV 1 +MaxTaskWorkGroupSizeZ_NV 1 +MaxMeshViewCountNV 4 nonInductiveForLoops 1 whileLoops 1 doWhileLoops 1 diff --git a/Test/spv.AnyHitShader.rahit b/Test/spv.AnyHitShader.rahit new file mode 100644 index 00000000..88e5601a --- /dev/null +++ b/Test/spv.AnyHitShader.rahit @@ -0,0 +1,26 @@ +#version 460 +#extension GL_NVX_raytracing : enable +layout(location = 1) rayPayloadInNVX vec4 incomingPayload; +void main() +{ + uvec2 v0 = gl_LaunchIDNVX; + uvec2 v1 = gl_LaunchSizeNVX; + int v2 = gl_PrimitiveID; + int v3 = gl_InstanceID; + int v4 = gl_InstanceCustomIndexNVX; + vec3 v5 = gl_WorldRayOriginNVX; + vec3 v6 = gl_WorldRayDirectionNVX; + vec3 v7 = gl_ObjectRayOriginNVX; + vec3 v8 = gl_ObjectRayDirectionNVX; + float v9 = gl_RayTminNVX; + float v10 = gl_RayTmaxNVX; + float v11 = gl_HitTNVX; + uint v12 = gl_HitKindNVX; + mat4x3 v13 = gl_ObjectToWorldNVX; + mat4x3 v14 = gl_WorldToObjectNVX; + incomingPayload = vec4(0.5f); + if (v2 == 1) + ignoreIntersectionNVX(); + else + terminateRayNVX(); +} diff --git a/Test/spv.AnyHitShader_Errors.rahit b/Test/spv.AnyHitShader_Errors.rahit new file mode 100644 index 00000000..a0f72e68 --- /dev/null +++ b/Test/spv.AnyHitShader_Errors.rahit @@ -0,0 +1,11 @@ +#version 460 +#extension GL_NVX_raytracing : enable +hitAttributeNVX vec4 payload; +layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV; + +void main() +{ + payload.x = 1.0f; // ERROR, cannot write to hitattributeNVX in stage + reportIntersectionNVX(1.0, 1U); // ERROR, unsupported builtin in stage + traceNVX(accNV, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported builtin in stage +} diff --git a/Test/spv.ClosestHitShader.rchit b/Test/spv.ClosestHitShader.rchit new file mode 100644 index 00000000..498d0d89 --- /dev/null +++ b/Test/spv.ClosestHitShader.rchit @@ -0,0 +1,24 @@ +#version 460 +#extension GL_NVX_raytracing : enable +layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV; +layout(location = 0) rayPayloadNVX vec4 localPayload; +layout(location = 1) rayPayloadInNVX vec4 incomingPayload; +void main() +{ + uvec2 v0 = gl_LaunchIDNVX; + uvec2 v1 = gl_LaunchSizeNVX; + int v2 = gl_PrimitiveID; + int v3 = gl_InstanceID; + int v4 = gl_InstanceCustomIndexNVX; + vec3 v5 = gl_WorldRayOriginNVX; + vec3 v6 = gl_WorldRayDirectionNVX; + vec3 v7 = gl_ObjectRayOriginNVX; + vec3 v8 = gl_ObjectRayDirectionNVX; + float v9 = gl_RayTminNVX; + float v10 = gl_RayTmaxNVX; + float v11 = gl_HitTNVX; + uint v12 = gl_HitKindNVX; + mat4x3 v13 = gl_ObjectToWorldNVX; + mat4x3 v14 = gl_WorldToObjectNVX; + traceNVX(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); +} diff --git a/Test/spv.ClosestHitShader_Errors.rchit b/Test/spv.ClosestHitShader_Errors.rchit new file mode 100644 index 00000000..6c1f6e4e --- /dev/null +++ b/Test/spv.ClosestHitShader_Errors.rchit @@ -0,0 +1,12 @@ +#version 460 +#extension GL_NVX_raytracing : enable +hitAttributeNVX vec4 payload; +layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV; + +void main() +{ + payload.x = 1.0f; // ERROR, cannot write to hitattributeNVX in stage + reportIntersectionNVX(1.0, 1U); // ERROR, unsupported builtin in stage + terminateRayNVX(); + ignoreIntersectionNVX(); +} diff --git a/Test/spv.IntersectShader.rint b/Test/spv.IntersectShader.rint new file mode 100644 index 00000000..226ff06c --- /dev/null +++ b/Test/spv.IntersectShader.rint @@ -0,0 +1,21 @@ +#version 460 +#extension GL_NVX_raytracing : enable +hitAttributeNVX vec4 iAttr; +void main() +{ + uvec2 v0 = gl_LaunchIDNVX; + uvec2 v1 = gl_LaunchSizeNVX; + int v2 = gl_PrimitiveID; + int v3 = gl_InstanceID; + int v4 = gl_InstanceCustomIndexNVX; + vec3 v5 = gl_WorldRayOriginNVX; + vec3 v6 = gl_WorldRayDirectionNVX; + vec3 v7 = gl_ObjectRayOriginNVX; + vec3 v8 = gl_ObjectRayDirectionNVX; + float v9 = gl_RayTminNVX; + float v10 = gl_RayTmaxNVX; + mat4x3 v11 = gl_ObjectToWorldNVX; + mat4x3 v12 = gl_WorldToObjectNVX; + iAttr = vec4(0.5f,0.5f,0.0f,1.0f); + reportIntersectionNVX(0.5, 1U); +} diff --git a/Test/spv.IntersectShader_Errors.rint b/Test/spv.IntersectShader_Errors.rint new file mode 100644 index 00000000..90278d84 --- /dev/null +++ b/Test/spv.IntersectShader_Errors.rint @@ -0,0 +1,11 @@ +#version 460 +#extension GL_NVX_raytracing : enable +rayPayloadInNVX vec4 payloadIn; // ERROR, rayPayloadIn unsupported in this stage +rayPayloadNVX vec4 payload; // ERROR, rayPayload unsuppoted in this stage +uniform accelerationStructureNVX accNV; +void main() +{ + float e12 = gl_HitTNVX; // ERROR, unsupported builtin in stage + float e13 = gl_HitKindNVX; // ERROR, unsupported builtin in stage + traceNVX(accNV, 0, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 0); // ERROR, unsupported +} diff --git a/Test/spv.MissShader.rmiss b/Test/spv.MissShader.rmiss new file mode 100644 index 00000000..6daaa012 --- /dev/null +++ b/Test/spv.MissShader.rmiss @@ -0,0 +1,17 @@ +#version 460 +#extension GL_NVX_raytracing : enable +layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV; +layout(location = 0) rayPayloadNVX vec4 localPayload; +layout(location = 1) rayPayloadInNVX vec4 incomingPayload; +void main() +{ + uvec2 v0 = gl_LaunchIDNVX; + uvec2 v1 = gl_LaunchSizeNVX; + vec3 v2 = gl_WorldRayOriginNVX; + vec3 v3 = gl_WorldRayDirectionNVX; + vec3 v4 = gl_ObjectRayOriginNVX; + vec3 v5 = gl_ObjectRayDirectionNVX; + float v6 = gl_RayTminNVX; + float v7 = gl_RayTmaxNVX; + traceNVX(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); +} diff --git a/Test/spv.MissShader_Errors.rmiss b/Test/spv.MissShader_Errors.rmiss new file mode 100644 index 00000000..a45cb8d7 --- /dev/null +++ b/Test/spv.MissShader_Errors.rmiss @@ -0,0 +1,16 @@ +#version 460 +#extension GL_NVX_raytracing : enable +hitAttributeNVX vec4 payload; // ERROR, hitattributeNVX unsupported in this stage +void main() +{ + int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage + int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage + int e3 = gl_InstanceCustomIndexNVX; // ERROR, unsupported builtin in stage + mat4x3 e10 = gl_ObjectToWorldNVX; // ERROR, unsupported builtin in stage + mat4x3 e11 = gl_WorldToObjectNVX; // ERROR, unsupported builtin in stage + float e12 = gl_HitTNVX; // ERROR, unsupported builtin in stage + float e13 = gl_HitKindNVX; // ERROR, unsupported builtin in stage + reportIntersectionNVX(1.0, 1U); // ERROR, unsupported builtin in stage + ignoreIntersectionNVX(); // ERROR, unsupported builtin in stage + terminateRayNVX(); // ERROR, unsupported builtin in stage +} diff --git a/Test/spv.RayConstants.rgen b/Test/spv.RayConstants.rgen new file mode 100644 index 00000000..61ff39ec --- /dev/null +++ b/Test/spv.RayConstants.rgen @@ -0,0 +1,15 @@ +#version 460 +#extension GL_NVX_raytracing : enable +layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV; +layout(location = 0) rayPayloadNVX vec4 payload; +void main() +{ + const uint rayFlags = gl_RayFlagsNoneNVX | gl_RayFlagsOpaqueNVX | + gl_RayFlagsNoOpaqueNVX | gl_RayFlagsTerminateOnFirstHitNVX | + gl_RayFlagsSkipClosestHitShaderNVX | gl_RayFlagsCullBackFacingTrianglesNVX | + gl_RayFlagsCullFrontFacingTrianglesNVX | gl_RayFlagsCullOpaqueNVX | + gl_RayFlagsCullNoOpaqueNVX; + + const int payloadId = 1; + traceNVX(accNV, rayFlags, 0, 1, 1, 0, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, payloadId); +} diff --git a/Test/spv.RayGenShader.rgen b/Test/spv.RayGenShader.rgen new file mode 100644 index 00000000..19f16cea --- /dev/null +++ b/Test/spv.RayGenShader.rgen @@ -0,0 +1,19 @@ +#version 460 +#extension GL_NVX_raytracing : enable +layout(binding = 0, set = 0) uniform accelerationStructureNVX accNV; +layout(location = 0) rayPayloadNVX vec4 payload; +layout(shaderRecordNVX) buffer block +{ + float arr[4]; + vec4 pad; +}; +void main() +{ + uint lx = gl_LaunchIDNVX.x; + uint ly = gl_LaunchIDNVX.y; + uint sx = gl_LaunchSizeNVX.x; + uint sy = gl_LaunchSizeNVX.y; + traceNVX(accNV, lx, ly, sx, sy, 0u, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 1); + arr[3] = 1.0f; + pad = payload; +} diff --git a/Test/spv.RayGenShader_Errors.rgen b/Test/spv.RayGenShader_Errors.rgen new file mode 100644 index 00000000..73175b81 --- /dev/null +++ b/Test/spv.RayGenShader_Errors.rgen @@ -0,0 +1,40 @@ +#version 460 +#extension GL_NVX_raytracing : enable +hitAttributeNVX vec4 payload; // ERROR, hitattributeNVX unsupported in this stage +rayPayloadInNVX vec4 payloadIn; // ERROR, rayPayloadIn unsupported in this stage +layout(shaderRecordNVX) uniform ublock // ERROR, shaderRecordNVX unsupported on uniform blocks +{ + float a; +}; +layout(binding = 0, shaderRecordNVX) buffer bblock { // ERROR, binding unsupported on shaderRecordNVX blocks + float b; +}; +layout(set = 0, shaderRecordNVX) buffer bblock2 { // ERROR, set unsupported on shaderRecordNVX blocks + float c; +}; +layout(shaderRecordNVX) buffer bblock3 { + float d; +}; +layout(shaderRecordNVX) buffer bblock4 { // ERROR, cannot have more than one shaderRecordNVX block + float e; +}; +void main() +{ + accelerationStructureNVX a = 0; + int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage + int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage + int e3 = gl_InstanceCustomIndexNVX; // ERROR, unsupported builtin in stage + vec3 e4 = gl_WorldRayOriginNVX; // ERROR, unsupported builtin in stage + vec3 e5 = gl_WorldRayDirectionNVX; // ERROR, unsupported builtin in stage + vec3 e6 = gl_ObjectRayOriginNVX; // ERROR, unsupported builtin in stage + vec3 e7 = gl_ObjectRayDirectionNVX; // ERROR, unsupported builtin in stage + float e8 = gl_RayTminNVX; // ERROR, unsupported builtin in stage + float e9 = gl_RayTmaxNVX; // ERROR, unsupported builtin in stage + mat4x3 e10 = gl_ObjectToWorldNVX; // ERROR, unsupported builtin in stage + mat4x3 e11 = gl_WorldToObjectNVX; // ERROR, unsupported builtin in stage + float e12 = gl_HitTNVX; // ERROR, unsupported builtin in stage + float e13 = gl_HitKindNVX; // ERROR, unsupported builtin in stage + reportIntersectionNVX(1.0, 1U); // ERROR, unsupported builtin in stage + ignoreIntersectionNVX(); // ERROR, unsupported builtin in stage + terminateRayNVX(); // ERROR, unsupported builtin in stage +} diff --git a/Test/spv.computeShaderDerivatives.comp b/Test/spv.computeShaderDerivatives.comp new file mode 100644 index 00000000..884f14d5 --- /dev/null +++ b/Test/spv.computeShaderDerivatives.comp @@ -0,0 +1,106 @@ +#version 450 +#extension GL_NV_compute_shader_derivatives : require + +layout (local_size_x = 2, local_size_y = 4) in; +layout(derivative_group_quadsNV) in; + +buffer block { + float fDerivativeX; + float fDerivativeY; + float fDerivativeWidth; + float fCoarseDerivativeX; + float fCoarseDerivativeY; + float fCoarseDerivativeWidth; + float fFineDerivativeX; + float fFineDerivativeY; + float fFineDerivativeWidth; + + float fX; + float fY; + + + vec2 v2DerivativeX; + vec2 v2DerivativeY; + vec2 v2DerivativeWidth; + vec2 v2CoarseDerivativeX; + vec2 v2CoarseDerivativeY; + vec2 v2CoarseDerivativeWidth; + vec2 v2FineDerivativeX; + vec2 v2FineDerivativeY; + vec2 v2FineDerivativeWidth; + + vec2 v2X; + vec2 v2Y; + + + vec3 v3DerivativeX; + vec3 v3DerivativeY; + vec3 v3DerivativeWidth; + vec3 v3CoarseDerivativeX; + vec3 v3CoarseDerivativeY; + vec3 v3CoarseDerivativeWidth; + vec3 v3FineDerivativeX; + vec3 v3FineDerivativeY; + vec3 v3FineDerivativeWidth; + + vec3 v3X; + vec3 v3Y; + + + vec4 v4DerivativeX; + vec4 v4DerivativeY; + vec4 v4DerivativeWidth; + vec4 v4CoarseDerivativeX; + vec4 v4CoarseDerivativeY; + vec4 v4CoarseDerivativeWidth; + vec4 v4FineDerivativeX; + vec4 v4FineDerivativeY; + vec4 v4FineDerivativeWidth; + + vec4 v4X; + vec4 v4Y; +}; + +void main(){ + fDerivativeX = dFdx(fX); + fDerivativeY = dFdy(fY); + fDerivativeWidth = fwidth(fX); + fCoarseDerivativeX = dFdxCoarse(fX); + fCoarseDerivativeY = dFdyCoarse(fY); + fCoarseDerivativeWidth = fwidthCoarse(fX); + fFineDerivativeX = dFdxFine(fX); + fFineDerivativeY = dFdyFine(fY); + fFineDerivativeWidth = fwidthFine(fX); + + v2DerivativeX = dFdx(v2X); + v2DerivativeY = dFdy(v2Y); + v2DerivativeWidth = fwidth(v2X); + v2CoarseDerivativeX = dFdxCoarse(v2X); + v2CoarseDerivativeY = dFdyCoarse(v2Y); + v2CoarseDerivativeWidth = fwidthCoarse(v2X); + v2FineDerivativeX = dFdxFine(v2X); + v2FineDerivativeY = dFdyFine(v2Y); + v2FineDerivativeWidth = fwidthFine(v2X); + + + v3DerivativeX = dFdx(v3X); + v3DerivativeY = dFdy(v3Y); + v3DerivativeWidth = fwidth(v3X); + v3CoarseDerivativeX = dFdxCoarse(v3X); + v3CoarseDerivativeY = dFdyCoarse(v3Y); + v3CoarseDerivativeWidth = fwidthCoarse(v3X); + v3FineDerivativeX = dFdxFine(v3X); + v3FineDerivativeY = dFdyFine(v3Y); + v3FineDerivativeWidth = fwidthFine(v3X); + + + v4DerivativeX = dFdx(v4X); + v4DerivativeY = dFdy(v4Y); + v4DerivativeWidth = fwidth(v4X); + v4CoarseDerivativeX = dFdxCoarse(v4X); + v4CoarseDerivativeY = dFdyCoarse(v4Y); + v4CoarseDerivativeWidth = fwidthCoarse(v4X); + v4FineDerivativeX = dFdxFine(v4X); + v4FineDerivativeY = dFdyFine(v4Y); + v4FineDerivativeWidth = fwidthFine(v4X); +} diff --git a/Test/spv.computeShaderDerivatives2.comp b/Test/spv.computeShaderDerivatives2.comp new file mode 100644 index 00000000..f964fdd1 --- /dev/null +++ b/Test/spv.computeShaderDerivatives2.comp @@ -0,0 +1,106 @@ +#version 320 es +#extension GL_NV_compute_shader_derivatives : require + +layout (local_size_x = 2, local_size_y = 4) in; +layout(derivative_group_linearNV) in; + +buffer block { + float fDerivativeX; + float fDerivativeY; + float fDerivativeWidth; + float fCoarseDerivativeX; + float fCoarseDerivativeY; + float fCoarseDerivativeWidth; + float fFineDerivativeX; + float fFineDerivativeY; + float fFineDerivativeWidth; + + float fX; + float fY; + + + vec2 v2DerivativeX; + vec2 v2DerivativeY; + vec2 v2DerivativeWidth; + vec2 v2CoarseDerivativeX; + vec2 v2CoarseDerivativeY; + vec2 v2CoarseDerivativeWidth; + vec2 v2FineDerivativeX; + vec2 v2FineDerivativeY; + vec2 v2FineDerivativeWidth; + + vec2 v2X; + vec2 v2Y; + + + vec3 v3DerivativeX; + vec3 v3DerivativeY; + vec3 v3DerivativeWidth; + vec3 v3CoarseDerivativeX; + vec3 v3CoarseDerivativeY; + vec3 v3CoarseDerivativeWidth; + vec3 v3FineDerivativeX; + vec3 v3FineDerivativeY; + vec3 v3FineDerivativeWidth; + + vec3 v3X; + vec3 v3Y; + + + vec4 v4DerivativeX; + vec4 v4DerivativeY; + vec4 v4DerivativeWidth; + vec4 v4CoarseDerivativeX; + vec4 v4CoarseDerivativeY; + vec4 v4CoarseDerivativeWidth; + vec4 v4FineDerivativeX; + vec4 v4FineDerivativeY; + vec4 v4FineDerivativeWidth; + + vec4 v4X; + vec4 v4Y; +}; + +void main(){ + fDerivativeX = dFdx(fX); + fDerivativeY = dFdy(fY); + fDerivativeWidth = fwidth(fX); + fCoarseDerivativeX = dFdxCoarse(fX); + fCoarseDerivativeY = dFdyCoarse(fY); + fCoarseDerivativeWidth = fwidthCoarse(fX); + fFineDerivativeX = dFdxFine(fX); + fFineDerivativeY = dFdyFine(fY); + fFineDerivativeWidth = fwidthFine(fX); + + v2DerivativeX = dFdx(v2X); + v2DerivativeY = dFdy(v2Y); + v2DerivativeWidth = fwidth(v2X); + v2CoarseDerivativeX = dFdxCoarse(v2X); + v2CoarseDerivativeY = dFdyCoarse(v2Y); + v2CoarseDerivativeWidth = fwidthCoarse(v2X); + v2FineDerivativeX = dFdxFine(v2X); + v2FineDerivativeY = dFdyFine(v2Y); + v2FineDerivativeWidth = fwidthFine(v2X); + + + v3DerivativeX = dFdx(v3X); + v3DerivativeY = dFdy(v3Y); + v3DerivativeWidth = fwidth(v3X); + v3CoarseDerivativeX = dFdxCoarse(v3X); + v3CoarseDerivativeY = dFdyCoarse(v3Y); + v3CoarseDerivativeWidth = fwidthCoarse(v3X); + v3FineDerivativeX = dFdxFine(v3X); + v3FineDerivativeY = dFdyFine(v3Y); + v3FineDerivativeWidth = fwidthFine(v3X); + + + v4DerivativeX = dFdx(v4X); + v4DerivativeY = dFdy(v4Y); + v4DerivativeWidth = fwidth(v4X); + v4CoarseDerivativeX = dFdxCoarse(v4X); + v4CoarseDerivativeY = dFdyCoarse(v4Y); + v4CoarseDerivativeWidth = fwidthCoarse(v4X); + v4FineDerivativeX = dFdxFine(v4X); + v4FineDerivativeY = dFdyFine(v4Y); + v4FineDerivativeWidth = fwidthFine(v4X); +} diff --git a/Test/spv.fragmentShaderBarycentric.frag b/Test/spv.fragmentShaderBarycentric.frag new file mode 100644 index 00000000..c923aca0 --- /dev/null +++ b/Test/spv.fragmentShaderBarycentric.frag @@ -0,0 +1,15 @@ +#version 450 +#extension GL_NV_fragment_shader_barycentric : require + +layout(location = 0) pervertexNV in vertices { + float attrib; + } v[]; + +layout(location = 1) out float value; + +void main () { + value = (gl_BaryCoordNV.x * v[0].attrib + + gl_BaryCoordNV.y * v[1].attrib + + gl_BaryCoordNV.z * v[2].attrib); + +} diff --git a/Test/spv.fragmentShaderBarycentric2.frag b/Test/spv.fragmentShaderBarycentric2.frag new file mode 100644 index 00000000..4682e4ef --- /dev/null +++ b/Test/spv.fragmentShaderBarycentric2.frag @@ -0,0 +1,15 @@ +#version 320 es +#extension GL_NV_fragment_shader_barycentric : require + +precision highp float; + +layout(location = 0) pervertexNV in float vertexIDs[3]; + +layout(location = 1) out float value; + +void main () { + value = (gl_BaryCoordNoPerspNV.x * vertexIDs[0] + + gl_BaryCoordNoPerspNV.y * vertexIDs[1] + + gl_BaryCoordNoPerspNV.z * vertexIDs[2]); + +} diff --git a/Test/spv.meshShaderBuiltins.mesh b/Test/spv.meshShaderBuiltins.mesh new file mode 100644 index 00000000..8adff3d8 --- /dev/null +++ b/Test/spv.meshShaderBuiltins.mesh @@ -0,0 +1,63 @@ +#version 460 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of builtins in mesh shaders: + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + gl_MeshVerticesNV[iid].gl_Position = vec4(1.0); + gl_MeshVerticesNV[iid].gl_PointSize = 2.0; + gl_MeshVerticesNV[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesNV[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesNV[iid+1].gl_Position = gl_MeshVerticesNV[iid].gl_Position; + gl_MeshVerticesNV[iid+1].gl_PointSize = gl_MeshVerticesNV[iid].gl_PointSize; + gl_MeshVerticesNV[iid+1].gl_ClipDistance[3] = gl_MeshVerticesNV[iid].gl_ClipDistance[3]; + gl_MeshVerticesNV[iid+1].gl_CullDistance[2] = gl_MeshVerticesNV[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesNV[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesNV[iid].gl_Layer = 7; + gl_MeshPrimitivesNV[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesNV[iid].gl_ViewportMask[0] = 9; + + BARRIER(); + + gl_MeshPrimitivesNV[iid+1].gl_PrimitiveID = gl_MeshPrimitivesNV[iid].gl_PrimitiveID; + gl_MeshPrimitivesNV[iid+1].gl_Layer = gl_MeshPrimitivesNV[iid].gl_Layer; + gl_MeshPrimitivesNV[iid+1].gl_ViewportIndex = gl_MeshPrimitivesNV[iid].gl_ViewportIndex; + gl_MeshPrimitivesNV[iid+1].gl_ViewportMask[0] = gl_MeshPrimitivesNV[iid].gl_ViewportMask[0]; + + BARRIER(); + + // should truncate 257 -> 1 + gl_PrimitiveIndicesNV[0] = 257; + gl_PrimitiveIndicesNV[gid] = gl_PrimitiveIndicesNV[gid-1]; + + // writes 4 indices at offset gl_DrawID + writePackedPrimitiveIndices4x8NV(gl_DrawID, 0x01020304); + + gl_PrimitiveCountNV = MAX_PRIM * 3; + + BARRIER(); +} diff --git a/Test/spv.meshShaderPerViewBuiltins.mesh b/Test/spv.meshShaderPerViewBuiltins.mesh new file mode 100644 index 00000000..54fb7440 --- /dev/null +++ b/Test/spv.meshShaderPerViewBuiltins.mesh @@ -0,0 +1,42 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 +#define MAX_VIEWS gl_MaxMeshViewCountNV + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of per-view builtin attributes + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; + + gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID] = vec4(1.0, 2.0, 3.0, 4.0); + gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2] = 5.0; + gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3] = 6.0; + gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID] = 7; + gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0] = 8; + + BARRIER(); + + gl_MeshVerticesNV[iid+1].gl_PositionPerViewNV[viewID] = gl_MeshVerticesNV[iid].gl_PositionPerViewNV[viewID]; + gl_MeshVerticesNV[iid+1].gl_ClipDistancePerViewNV[viewID][2] = gl_MeshVerticesNV[iid].gl_ClipDistancePerViewNV[viewID][2]; + gl_MeshVerticesNV[iid+1].gl_CullDistancePerViewNV[viewID][3] = gl_MeshVerticesNV[iid].gl_CullDistancePerViewNV[viewID][3]; + gl_MeshPrimitivesNV[iid+1].gl_LayerPerViewNV[viewID] = gl_MeshPrimitivesNV[iid].gl_LayerPerViewNV[viewID]; + gl_MeshPrimitivesNV[iid+1].gl_ViewportMaskPerViewNV[viewID][0] = gl_MeshPrimitivesNV[iid].gl_ViewportMaskPerViewNV[viewID][0]; + + BARRIER(); +} + diff --git a/Test/spv.meshShaderPerViewUserDefined.mesh b/Test/spv.meshShaderPerViewUserDefined.mesh new file mode 100644 index 00000000..4a316eb2 --- /dev/null +++ b/Test/spv.meshShaderPerViewUserDefined.mesh @@ -0,0 +1,56 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 +#define MAX_VIEWS gl_MaxMeshViewCountNV + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of user-defined per-view attributes + +// mix of single-view and per-view attributes +layout(location=0) out block { + perprimitiveNV perviewNV vec4 color1[][3]; // Implicitly sized + perprimitiveNV vec4 color2[3]; + perviewNV vec4 color3[MAX_VIEWS][3]; // Explicitly sized + vec4 color4; +} b[]; + +// per-view block +perviewNV layout(location=10) out perviewBlock { + perprimitiveNV vec4 color5[]; // Implicitly sized + perprimitiveNV vec4 color6[MAX_VIEWS][3]; // Explicitly sized + vec4 color7[][3]; // Implicitly sized + vec4 color8[MAX_VIEWS]; // Explicitly sized +} b2[]; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint viewID = gl_MeshViewIndicesNV[gl_MeshViewCountNV%MAX_VIEWS]; + + b[iid].color1[viewID][2] = vec4(1.0); + b[iid].color2[1] = vec4(2.0); + b[iid].color3[viewID][2] = vec4(3.0); + b[iid].color4 = vec4(4.0); + + BARRIER(); + + b2[iid].color5[viewID] = vec4(5.0); + b2[iid].color6[viewID][1] = vec4(6.0); + b2[iid].color7[viewID][2] = vec4(7.0); + b2[iid].color8[viewID] = vec4(8.0); + + BARRIER(); +} + diff --git a/Test/spv.meshShaderSharedMem.mesh b/Test/spv.meshShaderSharedMem.mesh new file mode 100644 index 00000000..b9d2f6d7 --- /dev/null +++ b/Test/spv.meshShaderSharedMem.mesh @@ -0,0 +1,39 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of shared memory in mesh shaders: + +writeonly uniform image2D uni_image; +uniform block0 { + uint uni_value; +}; + +shared vec4 mem[10]; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + 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(); +} diff --git a/Test/spv.meshShaderTaskMem.mesh b/Test/spv.meshShaderTaskMem.mesh new file mode 100644 index 00000000..5ce5bedd --- /dev/null +++ b/Test/spv.meshShaderTaskMem.mesh @@ -0,0 +1,41 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of task memory in mesh shaders: + +taskNV in taskBlock { + float gid1[2]; + vec4 gid2; +} 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.meshShaderUserDefined.mesh b/Test/spv.meshShaderUserDefined.mesh new file mode 100644 index 00000000..8b0937db --- /dev/null +++ b/Test/spv.meshShaderUserDefined.mesh @@ -0,0 +1,59 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of user defined interface out blocks: + +// per-primitive block +perprimitiveNV 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.meshTaskShader.task b/Test/spv.meshTaskShader.task new file mode 100644 index 00000000..c12b3bdd --- /dev/null +++ b/Test/spv.meshTaskShader.task @@ -0,0 +1,49 @@ +#version 450 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_NV_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]; + +// test use of task memory in task shaders: +taskNV out Task { + vec2 dummy; + vec2 submesh[3]; +} 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. set task count + gl_TaskCountNV = 3; +} diff --git a/Test/spv.shaderImageFootprint.frag b/Test/spv.shaderImageFootprint.frag new file mode 100644 index 00000000..efde3704 --- /dev/null +++ b/Test/spv.shaderImageFootprint.frag @@ -0,0 +1,123 @@ +#version 450 + +#extension GL_NV_shader_texture_footprint : require + + +layout (location = 0) in vec2 P2; +layout (location = 2) in vec3 P3; +layout (location = 3) in flat int granularity; +layout (location = 4) in float lodClamp; +layout (location = 5) in float lod; +layout (location = 6) in vec2 dx; +layout (location = 8) in vec2 dy; +layout (location = 9) in float bias; + +uniform sampler2D sample2D; +uniform sampler3D sample3D; + +buffer result2D { + bool ret2D; + uvec2 anchor2D; + uvec2 offset2D; + uvec2 mask2D; + uint lod2D; + uint granularity2D; +}; + +buffer result3D { + bool ret3D; + uvec3 anchor3D; + uvec3 offset3D; + uvec2 mask3D; + uint lod3D; + uint granularity3D; +}; + +void main() { + gl_TextureFootprint2DNV fp2D; + gl_TextureFootprint3DNV fp3D; + + ret2D = textureFootprintNV(sample2D, P2, granularity, true, fp2D); + anchor2D = fp2D.anchor; + offset2D = fp2D.offset; + mask2D = fp2D.mask; + lod2D = fp2D.lod; + granularity2D = fp2D.granularity; + + ret2D = textureFootprintNV(sample2D, P2, granularity, true, fp2D, bias); + anchor2D += fp2D.anchor; + offset2D += fp2D.offset; + mask2D += fp2D.mask; + lod2D += fp2D.lod; + granularity2D += fp2D.granularity; + + ret2D = textureFootprintClampNV(sample2D, P2, lodClamp, granularity, true, fp2D); + anchor2D += fp2D.anchor; + offset2D += fp2D.offset; + mask2D += fp2D.mask; + lod2D += fp2D.lod; + granularity2D += fp2D.granularity; + + ret2D = textureFootprintClampNV(sample2D, P2, lodClamp, granularity, true, fp2D, bias); + anchor2D += fp2D.anchor; + offset2D += fp2D.offset; + mask2D += fp2D.mask; + lod2D += fp2D.lod; + granularity2D += fp2D.granularity; + + ret2D = textureFootprintLodNV(sample2D, P2, lod, granularity, true, fp2D); + anchor2D += fp2D.anchor; + offset2D += fp2D.offset; + mask2D += fp2D.mask; + lod2D += fp2D.lod; + granularity2D += fp2D.granularity; + + ret2D = textureFootprintGradNV(sample2D, P2, dx, dy, granularity, true, fp2D); + anchor2D += fp2D.anchor; + offset2D += fp2D.offset; + mask2D += fp2D.mask; + lod2D += fp2D.lod; + granularity2D += fp2D.granularity; + + ret2D = textureFootprintGradClampNV(sample2D, P2, dx, dy, lodClamp, granularity, true, fp2D); + anchor2D += fp2D.anchor; + offset2D += fp2D.offset; + mask2D += fp2D.mask; + lod2D += fp2D.lod; + granularity2D += fp2D.granularity; + + ret3D = textureFootprintNV(sample3D, P3, granularity, true, fp3D); + anchor3D = fp3D.anchor; + offset3D = fp3D.offset; + mask3D = fp3D.mask; + lod3D = fp3D.lod; + granularity3D = fp3D.granularity; + + ret3D = textureFootprintNV(sample3D, P3, granularity, true, fp3D, bias); + anchor3D += fp3D.anchor; + offset3D += fp3D.offset; + mask3D += fp3D.mask; + lod3D += fp3D.lod; + granularity3D += fp3D.granularity; + + ret3D = textureFootprintClampNV(sample3D, P3, lodClamp, granularity, true, fp3D); + anchor3D += fp3D.anchor; + offset3D += fp3D.offset; + mask3D += fp3D.mask; + lod3D += fp3D.lod; + granularity3D += fp3D.granularity; + + ret3D = textureFootprintClampNV(sample3D, P3, lodClamp, granularity, true, fp3D, bias); + anchor3D += fp3D.anchor; + offset3D += fp3D.offset; + mask3D += fp3D.mask; + lod3D += fp3D.lod; + granularity3D += fp3D.granularity; + + ret3D = textureFootprintLodNV(sample3D, P3, lod, granularity, true, fp3D); + anchor3D += fp3D.anchor; + offset3D += fp3D.offset; + mask3D += fp3D.mask; + lod3D += fp3D.lod; + granularity3D += fp3D.granularity; +} \ No newline at end of file diff --git a/Test/spv.shadingRate.frag b/Test/spv.shadingRate.frag new file mode 100644 index 00000000..8fbd4baf --- /dev/null +++ b/Test/spv.shadingRate.frag @@ -0,0 +1,11 @@ +#version 450 + +#extension GL_NV_shading_rate_image : require + +layout (location = 0) out vec2 FragmentSize; +layout (location = 2) out int InvocationsPerPixel; + +void main () { + FragmentSize = gl_FragmentSizeNV; + InvocationsPerPixel = gl_InvocationsPerPixelNV; +} \ No newline at end of file diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 46fe159b..fc3a19f9 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -62,6 +62,10 @@ enum TBasicType { EbtStruct, EbtBlock, +#ifdef NV_EXTENSIONS + EbtAccStructNV, +#endif + // HLSL types that live only temporarily. EbtString, @@ -88,6 +92,12 @@ enum TStorageQualifier { EvqBuffer, // read/write, shared with app EvqShared, // compute shader's read/write 'shared' qualifier +#ifdef NV_EXTENSIONS + EvqPayloadNV, + EvqPayloadInNV, + EvqHitAttrNV, +#endif + // 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 @@ -227,6 +237,32 @@ enum TBuiltInVariable { EbvPositionPerViewNV, EbvViewportMaskPerViewNV, EbvFragFullyCoveredNV, + EbvFragmentSizeNV, + EbvInvocationsPerPixelNV, + // raytracing + EbvLaunchIdNV, + EbvLaunchSizeNV, + EbvInstanceCustomIndexNV, + EbvWorldRayOriginNV, + EbvWorldRayDirectionNV, + EbvObjectRayOriginNV, + EbvObjectRayDirectionNV, + EbvRayTminNV, + EbvRayTmaxNV, + EbvHitTNV, + EbvHitKindNV, + EbvObjectToWorldNV, + EbvWorldToObjectNV, + EbvBaryCoordNV, + EbvBaryCoordNoPerspNV, + EbvTaskCountNV, + EbvPrimitiveCountNV, + EbvPrimitiveIndicesNV, + EbvClipDistancePerViewNV, + EbvCullDistancePerViewNV, + EbvLayerPerViewNV, + EbvMeshViewCountNV, + EbvMeshViewIndicesNV, #endif // HLSL built-ins that live only temporarily, until they get remapped @@ -273,6 +309,11 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqPointCoord: return "gl_PointCoord"; break; case EvqFragColor: return "fragColor"; break; case EvqFragDepth: return "gl_FragDepth"; break; +#ifdef NV_EXTENSIONS + case EvqPayloadNV: return "rayPayloadNVX"; break; + case EvqPayloadInNV: return "rayPayloadInNVX"; break; + case EvqHitAttrNV: return "hitAttributeNVX"; break; +#endif default: return "unknown qualifier"; } } @@ -365,6 +406,31 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvPositionPerViewNV: return "PositionPerViewNV"; case EbvViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; case EbvFragFullyCoveredNV: return "FragFullyCoveredNV"; + case EbvFragmentSizeNV: return "FragmentSizeNV"; + case EbvInvocationsPerPixelNV: return "InvocationsPerPixelNV"; + case EbvLaunchIdNV: return "LaunchIdNVX"; + case EbvLaunchSizeNV: return "LaunchSizeNVX"; + case EbvInstanceCustomIndexNV: return "InstanceCustomIndexNVX"; + case EbvWorldRayOriginNV: return "WorldRayOriginNVX"; + case EbvWorldRayDirectionNV: return "WorldRayDirectionNVX"; + case EbvObjectRayOriginNV: return "ObjectRayOriginNVX"; + case EbvObjectRayDirectionNV: return "ObjectRayDirectionNVX"; + case EbvRayTminNV: return "ObjectRayTminNVX"; + case EbvRayTmaxNV: return "ObjectRayTmaxNVX"; + case EbvHitTNV: return "HitTNVX"; + case EbvHitKindNV: return "HitKindNVX"; + case EbvObjectToWorldNV: return "ObjectToWorldNVX"; + case EbvWorldToObjectNV: return "WorldToObjectNVX"; + case EbvBaryCoordNV: return "BaryCoordNV"; + case EbvBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; + case EbvTaskCountNV: return "TaskCountNV"; + case EbvPrimitiveCountNV: return "PrimitiveCountNV"; + case EbvPrimitiveIndicesNV: return "PrimitiveIndicesNV"; + case EbvClipDistancePerViewNV: return "ClipDistancePerViewNV"; + case EbvCullDistancePerViewNV: return "CullDistancePerViewNV"; + case EbvLayerPerViewNV: return "LayerPerViewNV"; + case EbvMeshViewCountNV: return "MeshViewCountNV"; + case EbvMeshViewIndicesNV: return "MeshViewIndicesNV"; #endif default: return "unknown built-in variable"; } diff --git a/glslang/Include/ResourceLimits.h b/glslang/Include/ResourceLimits.h index 0d07b8c8..89163ac7 100644 --- a/glslang/Include/ResourceLimits.h +++ b/glslang/Include/ResourceLimits.h @@ -133,6 +133,17 @@ struct TBuiltInResource { int maxCullDistances; int maxCombinedClipAndCullDistances; int maxSamples; +#ifdef NV_EXTENSIONS + int maxMeshOutputVerticesNV; + int maxMeshOutputPrimitivesNV; + int maxMeshWorkGroupSizeX_NV; + int maxMeshWorkGroupSizeY_NV; + int maxMeshWorkGroupSizeZ_NV; + int maxTaskWorkGroupSizeX_NV; + int maxTaskWorkGroupSizeY_NV; + int maxTaskWorkGroupSizeZ_NV; + int maxMeshViewCountNV; +#endif TLimits limits; }; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 39289324..7793c2c1 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -456,6 +456,12 @@ public: nopersp = false; #ifdef AMD_EXTENSIONS explicitInterp = false; +#endif +#ifdef NV_EXTENSIONS + pervertexNV = false; + perPrimitiveNV = false; + perViewNV = false; + perTaskNV = false; #endif } @@ -500,6 +506,12 @@ public: bool nopersp : 1; #ifdef AMD_EXTENSIONS bool explicitInterp : 1; +#endif +#ifdef NV_EXTENSIONS + bool pervertexNV : 1; + bool perPrimitiveNV : 1; + bool perViewNV : 1; + bool perTaskNV : 1; #endif bool patch : 1; bool sample : 1; @@ -524,6 +536,7 @@ public: { return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || volatil || restrict || readonly || writeonly; } + bool isInterpolation() const { #ifdef AMD_EXTENSIONS @@ -532,15 +545,21 @@ public: return flat || smooth || nopersp; #endif } + #ifdef AMD_EXTENSIONS bool isExplicitInterpolation() const { return explicitInterp; } #endif + bool isAuxiliary() const { +#ifdef NV_EXTENSIONS + return centroid || patch || sample || pervertexNV; +#else return centroid || patch || sample; +#endif } bool isPipeInput() const @@ -607,6 +626,33 @@ public: } } + bool isPerPrimitive() const + { +#ifdef NV_EXTENSIONS + return perPrimitiveNV; +#else + return false; +#endif + } + + bool isPerView() const + { +#ifdef NV_EXTENSIONS + return perViewNV; +#else + return false; +#endif + } + + bool isTaskMemory() const + { +#ifdef NV_EXTENSIONS + return perTaskNV; +#else + return false; +#endif + } + bool isIo() const { switch (storage) { @@ -656,6 +702,13 @@ public: return ! patch && (isPipeInput() || isPipeOutput()); case EShLangTessEvaluation: return ! patch && isPipeInput(); +#ifdef NV_EXTENSIONS + case EShLangFragment: + return pervertexNV && isPipeInput(); + case EShLangMeshNV: + return ! perTaskNV && isPipeOutput(); +#endif + default: return false; } @@ -672,6 +725,7 @@ public: layoutViewportRelative = false; // -2048 as the default value indicating layoutSecondaryViewportRelative is not set layoutSecondaryViewportRelativeOffset = -2048; + layoutShaderRecordNV = false; #endif clearInterstageLayout(); @@ -705,6 +759,9 @@ public: hasAnyLocation() || hasStream() || hasFormat() || +#ifdef NV_EXTENSIONS + layoutShaderRecordNV || +#endif layoutPushConstant; } bool hasLayout() const @@ -758,6 +815,7 @@ public: bool layoutPassthrough; bool layoutViewportRelative; int layoutSecondaryViewportRelativeOffset; + bool layoutShaderRecordNV; #endif bool hasUniformLayout() const @@ -1035,7 +1093,7 @@ struct TShaderQualifiers { bool pixelCenterInteger; // fragment shader bool originUpperLeft; // fragment shader int invocations; - int vertices; // both for tessellation "vertices" and geometry "max_vertices" + int vertices; // for tessellation "vertices", geometry & mesh "max_vertices" TVertexSpacing spacing; TVertexOrder order; bool pointMode; @@ -1048,7 +1106,10 @@ struct TShaderQualifiers { int numViews; // multiview extenstions #ifdef NV_EXTENSIONS - bool layoutOverrideCoverage; // true if layout override_coverage set + bool layoutOverrideCoverage; // true if layout override_coverage set + bool layoutDerivativeGroupQuads; // true if layout derivative_group_quadsNV set + bool layoutDerivativeGroupLinear; // true if layout derivative_group_linearNV set + int primitives; // mesh shader "max_primitives"DerivativeGroupLinear; // true if layout derivative_group_linearNV set #endif void init() @@ -1073,7 +1134,10 @@ struct TShaderQualifiers { blendEquation = false; numViews = TQualifier::layoutNotSet; #ifdef NV_EXTENSIONS - layoutOverrideCoverage = false; + layoutOverrideCoverage = false; + layoutDerivativeGroupQuads = false; + layoutDerivativeGroupLinear = false; + primitives = TQualifier::layoutNotSet; #endif } @@ -1118,6 +1182,12 @@ struct TShaderQualifiers { #ifdef NV_EXTENSIONS if (src.layoutOverrideCoverage) layoutOverrideCoverage = src.layoutOverrideCoverage; + if (src.layoutDerivativeGroupQuads) + layoutDerivativeGroupQuads = src.layoutDerivativeGroupQuads; + if (src.layoutDerivativeGroupLinear) + layoutDerivativeGroupLinear = src.layoutDerivativeGroupLinear; + if (src.primitives != TQualifier::layoutNotSet) + primitives = src.primitives; #endif } }; @@ -1416,7 +1486,11 @@ public: } return false; } - virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint; } + virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint +#ifdef NV_EXTENSIONS + || basicType == EbtAccStructNV +#endif + ; } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } // "Image" is a superset of "Subpass" @@ -1604,6 +1678,9 @@ public: case EbtSampler: return "sampler/image"; case EbtStruct: return "structure"; case EbtBlock: return "block"; +#ifdef NV_EXTENSIONS + case EbtAccStructNV: return "accelerationStructureNVX"; +#endif default: return "unknown type"; } } @@ -1699,6 +1776,8 @@ public: appendStr(" layoutSecondaryViewportRelativeOffset="); appendInt(qualifier.layoutSecondaryViewportRelativeOffset); } + if (qualifier.layoutShaderRecordNV) + appendStr(" shaderRecordNVX"); #endif appendStr(")"); @@ -1720,6 +1799,16 @@ public: #ifdef AMD_EXTENSIONS if (qualifier.explicitInterp) appendStr(" __explicitInterpAMD"); +#endif +#ifdef NV_EXTENSIONS + if (qualifier.pervertexNV) + appendStr(" pervertexNV"); + if (qualifier.perPrimitiveNV) + appendStr(" perprimitiveNV"); + if (qualifier.perViewNV) + appendStr(" perviewNV"); + if (qualifier.perTaskNV) + appendStr(" taskNV"); #endif if (qualifier.patch) appendStr(" patch"); diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index b125adb0..b770cee6 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -865,6 +865,16 @@ enum TOperator { #endif EOpSparseTextureGuardEnd, + +#ifdef NV_EXTENSIONS + EOpImageFootprintGuardBegin, + EOpImageSampleFootprintNV, + EOpImageSampleFootprintClampNV, + EOpImageSampleFootprintLodNV, + EOpImageSampleFootprintGradNV, + EOpImageSampleFootprintGradClampNV, + EOpImageFootprintGuardEnd, +#endif EOpSamplingGuardEnd, EOpTextureGuardEnd, @@ -883,6 +893,13 @@ enum TOperator { EOpFindLSB, EOpFindMSB, +#ifdef NV_EXTENSIONS + EOpTraceNV, + EOpReportIntersectionNV, + EOpIgnoreIntersectionNV, + EOpTerminateRayNV, + EOpWritePackedPrimitiveIndices4x8NV, +#endif // // HLSL operations // @@ -1248,6 +1265,9 @@ public: bool isSampling() const { return op > EOpSamplingGuardBegin && op < EOpSamplingGuardEnd; } bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; } bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; } +#ifdef NV_EXTENSIONS + bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; } +#endif bool isSparseImage() const { return op == EOpSparseImageLoad; } void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; } @@ -1420,6 +1440,23 @@ public: cracked.subpass = sampler.dim == EsdSubpass; cracked.fragMask = true; break; +#endif +#ifdef NV_EXTENSIONS + case EOpImageSampleFootprintNV: + break; + case EOpImageSampleFootprintClampNV: + cracked.lodClamp = true; + break; + case EOpImageSampleFootprintLodNV: + cracked.lod = true; + break; + case EOpImageSampleFootprintGradNV: + cracked.grad = true; + break; + case EOpImageSampleFootprintGradClampNV: + cracked.lodClamp = true; + cracked.grad = true; + break; #endif case EOpSubpassLoad: case EOpSubpassLoadMS: diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index eb690bc5..cf5b2fee 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -122,6 +122,158 @@ TBuiltIns::~TBuiltIns() // void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion) { + //============================================================================ + // + // Prototypes for built-in functions used repeatly by different shaders + // + //============================================================================ + + // + // Derivatives Functions. + // + TString derivatives ( + "float dFdx(float p);" + "vec2 dFdx(vec2 p);" + "vec3 dFdx(vec3 p);" + "vec4 dFdx(vec4 p);" + + "float dFdy(float p);" + "vec2 dFdy(vec2 p);" + "vec3 dFdy(vec3 p);" + "vec4 dFdy(vec4 p);" + + "float fwidth(float p);" + "vec2 fwidth(vec2 p);" + "vec3 fwidth(vec3 p);" + "vec4 fwidth(vec4 p);" + ); + + TString derivativeControls ( + "float dFdxFine(float p);" + "vec2 dFdxFine(vec2 p);" + "vec3 dFdxFine(vec3 p);" + "vec4 dFdxFine(vec4 p);" + + "float dFdyFine(float p);" + "vec2 dFdyFine(vec2 p);" + "vec3 dFdyFine(vec3 p);" + "vec4 dFdyFine(vec4 p);" + + "float fwidthFine(float p);" + "vec2 fwidthFine(vec2 p);" + "vec3 fwidthFine(vec3 p);" + "vec4 fwidthFine(vec4 p);" + + "float dFdxCoarse(float p);" + "vec2 dFdxCoarse(vec2 p);" + "vec3 dFdxCoarse(vec3 p);" + "vec4 dFdxCoarse(vec4 p);" + + "float dFdyCoarse(float p);" + "vec2 dFdyCoarse(vec2 p);" + "vec3 dFdyCoarse(vec3 p);" + "vec4 dFdyCoarse(vec4 p);" + + "float fwidthCoarse(float p);" + "vec2 fwidthCoarse(vec2 p);" + "vec3 fwidthCoarse(vec3 p);" + "vec4 fwidthCoarse(vec4 p);" + ); + + TString derivativesAndControl16bits ( + "float16_t dFdx(float16_t);" + "f16vec2 dFdx(f16vec2);" + "f16vec3 dFdx(f16vec3);" + "f16vec4 dFdx(f16vec4);" + + "float16_t dFdy(float16_t);" + "f16vec2 dFdy(f16vec2);" + "f16vec3 dFdy(f16vec3);" + "f16vec4 dFdy(f16vec4);" + + "float16_t dFdxFine(float16_t);" + "f16vec2 dFdxFine(f16vec2);" + "f16vec3 dFdxFine(f16vec3);" + "f16vec4 dFdxFine(f16vec4);" + + "float16_t dFdyFine(float16_t);" + "f16vec2 dFdyFine(f16vec2);" + "f16vec3 dFdyFine(f16vec3);" + "f16vec4 dFdyFine(f16vec4);" + + "float16_t dFdxCoarse(float16_t);" + "f16vec2 dFdxCoarse(f16vec2);" + "f16vec3 dFdxCoarse(f16vec3);" + "f16vec4 dFdxCoarse(f16vec4);" + + "float16_t dFdyCoarse(float16_t);" + "f16vec2 dFdyCoarse(f16vec2);" + "f16vec3 dFdyCoarse(f16vec3);" + "f16vec4 dFdyCoarse(f16vec4);" + + "float16_t fwidth(float16_t);" + "f16vec2 fwidth(f16vec2);" + "f16vec3 fwidth(f16vec3);" + "f16vec4 fwidth(f16vec4);" + + "float16_t fwidthFine(float16_t);" + "f16vec2 fwidthFine(f16vec2);" + "f16vec3 fwidthFine(f16vec3);" + "f16vec4 fwidthFine(f16vec4);" + + "float16_t fwidthCoarse(float16_t);" + "f16vec2 fwidthCoarse(f16vec2);" + "f16vec3 fwidthCoarse(f16vec3);" + "f16vec4 fwidthCoarse(f16vec4);" + ); + + TString derivativesAndControl64bits ( + "float64_t dFdx(float64_t);" + "f64vec2 dFdx(f64vec2);" + "f64vec3 dFdx(f64vec3);" + "f64vec4 dFdx(f64vec4);" + + "float64_t dFdy(float64_t);" + "f64vec2 dFdy(f64vec2);" + "f64vec3 dFdy(f64vec3);" + "f64vec4 dFdy(f64vec4);" + + "float64_t dFdxFine(float64_t);" + "f64vec2 dFdxFine(f64vec2);" + "f64vec3 dFdxFine(f64vec3);" + "f64vec4 dFdxFine(f64vec4);" + + "float64_t dFdyFine(float64_t);" + "f64vec2 dFdyFine(f64vec2);" + "f64vec3 dFdyFine(f64vec3);" + "f64vec4 dFdyFine(f64vec4);" + + "float64_t dFdxCoarse(float64_t);" + "f64vec2 dFdxCoarse(f64vec2);" + "f64vec3 dFdxCoarse(f64vec3);" + "f64vec4 dFdxCoarse(f64vec4);" + + "float64_t dFdyCoarse(float64_t);" + "f64vec2 dFdyCoarse(f64vec2);" + "f64vec3 dFdyCoarse(f64vec3);" + "f64vec4 dFdyCoarse(f64vec4);" + + "float64_t fwidth(float64_t);" + "f64vec2 fwidth(f64vec2);" + "f64vec3 fwidth(f64vec3);" + "f64vec4 fwidth(f64vec4);" + + "float64_t fwidthFine(float64_t);" + "f64vec2 fwidthFine(f64vec2);" + "f64vec3 fwidthFine(f64vec3);" + "f64vec4 fwidthFine(f64vec4);" + + "float64_t fwidthCoarse(float64_t);" + "f64vec2 fwidthCoarse(f64vec2);" + "f64vec3 fwidthCoarse(f64vec3);" + "f64vec4 fwidthCoarse(f64vec4);" + ); + //============================================================================ // // Prototypes for built-in functions seen by both vertex and fragment shaders. @@ -2789,6 +2941,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n" ); +#ifdef NV_EXTENSIONS + stageBuiltins[EShLangMeshNV].append( + "void subgroupMemoryBarrierShared();" + "\n" + ); + stageBuiltins[EShLangTaskNV].append( + "void subgroupMemoryBarrierShared();" + "\n" + ); +#endif } if (profile != EEsProfile && version >= 460) { @@ -3698,6 +3860,42 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV #endif // AMD_EXTENSIONS + +#ifdef NV_EXTENSIONS + if ((profile != EEsProfile && version >= 450) || + (profile == EEsProfile && version >= 320)) { + commonBuiltins.append( + "struct gl_TextureFootprint2DNV {" + "uvec2 anchor;" + "uvec2 offset;" + "uvec2 mask;" + "uint lod;" + "uint granularity;" + "};" + + "struct gl_TextureFootprint3DNV {" + "uvec3 anchor;" + "uvec3 offset;" + "uvec2 mask;" + "uint lod;" + "uint granularity;" + "};" + "bool textureFootprintNV(sampler2D, vec2, int, bool, out gl_TextureFootprint2DNV);" + "bool textureFootprintNV(sampler3D, vec3, int, bool, out gl_TextureFootprint3DNV);" + "bool textureFootprintNV(sampler2D, vec2, int, bool, out gl_TextureFootprint2DNV, float);" + "bool textureFootprintNV(sampler3D, vec3, int, bool, out gl_TextureFootprint3DNV, float);" + "bool textureFootprintClampNV(sampler2D, vec2, float, int, bool, out gl_TextureFootprint2DNV);" + "bool textureFootprintClampNV(sampler3D, vec3, float, int, bool, out gl_TextureFootprint3DNV);" + "bool textureFootprintClampNV(sampler2D, vec2, float, int, bool, out gl_TextureFootprint2DNV, float);" + "bool textureFootprintClampNV(sampler3D, vec3, float, int, bool, out gl_TextureFootprint3DNV, float);" + "bool textureFootprintLodNV(sampler2D, vec2, float, int, bool, out gl_TextureFootprint2DNV);" + "bool textureFootprintLodNV(sampler3D, vec3, float, int, bool, out gl_TextureFootprint3DNV);" + "bool textureFootprintGradNV(sampler2D, vec2, vec2, vec2, int, bool, out gl_TextureFootprint2DNV);" + "bool textureFootprintGradClampNV(sampler2D, vec2, vec2, vec2, float, int, bool, out gl_TextureFootprint2DNV);" + "\n"); + } + +#endif // NV_EXTENSIONS // GL_AMD_gpu_shader_half_float/Explicit types if (profile != EEsProfile && version >= 450) { commonBuiltins.append( @@ -4550,52 +4748,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } if (profile != EEsProfile && version >= 450) { + stageBuiltins[EShLangFragment].append(derivativesAndControl64bits); stageBuiltins[EShLangFragment].append( - "float64_t dFdx(float64_t);" - "f64vec2 dFdx(f64vec2);" - "f64vec3 dFdx(f64vec3);" - "f64vec4 dFdx(f64vec4);" - - "float64_t dFdy(float64_t);" - "f64vec2 dFdy(f64vec2);" - "f64vec3 dFdy(f64vec3);" - "f64vec4 dFdy(f64vec4);" - - "float64_t dFdxFine(float64_t);" - "f64vec2 dFdxFine(f64vec2);" - "f64vec3 dFdxFine(f64vec3);" - "f64vec4 dFdxFine(f64vec4);" - - "float64_t dFdyFine(float64_t);" - "f64vec2 dFdyFine(f64vec2);" - "f64vec3 dFdyFine(f64vec3);" - "f64vec4 dFdyFine(f64vec4);" - - "float64_t dFdxCoarse(float64_t);" - "f64vec2 dFdxCoarse(f64vec2);" - "f64vec3 dFdxCoarse(f64vec3);" - "f64vec4 dFdxCoarse(f64vec4);" - - "float64_t dFdyCoarse(float64_t);" - "f64vec2 dFdyCoarse(f64vec2);" - "f64vec3 dFdyCoarse(f64vec3);" - "f64vec4 dFdyCoarse(f64vec4);" - - "float64_t fwidth(float64_t);" - "f64vec2 fwidth(f64vec2);" - "f64vec3 fwidth(f64vec3);" - "f64vec4 fwidth(f64vec4);" - - "float64_t fwidthFine(float64_t);" - "f64vec2 fwidthFine(f64vec2);" - "f64vec3 fwidthFine(f64vec3);" - "f64vec4 fwidthFine(f64vec4);" - - "float64_t fwidthCoarse(float64_t);" - "f64vec2 fwidthCoarse(f64vec2);" - "f64vec3 fwidthCoarse(f64vec3);" - "f64vec4 fwidthCoarse(f64vec4);" - "float64_t interpolateAtCentroid(float64_t);" "f64vec2 interpolateAtCentroid(f64vec2);" "f64vec3 interpolateAtCentroid(f64vec3);" @@ -4723,6 +4877,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangCompute].append( "void barrier();" ); +#ifdef NV_EXTENSIONS + if ((profile != EEsProfile && version >= 450) || esBarrier) { + stageBuiltins[EShLangMeshNV].append( + "void barrier();" + ); + stageBuiltins[EShLangTaskNV].append( + "void barrier();" + ); + } +#endif if ((profile != EEsProfile && version >= 130) || esBarrier) commonBuiltins.append( "void memoryBarrier();" @@ -4738,6 +4902,18 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void groupMemoryBarrier();" ); } +#ifdef NV_EXTENSIONS + if (profile != EEsProfile && version >= 450) { + stageBuiltins[EShLangMeshNV].append( + "void memoryBarrierShared();" + "void groupMemoryBarrier();" + ); + stageBuiltins[EShLangTaskNV].append( + "void memoryBarrierShared();" + "void groupMemoryBarrier();" + ); + } +#endif commonBuiltins.append("void controlBarrier(int, int, int, int);\n" "void memoryBarrier(int, int, int);\n"); @@ -4784,61 +4960,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } - stageBuiltins[EShLangFragment].append( - "float dFdx(float p);" - "vec2 dFdx(vec2 p);" - "vec3 dFdx(vec3 p);" - "vec4 dFdx(vec4 p);" - - "float dFdy(float p);" - "vec2 dFdy(vec2 p);" - "vec3 dFdy(vec3 p);" - "vec4 dFdy(vec4 p);" - - "float fwidth(float p);" - "vec2 fwidth(vec2 p);" - "vec3 fwidth(vec3 p);" - "vec4 fwidth(vec4 p);" - - "\n"); + stageBuiltins[EShLangFragment].append(derivatives); + stageBuiltins[EShLangFragment].append("\n"); // GL_ARB_derivative_control if (profile != EEsProfile && version >= 400) { - stageBuiltins[EShLangFragment].append( - "float dFdxFine(float p);" - "vec2 dFdxFine(vec2 p);" - "vec3 dFdxFine(vec3 p);" - "vec4 dFdxFine(vec4 p);" - - "float dFdyFine(float p);" - "vec2 dFdyFine(vec2 p);" - "vec3 dFdyFine(vec3 p);" - "vec4 dFdyFine(vec4 p);" - - "float fwidthFine(float p);" - "vec2 fwidthFine(vec2 p);" - "vec3 fwidthFine(vec3 p);" - "vec4 fwidthFine(vec4 p);" - - "\n"); - - stageBuiltins[EShLangFragment].append( - "float dFdxCoarse(float p);" - "vec2 dFdxCoarse(vec2 p);" - "vec3 dFdxCoarse(vec3 p);" - "vec4 dFdxCoarse(vec4 p);" - - "float dFdyCoarse(float p);" - "vec2 dFdyCoarse(vec2 p);" - "vec3 dFdyCoarse(vec3 p);" - "vec4 dFdyCoarse(vec4 p);" - - "float fwidthCoarse(float p);" - "vec2 fwidthCoarse(vec2 p);" - "vec3 fwidthCoarse(vec3 p);" - "vec4 fwidthCoarse(vec4 p);" - - "\n"); + stageBuiltins[EShLangFragment].append(derivativeControls); + stageBuiltins[EShLangFragment].append("\n"); } // GL_OES_shader_multisample_interpolation @@ -4892,52 +5020,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // GL_AMD_gpu_shader_half_float if (profile != EEsProfile && version >= 450) { + stageBuiltins[EShLangFragment].append(derivativesAndControl16bits); + stageBuiltins[EShLangFragment].append("\n"); + stageBuiltins[EShLangFragment].append( - "float16_t dFdx(float16_t);" - "f16vec2 dFdx(f16vec2);" - "f16vec3 dFdx(f16vec3);" - "f16vec4 dFdx(f16vec4);" - - "float16_t dFdy(float16_t);" - "f16vec2 dFdy(f16vec2);" - "f16vec3 dFdy(f16vec3);" - "f16vec4 dFdy(f16vec4);" - - "float16_t dFdxFine(float16_t);" - "f16vec2 dFdxFine(f16vec2);" - "f16vec3 dFdxFine(f16vec3);" - "f16vec4 dFdxFine(f16vec4);" - - "float16_t dFdyFine(float16_t);" - "f16vec2 dFdyFine(f16vec2);" - "f16vec3 dFdyFine(f16vec3);" - "f16vec4 dFdyFine(f16vec4);" - - "float16_t dFdxCoarse(float16_t);" - "f16vec2 dFdxCoarse(f16vec2);" - "f16vec3 dFdxCoarse(f16vec3);" - "f16vec4 dFdxCoarse(f16vec4);" - - "float16_t dFdyCoarse(float16_t);" - "f16vec2 dFdyCoarse(f16vec2);" - "f16vec3 dFdyCoarse(f16vec3);" - "f16vec4 dFdyCoarse(f16vec4);" - - "float16_t fwidth(float16_t);" - "f16vec2 fwidth(f16vec2);" - "f16vec3 fwidth(f16vec3);" - "f16vec4 fwidth(f16vec4);" - - "float16_t fwidthFine(float16_t);" - "f16vec2 fwidthFine(f16vec2);" - "f16vec3 fwidthFine(f16vec3);" - "f16vec4 fwidthFine(f16vec4);" - - "float16_t fwidthCoarse(float16_t);" - "f16vec2 fwidthCoarse(f16vec2);" - "f16vec3 fwidthCoarse(f16vec3);" - "f16vec4 fwidthCoarse(f16vec4);" - "float16_t interpolateAtCentroid(float16_t);" "f16vec2 interpolateAtCentroid(f16vec2);" "f16vec3 interpolateAtCentroid(f16vec3);" @@ -4971,6 +5057,50 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } #endif +#ifdef NV_EXTENSIONS + + // Builtins for GL_NV_raytracing + if (profile != EEsProfile && version >= 460) { + stageBuiltins[EShLangRayGenNV].append( + "void traceNVX(accelerationStructureNVX,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "\n"); + stageBuiltins[EShLangIntersectNV].append( + "bool reportIntersectionNVX(float, uint);" + "\n"); + stageBuiltins[EShLangAnyHitNV].append( + "void ignoreIntersectionNVX();" + "void terminateRayNVX();" + "\n"); + stageBuiltins[EShLangClosestHitNV].append( + "void traceNVX(accelerationStructureNVX,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "\n"); + stageBuiltins[EShLangMissNV].append( + "void traceNVX(accelerationStructureNVX,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "\n"); + } + + //E_SPV_NV_compute_shader_derivatives + + stageBuiltins[EShLangCompute].append(derivatives); + stageBuiltins[EShLangCompute].append(derivativeControls); + stageBuiltins[EShLangCompute].append("\n"); + + + if (profile != EEsProfile && version >= 450) { + + stageBuiltins[EShLangCompute].append(derivativesAndControl16bits); + stageBuiltins[EShLangCompute].append(derivativesAndControl64bits); + stageBuiltins[EShLangCompute].append("\n"); + } + + // Builtins for GL_NV_mesh_shader + if (profile != EEsProfile && version >= 450) { + stageBuiltins[EShLangMeshNV].append( + "void writePackedPrimitiveIndices4x8NV(uint, uint);" + "\n"); + } +#endif + //============================================================================ // // Standard Uniforms @@ -5150,6 +5280,89 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifdef NV_EXTENSIONS + //============================================================================ + // + // Define the interface to the mesh/task shader. + // + //============================================================================ + + if (profile != EEsProfile && version >= 450) { + // per-vertex attributes + stageBuiltins[EShLangMeshNV].append( + "out gl_MeshPerVertexNV {" + "vec4 gl_Position;" + "float gl_PointSize;" + "float gl_ClipDistance[];" + "float gl_CullDistance[];" + "perviewNV vec4 gl_PositionPerViewNV[];" + "perviewNV float gl_ClipDistancePerViewNV[][8];" + "perviewNV float gl_CullDistancePerViewNV[][8];" + "} gl_MeshVerticesNV[];" + ); + + // per-primitive attributes + stageBuiltins[EShLangMeshNV].append( + "perprimitiveNV out gl_MeshPerPrimitiveNV {" + "int gl_PrimitiveID;" + "int gl_Layer;" + "int gl_ViewportIndex;" + "int gl_ViewportMask[];" + "perviewNV int gl_LayerPerViewNV[];" + "perviewNV int gl_ViewportMaskPerViewNV[][1];" + "} gl_MeshPrimitivesNV[];" + ); + + stageBuiltins[EShLangMeshNV].append( + "out uint gl_PrimitiveCountNV;" + "out uint gl_PrimitiveIndicesNV[];" + + "in uint gl_MeshViewCountNV;" + "in uint gl_MeshViewIndicesNV[4];" + + "const highp uvec3 gl_WorkGroupSize = uvec3(1,1,1);" + + "in highp uvec3 gl_WorkGroupID;" + "in highp uvec3 gl_LocalInvocationID;" + + "in highp uvec3 gl_GlobalInvocationID;" + "in highp uint gl_LocalInvocationIndex;" + + "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( + "in int gl_DrawID;" + ); + } + + stageBuiltins[EShLangTaskNV].append( + "out uint gl_TaskCountNV;" + + "const highp uvec3 gl_WorkGroupSize = uvec3(1,1,1);" + + "in highp uvec3 gl_WorkGroupID;" + "in highp uvec3 gl_LocalInvocationID;" + + "in highp uvec3 gl_GlobalInvocationID;" + "in highp uint gl_LocalInvocationIndex;" + + "in highp int gl_DeviceIndex;" // GL_EXT_device_group + "in int gl_DrawIDARB;" // GL_ARB_shader_draw_parameters + + "\n"); + + if (version >= 460) { + stageBuiltins[EShLangTaskNV].append( + "in int gl_DrawID;" + ); + } + } +#endif + //============================================================================ // // Define the interface to the vertex shader. @@ -5734,6 +5947,14 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangFragment].append( "in bool gl_FragFullyCoveredNV;" ); + if (version >= 450) + stageBuiltins[EShLangFragment].append( + "flat in ivec2 gl_FragmentSizeNV;" + "flat in int gl_InvocationsPerPixelNV;" + "in vec3 gl_BaryCoordNV;" + "in vec3 gl_BaryCoordNoPerspNV;" + ); + #endif } else { // ES profile @@ -5775,6 +5996,19 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangFragment].append( "highp float gl_FragDepthEXT;" // GL_EXT_frag_depth ); +#ifdef NV_EXTENSIONS + if (version >= 320) + stageBuiltins[EShLangFragment].append( + "flat in ivec2 gl_FragmentSizeNV;" + "flat in int gl_InvocationsPerPixelNV;" + ); + if (version >= 320) + stageBuiltins[EShLangFragment].append( + "in vec3 gl_BaryCoordNV;" + "in vec3 gl_BaryCoordNoPerspNV;" + ); +#endif + } stageBuiltins[EShLangFragment].append("\n"); @@ -5807,6 +6041,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangGeometry] .append(ballotDecls); stageBuiltins[EShLangCompute] .append(ballotDecls); stageBuiltins[EShLangFragment] .append(fragmentBallotDecls); +#ifdef NV_EXTENSIONS + stageBuiltins[EShLangMeshNV] .append(ballotDecls); + stageBuiltins[EShLangTaskNV] .append(ballotDecls); +#endif } if ((profile != EEsProfile && version >= 140) || @@ -5843,13 +6081,115 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangGeometry] .append(ballotDecls); stageBuiltins[EShLangCompute] .append(ballotDecls); stageBuiltins[EShLangFragment] .append(fragmentBallotDecls); +#ifdef NV_EXTENSIONS + stageBuiltins[EShLangMeshNV] .append(ballotDecls); + stageBuiltins[EShLangTaskNV] .append(ballotDecls); +#endif stageBuiltins[EShLangCompute].append( "highp in uint gl_NumSubgroups;" "highp in uint gl_SubgroupID;" "\n"); +#ifdef NV_EXTENSIONS + stageBuiltins[EShLangMeshNV].append( + "highp in uint gl_NumSubgroups;" + "highp in uint gl_SubgroupID;" + "\n"); + stageBuiltins[EShLangTaskNV].append( + "highp in uint gl_NumSubgroups;" + "highp in uint gl_SubgroupID;" + "\n"); +#endif } +#ifdef NV_EXTENSIONS + // GL_NV_raytracing + if (profile != EEsProfile && version >= 460) { + + const char *constRayFlags = + "const uint gl_RayFlagsNoneNVX = 0U;" + "const uint gl_RayFlagsOpaqueNVX = 1U;" + "const uint gl_RayFlagsNoOpaqueNVX = 2U;" + "const uint gl_RayFlagsTerminateOnFirstHitNVX = 4U;" + "const uint gl_RayFlagsSkipClosestHitShaderNVX = 8U;" + "const uint gl_RayFlagsCullBackFacingTrianglesNVX = 16U;" + "const uint gl_RayFlagsCullFrontFacingTrianglesNVX = 32U;" + "const uint gl_RayFlagsCullOpaqueNVX = 64U;" + "const uint gl_RayFlagsCullNoOpaqueNVX = 128U;" + "\n"; + const char *rayGenDecls = + "in uvec2 gl_LaunchIDNVX;" + "in uvec2 gl_LaunchSizeNVX;" + "\n"; + const char *intersectDecls = + "in uvec2 gl_LaunchIDNVX;" + "in uvec2 gl_LaunchSizeNVX;" + "in int gl_PrimitiveID;" + "in int gl_InstanceID;" + "in int gl_InstanceCustomIndexNVX;" + "in vec3 gl_WorldRayOriginNVX;" + "in vec3 gl_WorldRayDirectionNVX;" + "in vec3 gl_ObjectRayOriginNVX;" + "in vec3 gl_ObjectRayDirectionNVX;" + "in float gl_RayTminNVX;" + "in float gl_RayTmaxNVX;" + "in mat4x3 gl_ObjectToWorldNVX;" + "in mat4x3 gl_WorldToObjectNVX;" + "\n"; + const char *hitDecls = + "in uvec2 gl_LaunchIDNVX;" + "in uvec2 gl_LaunchSizeNVX;" + "in int gl_PrimitiveID;" + "in int gl_InstanceID;" + "in int gl_InstanceCustomIndexNVX;" + "in vec3 gl_WorldRayOriginNVX;" + "in vec3 gl_WorldRayDirectionNVX;" + "in vec3 gl_ObjectRayOriginNVX;" + "in vec3 gl_ObjectRayDirectionNVX;" + "in float gl_RayTminNVX;" + "in float gl_RayTmaxNVX;" + "in float gl_HitTNVX;" + "in uint gl_HitKindNVX;" + "in mat4x3 gl_ObjectToWorldNVX;" + "in mat4x3 gl_WorldToObjectNVX;" + "\n"; + const char *missDecls = + "in uvec2 gl_LaunchIDNVX;" + "in uvec2 gl_LaunchSizeNVX;" + "in vec3 gl_WorldRayOriginNVX;" + "in vec3 gl_WorldRayDirectionNVX;" + "in vec3 gl_ObjectRayOriginNVX;" + "in vec3 gl_ObjectRayDirectionNVX;" + "in float gl_RayTminNVX;" + "in float gl_RayTmaxNVX;" + "\n"; + + stageBuiltins[EShLangRayGenNV].append(rayGenDecls); + stageBuiltins[EShLangRayGenNV].append(constRayFlags); + + stageBuiltins[EShLangIntersectNV].append(intersectDecls); + + stageBuiltins[EShLangAnyHitNV].append(hitDecls); + + stageBuiltins[EShLangClosestHitNV].append(hitDecls); + stageBuiltins[EShLangClosestHitNV].append(constRayFlags); + + stageBuiltins[EShLangMissNV].append(missDecls); + stageBuiltins[EShLangMissNV].append(constRayFlags); + } + if ((profile != EEsProfile && version >= 140)) { + const char *deviceIndex = + "in highp int gl_DeviceIndex;" // GL_EXT_device_group + "\n"; + + stageBuiltins[EShLangRayGenNV].append(deviceIndex); + stageBuiltins[EShLangIntersectNV].append(deviceIndex); + stageBuiltins[EShLangAnyHitNV].append(deviceIndex); + stageBuiltins[EShLangClosestHitNV].append(deviceIndex); + stageBuiltins[EShLangMissNV].append(deviceIndex); + } +#endif + if (version >= 300 /* both ES and non-ES */) { stageBuiltins[EShLangFragment].append( "flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2 @@ -6102,6 +6442,18 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int #ifdef AMD_EXTENSIONS } #endif + +#ifdef NV_EXTENSIONS + stageBuiltins[EShLangCompute].append("vec2 textureQueryLod("); + stageBuiltins[EShLangCompute].append(typeName); + if (dimMap[sampler.dim] == 1) + stageBuiltins[EShLangCompute].append(", float"); + else { + stageBuiltins[EShLangCompute].append(", vec"); + stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]); + } + stageBuiltins[EShLangCompute].append(");\n"); +#endif } // @@ -6582,9 +6934,12 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, s.append(");\n"); // Add to the per-language set of built-ins - if (bias || lodClamp) + if (bias || lodClamp) { stageBuiltins[EShLangFragment].append(s); - else +#ifdef NV_EXTENSIONS + stageBuiltins[EShLangCompute].append(s); +#endif + } else commonBuiltins.append(s); } @@ -7301,6 +7656,31 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf } #endif +#ifdef NV_EXTENSIONS + // SPV_NV_mesh_shader + if (profile != EEsProfile && version >= 450) { + snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputVerticesNV = %d;", resources.maxMeshOutputVerticesNV); + s.append(builtInConstant); + + snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputPrimitivesNV = %d;", resources.maxMeshOutputPrimitivesNV); + s.append(builtInConstant); + + snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxMeshWorkGroupSizeNV = ivec3(%d,%d,%d);", resources.maxMeshWorkGroupSizeX_NV, + resources.maxMeshWorkGroupSizeY_NV, + resources.maxMeshWorkGroupSizeZ_NV); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxTaskWorkGroupSizeNV = ivec3(%d,%d,%d);", resources.maxTaskWorkGroupSizeX_NV, + resources.maxTaskWorkGroupSizeY_NV, + resources.maxTaskWorkGroupSizeZ_NV); + s.append(builtInConstant); + + snprintf(builtInConstant, maxSize, "const int gl_MaxMeshViewCountNV = %d;", resources.maxMeshViewCountNV); + s.append(builtInConstant); + + s.append("\n"); + } +#endif + s.append("\n"); } @@ -7484,6 +7864,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } #endif +#ifdef NV_EXTENSIONS + symbolTable.setFunctionExtensions("textureFootprintNV", 1, &E_GL_NV_shader_texture_footprint); + symbolTable.setFunctionExtensions("textureFootprintClampNV", 1, &E_GL_NV_shader_texture_footprint); + symbolTable.setFunctionExtensions("textureFootprintLodNV", 1, &E_GL_NV_shader_texture_footprint); + symbolTable.setFunctionExtensions("textureFootprintGradNV", 1, &E_GL_NV_shader_texture_footprint); + symbolTable.setFunctionExtensions("textureFootprintGradClampNV", 1, &E_GL_NV_shader_texture_footprint); +#endif // Compatibility variables, vertex only if (spvVersion.spv == 0) { BuiltInVariable("gl_Color", EbvColor, symbolTable); @@ -7904,6 +8291,30 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_FragFullyCoveredNV", 1, &E_GL_NV_conservative_raster_underestimation); BuiltInVariable("gl_FragFullyCoveredNV", EbvFragFullyCoveredNV, symbolTable); } + if ((profile != EEsProfile && version >= 450) || + (profile == EEsProfile && version >= 320)) { + symbolTable.setVariableExtensions("gl_FragmentSizeNV", 1, &E_GL_NV_shading_rate_image); + symbolTable.setVariableExtensions("gl_InvocationsPerPixelNV", 1, &E_GL_NV_shading_rate_image); + BuiltInVariable("gl_FragmentSizeNV", EbvFragmentSizeNV, symbolTable); + BuiltInVariable("gl_InvocationsPerPixelNV", EbvInvocationsPerPixelNV, symbolTable); + symbolTable.setVariableExtensions("gl_BaryCoordNV", 1, &E_GL_NV_fragment_shader_barycentric); + symbolTable.setVariableExtensions("gl_BaryCoordNoPerspNV", 1, &E_GL_NV_fragment_shader_barycentric); + BuiltInVariable("gl_BaryCoordNV", EbvBaryCoordNV, symbolTable); + BuiltInVariable("gl_BaryCoordNoPerspNV", EbvBaryCoordNoPerspNV, symbolTable); + } + if (((profile != EEsProfile && version >= 450) || + (profile == EEsProfile && version >= 320)) && + language == EShLangCompute) { + symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("fwidth", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdxFine", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdyFine", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("fwidthFine", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdxCoarse", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives); + symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); + } #endif symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth); @@ -8141,7 +8552,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); } - // GL_ARB_shader_ballot + // GL_KHR_shader_subgroup if (spvVersion.vulkan > 0) { symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); @@ -8179,6 +8590,240 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); } break; +#ifdef NV_EXTENSIONS + case EShLangRayGenNV: + case EShLangIntersectNV: + case EShLangAnyHitNV: + case EShLangClosestHitNV: + case EShLangMissNV: + if (profile != EEsProfile && version >= 460) { + symbolTable.setVariableExtensions("gl_LaunchIDNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_LaunchSizeNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_PrimitiveID", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_InstanceID", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_InstanceCustomIndexNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_WorldRayOriginNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_WorldRayDirectionNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_ObjectRayOriginNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_ObjectRayDirectionNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_RayTminNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_RayTmaxNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_HitTNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_HitKindNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_ObjectToWorldNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_WorldToObjectNVX", 1, &E_GL_NVX_raytracing); + symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); + + BuiltInVariable("gl_LaunchIDNVX", EbvLaunchIdNV, symbolTable); + BuiltInVariable("gl_LaunchSizeNVX", EbvLaunchSizeNV, symbolTable); + BuiltInVariable("gl_PrimitiveID", EbvPrimitiveId, symbolTable); + BuiltInVariable("gl_InstanceID", EbvInstanceId, symbolTable); + BuiltInVariable("gl_InstanceCustomIndexNVX",EbvInstanceCustomIndexNV,symbolTable); + BuiltInVariable("gl_WorldRayOriginNVX", EbvWorldRayOriginNV, symbolTable); + BuiltInVariable("gl_WorldRayDirectionNVX", EbvWorldRayDirectionNV, symbolTable); + BuiltInVariable("gl_ObjectRayOriginNVX", EbvObjectRayOriginNV, symbolTable); + BuiltInVariable("gl_ObjectRayDirectionNVX", EbvObjectRayDirectionNV, symbolTable); + BuiltInVariable("gl_RayTminNVX", EbvRayTminNV, symbolTable); + BuiltInVariable("gl_RayTmaxNVX", EbvRayTmaxNV, symbolTable); + BuiltInVariable("gl_HitTNVX", EbvHitTNV, symbolTable); + BuiltInVariable("gl_HitKindNVX", EbvHitKindNV, symbolTable); + BuiltInVariable("gl_ObjectToWorldNVX", EbvObjectToWorldNV, symbolTable); + BuiltInVariable("gl_WorldToObjectNVX", EbvWorldToObjectNV, symbolTable); + BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); + } + break; + case EShLangMeshNV: + if (profile != EEsProfile && version >= 450) { + // Per-vertex builtins + BuiltInVariable("gl_MeshVerticesNV", "gl_Position", EbvPosition, symbolTable); + BuiltInVariable("gl_MeshVerticesNV", "gl_PointSize", EbvPointSize, symbolTable); + BuiltInVariable("gl_MeshVerticesNV", "gl_ClipDistance", EbvClipDistance, symbolTable); + BuiltInVariable("gl_MeshVerticesNV", "gl_CullDistance", EbvCullDistance, symbolTable); + // Per-view builtins + BuiltInVariable("gl_MeshVerticesNV", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable); + BuiltInVariable("gl_MeshVerticesNV", "gl_ClipDistancePerViewNV", EbvClipDistancePerViewNV, symbolTable); + BuiltInVariable("gl_MeshVerticesNV", "gl_CullDistancePerViewNV", EbvCullDistancePerViewNV, symbolTable); + + // Per-primitive builtins + BuiltInVariable("gl_MeshPrimitivesNV", "gl_PrimitiveID", EbvPrimitiveId, symbolTable); + BuiltInVariable("gl_MeshPrimitivesNV", "gl_Layer", EbvLayer, symbolTable); + BuiltInVariable("gl_MeshPrimitivesNV", "gl_ViewportIndex", EbvViewportIndex, symbolTable); + BuiltInVariable("gl_MeshPrimitivesNV", "gl_ViewportMask", EbvViewportMaskNV, symbolTable); + // Per-view builtins + BuiltInVariable("gl_MeshPrimitivesNV", "gl_LayerPerViewNV", EbvLayerPerViewNV, symbolTable); + BuiltInVariable("gl_MeshPrimitivesNV", "gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable); + + symbolTable.setVariableExtensions("gl_PrimitiveCountNV", 1, &E_GL_NV_mesh_shader); + 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); + + BuiltInVariable("gl_PrimitiveCountNV", EbvPrimitiveCountNV, symbolTable); + BuiltInVariable("gl_PrimitiveIndicesNV", EbvPrimitiveIndicesNV, symbolTable); + BuiltInVariable("gl_MeshViewCountNV", EbvMeshViewCountNV, symbolTable); + BuiltInVariable("gl_MeshViewIndicesNV", EbvMeshViewIndicesNV, symbolTable); + BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable); + BuiltInVariable("gl_WorkGroupID", EbvWorkGroupId, symbolTable); + BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable); + BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); + BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); + + symbolTable.setVariableExtensions("gl_MaxMeshOutputVerticesNV", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_MaxMeshOutputPrimitivesNV", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_MaxMeshWorkGroupSizeNV", 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); + + // GL_EXT_device_group + symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); + BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); + + // GL_ARB_shader_draw_parameters + symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters); + BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable); + if (version >= 460) { + BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable); + } + + // GL_ARB_shader_ballot + symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot); + + BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); + BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); + BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); + BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable); + BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); + BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); + + if (spvVersion.vulkan > 0) + // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan + SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + else + BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); + } + + // GL_KHR_shader_subgroup + if (spvVersion.vulkan > 0) { + symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic); + symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic); + symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); + symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); + symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot); + symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot); + symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot); + symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot); + symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot); + + BuiltInVariable("gl_NumSubgroups", EbvNumSubgroups, symbolTable); + BuiltInVariable("gl_SubgroupID", EbvSubgroupID, symbolTable); + BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable); + BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable); + BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable); + BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable); + BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); + BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); + BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); + + symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); + } + break; + + case EShLangTaskNV: + if (profile != EEsProfile && version >= 450) { + 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); + + BuiltInVariable("gl_TaskCountNV", EbvTaskCountNV, symbolTable); + BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable); + BuiltInVariable("gl_WorkGroupID", EbvWorkGroupId, symbolTable); + BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable); + BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); + BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); + + symbolTable.setVariableExtensions("gl_MaxTaskWorkGroupSizeNV", 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); + + // GL_EXT_device_group + symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); + BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); + + // GL_ARB_shader_draw_parameters + symbolTable.setVariableExtensions("gl_DrawIDARB", 1, &E_GL_ARB_shader_draw_parameters); + BuiltInVariable("gl_DrawIDARB", EbvDrawId, symbolTable); + if (version >= 460) { + BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable); + } + + // GL_ARB_shader_ballot + symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupEqMaskARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupGeMaskARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupGtMaskARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupLeMaskARB", 1, &E_GL_ARB_shader_ballot); + symbolTable.setVariableExtensions("gl_SubGroupLtMaskARB", 1, &E_GL_ARB_shader_ballot); + + BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); + BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); + BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); + BuiltInVariable("gl_SubGroupGtMaskARB", EbvSubGroupGtMask, symbolTable); + BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); + BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); + + if (spvVersion.vulkan > 0) + // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan + SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + else + BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); + } + + // GL_KHR_shader_subgroup + if (spvVersion.vulkan > 0) { + symbolTable.setVariableExtensions("gl_NumSubgroups", 1, &E_GL_KHR_shader_subgroup_basic); + symbolTable.setVariableExtensions("gl_SubgroupID", 1, &E_GL_KHR_shader_subgroup_basic); + symbolTable.setVariableExtensions("gl_SubgroupSize", 1, &E_GL_KHR_shader_subgroup_basic); + symbolTable.setVariableExtensions("gl_SubgroupInvocationID", 1, &E_GL_KHR_shader_subgroup_basic); + symbolTable.setVariableExtensions("gl_SubgroupEqMask", 1, &E_GL_KHR_shader_subgroup_ballot); + symbolTable.setVariableExtensions("gl_SubgroupGeMask", 1, &E_GL_KHR_shader_subgroup_ballot); + symbolTable.setVariableExtensions("gl_SubgroupGtMask", 1, &E_GL_KHR_shader_subgroup_ballot); + symbolTable.setVariableExtensions("gl_SubgroupLeMask", 1, &E_GL_KHR_shader_subgroup_ballot); + symbolTable.setVariableExtensions("gl_SubgroupLtMask", 1, &E_GL_KHR_shader_subgroup_ballot); + + BuiltInVariable("gl_NumSubgroups", EbvNumSubgroups, symbolTable); + BuiltInVariable("gl_SubgroupID", EbvSubgroupID, symbolTable); + BuiltInVariable("gl_SubgroupSize", EbvSubgroupSize2, symbolTable); + BuiltInVariable("gl_SubgroupInvocationID", EbvSubgroupInvocation2, symbolTable); + BuiltInVariable("gl_SubgroupEqMask", EbvSubgroupEqMask2, symbolTable); + BuiltInVariable("gl_SubgroupGeMask", EbvSubgroupGeMask2, symbolTable); + BuiltInVariable("gl_SubgroupGtMask", EbvSubgroupGtMask2, symbolTable); + BuiltInVariable("gl_SubgroupLeMask", EbvSubgroupLeMask2, symbolTable); + BuiltInVariable("gl_SubgroupLtMask", EbvSubgroupLtMask2, symbolTable); + + symbolTable.setFunctionExtensions("subgroupMemoryBarrierShared", 1, &E_GL_KHR_shader_subgroup_basic); + } + break; +#endif default: assert(false && "Language not supported"); @@ -8420,6 +9065,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("noise3", EOpNoise); symbolTable.relateToOperator("noise4", EOpNoise); +#ifdef NV_EXTENSIONS + symbolTable.relateToOperator("textureFootprintNV", EOpImageSampleFootprintNV); + symbolTable.relateToOperator("textureFootprintClampNV", EOpImageSampleFootprintClampNV); + symbolTable.relateToOperator("textureFootprintLodNV", EOpImageSampleFootprintLodNV); + symbolTable.relateToOperator("textureFootprintGradNV", EOpImageSampleFootprintGradNV); + symbolTable.relateToOperator("textureFootprintGradClampNV", EOpImageSampleFootprintGradClampNV); +#endif + if (spvVersion.spv == 0 && (IncludeLegacy(version, profile, spvVersion) || (profile == EEsProfile && version == 100))) { symbolTable.relateToOperator("ftransform", EOpFtransform); @@ -8692,8 +9345,52 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); +#ifdef NV_EXTENSIONS + if ((profile != EEsProfile && version >= 450) || + (profile == EEsProfile && version >= 320)) { + symbolTable.relateToOperator("dFdx", EOpDPdx); + symbolTable.relateToOperator("dFdy", EOpDPdy); + symbolTable.relateToOperator("fwidth", EOpFwidth); + symbolTable.relateToOperator("dFdxFine", EOpDPdxFine); + symbolTable.relateToOperator("dFdyFine", EOpDPdyFine); + symbolTable.relateToOperator("fwidthFine", EOpFwidthFine); + symbolTable.relateToOperator("dFdxCoarse", EOpDPdxCoarse); + symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse); + symbolTable.relateToOperator("fwidthCoarse",EOpFwidthCoarse); + } +#endif break; +#ifdef NV_EXTENSIONS + case EShLangRayGenNV: + case EShLangClosestHitNV: + case EShLangMissNV: + if (profile != EEsProfile && version >= 460) + symbolTable.relateToOperator("traceNVX", EOpTraceNV); + break; + case EShLangIntersectNV: + if (profile != EEsProfile && version >= 460) + symbolTable.relateToOperator("reportIntersectionNVX", EOpReportIntersectionNV); + break; + case EShLangAnyHitNV: + if (profile != EEsProfile && version >= 460) { + symbolTable.relateToOperator("ignoreIntersectionNVX", EOpIgnoreIntersectionNV); + symbolTable.relateToOperator("terminateRayNVX", EOpTerminateRayNV); + } + break; + case EShLangMeshNV: + if (profile != EEsProfile && version >= 450) { + symbolTable.relateToOperator("writePackedPrimitiveIndices4x8NV", EOpWritePackedPrimitiveIndices4x8NV); + } + // fall through + case EShLangTaskNV: + if (profile != EEsProfile && version >= 450) { + symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); + symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); + } + break; +#endif + default: assert(false && "Language not supported"); } diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 8eb5ff54..67bc42d2 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -460,6 +460,9 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const return false; case EbtAtomicUint: case EbtSampler: +#ifdef NV_EXTENSIONS + case EbtAccStructNV: +#endif // opaque types can be passed to functions if (op == EOpFunction) break; diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index bfa9de4d..ca5d7e4c 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -153,6 +153,12 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, if (node->getQualifier().readonly) message = "can't modify a readonly buffer"; break; +#ifdef NV_EXTENSIONS + case EvqHitAttrNV: + if (language != EShLangIntersectNV) + message = "cannot modify hitAttributeNVX in this stage"; + break; +#endif default: // @@ -168,6 +174,11 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, case EbtVoid: message = "can't modify void"; break; +#ifdef NV_EXTENSIONS + case EbtAccStructNV: + message = "can't modify accelerationStructureNVX"; + break; +#endif default: break; } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index ee7488bf..628aa990 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -491,12 +491,20 @@ void TParseContext::makeEditable(TSymbol*& symbol) ioArraySymbolResizeList.push_back(symbol); } -// Return true if this is a geometry shader input array or tessellation control output array. +// Return true if this is a geometry shader input array or tessellation control output array +// or mesh shader output array. bool TParseContext::isIoResizeArray(const TType& type) const { return type.isArray() && ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || - (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch)); + (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch) +#ifdef NV_EXTENSIONS + || + (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && type.getQualifier().pervertexNV) || + (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV) + +#endif + ); } // If an array is not isIoResizeArray() but is an io array, make sure it has the right size @@ -546,7 +554,7 @@ void TParseContext::handleIoResizeArrayAccess(const TSourceLoc& /*loc*/, TInterm // fix array size, if it can be fixed and needs to be fixed (will allow variable indexing) if (symbolNode->getType().isUnsizedArray()) { - int newSize = getIoArrayImplicitSize(); + int newSize = getIoArrayImplicitSize(symbolNode->getType().getQualifier().isPerPrimitive()); if (newSize > 0) symbolNode->getWritableType().changeOuterArraySize(newSize); } @@ -560,17 +568,27 @@ void TParseContext::handleIoResizeArrayAccess(const TSourceLoc& /*loc*/, TInterm // Types without an array size will be given one. // Types already having a size that is wrong will get an error. // -void TParseContext::checkIoArraysConsistency(const TSourceLoc& loc, bool tailOnly) +void TParseContext::checkIoArraysConsistency(const TSourceLoc& loc, bool tailOnly, bool isPerPrimitive) { - int requiredSize = getIoArrayImplicitSize(); + int requiredSize = getIoArrayImplicitSize(isPerPrimitive); if (requiredSize == 0) return; const char* feature; if (language == EShLangGeometry) feature = TQualifier::getGeometryString(intermediate.getInputPrimitive()); - else if (language == EShLangTessControl) + else if (language == EShLangTessControl +#ifdef NV_EXTENSIONS + || language == EShLangFragment +#endif + ) + feature = "vertices"; +#ifdef NV_EXTENSIONS + else if (language == EShLangMeshNV) { + feature = isPerPrimitive ? "max_primitives" : "max_vertices"; + } +#endif else feature = "unknown"; @@ -583,12 +601,24 @@ void TParseContext::checkIoArraysConsistency(const TSourceLoc& loc, bool tailOnl checkIoArrayConsistency(loc, requiredSize, feature, ioArraySymbolResizeList[i]->getWritableType(), ioArraySymbolResizeList[i]->getName()); } -int TParseContext::getIoArrayImplicitSize() const +int TParseContext::getIoArrayImplicitSize(bool isPerPrimitive) const { if (language == EShLangGeometry) return TQualifier::mapGeometryToSize(intermediate.getInputPrimitive()); else if (language == EShLangTessControl) return intermediate.getVertices() != TQualifier::layoutNotSet ? intermediate.getVertices() : 0; +#ifdef NV_EXTENSIONS + else if (language == EShLangFragment) + return 3; //Number of vertices for Fragment shader is always three. + else if (language == EShLangMeshNV) { + if (isPerPrimitive) { + return intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0; + } else { + return intermediate.getVertices() != TQualifier::layoutNotSet ? intermediate.getVertices() : 0; + } + } +#endif + else return 0; } @@ -602,6 +632,14 @@ void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredS error(loc, "inconsistent input primitive for array size of", feature, name.c_str()); else if (language == EShLangTessControl) error(loc, "inconsistent output number of vertices for array size of", feature, name.c_str()); +#ifdef NV_EXTENSIONS + else if (language == EShLangFragment) { + if (type.getOuterArraySize() > requiredSize) + error(loc, " cannot be greater than 3 for pervertexNV", feature, name.c_str()); + } + else if (language == EShLangMeshNV) + error(loc, "inconsistent output array size of", feature, name.c_str()); +#endif else assert(0); } @@ -1301,8 +1339,15 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction // without actually redeclaring the array. (It is an error to use a member before the // redeclaration, but not an error to use the array name itself.) const TString& name = intermNode->getAsSymbolNode()->getName(); - if (name == "gl_in" || name == "gl_out") - length = getIoArrayImplicitSize(); + if (name == "gl_in" || name == "gl_out" +#ifdef NV_EXTENSIONS + || name == "gl_MeshVerticesNV" + || name == "gl_MeshPrimitivesNV" +#endif + ) + { + length = getIoArrayImplicitSize(type.getQualifier().isPerPrimitive()); + } } if (length == 0) { if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) @@ -2917,6 +2962,20 @@ void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, co else if (type.getBasicType() == EbtAtomicUint && type.getQualifier().storage != EvqUniform) error(loc, "atomic_uints can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); } +#ifdef NV_EXTENSIONS +void TParseContext::accStructNVCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) +{ + if (type.getQualifier().storage == EvqUniform) + return; + + if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtAccStructNV)) + error(loc, "non-uniform struct contains an accelerationStructureNVX:", type.getBasicTypeString().c_str(), identifier.c_str()); + else if (type.getBasicType() == EbtAccStructNV && type.getQualifier().storage != EvqUniform) + error(loc, "accelerationStructureNVX can only be used in uniform variables or function parameters:", + type.getBasicTypeString().c_str(), identifier.c_str()); + +} +#endif void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { @@ -3020,11 +3079,14 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble) profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output"); + if (!qualifier.flat #ifdef AMD_EXTENSIONS - if (! qualifier.flat && ! qualifier.explicitInterp) { -#else - if (!qualifier.flat) { + && !qualifier.explicitInterp #endif +#ifdef NV_EXTENSIONS + && !qualifier.pervertexNV +#endif + ) { if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble || (publicType.userDef && (publicType.userDef->containsBasicType(EbtInt8) || @@ -3046,6 +3108,11 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (qualifier.patch && qualifier.isInterpolation()) error(loc, "cannot use interpolation qualifiers with patch", "patch", ""); +#ifdef NV_EXTENSIONS + if (qualifier.perTaskNV && publicType.basicType != EbtBlock) + error(loc, "taskNV variables can be declared only as blocks", "taskNV", ""); +#endif + if (qualifier.storage == EvqVaryingIn) { switch (language) { case EShLangVertex: @@ -3233,6 +3300,11 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons MERGE_SINGLETON(nopersp); #ifdef AMD_EXTENSIONS MERGE_SINGLETON(explicitInterp); +#endif +#ifdef NV_EXTENSIONS + MERGE_SINGLETON(perPrimitiveNV); + MERGE_SINGLETON(perViewNV); + MERGE_SINGLETON(perTaskNV); #endif MERGE_SINGLETON(patch); MERGE_SINGLETON(sample); @@ -3575,7 +3647,7 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie if (! symbolTable.atBuiltInLevel()) { if (isIoResizeArray(type)) { ioArraySymbolResizeList.push_back(symbol); - checkIoArraysConsistency(loc, true); + checkIoArraysConsistency(loc, true, type.getQualifier().isPerPrimitive()); } else fixIoArraySize(loc, symbol->getWritableType()); } @@ -3628,7 +3700,7 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie existingType.updateArraySizes(type); if (isIoResizeArray(type)) - checkIoArraysConsistency(loc); + checkIoArraysConsistency(loc, false, type.getQualifier().isPerPrimitive()); } // Policy and error check for needing a runtime sized array. @@ -3664,6 +3736,28 @@ bool TParseContext::isRuntimeLength(const TIntermTyped& base) const return false; } +#ifdef NV_EXTENSIONS +// Fix mesh view output array dimension +void TParseContext::resizeMeshViewDimension(const TSourceLoc& loc, TType& type) +{ + // see if member is a per-view attribute + if (type.getQualifier().isPerView()) { + // since we don't have the maxMeshViewCountNV set during parsing builtins, we hardcode the value + int maxViewCount = parsingBuiltins ? 4 : resources.maxMeshViewCountNV; + + if (! type.isArray()) { + error(loc, "requires an view array dimension", "perviewNV", ""); + } + else if (!type.isUnsizedArray() && type.getOuterArraySize() != maxViewCount) { + error(loc, "mesh view output array size must be gl_MaxMeshViewCountNV or implicitly sized", "[]", ""); + } + else if (type.isUnsizedArray()) { + type.changeOuterArraySize(maxViewCount); + } + } +} +#endif + // Returns true if the first argument to the #line directive is the line number for the next line. // // Desktop, pre-version 3.30: "After processing this directive @@ -3854,7 +3948,12 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); - if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment") { + if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment" +#ifdef NV_EXTENSIONS + && blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV" +#endif + ) + { error(loc, "cannot redeclare block: ", "block declaration", blockName.c_str()); return; } @@ -4030,7 +4129,7 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT // Tracking for implicit sizing of array if (isIoResizeArray(block->getType())) { ioArraySymbolResizeList.push_back(block); - checkIoArraysConsistency(loc, true); + checkIoArraysConsistency(loc, true, block->getType().getQualifier().isPerPrimitive()); } else if (block->getType().isArray()) fixIoArraySize(loc, block->getWritableType()); @@ -4447,44 +4546,57 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi publicType.qualifier.layoutPushConstant = true; return; } - if (language == EShLangGeometry || language == EShLangTessEvaluation) { + if (language == EShLangGeometry || language == EShLangTessEvaluation +#ifdef NV_EXTENSIONS + || language == EShLangMeshNV +#endif + ) { if (id == TQualifier::getGeometryString(ElgTriangles)) { publicType.shaderQualifiers.geometry = ElgTriangles; return; } - if (language == EShLangGeometry) { + if (language == EShLangGeometry +#ifdef NV_EXTENSIONS + || language == EShLangMeshNV +#endif + ) { if (id == TQualifier::getGeometryString(ElgPoints)) { publicType.shaderQualifiers.geometry = ElgPoints; return; } - if (id == TQualifier::getGeometryString(ElgLineStrip)) { - publicType.shaderQualifiers.geometry = ElgLineStrip; - return; - } if (id == TQualifier::getGeometryString(ElgLines)) { publicType.shaderQualifiers.geometry = ElgLines; return; } - if (id == TQualifier::getGeometryString(ElgLinesAdjacency)) { - publicType.shaderQualifiers.geometry = ElgLinesAdjacency; - return; - } - if (id == TQualifier::getGeometryString(ElgTrianglesAdjacency)) { - publicType.shaderQualifiers.geometry = ElgTrianglesAdjacency; - return; - } - if (id == TQualifier::getGeometryString(ElgTriangleStrip)) { - publicType.shaderQualifiers.geometry = ElgTriangleStrip; - return; - } #ifdef NV_EXTENSIONS - if (id == "passthrough") { - requireExtensions(loc, 1, &E_SPV_NV_geometry_shader_passthrough, "geometry shader passthrough"); - publicType.qualifier.layoutPassthrough = true; - intermediate.setGeoPassthroughEXT(); - return; - } + if (language == EShLangGeometry) #endif + { + if (id == TQualifier::getGeometryString(ElgLineStrip)) { + publicType.shaderQualifiers.geometry = ElgLineStrip; + return; + } + if (id == TQualifier::getGeometryString(ElgLinesAdjacency)) { + publicType.shaderQualifiers.geometry = ElgLinesAdjacency; + return; + } + if (id == TQualifier::getGeometryString(ElgTrianglesAdjacency)) { + publicType.shaderQualifiers.geometry = ElgTrianglesAdjacency; + return; + } + if (id == TQualifier::getGeometryString(ElgTriangleStrip)) { + publicType.shaderQualifiers.geometry = ElgTriangleStrip; + return; + } +#ifdef NV_EXTENSIONS + if (id == "passthrough") { + requireExtensions(loc, 1, &E_SPV_NV_geometry_shader_passthrough, "geometry shader passthrough"); + publicType.qualifier.layoutPassthrough = true; + intermediate.setGeoPassthroughEXT(); + return; + } +#endif + } } else { assert(language == EShLangTessEvaluation); @@ -4598,6 +4710,27 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi publicType.qualifier.layoutViewportRelative = true; return; } + } else { + if (language == EShLangRayGenNV || language == EShLangIntersectNV || + language == EShLangAnyHitNV || language == EShLangClosestHitNV || + language == EShLangMissNV || language == EShLangCallableNV) { + if (id == "shaderrecordnvx") { + publicType.qualifier.layoutShaderRecordNV = true; + return; + } + } + } + if (language == EShLangCompute) { + if (id.compare(0, 17, "derivative_group_") == 0) { + requireExtensions(loc, 1, &E_GL_NV_compute_shader_derivatives, "compute shader derivatives"); + if (id == "derivative_group_quadsnv") { + publicType.shaderQualifiers.layoutDerivativeGroupQuads = true; + return; + } else if (id == "derivative_group_linearnv") { + publicType.shaderQualifiers.layoutDerivativeGroupLinear = true; + return; + } + } } #else } @@ -4827,10 +4960,37 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } break; +#ifdef NV_EXTENSIONS + case EShLangMeshNV: + if (id == "max_vertices") { + publicType.shaderQualifiers.vertices = value; + if (value > resources.maxMeshOutputVerticesNV) + error(loc, "too large, must be less than gl_MaxMeshOutputVerticesNV", "max_vertices", ""); + return; + } + if (id == "max_primitives") { + publicType.shaderQualifiers.primitives = value; + if (value > resources.maxMeshOutputPrimitivesNV) + error(loc, "too large, must be less than gl_MaxMeshOutputPrimitivesNV", "max_primitives", ""); + return; + } + // Fall through + + case EShLangTaskNV: + // Fall through +#endif case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { - profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); - profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); +#ifdef NV_EXTENSIONS + if (language == EShLangMeshNV || language == EShLangTaskNV) { + profileRequires(loc, ~EEsProfile, 450, E_GL_NV_mesh_shader, "gl_WorkGroupSize"); + } + else +#endif + { + profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); + profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); + } if (id.size() == 12 && value == 0) { error(loc, "must be at least 1", id.c_str(), ""); return; @@ -4939,6 +5099,10 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie dst.layoutViewportRelative = true; if (src.layoutSecondaryViewportRelativeOffset != -2048) dst.layoutSecondaryViewportRelativeOffset = src.layoutSecondaryViewportRelativeOffset; + if (src.layoutShaderRecordNV) + dst.layoutShaderRecordNV = true; + if (src.pervertexNV) + dst.pervertexNV = true; #endif } } @@ -4975,9 +5139,10 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb switch (qualifier.storage) { case EvqVaryingIn: case EvqVaryingOut: - if (type.getBasicType() != EbtBlock || - (!(*type.getStruct())[0].type->getQualifier().hasLocation() && - (*type.getStruct())[0].type->getQualifier().builtIn == EbvNone)) + if (!type.getQualifier().isTaskMemory() && + (type.getBasicType() != EbtBlock || + (!(*type.getStruct())[0].type->getQualifier().hasLocation() && + (*type.getStruct())[0].type->getQualifier().builtIn == EbvNone))) error(loc, "SPIR-V requires location for user input/output", "location", ""); break; default: @@ -5003,6 +5168,10 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb error(loc, "cannot specify on a variable declaration", "align", ""); if (qualifier.layoutPushConstant) error(loc, "can only specify on a uniform block", "push_constant", ""); +#ifdef NV_EXTENSIONS + if (qualifier.layoutShaderRecordNV) + error(loc, "can only specify on a buffer block", "shaderRecordNVX", ""); +#endif } break; default: @@ -5066,12 +5235,22 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EvqVaryingOut: if (type.getBasicType() == EbtBlock) profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, "location qualifier on in/out block"); +#ifdef NV_EXTENSIONS + if (type.getQualifier().isTaskMemory()) + error(loc, "cannot apply to taskNV in/out blocks", "location", ""); +#endif break; case EvqUniform: case EvqBuffer: if (type.getBasicType() == EbtBlock) error(loc, "cannot apply to uniform or buffer block", "location", ""); break; +#ifdef NV_EXTENSIONS + case EvqPayloadNV: + case EvqPayloadInNV: + case EvqHitAttrNV: + break; +#endif default: error(loc, "can only apply to uniform, buffer, in, or out storage qualifiers", "location", ""); break; @@ -5155,7 +5334,10 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) if (spvVersion.spv > 0) { if (qualifier.isUniformOrBuffer()) { if (type.getBasicType() == EbtBlock && !qualifier.layoutPushConstant && - !qualifier.layoutAttachment) +#ifdef NV_EXTENSIONS + !qualifier.layoutShaderRecordNV && +#endif + !qualifier.layoutAttachment) error(loc, "uniform/buffer blocks require layout(binding=X)", "binding", ""); else if (spvVersion.vulkan > 0 && type.getBasicType() == EbtSampler) error(loc, "sampler/texture/image requires layout(binding=X)", "binding", ""); @@ -5207,6 +5389,11 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) if (qualifier.layoutPushConstant && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "push_constant", ""); +#ifdef NV_EXTENSIONS + if (qualifier.layoutShaderRecordNV && type.getBasicType() != EbtBlock) + error(loc, "can only be used with a block", "shaderRecordNVX", ""); +#endif + // input attachment if (type.isSubpass()) { if (! qualifier.hasAttachment()) @@ -5317,7 +5504,7 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier } if (qualifier.hasBinding()) { - if (! qualifier.isUniformOrBuffer()) + if (! qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory()) error(loc, "requires uniform or buffer storage qualifier", "binding", ""); } if (qualifier.hasStream()) { @@ -5329,7 +5516,7 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier error(loc, "can only be used on an output", "xfb layout qualifier", ""); } if (qualifier.hasUniformLayout()) { - if (! qualifier.isUniformOrBuffer()) { + if (! qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory()) { if (qualifier.hasMatrix() || qualifier.hasPacking()) error(loc, "matrix or packing qualifiers can only be used on a uniform or buffer", "layout", ""); if (qualifier.hasOffset() || qualifier.hasAlign()) @@ -5342,6 +5529,16 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier if (qualifier.hasSet()) error(loc, "cannot be used with push_constant", "set", ""); } +#ifdef NV_EXTENSIONS + if (qualifier.layoutShaderRecordNV) { + if (qualifier.storage != EvqBuffer) + error(loc, "can only be used with a buffer", "shaderRecordNVX", ""); + if (qualifier.hasBinding()) + error(loc, "cannot be used with shaderRecordNVX", "binding", ""); + if (qualifier.hasSet()) + error(loc, "cannot be used with shaderRecordNVX", "set", ""); + } +#endif } // For places that can't have shader-level layout qualifiers @@ -5370,13 +5567,25 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua error(loc, message, "local_size id", ""); } if (shaderQualifiers.vertices != TQualifier::layoutNotSet) { - if (language == EShLangGeometry) + if (language == EShLangGeometry +#ifdef NV_EXTENSIONS + || language == EShLangMeshNV +#endif + ) error(loc, message, "max_vertices", ""); else if (language == EShLangTessControl) error(loc, message, "vertices", ""); else assert(0); } +#ifdef NV_EXTENSIONS + if (shaderQualifiers.primitives != TQualifier::layoutNotSet) { + if (language == EShLangMeshNV) + error(loc, message, "max_primitives", ""); + else + assert(0); + } +#endif if (shaderQualifiers.blendEquation) error(loc, message, "blend equation", ""); if (shaderQualifiers.numViews != TQualifier::layoutNotSet) @@ -5759,6 +5968,9 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden samplerCheck(loc, type, identifier, initializer); atomicUintCheck(loc, type, identifier); transparentOpaqueCheck(loc, type, identifier); +#ifdef NV_EXTENSIONS + accStructNVCheck(loc, type, identifier); +#endif if (type.getQualifier().storage != EvqUniform && type.getQualifier().storage != EvqBuffer) { if (type.containsBasicType(EbtFloat16)) @@ -6407,6 +6619,14 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal && memberQualifier.storage != currentBlockQualifier.storage) error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), ""); memberQualifier.storage = currentBlockQualifier.storage; +#ifdef NV_EXTENSIONS + if (currentBlockQualifier.perPrimitiveNV) + memberQualifier.perPrimitiveNV = currentBlockQualifier.perPrimitiveNV; + if (currentBlockQualifier.perViewNV) + memberQualifier.perViewNV = currentBlockQualifier.perViewNV; + if (currentBlockQualifier.perTaskNV) + memberQualifier.perTaskNV = currentBlockQualifier.perTaskNV; +#endif if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary())) error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), ""); if (memberType.isArray()) @@ -6449,9 +6669,19 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con // Special case for "push_constant uniform", which has a default of std430, // contrary to normal uniform defaults, and can't have a default tracked for it. - if (currentBlockQualifier.layoutPushConstant && !currentBlockQualifier.hasPacking()) + if ((currentBlockQualifier.layoutPushConstant && !currentBlockQualifier.hasPacking()) +#ifdef NV_EXTENSIONS + || (currentBlockQualifier.layoutShaderRecordNV && !currentBlockQualifier.hasPacking()) +#endif + ) currentBlockQualifier.layoutPacking = ElpStd430; +#ifdef NV_EXTENSIONS + // Special case for "taskNV in/out", which has a default of std430, + if (currentBlockQualifier.perTaskNV && !currentBlockQualifier.hasPacking()) + currentBlockQualifier.layoutPacking = ElpStd430; +#endif + // fix and check for member layout qualifiers mergeObjectLayoutQualifiers(defaultQualification, currentBlockQualifier, true); @@ -6466,6 +6696,9 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con bool memberWithLocation = false; bool memberWithoutLocation = false; +#ifdef NV_EXTENSIONS + bool memberWithPerViewQualifier = false; +#endif for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; @@ -6509,6 +6742,12 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con error(memberLoc, "can only be used with std140 or std430 layout packing", "offset/align", ""); } +#ifdef NV_EXTENSIONS + if (memberQualifier.isPerView()) { + memberWithPerViewQualifier = true; + } +#endif + TQualifier newMemberQualification = defaultQualification; mergeQualifiers(memberLoc, newMemberQualification, memberQualifier, false); memberQualifier = newMemberQualification; @@ -6523,6 +6762,14 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con for (unsigned int member = 0; member < typeList.size(); ++member) layoutTypeCheck(typeList[member].loc, *typeList[member].type); +#ifdef NV_EXTENSIONS + if (memberWithPerViewQualifier) { + for (unsigned int member = 0; member < typeList.size(); ++member) { + resizeMeshViewDimension(typeList[member].loc, *typeList[member].type); + } + } +#endif + // reverse merge, so that currentBlockQualifier now has all layout information // (can't use defaultQualification directly, it's missing other non-layout-default-class qualifiers) mergeObjectLayoutQualifiers(currentBlockQualifier, defaultQualification, true); @@ -6586,7 +6833,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con // fix up if (isIoResizeArray(blockType)) { ioArraySymbolResizeList.push_back(&variable); - checkIoArraysConsistency(loc, true); + checkIoArraysConsistency(loc, true, blockType.getQualifier().isPerPrimitive()); } else fixIoArraySize(loc, variable.getWritableType()); @@ -6614,17 +6861,56 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "input block"); // 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), "input block"); - if (language == EShLangFragment) + requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask|EShLangFragmentMask +#ifdef NV_EXTENSIONS + |EShLangMeshNVMask +#endif + ), "input block"); + if (language == EShLangFragment) { profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block"); + } +#ifdef NV_EXTENSIONS + else if (language == EShLangMeshNV && ! qualifier.isTaskMemory()) { + error(loc, "input blocks cannot be used in a mesh shader", "out", ""); + } +#endif break; case EvqVaryingOut: profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "output block"); - requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask), "output block"); + requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask +#ifdef NV_EXTENSIONS + |EShLangMeshNVMask|EShLangTaskNVMask +#endif + ), "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) + if (language == EShLangVertex && ! parsingBuiltins) { profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block"); + } +#ifdef NV_EXTENSIONS + else if (language == EShLangMeshNV && qualifier.isTaskMemory()) { + error(loc, "can only use on input blocks in mesh shader", "taskNV", ""); + } + else if (language == EShLangTaskNV && ! qualifier.isTaskMemory()) { + error(loc, "output blocks cannot be used in a task shader", "out", ""); + } +#endif break; +#ifdef NV_EXTENSIONS + case EvqPayloadNV: + profileRequires(loc, ~EEsProfile, 450, E_GL_NVX_raytracing, "rayPayloadNVX block"); + requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask), + "rayPayloadNVX block"); + break; + case EvqPayloadInNV: + profileRequires(loc, ~EEsProfile, 450, E_GL_NVX_raytracing, "rayPayloadInNVX block"); + requireStage(loc, (EShLanguageMask)(EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask), + "rayPayloadInNVX block"); + break; + case EvqHitAttrNV: + profileRequires(loc, ~EEsProfile, 450, E_GL_NVX_raytracing, "hitAttributeNVX block"); + requireStage(loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask), "hitAttributeNVX block"); + break; +#endif default: error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), ""); break; @@ -6661,6 +6947,12 @@ void TParseContext::blockQualifierCheck(const TSourceLoc& loc, const TQualifier& error(loc, "cannot use invariant qualifier on an interface block", "invariant", ""); if (qualifier.layoutPushConstant) intermediate.addPushConstantCount(); +#ifdef NV_EXTENSIONS + if (qualifier.layoutShaderRecordNV) + intermediate.addShaderRecordNVCount(); + if (qualifier.perTaskNV) + intermediate.addTaskNVCount(); +#endif } // @@ -6746,7 +7038,7 @@ void TParseContext::fixBlockXfbOffsets(TQualifier& qualifier, TTypeList& typeLis // void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typeList) { - if (! qualifier.isUniformOrBuffer()) + if (!qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory()) return; if (qualifier.layoutPacking != ElpStd140 && qualifier.layoutPacking != ElpStd430) return; @@ -6878,7 +7170,11 @@ void TParseContext::invariantCheck(const TSourceLoc& loc, const TQualifier& qual void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, const TPublicType& publicType) { if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { +#ifdef NV_EXTENSIONS + assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMeshNV); +#else assert(language == EShLangTessControl || language == EShLangGeometry); +#endif const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; if (publicType.qualifier.storage != EvqVaryingOut) @@ -6889,6 +7185,17 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con if (language == EShLangTessControl) checkIoArraysConsistency(loc); } +#ifdef NV_EXTENSIONS + if (publicType.shaderQualifiers.primitives != TQualifier::layoutNotSet) { + assert(language == EShLangMeshNV); + const char* id = "max_primitives"; + + if (publicType.qualifier.storage != EvqVaryingOut) + error(loc, "can only apply to 'out'", id, ""); + if (! intermediate.setPrimitives(publicType.shaderQualifiers.primitives)) + error(loc, "cannot change previously set layout value", id, ""); + } +#endif if (publicType.shaderQualifiers.invocations != TQualifier::layoutNotSet) { if (publicType.qualifier.storage != EvqVaryingIn) error(loc, "can only apply to 'in'", "invocations", ""); @@ -6905,6 +7212,12 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con case ElgTrianglesAdjacency: case ElgQuads: case ElgIsolines: +#ifdef NV_EXTENSIONS + if (language == EShLangMeshNV) { + error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); + break; + } +#endif if (intermediate.setInputPrimitive(publicType.shaderQualifiers.geometry)) { if (language == EShLangGeometry) checkIoArraysConsistency(loc); @@ -6916,6 +7229,15 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } } else if (publicType.qualifier.storage == EvqVaryingOut) { switch (publicType.shaderQualifiers.geometry) { +#ifdef NV_EXTENSIONS + case ElgLines: + case ElgTriangles: + if (language != EShLangMeshNV) { + error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); + break; + } +#endif + // Fall through case ElgPoints: case ElgLineStrip: case ElgTriangleStrip: @@ -6955,14 +7277,41 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "cannot change previously set size", "local_size", ""); else { int max = 0; - switch (i) { - case 0: max = resources.maxComputeWorkGroupSizeX; break; - case 1: max = resources.maxComputeWorkGroupSizeY; break; - case 2: max = resources.maxComputeWorkGroupSizeZ; break; - default: break; + if (language == EShLangCompute) { + switch (i) { + case 0: max = resources.maxComputeWorkGroupSizeX; break; + case 1: max = resources.maxComputeWorkGroupSizeY; break; + case 2: max = resources.maxComputeWorkGroupSizeZ; break; + default: break; + } + if (intermediate.getLocalSize(i) > (unsigned int)max) + error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); + } +#ifdef NV_EXTENSIONS + else if (language == EShLangMeshNV) { + switch (i) { + case 0: max = resources.maxMeshWorkGroupSizeX_NV; break; + case 1: max = resources.maxMeshWorkGroupSizeY_NV; break; + case 2: max = 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) { + switch (i) { + case 0: max = resources.maxTaskWorkGroupSizeX_NV; break; + case 1: max = resources.maxTaskWorkGroupSizeY_NV; break; + case 2: max = resources.maxTaskWorkGroupSizeZ_NV; break; + default: break; + } + if (intermediate.getLocalSize(i) > (unsigned int)max) + error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", ""); + } +#endif + else { + assert(0); } - if (intermediate.getLocalSize(i) > (unsigned int)max) - error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); // Fix the existing constant gl_WorkGroupSize with this new information. TVariable* workGroupSize = getEditableVariable("gl_WorkGroupSize"); @@ -7001,6 +7350,36 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "can only apply to 'out'", "blend equation", ""); } +#ifdef NV_EXTENSIONS + if (publicType.shaderQualifiers.layoutDerivativeGroupQuads && + publicType.shaderQualifiers.layoutDerivativeGroupLinear) { + error(loc, "cannot be both specified", "derivative_group_quadsNV and derivative_group_linearNV", ""); + } + + if (publicType.shaderQualifiers.layoutDerivativeGroupQuads) { + if (publicType.qualifier.storage == EvqVaryingIn) { + if ((intermediate.getLocalSize(0) & 1) || + (intermediate.getLocalSize(1) & 1)) + error(loc, "requires local_size_x and local_size_y to be multiple of two", "derivative_group_quadsNV", ""); + else + intermediate.setLayoutDerivativeMode(LayoutDerivativeGroupQuads); + } + else + error(loc, "can only apply to 'in'", "derivative_group_quadsNV", ""); + } + if (publicType.shaderQualifiers.layoutDerivativeGroupLinear) { + if (publicType.qualifier.storage == EvqVaryingIn) { + if((intermediate.getLocalSize(0) * + intermediate.getLocalSize(1) * + intermediate.getLocalSize(2)) % 4 != 0) + error(loc, "requires total group size to be multiple of four", "derivative_group_linearNV", ""); + else + intermediate.setLayoutDerivativeMode(LayoutDerivativeGroupLinear); + } + else + error(loc, "can only apply to 'in'", "derivative_group_linearNV", ""); + } +#endif const TQualifier& qualifier = publicType.qualifier; if (qualifier.isAuxiliary() || @@ -7056,6 +7435,10 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "cannot declare a default, can only be used on a block", "push_constant", ""); if (qualifier.hasSpecConstantId()) error(loc, "cannot declare a default, can only be used on a scalar", "constant_id", ""); +#ifdef NV_EXTENSIONS + if (qualifier.layoutShaderRecordNV) + error(loc, "cannot declare a default, can only be used on a block", "shaderRecordNVX", ""); +#endif } // diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index e34bbbca..0c6b284d 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -298,8 +298,8 @@ public: void fixIoArraySize(const TSourceLoc&, TType&); void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier); void handleIoResizeArrayAccess(const TSourceLoc&, TIntermTyped* base); - void checkIoArraysConsistency(const TSourceLoc&, bool tailOnly = false); - int getIoArrayImplicitSize() const; + void checkIoArraysConsistency(const TSourceLoc&, bool tailOnly = false, bool isPerPrimitive = false); + int getIoArrayImplicitSize(bool isPerPrimitive = false) const; void checkIoArrayConsistency(const TSourceLoc&, int requiredSize, const char* feature, TType&, const TString&); TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right); @@ -348,6 +348,9 @@ public: void boolCheck(const TSourceLoc&, const TPublicType&); void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer); void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier); +#ifdef NV_EXTENSIONS + void accStructNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); +#endif void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier); void memberQualifierCheck(glslang::TPublicType&); void globalQualifierFixCheck(const TSourceLoc&, TQualifier&); @@ -423,6 +426,9 @@ public: // Determine loop control from attributes void handleLoopAttributes(const TAttributes& attributes, TIntermNode*); +#ifdef NV_EXTENSIONS + void resizeMeshViewDimension(const TSourceLoc&, TType&); +#endif protected: void nonInitConstCheck(const TSourceLoc&, TString& identifier, TType& type); void inheritGlobalDefaults(TQualifier& dst) const; diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 238301f4..7bdd4309 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -691,12 +691,25 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["__explicitInterpAMD"] = EXPLICITINTERPAMD; #endif (*KeywordMap)["centroid"] = CENTROID; +#ifdef NV_EXTENSIONS + (*KeywordMap)["pervertexNV"] = PERVERTEXNV; +#endif (*KeywordMap)["precise"] = PRECISE; (*KeywordMap)["invariant"] = INVARIANT; (*KeywordMap)["packed"] = PACKED; (*KeywordMap)["resource"] = RESOURCE; (*KeywordMap)["superp"] = SUPERP; +#ifdef NV_EXTENSIONS + (*KeywordMap)["rayPayloadNVX"] = PAYLOADNV; + (*KeywordMap)["rayPayloadInNVX"] = PAYLOADINNV; + (*KeywordMap)["hitAttributeNVX"] = HITATTRNV; + (*KeywordMap)["accelerationStructureNVX"] = ACCSTRUCTNV; + (*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV; + (*KeywordMap)["perviewNV"] = PERVIEWNV; + (*KeywordMap)["taskNV"] = PERTASKNV; +#endif + ReservedSet = new std::unordered_set; ReservedSet->insert("common"); @@ -935,6 +948,18 @@ int TScanContext::tokenizeIdentifier() return identifierOrType(); return keyword; +#ifdef NV_EXTENSIONS + case PAYLOADNV: + case PAYLOADINNV: + case HITATTRNV: + case ACCSTRUCTNV: + if (parseContext.symbolTable.atBuiltInLevel() || + (parseContext.profile != EEsProfile && parseContext.version >= 460 + && parseContext.extensionTurnedOn(E_GL_NVX_raytracing))) + return keyword; + return identifierOrType(); +#endif + case ATOMIC_UINT: if ((parseContext.profile == EEsProfile && parseContext.version >= 310) || parseContext.extensionTurnedOn(E_GL_ARB_shader_atomic_counters)) @@ -1507,6 +1532,15 @@ int TScanContext::tokenizeIdentifier() return identifierOrType(); #endif +#ifdef NV_EXTENSIONS + case PERVERTEXNV: + if (((parseContext.profile != EEsProfile && parseContext.version >= 450) || + (parseContext.profile == EEsProfile && parseContext.version >= 320)) && + parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric)) + return keyword; + return identifierOrType(); +#endif + case FLAT: if (parseContext.profile == EEsProfile && parseContext.version < 300) reservedWord(); @@ -1553,6 +1587,16 @@ int TScanContext::tokenizeIdentifier() return identifierOrReserved(reserved); } +#ifdef NV_EXTENSIONS + case PERPRIMITIVENV: + case PERVIEWNV: + case PERTASKNV: + if (parseContext.profile != EEsProfile && + (parseContext.version >= 450 || parseContext.extensionTurnedOn(E_GL_NV_mesh_shader))) + return keyword; + return identifierOrType(); +#endif + default: parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc); return 0; diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index c99f9581..7039ac2a 100755 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -347,6 +347,31 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, infoSink, commonTable, symbolTables); +#ifdef NV_EXTENSIONS + // check for ray tracing stages + if (profile != EEsProfile && version >= 450) { + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGenNV, source, + infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangIntersectNV, source, + infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangAnyHitNV, source, + infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangClosestHitNV, source, + infoSink, commonTable, symbolTables); + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMissNV, source, + infoSink, commonTable, symbolTables); + } + // check for mesh + if (profile != EEsProfile && version >= 450) + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMeshNV, source, + infoSink, commonTable, symbolTables); + + // check for task + if (profile != EEsProfile && version >= 450) + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source, + infoSink, commonTable, symbolTables); +#endif + return true; } @@ -570,6 +595,27 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo version = profile == EEsProfile ? 310 : 420; } break; +#ifdef NV_EXTENSIONS + case EShLangRayGenNV: + case EShLangIntersectNV: + case EShLangAnyHitNV: + case EShLangClosestHitNV: + case EShLangCallableNV: + if (profile == EEsProfile || version < 460) { + correct = false; + infoSink.info.message(EPrefixError, "#version: raytracing shaders require non-es profile with version 460 or above"); + version = 460; + } + break; + case EShLangMeshNV: + case EShLangTaskNV: + if ((profile == EEsProfile) || + (profile != EEsProfile && version < 450)) { + correct = false; + infoSink.info.message(EPrefixError, "#version: mesh/task shaders require non-es profile with version 450 or above"); + version = 450; + } +#endif default: break; } diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index db46e107..bd7d5aa0 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -72,6 +72,9 @@ void TType::buildMangledName(TString& mangledName) const case EbtUint64: mangledName += "u64"; break; case EbtBool: mangledName += 'b'; break; case EbtAtomicUint: mangledName += "au"; break; +#ifdef NV_EXTENSIONS + case EbtAccStructNV: mangledName += "asnv"; break; +#endif case EbtSampler: switch (sampler.type) { #ifdef AMD_EXTENSIONS diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index e757c291..250f3250 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -235,6 +235,12 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_NV_conservative_raster_underestimation] = EBhDisable; extensionBehavior[E_GL_NV_shader_noperspective_interpolation] = EBhDisable; extensionBehavior[E_GL_NV_shader_subgroup_partitioned] = EBhDisable; + extensionBehavior[E_GL_NV_shading_rate_image] = EBhDisable; + extensionBehavior[E_GL_NVX_raytracing] = EBhDisable; + extensionBehavior[E_GL_NV_fragment_shader_barycentric] = EBhDisable; + extensionBehavior[E_GL_NV_compute_shader_derivatives] = EBhDisable; + extensionBehavior[E_GL_NV_shader_texture_footprint] = EBhDisable; + extensionBehavior[E_GL_NV_mesh_shader] = EBhDisable; #endif // AEP @@ -405,6 +411,12 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_NV_shader_atomic_int64 1\n" "#define GL_NV_conservative_raster_underestimation 1\n" "#define GL_NV_shader_subgroup_partitioned 1\n" + "#define GL_NV_shading_rate_image 1\n" + "#define GL_NVX_raytracing 1\n" + "#define GL_NV_fragment_shader_barycentric 1\n" + "#define GL_NV_compute_shader_derivatives 1\n" + "#define GL_NV_shader_texture_footprint 1\n" + "#define GL_NV_mesh_shader 1\n" #endif "#define GL_KHX_shader_explicit_arithmetic_types 1\n" "#define GL_KHX_shader_explicit_arithmetic_types_int8 1\n" @@ -492,6 +504,16 @@ const char* StageName(EShLanguage stage) case EShLangGeometry: return "geometry"; case EShLangFragment: return "fragment"; case EShLangCompute: return "compute"; +#ifdef NV_EXTENSIONS + case EShLangRayGenNV: return "ray-generation"; + case EShLangIntersectNV: return "intersection"; + case EShLangAnyHitNV: return "any-hit"; + case EShLangClosestHitNV: return "closest-hit"; + case EShLangMissNV: return "miss"; + case EShLangCallableNV: return "callable"; + case EShLangMeshNV: return "mesh"; + case EShLangTaskNV: return "task"; +#endif default: return "unknown stage"; } } diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 7628163a..e4cbbbbc 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -207,6 +207,12 @@ const char* const E_GL_NV_shader_atomic_int64 = "GL_NV_shader_ const char* const E_GL_NV_conservative_raster_underestimation = "GL_NV_conservative_raster_underestimation"; const char* const E_GL_NV_shader_noperspective_interpolation = "GL_NV_shader_noperspective_interpolation"; const char* const E_GL_NV_shader_subgroup_partitioned = "GL_NV_shader_subgroup_partitioned"; +const char* const E_GL_NV_shading_rate_image = "GL_NV_shading_rate_image"; +const char* const E_GL_NVX_raytracing = "GL_NVX_raytracing"; +const char* const E_GL_NV_fragment_shader_barycentric = "GL_NV_fragment_shader_barycentric"; +const char* const E_GL_NV_compute_shader_derivatives = "GL_NV_compute_shader_derivatives"; +const char* const E_GL_NV_shader_texture_footprint = "GL_NV_shader_texture_footprint"; +const char* const E_GL_NV_mesh_shader = "GL_NV_mesh_shader"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 55b18ece..9d89d46b 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -140,13 +140,13 @@ extern int yylex(YYSTYPE*, TParseContext&); %token U8VEC2 U8VEC3 U8VEC4 %token VEC2 VEC3 VEC4 %token MAT2 MAT3 MAT4 CENTROID IN OUT INOUT -%token UNIFORM PATCH SAMPLE BUFFER SHARED NONUNIFORM +%token UNIFORM PATCH SAMPLE BUFFER SHARED NONUNIFORM PAYLOADNV PAYLOADINNV HITATTRNV %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT SUBGROUPCOHERENT NONPRIVATE %token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 %token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 %token F32VEC2 F32VEC3 F32VEC4 F32MAT2 F32MAT3 F32MAT4 %token F64VEC2 F64VEC3 F64VEC4 F64MAT2 F64MAT3 F64MAT4 -%token NOPERSPECTIVE FLAT SMOOTH LAYOUT EXPLICITINTERPAMD +%token NOPERSPECTIVE FLAT SMOOTH LAYOUT EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV %token MAT2X2 MAT2X3 MAT2X4 %token MAT3X2 MAT3X3 MAT3X4 @@ -164,6 +164,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token F64MAT3X2 F64MAT3X3 F64MAT3X4 %token F64MAT4X2 F64MAT4X3 F64MAT4X4 %token ATOMIC_UINT +%token ACCSTRUCTNV // combined image/sampler %token SAMPLER1D SAMPLER2D SAMPLER3D SAMPLERCUBE SAMPLER1DSHADOW SAMPLER2DSHADOW @@ -1142,6 +1143,40 @@ interpolation_qualifier parseContext.profileRequires($1.loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); $$.init($1.loc); $$.qualifier.explicitInterp = true; +#endif + } + | PERVERTEXNV { +#ifdef NV_EXTENSIONS + parseContext.globalCheck($1.loc, "pervertexNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + $$.init($1.loc); + $$.qualifier.pervertexNV = true; +#endif + } + | PERPRIMITIVENV { +#ifdef NV_EXTENSIONS + parseContext.globalCheck($1.loc, "perprimitiveNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NV_mesh_shader, "perprimitiveNV"); + $$.init($1.loc); + $$.qualifier.perPrimitiveNV = true; +#endif + } + | PERVIEWNV { +#ifdef NV_EXTENSIONS + parseContext.globalCheck($1.loc, "perviewNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NV_mesh_shader, "perviewNV"); + $$.init($1.loc); + $$.qualifier.perViewNV = true; +#endif + } + | PERTASKNV { +#ifdef NV_EXTENSIONS + parseContext.globalCheck($1.loc, "taskNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NV_mesh_shader, "taskNV"); + $$.init($1.loc); + $$.qualifier.perTaskNV = true; #endif } ; @@ -1305,11 +1340,45 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqBuffer; } + | HITATTRNV { +#ifdef NV_EXTENSIONS + parseContext.globalCheck($1.loc, "hitAttributeNVX"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask + | EShLangAnyHitNVMask), "hitAttributeNVX"); + parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NVX_raytracing, "hitAttributeNVX"); + $$.init($1.loc); + $$.qualifier.storage = EvqHitAttrNV; +#endif + } + | PAYLOADNV { +#ifdef NV_EXTENSIONS + parseContext.globalCheck($1.loc, "rayPayloadNVX"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | + EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNVX"); + parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NVX_raytracing, "rayPayloadNVX"); + $$.init($1.loc); + $$.qualifier.storage = EvqPayloadNV; +#endif + } + | PAYLOADINNV { +#ifdef NV_EXTENSIONS + parseContext.globalCheck($1.loc, "rayPayloadInNVX"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitNVMask | + EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNVX"); + parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_NVX_raytracing, "rayPayloadInNVX"); + $$.init($1.loc); + $$.qualifier.storage = EvqPayloadInNV; +#endif + } | SHARED { 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"); +#ifdef NV_EXTENSIONS + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); +#else parseContext.requireStage($1.loc, EShLangCompute, "shared"); +#endif $$.init($1.loc); $$.qualifier.storage = EvqShared; } @@ -2139,6 +2208,12 @@ type_specifier_nonarray $$.basicType = EbtDouble; $$.setMatrix(4, 4); } + | ACCSTRUCTNV { +#ifdef NV_EXTENSIONS + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtAccStructNV; +#endif + } | ATOMIC_UINT { parseContext.vulkanRemoved($1.loc, "atomic counter types"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index f708964d..32ec5baf 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -203,319 +203,327 @@ extern int yydebug; BUFFER = 335, SHARED = 336, NONUNIFORM = 337, - COHERENT = 338, - VOLATILE = 339, - RESTRICT = 340, - READONLY = 341, - WRITEONLY = 342, - DEVICECOHERENT = 343, - QUEUEFAMILYCOHERENT = 344, - WORKGROUPCOHERENT = 345, - SUBGROUPCOHERENT = 346, - NONPRIVATE = 347, - DVEC2 = 348, - DVEC3 = 349, - DVEC4 = 350, - DMAT2 = 351, - DMAT3 = 352, - DMAT4 = 353, - F16VEC2 = 354, - F16VEC3 = 355, - F16VEC4 = 356, - F16MAT2 = 357, - F16MAT3 = 358, - F16MAT4 = 359, - F32VEC2 = 360, - F32VEC3 = 361, - F32VEC4 = 362, - F32MAT2 = 363, - F32MAT3 = 364, - F32MAT4 = 365, - F64VEC2 = 366, - F64VEC3 = 367, - F64VEC4 = 368, - F64MAT2 = 369, - F64MAT3 = 370, - F64MAT4 = 371, - NOPERSPECTIVE = 372, - FLAT = 373, - SMOOTH = 374, - LAYOUT = 375, - EXPLICITINTERPAMD = 376, - MAT2X2 = 377, - MAT2X3 = 378, - MAT2X4 = 379, - MAT3X2 = 380, - MAT3X3 = 381, - MAT3X4 = 382, - MAT4X2 = 383, - MAT4X3 = 384, - MAT4X4 = 385, - DMAT2X2 = 386, - DMAT2X3 = 387, - DMAT2X4 = 388, - DMAT3X2 = 389, - DMAT3X3 = 390, - DMAT3X4 = 391, - DMAT4X2 = 392, - DMAT4X3 = 393, - DMAT4X4 = 394, - F16MAT2X2 = 395, - F16MAT2X3 = 396, - F16MAT2X4 = 397, - F16MAT3X2 = 398, - F16MAT3X3 = 399, - F16MAT3X4 = 400, - F16MAT4X2 = 401, - F16MAT4X3 = 402, - F16MAT4X4 = 403, - F32MAT2X2 = 404, - F32MAT2X3 = 405, - F32MAT2X4 = 406, - F32MAT3X2 = 407, - F32MAT3X3 = 408, - F32MAT3X4 = 409, - F32MAT4X2 = 410, - F32MAT4X3 = 411, - F32MAT4X4 = 412, - F64MAT2X2 = 413, - F64MAT2X3 = 414, - F64MAT2X4 = 415, - F64MAT3X2 = 416, - F64MAT3X3 = 417, - F64MAT3X4 = 418, - F64MAT4X2 = 419, - F64MAT4X3 = 420, - F64MAT4X4 = 421, - ATOMIC_UINT = 422, - SAMPLER1D = 423, - SAMPLER2D = 424, - SAMPLER3D = 425, - SAMPLERCUBE = 426, - SAMPLER1DSHADOW = 427, - SAMPLER2DSHADOW = 428, - SAMPLERCUBESHADOW = 429, - SAMPLER1DARRAY = 430, - SAMPLER2DARRAY = 431, - SAMPLER1DARRAYSHADOW = 432, - SAMPLER2DARRAYSHADOW = 433, - ISAMPLER1D = 434, - ISAMPLER2D = 435, - ISAMPLER3D = 436, - ISAMPLERCUBE = 437, - ISAMPLER1DARRAY = 438, - ISAMPLER2DARRAY = 439, - USAMPLER1D = 440, - USAMPLER2D = 441, - USAMPLER3D = 442, - USAMPLERCUBE = 443, - USAMPLER1DARRAY = 444, - USAMPLER2DARRAY = 445, - SAMPLER2DRECT = 446, - SAMPLER2DRECTSHADOW = 447, - ISAMPLER2DRECT = 448, - USAMPLER2DRECT = 449, - SAMPLERBUFFER = 450, - ISAMPLERBUFFER = 451, - USAMPLERBUFFER = 452, - SAMPLERCUBEARRAY = 453, - SAMPLERCUBEARRAYSHADOW = 454, - ISAMPLERCUBEARRAY = 455, - USAMPLERCUBEARRAY = 456, - SAMPLER2DMS = 457, - ISAMPLER2DMS = 458, - USAMPLER2DMS = 459, - SAMPLER2DMSARRAY = 460, - ISAMPLER2DMSARRAY = 461, - USAMPLER2DMSARRAY = 462, - SAMPLEREXTERNALOES = 463, - F16SAMPLER1D = 464, - F16SAMPLER2D = 465, - F16SAMPLER3D = 466, - F16SAMPLER2DRECT = 467, - F16SAMPLERCUBE = 468, - F16SAMPLER1DARRAY = 469, - F16SAMPLER2DARRAY = 470, - F16SAMPLERCUBEARRAY = 471, - F16SAMPLERBUFFER = 472, - F16SAMPLER2DMS = 473, - F16SAMPLER2DMSARRAY = 474, - F16SAMPLER1DSHADOW = 475, - F16SAMPLER2DSHADOW = 476, - F16SAMPLER1DARRAYSHADOW = 477, - F16SAMPLER2DARRAYSHADOW = 478, - F16SAMPLER2DRECTSHADOW = 479, - F16SAMPLERCUBESHADOW = 480, - F16SAMPLERCUBEARRAYSHADOW = 481, - SAMPLER = 482, - SAMPLERSHADOW = 483, - TEXTURE1D = 484, - TEXTURE2D = 485, - TEXTURE3D = 486, - TEXTURECUBE = 487, - TEXTURE1DARRAY = 488, - TEXTURE2DARRAY = 489, - ITEXTURE1D = 490, - ITEXTURE2D = 491, - ITEXTURE3D = 492, - ITEXTURECUBE = 493, - ITEXTURE1DARRAY = 494, - ITEXTURE2DARRAY = 495, - UTEXTURE1D = 496, - UTEXTURE2D = 497, - UTEXTURE3D = 498, - UTEXTURECUBE = 499, - UTEXTURE1DARRAY = 500, - UTEXTURE2DARRAY = 501, - TEXTURE2DRECT = 502, - ITEXTURE2DRECT = 503, - UTEXTURE2DRECT = 504, - TEXTUREBUFFER = 505, - ITEXTUREBUFFER = 506, - UTEXTUREBUFFER = 507, - TEXTURECUBEARRAY = 508, - ITEXTURECUBEARRAY = 509, - UTEXTURECUBEARRAY = 510, - TEXTURE2DMS = 511, - ITEXTURE2DMS = 512, - UTEXTURE2DMS = 513, - TEXTURE2DMSARRAY = 514, - ITEXTURE2DMSARRAY = 515, - UTEXTURE2DMSARRAY = 516, - F16TEXTURE1D = 517, - F16TEXTURE2D = 518, - F16TEXTURE3D = 519, - F16TEXTURE2DRECT = 520, - F16TEXTURECUBE = 521, - F16TEXTURE1DARRAY = 522, - F16TEXTURE2DARRAY = 523, - F16TEXTURECUBEARRAY = 524, - F16TEXTUREBUFFER = 525, - F16TEXTURE2DMS = 526, - F16TEXTURE2DMSARRAY = 527, - SUBPASSINPUT = 528, - SUBPASSINPUTMS = 529, - ISUBPASSINPUT = 530, - ISUBPASSINPUTMS = 531, - USUBPASSINPUT = 532, - USUBPASSINPUTMS = 533, - F16SUBPASSINPUT = 534, - F16SUBPASSINPUTMS = 535, - IMAGE1D = 536, - IIMAGE1D = 537, - UIMAGE1D = 538, - IMAGE2D = 539, - IIMAGE2D = 540, - UIMAGE2D = 541, - IMAGE3D = 542, - IIMAGE3D = 543, - UIMAGE3D = 544, - IMAGE2DRECT = 545, - IIMAGE2DRECT = 546, - UIMAGE2DRECT = 547, - IMAGECUBE = 548, - IIMAGECUBE = 549, - UIMAGECUBE = 550, - IMAGEBUFFER = 551, - IIMAGEBUFFER = 552, - UIMAGEBUFFER = 553, - IMAGE1DARRAY = 554, - IIMAGE1DARRAY = 555, - UIMAGE1DARRAY = 556, - IMAGE2DARRAY = 557, - IIMAGE2DARRAY = 558, - UIMAGE2DARRAY = 559, - IMAGECUBEARRAY = 560, - IIMAGECUBEARRAY = 561, - UIMAGECUBEARRAY = 562, - IMAGE2DMS = 563, - IIMAGE2DMS = 564, - UIMAGE2DMS = 565, - IMAGE2DMSARRAY = 566, - IIMAGE2DMSARRAY = 567, - UIMAGE2DMSARRAY = 568, - F16IMAGE1D = 569, - F16IMAGE2D = 570, - F16IMAGE3D = 571, - F16IMAGE2DRECT = 572, - F16IMAGECUBE = 573, - F16IMAGE1DARRAY = 574, - F16IMAGE2DARRAY = 575, - F16IMAGECUBEARRAY = 576, - F16IMAGEBUFFER = 577, - F16IMAGE2DMS = 578, - F16IMAGE2DMSARRAY = 579, - STRUCT = 580, - VOID = 581, - WHILE = 582, - IDENTIFIER = 583, - TYPE_NAME = 584, - FLOATCONSTANT = 585, - DOUBLECONSTANT = 586, - INT16CONSTANT = 587, - UINT16CONSTANT = 588, - INT32CONSTANT = 589, - UINT32CONSTANT = 590, - INTCONSTANT = 591, - UINTCONSTANT = 592, - INT64CONSTANT = 593, - UINT64CONSTANT = 594, - BOOLCONSTANT = 595, - FLOAT16CONSTANT = 596, - LEFT_OP = 597, - RIGHT_OP = 598, - INC_OP = 599, - DEC_OP = 600, - LE_OP = 601, - GE_OP = 602, - EQ_OP = 603, - NE_OP = 604, - AND_OP = 605, - OR_OP = 606, - XOR_OP = 607, - MUL_ASSIGN = 608, - DIV_ASSIGN = 609, - ADD_ASSIGN = 610, - MOD_ASSIGN = 611, - LEFT_ASSIGN = 612, - RIGHT_ASSIGN = 613, - AND_ASSIGN = 614, - XOR_ASSIGN = 615, - OR_ASSIGN = 616, - SUB_ASSIGN = 617, - LEFT_PAREN = 618, - RIGHT_PAREN = 619, - LEFT_BRACKET = 620, - RIGHT_BRACKET = 621, - LEFT_BRACE = 622, - RIGHT_BRACE = 623, - DOT = 624, - COMMA = 625, - COLON = 626, - EQUAL = 627, - SEMICOLON = 628, - BANG = 629, - DASH = 630, - TILDE = 631, - PLUS = 632, - STAR = 633, - SLASH = 634, - PERCENT = 635, - LEFT_ANGLE = 636, - RIGHT_ANGLE = 637, - VERTICAL_BAR = 638, - CARET = 639, - AMPERSAND = 640, - QUESTION = 641, - INVARIANT = 642, - PRECISE = 643, - HIGH_PRECISION = 644, - MEDIUM_PRECISION = 645, - LOW_PRECISION = 646, - PRECISION = 647, - PACKED = 648, - RESOURCE = 649, - SUPERP = 650 + PAYLOADNV = 338, + PAYLOADINNV = 339, + HITATTRNV = 340, + COHERENT = 341, + VOLATILE = 342, + RESTRICT = 343, + READONLY = 344, + WRITEONLY = 345, + DEVICECOHERENT = 346, + QUEUEFAMILYCOHERENT = 347, + WORKGROUPCOHERENT = 348, + SUBGROUPCOHERENT = 349, + NONPRIVATE = 350, + DVEC2 = 351, + DVEC3 = 352, + DVEC4 = 353, + DMAT2 = 354, + DMAT3 = 355, + DMAT4 = 356, + F16VEC2 = 357, + F16VEC3 = 358, + F16VEC4 = 359, + F16MAT2 = 360, + F16MAT3 = 361, + F16MAT4 = 362, + F32VEC2 = 363, + F32VEC3 = 364, + F32VEC4 = 365, + F32MAT2 = 366, + F32MAT3 = 367, + F32MAT4 = 368, + F64VEC2 = 369, + F64VEC3 = 370, + F64VEC4 = 371, + F64MAT2 = 372, + F64MAT3 = 373, + F64MAT4 = 374, + NOPERSPECTIVE = 375, + FLAT = 376, + SMOOTH = 377, + LAYOUT = 378, + EXPLICITINTERPAMD = 379, + PERVERTEXNV = 380, + PERPRIMITIVENV = 381, + PERVIEWNV = 382, + PERTASKNV = 383, + MAT2X2 = 384, + MAT2X3 = 385, + MAT2X4 = 386, + MAT3X2 = 387, + MAT3X3 = 388, + MAT3X4 = 389, + MAT4X2 = 390, + MAT4X3 = 391, + MAT4X4 = 392, + DMAT2X2 = 393, + DMAT2X3 = 394, + DMAT2X4 = 395, + DMAT3X2 = 396, + DMAT3X3 = 397, + DMAT3X4 = 398, + DMAT4X2 = 399, + DMAT4X3 = 400, + DMAT4X4 = 401, + F16MAT2X2 = 402, + F16MAT2X3 = 403, + F16MAT2X4 = 404, + F16MAT3X2 = 405, + F16MAT3X3 = 406, + F16MAT3X4 = 407, + F16MAT4X2 = 408, + F16MAT4X3 = 409, + F16MAT4X4 = 410, + F32MAT2X2 = 411, + F32MAT2X3 = 412, + F32MAT2X4 = 413, + F32MAT3X2 = 414, + F32MAT3X3 = 415, + F32MAT3X4 = 416, + F32MAT4X2 = 417, + F32MAT4X3 = 418, + F32MAT4X4 = 419, + F64MAT2X2 = 420, + F64MAT2X3 = 421, + F64MAT2X4 = 422, + F64MAT3X2 = 423, + F64MAT3X3 = 424, + F64MAT3X4 = 425, + F64MAT4X2 = 426, + F64MAT4X3 = 427, + F64MAT4X4 = 428, + ATOMIC_UINT = 429, + ACCSTRUCTNV = 430, + SAMPLER1D = 431, + SAMPLER2D = 432, + SAMPLER3D = 433, + SAMPLERCUBE = 434, + SAMPLER1DSHADOW = 435, + SAMPLER2DSHADOW = 436, + SAMPLERCUBESHADOW = 437, + SAMPLER1DARRAY = 438, + SAMPLER2DARRAY = 439, + SAMPLER1DARRAYSHADOW = 440, + SAMPLER2DARRAYSHADOW = 441, + ISAMPLER1D = 442, + ISAMPLER2D = 443, + ISAMPLER3D = 444, + ISAMPLERCUBE = 445, + ISAMPLER1DARRAY = 446, + ISAMPLER2DARRAY = 447, + USAMPLER1D = 448, + USAMPLER2D = 449, + USAMPLER3D = 450, + USAMPLERCUBE = 451, + USAMPLER1DARRAY = 452, + USAMPLER2DARRAY = 453, + SAMPLER2DRECT = 454, + SAMPLER2DRECTSHADOW = 455, + ISAMPLER2DRECT = 456, + USAMPLER2DRECT = 457, + SAMPLERBUFFER = 458, + ISAMPLERBUFFER = 459, + USAMPLERBUFFER = 460, + SAMPLERCUBEARRAY = 461, + SAMPLERCUBEARRAYSHADOW = 462, + ISAMPLERCUBEARRAY = 463, + USAMPLERCUBEARRAY = 464, + SAMPLER2DMS = 465, + ISAMPLER2DMS = 466, + USAMPLER2DMS = 467, + SAMPLER2DMSARRAY = 468, + ISAMPLER2DMSARRAY = 469, + USAMPLER2DMSARRAY = 470, + SAMPLEREXTERNALOES = 471, + F16SAMPLER1D = 472, + F16SAMPLER2D = 473, + F16SAMPLER3D = 474, + F16SAMPLER2DRECT = 475, + F16SAMPLERCUBE = 476, + F16SAMPLER1DARRAY = 477, + F16SAMPLER2DARRAY = 478, + F16SAMPLERCUBEARRAY = 479, + F16SAMPLERBUFFER = 480, + F16SAMPLER2DMS = 481, + F16SAMPLER2DMSARRAY = 482, + F16SAMPLER1DSHADOW = 483, + F16SAMPLER2DSHADOW = 484, + F16SAMPLER1DARRAYSHADOW = 485, + F16SAMPLER2DARRAYSHADOW = 486, + F16SAMPLER2DRECTSHADOW = 487, + F16SAMPLERCUBESHADOW = 488, + F16SAMPLERCUBEARRAYSHADOW = 489, + SAMPLER = 490, + SAMPLERSHADOW = 491, + TEXTURE1D = 492, + TEXTURE2D = 493, + TEXTURE3D = 494, + TEXTURECUBE = 495, + TEXTURE1DARRAY = 496, + TEXTURE2DARRAY = 497, + ITEXTURE1D = 498, + ITEXTURE2D = 499, + ITEXTURE3D = 500, + ITEXTURECUBE = 501, + ITEXTURE1DARRAY = 502, + ITEXTURE2DARRAY = 503, + UTEXTURE1D = 504, + UTEXTURE2D = 505, + UTEXTURE3D = 506, + UTEXTURECUBE = 507, + UTEXTURE1DARRAY = 508, + UTEXTURE2DARRAY = 509, + TEXTURE2DRECT = 510, + ITEXTURE2DRECT = 511, + UTEXTURE2DRECT = 512, + TEXTUREBUFFER = 513, + ITEXTUREBUFFER = 514, + UTEXTUREBUFFER = 515, + TEXTURECUBEARRAY = 516, + ITEXTURECUBEARRAY = 517, + UTEXTURECUBEARRAY = 518, + TEXTURE2DMS = 519, + ITEXTURE2DMS = 520, + UTEXTURE2DMS = 521, + TEXTURE2DMSARRAY = 522, + ITEXTURE2DMSARRAY = 523, + UTEXTURE2DMSARRAY = 524, + F16TEXTURE1D = 525, + F16TEXTURE2D = 526, + F16TEXTURE3D = 527, + F16TEXTURE2DRECT = 528, + F16TEXTURECUBE = 529, + F16TEXTURE1DARRAY = 530, + F16TEXTURE2DARRAY = 531, + F16TEXTURECUBEARRAY = 532, + F16TEXTUREBUFFER = 533, + F16TEXTURE2DMS = 534, + F16TEXTURE2DMSARRAY = 535, + SUBPASSINPUT = 536, + SUBPASSINPUTMS = 537, + ISUBPASSINPUT = 538, + ISUBPASSINPUTMS = 539, + USUBPASSINPUT = 540, + USUBPASSINPUTMS = 541, + F16SUBPASSINPUT = 542, + F16SUBPASSINPUTMS = 543, + IMAGE1D = 544, + IIMAGE1D = 545, + UIMAGE1D = 546, + IMAGE2D = 547, + IIMAGE2D = 548, + UIMAGE2D = 549, + IMAGE3D = 550, + IIMAGE3D = 551, + UIMAGE3D = 552, + IMAGE2DRECT = 553, + IIMAGE2DRECT = 554, + UIMAGE2DRECT = 555, + IMAGECUBE = 556, + IIMAGECUBE = 557, + UIMAGECUBE = 558, + IMAGEBUFFER = 559, + IIMAGEBUFFER = 560, + UIMAGEBUFFER = 561, + IMAGE1DARRAY = 562, + IIMAGE1DARRAY = 563, + UIMAGE1DARRAY = 564, + IMAGE2DARRAY = 565, + IIMAGE2DARRAY = 566, + UIMAGE2DARRAY = 567, + IMAGECUBEARRAY = 568, + IIMAGECUBEARRAY = 569, + UIMAGECUBEARRAY = 570, + IMAGE2DMS = 571, + IIMAGE2DMS = 572, + UIMAGE2DMS = 573, + IMAGE2DMSARRAY = 574, + IIMAGE2DMSARRAY = 575, + UIMAGE2DMSARRAY = 576, + F16IMAGE1D = 577, + F16IMAGE2D = 578, + F16IMAGE3D = 579, + F16IMAGE2DRECT = 580, + F16IMAGECUBE = 581, + F16IMAGE1DARRAY = 582, + F16IMAGE2DARRAY = 583, + F16IMAGECUBEARRAY = 584, + F16IMAGEBUFFER = 585, + F16IMAGE2DMS = 586, + F16IMAGE2DMSARRAY = 587, + STRUCT = 588, + VOID = 589, + WHILE = 590, + IDENTIFIER = 591, + TYPE_NAME = 592, + FLOATCONSTANT = 593, + DOUBLECONSTANT = 594, + INT16CONSTANT = 595, + UINT16CONSTANT = 596, + INT32CONSTANT = 597, + UINT32CONSTANT = 598, + INTCONSTANT = 599, + UINTCONSTANT = 600, + INT64CONSTANT = 601, + UINT64CONSTANT = 602, + BOOLCONSTANT = 603, + FLOAT16CONSTANT = 604, + LEFT_OP = 605, + RIGHT_OP = 606, + INC_OP = 607, + DEC_OP = 608, + LE_OP = 609, + GE_OP = 610, + EQ_OP = 611, + NE_OP = 612, + AND_OP = 613, + OR_OP = 614, + XOR_OP = 615, + MUL_ASSIGN = 616, + DIV_ASSIGN = 617, + ADD_ASSIGN = 618, + MOD_ASSIGN = 619, + LEFT_ASSIGN = 620, + RIGHT_ASSIGN = 621, + AND_ASSIGN = 622, + XOR_ASSIGN = 623, + OR_ASSIGN = 624, + SUB_ASSIGN = 625, + LEFT_PAREN = 626, + RIGHT_PAREN = 627, + LEFT_BRACKET = 628, + RIGHT_BRACKET = 629, + LEFT_BRACE = 630, + RIGHT_BRACE = 631, + DOT = 632, + COMMA = 633, + COLON = 634, + EQUAL = 635, + SEMICOLON = 636, + BANG = 637, + DASH = 638, + TILDE = 639, + PLUS = 640, + STAR = 641, + SLASH = 642, + PERCENT = 643, + LEFT_ANGLE = 644, + RIGHT_ANGLE = 645, + VERTICAL_BAR = 646, + CARET = 647, + AMPERSAND = 648, + QUESTION = 649, + INVARIANT = 650, + PRECISE = 651, + HIGH_PRECISION = 652, + MEDIUM_PRECISION = 653, + LOW_PRECISION = 654, + PRECISION = 655, + PACKED = 656, + RESOURCE = 657, + SUPERP = 658 }; #endif @@ -559,7 +567,7 @@ union YYSTYPE }; } interm; -#line 563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ +#line 571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -590,7 +598,7 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -830,23 +838,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 371 +#define YYFINAL 379 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 9064 +#define YYLAST 9248 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 396 +#define YYNTOKENS 404 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 107 /* YYNRULES -- Number of rules. */ -#define YYNRULES 561 +#define YYNRULES 569 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 702 +#define YYNSTATES 710 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 650 +#define YYMAXUTOK 658 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -920,70 +928,70 @@ static const yytype_uint16 yytranslate[] = 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395 + 395, 396, 397, 398, 399, 400, 401, 402, 403 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 293, 293, 299, 302, 306, 310, 313, 317, 321, - 325, 329, 333, 336, 340, 344, 347, 355, 358, 361, - 364, 367, 372, 380, 387, 394, 400, 404, 411, 414, - 420, 427, 437, 445, 450, 477, 485, 491, 495, 499, - 519, 520, 521, 522, 528, 529, 534, 539, 548, 549, - 554, 562, 563, 569, 578, 579, 584, 589, 594, 602, - 603, 611, 622, 623, 632, 633, 642, 643, 652, 653, - 661, 662, 670, 671, 679, 680, 680, 698, 699, 715, - 719, 723, 727, 732, 736, 740, 744, 748, 752, 756, - 763, 766, 777, 784, 789, 794, 802, 806, 810, 814, - 819, 824, 833, 833, 844, 848, 855, 862, 865, 872, - 880, 900, 923, 938, 963, 974, 984, 994, 1004, 1013, - 1016, 1020, 1024, 1029, 1037, 1042, 1047, 1052, 1057, 1066, - 1077, 1104, 1113, 1120, 1127, 1138, 1150, 1156, 1159, 1166, - 1170, 1174, 1182, 1191, 1194, 1205, 1208, 1211, 1215, 1219, - 1223, 1227, 1233, 1237, 1249, 1263, 1268, 1274, 1280, 1287, - 1293, 1298, 1303, 1308, 1316, 1320, 1325, 1330, 1335, 1340, - 1345, 1349, 1353, 1357, 1361, 1367, 1376, 1383, 1386, 1394, - 1398, 1407, 1412, 1420, 1424, 1434, 1438, 1442, 1447, 1452, - 1457, 1462, 1466, 1471, 1476, 1481, 1486, 1491, 1496, 1501, - 1506, 1511, 1515, 1520, 1525, 1530, 1536, 1542, 1548, 1554, - 1560, 1566, 1572, 1578, 1584, 1590, 1596, 1602, 1607, 1612, - 1617, 1622, 1627, 1632, 1638, 1644, 1650, 1656, 1662, 1668, - 1674, 1680, 1686, 1692, 1698, 1704, 1710, 1716, 1722, 1728, - 1734, 1740, 1746, 1752, 1758, 1764, 1770, 1776, 1782, 1788, - 1794, 1799, 1804, 1809, 1814, 1819, 1824, 1829, 1834, 1839, - 1844, 1849, 1854, 1860, 1866, 1872, 1878, 1884, 1890, 1896, - 1902, 1908, 1914, 1920, 1926, 1932, 1938, 1944, 1950, 1956, - 1962, 1968, 1974, 1980, 1986, 1992, 1998, 2004, 2010, 2016, - 2022, 2028, 2034, 2040, 2046, 2052, 2058, 2064, 2070, 2076, - 2082, 2088, 2094, 2100, 2106, 2112, 2118, 2124, 2130, 2136, - 2142, 2147, 2152, 2157, 2162, 2167, 2172, 2177, 2182, 2187, - 2192, 2197, 2202, 2207, 2212, 2220, 2228, 2236, 2244, 2252, - 2260, 2268, 2276, 2284, 2292, 2300, 2308, 2316, 2321, 2326, - 2331, 2336, 2341, 2346, 2351, 2356, 2361, 2366, 2371, 2376, - 2381, 2386, 2391, 2396, 2404, 2412, 2417, 2422, 2427, 2435, - 2440, 2445, 2450, 2458, 2463, 2468, 2473, 2481, 2486, 2491, - 2496, 2501, 2506, 2514, 2519, 2527, 2532, 2540, 2545, 2553, - 2558, 2566, 2571, 2579, 2584, 2592, 2597, 2602, 2607, 2612, - 2617, 2622, 2627, 2632, 2637, 2642, 2647, 2652, 2657, 2662, - 2667, 2675, 2680, 2685, 2690, 2698, 2703, 2708, 2713, 2721, - 2726, 2731, 2736, 2744, 2749, 2754, 2759, 2767, 2772, 2777, - 2782, 2790, 2795, 2800, 2805, 2813, 2818, 2823, 2828, 2836, - 2841, 2846, 2851, 2859, 2864, 2869, 2874, 2882, 2887, 2892, - 2897, 2905, 2910, 2915, 2920, 2928, 2933, 2938, 2943, 2951, - 2956, 2961, 2966, 2974, 2979, 2984, 2989, 2997, 3002, 3007, - 3013, 3019, 3025, 3034, 3043, 3049, 3055, 3061, 3067, 3072, - 3088, 3093, 3098, 3106, 3106, 3117, 3117, 3127, 3130, 3143, - 3165, 3192, 3196, 3202, 3207, 3218, 3221, 3227, 3236, 3239, - 3245, 3249, 3250, 3256, 3257, 3258, 3259, 3260, 3261, 3262, - 3266, 3267, 3271, 3267, 3283, 3284, 3288, 3288, 3295, 3295, - 3309, 3312, 3320, 3328, 3339, 3340, 3344, 3347, 3353, 3360, - 3364, 3372, 3376, 3389, 3392, 3398, 3398, 3418, 3421, 3427, - 3439, 3451, 3454, 3460, 3460, 3475, 3475, 3491, 3491, 3512, - 3515, 3521, 3524, 3530, 3534, 3541, 3546, 3551, 3558, 3561, - 3570, 3574, 3583, 3586, 3589, 3597, 3597, 3619, 3625, 3628, - 3633, 3636 + 0, 294, 294, 300, 303, 307, 311, 314, 318, 322, + 326, 330, 334, 337, 341, 345, 348, 356, 359, 362, + 365, 368, 373, 381, 388, 395, 401, 405, 412, 415, + 421, 428, 438, 446, 451, 478, 486, 492, 496, 500, + 520, 521, 522, 523, 529, 530, 535, 540, 549, 550, + 555, 563, 564, 570, 579, 580, 585, 590, 595, 603, + 604, 612, 623, 624, 633, 634, 643, 644, 653, 654, + 662, 663, 671, 672, 680, 681, 681, 699, 700, 716, + 720, 724, 728, 733, 737, 741, 745, 749, 753, 757, + 764, 767, 778, 785, 790, 795, 803, 807, 811, 815, + 820, 825, 834, 834, 845, 849, 856, 863, 866, 873, + 881, 901, 924, 939, 964, 975, 985, 995, 1005, 1014, + 1017, 1021, 1025, 1030, 1038, 1043, 1048, 1053, 1058, 1067, + 1078, 1105, 1114, 1121, 1128, 1139, 1148, 1158, 1166, 1174, + 1185, 1191, 1194, 1201, 1205, 1209, 1217, 1226, 1229, 1240, + 1243, 1246, 1250, 1254, 1258, 1262, 1268, 1272, 1284, 1298, + 1303, 1309, 1315, 1322, 1328, 1333, 1338, 1343, 1353, 1363, + 1373, 1385, 1389, 1394, 1399, 1404, 1409, 1414, 1418, 1422, + 1426, 1430, 1436, 1445, 1452, 1455, 1463, 1467, 1476, 1481, + 1489, 1493, 1503, 1507, 1511, 1516, 1521, 1526, 1531, 1535, + 1540, 1545, 1550, 1555, 1560, 1565, 1570, 1575, 1580, 1584, + 1589, 1594, 1599, 1605, 1611, 1617, 1623, 1629, 1635, 1641, + 1647, 1653, 1659, 1665, 1671, 1676, 1681, 1686, 1691, 1696, + 1701, 1707, 1713, 1719, 1725, 1731, 1737, 1743, 1749, 1755, + 1761, 1767, 1773, 1779, 1785, 1791, 1797, 1803, 1809, 1815, + 1821, 1827, 1833, 1839, 1845, 1851, 1857, 1863, 1868, 1873, + 1878, 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1918, 1923, + 1929, 1935, 1941, 1947, 1953, 1959, 1965, 1971, 1977, 1983, + 1989, 1995, 2001, 2007, 2013, 2019, 2025, 2031, 2037, 2043, + 2049, 2055, 2061, 2067, 2073, 2079, 2085, 2091, 2097, 2103, + 2109, 2115, 2121, 2127, 2133, 2139, 2145, 2151, 2157, 2163, + 2169, 2175, 2181, 2187, 2193, 2199, 2205, 2211, 2217, 2222, + 2227, 2232, 2237, 2242, 2247, 2252, 2257, 2262, 2267, 2272, + 2277, 2282, 2287, 2295, 2303, 2311, 2319, 2327, 2335, 2343, + 2351, 2359, 2367, 2375, 2383, 2391, 2396, 2401, 2406, 2411, + 2416, 2421, 2426, 2431, 2436, 2441, 2446, 2451, 2456, 2461, + 2466, 2471, 2479, 2487, 2492, 2497, 2502, 2510, 2515, 2520, + 2525, 2533, 2538, 2543, 2548, 2556, 2561, 2566, 2571, 2576, + 2581, 2589, 2594, 2602, 2607, 2615, 2620, 2628, 2633, 2641, + 2646, 2654, 2659, 2667, 2672, 2677, 2682, 2687, 2692, 2697, + 2702, 2707, 2712, 2717, 2722, 2727, 2732, 2737, 2742, 2750, + 2755, 2760, 2765, 2773, 2778, 2783, 2788, 2796, 2801, 2806, + 2811, 2819, 2824, 2829, 2834, 2842, 2847, 2852, 2857, 2865, + 2870, 2875, 2880, 2888, 2893, 2898, 2903, 2911, 2916, 2921, + 2926, 2934, 2939, 2944, 2949, 2957, 2962, 2967, 2972, 2980, + 2985, 2990, 2995, 3003, 3008, 3013, 3018, 3026, 3031, 3036, + 3041, 3049, 3054, 3059, 3064, 3072, 3077, 3082, 3088, 3094, + 3100, 3109, 3118, 3124, 3130, 3136, 3142, 3147, 3163, 3168, + 3173, 3181, 3181, 3192, 3192, 3202, 3205, 3218, 3240, 3267, + 3271, 3277, 3282, 3293, 3296, 3302, 3311, 3314, 3320, 3324, + 3325, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3341, 3342, + 3346, 3342, 3358, 3359, 3363, 3363, 3370, 3370, 3384, 3387, + 3395, 3403, 3414, 3415, 3419, 3422, 3428, 3435, 3439, 3447, + 3451, 3464, 3467, 3473, 3473, 3493, 3496, 3502, 3514, 3526, + 3529, 3535, 3535, 3550, 3550, 3566, 3566, 3587, 3590, 3596, + 3599, 3605, 3609, 3616, 3621, 3626, 3633, 3636, 3645, 3649, + 3658, 3661, 3664, 3672, 3672, 3694, 3700, 3703, 3708, 3711 }; #endif @@ -1004,38 +1012,39 @@ static const char *const yytname[] = "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", "U8VEC2", "U8VEC3", "U8VEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID", "IN", "OUT", "INOUT", "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED", - "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", - "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", - "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "DVEC2", "DVEC3", - "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", - "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", - "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", - "F64MAT2", "F64MAT3", "F64MAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", - "LAYOUT", "EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", - "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3", - "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", - "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", - "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", - "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3", - "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", - "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", - "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "SAMPLER1D", - "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW", - "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER1DARRAY", - "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW", - "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", - "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D", - "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY", - "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", - "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", - "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", - "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", - "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", - "SAMPLEREXTERNALOES", "F16SAMPLER1D", "F16SAMPLER2D", "F16SAMPLER3D", - "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY", - "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER", - "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW", - "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", + "NONUNIFORM", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", "COHERENT", + "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", "DEVICECOHERENT", + "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", + "NONPRIVATE", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4", + "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", "F16MAT4", + "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", "F32MAT4", + "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", "F64MAT4", + "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", "EXPLICITINTERPAMD", + "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "MAT2X2", + "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", + "MAT4X4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", + "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", + "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", + "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", + "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", + "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", + "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", + "ATOMIC_UINT", "ACCSTRUCTNV", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", + "SAMPLERCUBE", "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", + "SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", + "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", + "ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", + "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", + "USAMPLER2DARRAY", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", + "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", + "USAMPLERBUFFER", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", + "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", + "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", + "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "F16SAMPLER1D", + "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", + "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", + "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", + "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", "F16SAMPLER2DARRAYSHADOW", "F16SAMPLER2DRECTSHADOW", "F16SAMPLERCUBESHADOW", "F16SAMPLERCUBEARRAYSHADOW", "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", @@ -1160,16 +1169,17 @@ static const yytype_uint16 yytoknum[] = 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650 + 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658 }; # endif -#define YYPACT_NINF -641 +#define YYPACT_NINF -645 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-641))) + (!!((Yystate) == (-645))) -#define YYTABLE_NINF -507 +#define YYTABLE_NINF -515 #define yytable_value_is_error(Yytable_value) \ 0 @@ -1178,77 +1188,77 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 3431, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -321, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -300, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -306, -641, -641, -641, -641, -641, -641, -641, - -641, -247, -641, -307, -320, -295, -287, 5766, -305, -641, - -223, -641, -641, -641, -641, 4210, -641, -641, -641, -641, - -275, -641, -641, 701, -641, -641, -217, -67, -242, -641, - 8735, -327, -641, -641, -218, -641, 5766, -641, -641, -641, - 5766, -194, -188, -641, -331, -293, -641, -641, -641, 6497, - -213, -641, -641, -641, -297, -641, -203, -292, -641, -641, - 5766, -214, -641, -326, 1091, -641, -641, -641, -641, -275, - -316, -641, 6870, -310, -641, -165, -641, -266, -641, -641, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, 7989, 7989, 7989, -641, -641, -641, -641, -641, -641, - -641, -315, -641, -641, -641, -190, -288, 8362, -187, -641, - 7989, -233, -227, -185, -322, -312, -210, -207, -204, -172, - -171, -328, -184, -641, -641, 7243, -641, -145, 7989, -641, - -67, 5766, 5766, -144, 4599, -641, -641, -641, -186, -182, - -641, -178, -175, -181, 7616, -174, 7989, -177, -170, -169, - -173, -641, -641, -259, -641, -641, -244, -641, -320, -166, - -163, -641, -641, -641, -641, 1481, -641, -641, -641, -641, - -641, -641, -641, -641, -641, -19, -213, 6870, -301, 6870, - -641, -641, 6870, 5766, -641, -127, -641, -641, -641, -285, - -641, -641, 7989, -126, -641, -641, 7989, -161, -641, -641, - -641, 7989, 7989, 7989, 7989, 7989, 7989, 7989, 7989, 7989, - 7989, 7989, 7989, 7989, 7989, 7989, 7989, 7989, 7989, 7989, - -641, -641, -641, -162, -641, -641, -641, -641, 4988, -144, - -275, -243, -641, -641, -641, -641, -641, 1871, -641, 7989, - -641, -641, -238, 7989, -209, -641, -641, -123, -641, 1871, - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, 7989, 7989, -641, -641, -641, -641, -641, -641, -641, - 6870, -641, -215, -641, 5377, -641, -641, -158, -160, -641, - -641, -641, -641, -641, -233, -233, -227, -227, -185, -185, - -185, -185, -322, -322, -312, -210, -207, -204, -172, -171, - 7989, -641, -641, -232, -213, -144, -641, -118, 3041, -283, - -641, -258, -641, 3821, -152, -278, -641, 1871, -641, -641, - -641, -641, 6124, -641, -641, -205, -641, -641, -150, -641, - -641, 3821, -153, -641, -160, -113, 5766, -148, 7989, -149, - -123, -147, -641, -641, 7989, 7989, -641, -155, -142, 194, - -141, 2651, -641, -121, -124, 2261, -115, -641, -641, -641, - -641, -255, 7989, 2261, -153, -641, -641, 1871, 6870, -641, - -641, -641, -641, -122, -160, -641, -641, 1871, -116, -641, - -641, -641 + 3495, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -317, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -266, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -314, -645, -645, -645, -645, -645, -645, -645, -645, -273, + -645, -315, -355, -335, -299, 5878, -286, -645, -239, -645, + -645, -645, -645, 4290, -645, -645, -645, -645, -233, -645, + -645, 709, -645, -645, -181, -69, -218, -645, 8911, -340, + -645, -645, -212, -645, 5878, -645, -645, -645, 5878, -168, + -167, -645, -337, -303, -645, -645, -645, 6625, -203, -645, + -645, -645, -305, -645, -209, -304, -645, -645, 5878, -208, + -645, -333, 1107, -645, -645, -645, -645, -233, -323, -645, + 7006, -311, -645, -164, -645, -275, -645, -645, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, 8149, + 8149, 8149, -645, -645, -645, -645, -645, -645, -645, -322, + -645, -645, -645, -198, -296, 8530, -196, -645, 8149, -251, + -292, -222, -331, -225, -217, -215, -213, -178, -179, -334, + -192, -645, -645, 7387, -645, -153, 8149, -645, -69, 5878, + 5878, -152, 4687, -645, -645, -645, -195, -194, -645, -186, + -183, -191, 7768, -182, 8149, -187, -177, -180, -176, -645, + -645, -216, -645, -645, -274, -645, -355, -175, -174, -645, + -645, -645, -645, 1505, -645, -645, -645, -645, -645, -645, + -645, -645, -645, -19, -203, 7006, -310, 7006, -645, -645, + 7006, 5878, -645, -135, -645, -645, -645, -295, -645, -645, + 8149, -134, -645, -645, 8149, -169, -645, -645, -645, 8149, + 8149, 8149, 8149, 8149, 8149, 8149, 8149, 8149, 8149, 8149, + 8149, 8149, 8149, 8149, 8149, 8149, 8149, 8149, -645, -645, + -645, -170, -645, -645, -645, -645, 5084, -152, -233, -268, + -645, -645, -645, -645, -645, 1903, -645, 8149, -645, -645, + -263, 8149, -240, -645, -645, -131, -645, 1903, -645, -645, + -645, -645, -645, -645, -645, -645, -645, -645, -645, 8149, + 8149, -645, -645, -645, -645, -645, -645, -645, 7006, -645, + -267, -645, 5481, -645, -645, -166, -163, -645, -645, -645, + -645, -645, -251, -251, -292, -292, -222, -222, -222, -222, + -331, -331, -225, -217, -215, -213, -178, -179, 8149, -645, + -645, -261, -203, -152, -645, -126, 3097, -291, -645, -288, + -645, 3893, -161, -336, -645, 1903, -645, -645, -645, -645, + 6244, -645, -645, -236, -645, -645, -160, -645, -645, 3893, + -159, -645, -163, -124, 5878, -158, 8149, -157, -131, -156, + -645, -645, 8149, 8149, -645, -162, -154, 196, -149, 2699, + -645, -148, -151, 2301, -150, -645, -645, -645, -645, -284, + 8149, 2301, -159, -645, -645, 1903, 7006, -645, -645, -645, + -645, -130, -163, -645, -645, 1903, -146, -645, -645, -645 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1256,109 +1266,109 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 153, 154, 188, 186, 189, 187, 190, 152, 201, - 191, 192, 199, 200, 197, 198, 195, 196, 193, 194, - 174, 217, 218, 219, 220, 221, 222, 235, 236, 237, - 232, 233, 234, 247, 248, 249, 229, 230, 231, 244, - 245, 246, 226, 227, 228, 241, 242, 243, 223, 224, - 225, 238, 239, 240, 202, 203, 204, 250, 251, 252, - 158, 156, 157, 155, 161, 159, 160, 162, 163, 176, - 164, 170, 171, 172, 173, 165, 166, 167, 168, 169, - 205, 206, 207, 262, 263, 264, 208, 209, 210, 274, - 275, 276, 211, 212, 213, 286, 287, 288, 214, 215, - 216, 298, 299, 300, 134, 133, 132, 0, 135, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 337, 338, 339, 340, - 341, 342, 344, 345, 346, 347, 348, 349, 351, 352, - 355, 356, 357, 359, 360, 322, 323, 343, 350, 361, - 363, 364, 365, 367, 368, 459, 324, 325, 326, 353, - 327, 331, 332, 335, 358, 362, 366, 328, 329, 333, - 334, 354, 330, 336, 369, 370, 371, 373, 375, 377, - 379, 381, 385, 386, 387, 388, 389, 390, 392, 393, - 394, 395, 396, 397, 399, 401, 402, 403, 405, 406, - 383, 391, 398, 407, 409, 410, 411, 413, 414, 372, - 374, 376, 400, 378, 380, 382, 384, 404, 408, 412, - 460, 461, 464, 465, 466, 467, 462, 463, 415, 417, - 418, 419, 421, 422, 423, 425, 426, 427, 429, 430, - 431, 433, 434, 435, 437, 438, 439, 441, 442, 443, - 445, 446, 447, 449, 450, 451, 453, 454, 455, 457, - 458, 416, 420, 424, 428, 432, 440, 444, 448, 436, - 452, 456, 0, 185, 469, 554, 131, 142, 470, 471, - 472, 0, 553, 0, 555, 0, 108, 107, 0, 119, - 124, 149, 148, 146, 150, 0, 143, 145, 151, 129, - 179, 147, 468, 0, 550, 552, 0, 0, 0, 475, - 0, 0, 96, 93, 0, 106, 0, 115, 109, 117, - 0, 118, 0, 94, 125, 0, 99, 144, 130, 0, - 180, 1, 551, 177, 0, 141, 139, 0, 137, 473, - 0, 0, 97, 0, 0, 556, 110, 114, 116, 112, - 120, 111, 0, 126, 102, 0, 100, 0, 2, 12, - 13, 10, 11, 4, 5, 6, 7, 8, 9, 15, - 14, 0, 0, 0, 181, 42, 41, 43, 40, 3, - 17, 36, 19, 24, 25, 0, 0, 29, 0, 44, - 0, 48, 51, 54, 59, 62, 64, 66, 68, 70, - 72, 74, 0, 35, 33, 0, 175, 0, 0, 136, - 0, 0, 0, 0, 0, 477, 95, 98, 0, 0, - 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 501, 510, 514, 44, 77, 90, 0, 490, 0, 151, - 129, 493, 512, 492, 491, 0, 494, 495, 516, 496, - 523, 497, 498, 531, 499, 0, 113, 0, 121, 0, - 485, 128, 0, 0, 104, 0, 101, 37, 38, 0, - 21, 22, 0, 0, 27, 26, 0, 185, 30, 32, - 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 157, 158, 195, 193, 196, 194, 197, 156, 208, + 198, 199, 206, 207, 204, 205, 202, 203, 200, 201, + 181, 224, 225, 226, 227, 228, 229, 242, 243, 244, + 239, 240, 241, 254, 255, 256, 236, 237, 238, 251, + 252, 253, 233, 234, 235, 248, 249, 250, 230, 231, + 232, 245, 246, 247, 209, 210, 211, 257, 258, 259, + 162, 160, 161, 159, 165, 163, 164, 166, 170, 183, + 168, 169, 167, 171, 177, 178, 179, 180, 172, 173, + 174, 175, 176, 212, 213, 214, 269, 270, 271, 215, + 216, 217, 281, 282, 283, 218, 219, 220, 293, 294, + 295, 221, 222, 223, 305, 306, 307, 134, 133, 132, + 0, 135, 136, 137, 138, 139, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 318, 317, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 345, 346, 347, 348, 349, 350, + 352, 353, 354, 355, 356, 357, 359, 360, 363, 364, + 365, 367, 368, 330, 331, 351, 358, 369, 371, 372, + 373, 375, 376, 467, 332, 333, 334, 361, 335, 339, + 340, 343, 366, 370, 374, 336, 337, 341, 342, 362, + 338, 344, 377, 378, 379, 381, 383, 385, 387, 389, + 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, + 404, 405, 407, 409, 410, 411, 413, 414, 391, 399, + 406, 415, 417, 418, 419, 421, 422, 380, 382, 384, + 408, 386, 388, 390, 392, 412, 416, 420, 468, 469, + 472, 473, 474, 475, 470, 471, 423, 425, 426, 427, + 429, 430, 431, 433, 434, 435, 437, 438, 439, 441, + 442, 443, 445, 446, 447, 449, 450, 451, 453, 454, + 455, 457, 458, 459, 461, 462, 463, 465, 466, 424, + 428, 432, 436, 440, 448, 452, 456, 444, 460, 464, + 0, 192, 477, 562, 131, 146, 478, 479, 480, 0, + 561, 0, 563, 0, 108, 107, 0, 119, 124, 153, + 152, 150, 154, 0, 147, 149, 155, 129, 186, 151, + 476, 0, 558, 560, 0, 0, 0, 483, 0, 0, + 96, 93, 0, 106, 0, 115, 109, 117, 0, 118, + 0, 94, 125, 0, 99, 148, 130, 0, 187, 1, + 559, 184, 0, 145, 143, 0, 141, 481, 0, 0, + 97, 0, 0, 564, 110, 114, 116, 112, 120, 111, + 0, 126, 102, 0, 100, 0, 2, 12, 13, 10, + 11, 4, 5, 6, 7, 8, 9, 15, 14, 0, + 0, 0, 188, 42, 41, 43, 40, 3, 17, 36, + 19, 24, 25, 0, 0, 29, 0, 44, 0, 48, + 51, 54, 59, 62, 64, 66, 68, 70, 72, 74, + 0, 35, 33, 0, 182, 0, 0, 140, 0, 0, + 0, 0, 0, 485, 95, 98, 0, 0, 543, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 509, 518, + 522, 44, 77, 90, 0, 498, 0, 155, 129, 501, + 520, 500, 499, 0, 502, 503, 524, 504, 531, 505, + 506, 539, 507, 0, 113, 0, 121, 0, 493, 128, + 0, 0, 104, 0, 101, 37, 38, 0, 21, 22, + 0, 0, 27, 26, 0, 192, 30, 32, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 75, 182, 183, 0, 178, 92, 140, 138, 0, 0, - 483, 0, 481, 476, 478, 546, 545, 0, 537, 0, - 549, 547, 0, 0, 0, 530, 533, 0, 500, 0, - 80, 81, 83, 82, 85, 86, 87, 88, 89, 84, - 79, 0, 0, 515, 511, 513, 517, 524, 532, 123, - 0, 488, 0, 127, 0, 105, 16, 0, 23, 20, - 31, 45, 46, 47, 50, 49, 52, 53, 57, 58, - 55, 56, 60, 61, 63, 65, 67, 69, 71, 73, - 0, 184, 474, 0, 484, 0, 479, 0, 0, 0, - 548, 0, 529, 0, 560, 0, 558, 502, 78, 91, - 122, 486, 0, 103, 18, 0, 480, 482, 0, 540, - 539, 542, 508, 525, 521, 0, 0, 0, 0, 0, - 0, 0, 487, 489, 0, 0, 541, 0, 0, 520, - 0, 0, 518, 0, 0, 0, 0, 557, 559, 503, - 76, 0, 543, 0, 508, 507, 509, 527, 0, 505, - 534, 504, 561, 0, 544, 538, 519, 528, 0, 522, - 536, 526 + 0, 0, 0, 0, 0, 0, 0, 0, 75, 189, + 190, 0, 185, 92, 144, 142, 0, 0, 491, 0, + 489, 484, 486, 554, 553, 0, 545, 0, 557, 555, + 0, 0, 0, 538, 541, 0, 508, 0, 80, 81, + 83, 82, 85, 86, 87, 88, 89, 84, 79, 0, + 0, 523, 519, 521, 525, 532, 540, 123, 0, 496, + 0, 127, 0, 105, 16, 0, 23, 20, 31, 45, + 46, 47, 50, 49, 52, 53, 57, 58, 55, 56, + 60, 61, 63, 65, 67, 69, 71, 73, 0, 191, + 482, 0, 492, 0, 487, 0, 0, 0, 556, 0, + 537, 0, 568, 0, 566, 510, 78, 91, 122, 494, + 0, 103, 18, 0, 488, 490, 0, 548, 547, 550, + 516, 533, 529, 0, 0, 0, 0, 0, 0, 0, + 495, 497, 0, 0, 549, 0, 0, 528, 0, 0, + 526, 0, 0, 0, 0, 565, 567, 511, 76, 0, + 551, 0, 516, 515, 517, 535, 0, 513, 542, 512, + 569, 0, 552, 546, 527, 536, 0, 530, 544, 534 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -641, -641, -641, -641, -641, -641, -641, -641, -641, -641, - -641, -641, -294, -641, -357, -356, -407, -360, -314, -282, - -313, -281, -284, -289, -641, -359, -641, -383, -641, -373, - -403, 1, -641, -641, -641, 2, -641, -641, -641, -103, - -98, -97, -641, -641, -606, -641, -641, -641, -641, -183, - -641, -323, -332, -641, 6, -641, 0, -338, -641, -59, - -641, -641, -641, -433, -438, -280, -361, -482, -641, -363, - -473, -640, -404, -641, -641, -415, -414, -641, -641, -82, - -550, -355, -641, -221, -641, -376, -641, -219, -641, -641, - -641, -641, -216, -641, -641, -641, -641, -641, -641, -641, - -641, -66, -641, -641, -641, -641, -380 + -645, -645, -645, -645, -645, -645, -645, -645, -645, -645, + -645, -645, -297, -645, -468, -373, -437, -374, -319, -312, + -316, -290, -293, -289, -645, -367, -645, -391, -645, -376, + -412, 1, -645, -645, -645, 2, -645, -645, -645, -112, + -107, -108, -645, -645, -613, -645, -645, -645, -645, -197, + -645, -332, -339, -645, 6, -645, 0, -345, -645, -67, + -645, -645, -645, -440, -444, -294, -369, -490, -645, -370, + -480, -644, -410, -645, -645, -422, -421, -645, -645, -90, + -561, -363, -645, -229, -645, -384, -645, -227, -645, -645, + -645, -645, -226, -645, -645, -645, -645, -645, -645, -645, + -645, -73, -645, -645, -645, -645, -389 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 419, 420, 421, 597, 422, 423, 424, 425, 426, - 427, 428, 473, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 474, 620, 475, 581, 476, - 546, 477, 323, 503, 397, 478, 325, 326, 327, 357, - 358, 359, 328, 329, 330, 331, 332, 333, 377, 378, - 334, 335, 336, 337, 443, 374, 444, 370, 340, 341, - 342, 451, 380, 454, 455, 551, 552, 501, 592, 481, - 482, 483, 484, 569, 661, 690, 669, 670, 671, 691, - 485, 486, 487, 488, 672, 657, 489, 490, 673, 698, - 491, 492, 493, 633, 557, 628, 651, 667, 668, 494, - 343, 344, 345, 354, 495, 635, 636 + -1, 427, 428, 429, 605, 430, 431, 432, 433, 434, + 435, 436, 481, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 482, 628, 483, 589, 484, + 554, 485, 331, 511, 405, 486, 333, 334, 335, 365, + 366, 367, 336, 337, 338, 339, 340, 341, 385, 386, + 342, 343, 344, 345, 451, 382, 452, 378, 348, 349, + 350, 459, 388, 462, 463, 559, 560, 509, 600, 489, + 490, 491, 492, 577, 669, 698, 677, 678, 679, 699, + 493, 494, 495, 496, 680, 665, 497, 498, 681, 706, + 499, 500, 501, 641, 565, 636, 659, 675, 676, 502, + 351, 352, 353, 362, 503, 643, 644 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1366,467 +1376,78 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 339, 322, 324, 367, 360, 460, 338, 461, 462, 500, - 442, 465, 585, 383, 375, 589, 554, 591, 548, 637, - 593, 351, 348, 539, 528, 529, 393, 655, 367, 510, - 511, 686, 391, 360, 369, 689, 532, 533, 369, 445, - 509, 392, 346, 689, 518, 655, 382, 457, -34, 369, - 512, 496, 498, 353, 513, 445, 497, 452, 540, 530, - 531, 349, 502, 347, 445, 362, 352, 446, 363, 355, - 594, 590, 449, 447, 394, 429, 515, 395, 450, 596, - 396, 652, 516, 356, 627, 582, 543, 582, 659, 545, - 369, 562, 660, 564, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 505, 364, 653, 506, 640, 693, - 554, 373, 582, 580, 500, 582, 500, 507, 508, 500, - 367, 608, 609, 610, 611, 379, 582, 625, 452, 583, - 626, 452, 582, 600, 389, 630, 520, 697, 625, 598, - 390, 646, 318, 319, 320, 521, 522, 523, 524, 384, - 525, 429, 445, 641, 429, 642, 554, 526, 527, 456, - 663, 582, 632, 504, 585, 582, 664, 604, 605, 448, - 606, 607, 612, 613, 514, 534, 519, 535, 537, 536, - 452, 538, 541, 544, 550, 558, 629, 555, 559, 563, - 631, 556, 560, 566, 565, 568, 567, -35, 638, 639, - -33, 595, 599, -28, 621, 634, 699, 500, 644, 648, - 582, 658, 624, 665, -506, 674, 675, 677, 682, 684, - 614, 679, 683, 616, 585, 452, 470, 601, 602, 603, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 687, 645, 688, 692, - 619, 700, 701, 615, 618, 676, 617, 387, 386, 500, - 654, 376, 350, 388, 647, 649, 685, 547, 695, 623, - 696, 452, 385, 650, 586, 666, 587, 372, 654, 588, - 678, 680, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 681, 0, 0, 0, 0, 0, 0, 545, - 0, 0, 0, 0, 0, 500, 0, 0, 468, 694, - 656, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 367, 0, 0, 361, 656, 0, - 0, 0, 0, 338, 0, 368, 0, 0, 0, 0, - 0, 338, 0, 339, 322, 324, 0, 0, 0, 338, - 381, 0, 0, 0, 0, 0, 361, 0, 0, 0, - 361, 0, 338, 0, 429, 0, 338, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 453, 0, 0, 0, 480, 0, 338, 0, 0, 0, - 479, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 330, 332, 368, 375, 468, 346, 469, 470, 508, + 450, 473, 383, 593, 391, 597, 645, 599, 562, 556, + 601, 359, 356, 536, 537, 547, 361, 401, 663, 375, + 518, 519, 368, 377, 399, 694, 377, 363, 667, 697, + 453, 390, 668, 400, 526, 517, 663, 697, 465, -34, + 377, 520, 504, 506, 354, 521, 460, 505, 538, 539, + 548, 357, 453, 453, 612, 613, 360, 454, 457, 510, + 598, 602, 402, 455, 458, 403, 523, 604, 404, 364, + 437, 660, 524, 590, 661, 635, 551, 590, 701, 553, + 590, 532, 370, 533, 590, 371, 570, 372, 572, 616, + 617, 618, 619, 513, 590, 355, 514, 591, 648, 649, + 633, 650, 562, 634, 508, 590, 508, 633, 638, 508, + 654, 375, 515, 516, 326, 327, 328, 460, 534, 535, + 460, 540, 541, 608, 705, 529, 530, 531, 590, 640, + 377, 528, 590, 672, 606, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 381, 437, 387, 562, 437, + 671, 614, 615, 392, 588, 593, 620, 621, 397, 398, + 453, 456, 512, 464, 522, 527, 542, 543, 544, 460, + 545, 546, 549, 552, 558, 566, 563, 564, 567, 571, + 568, 637, 573, 575, 574, 639, -35, -33, 646, 647, + 576, 603, 607, -28, 629, 642, 707, 508, 652, 656, + 666, 673, 682, 632, 683, 590, -514, 685, 691, 690, + 687, 692, 700, 622, 460, 593, 478, 695, 624, 696, + 709, 623, 609, 610, 611, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, + 437, 708, 653, 626, 684, 625, 395, 394, 627, 508, + 396, 555, 358, 631, 655, 662, 657, 384, 693, 703, + 460, 704, 393, 658, 594, 674, 595, 596, 380, 686, + 0, 688, 0, 662, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 689, 0, 553, + 0, 0, 0, 0, 0, 508, 0, 0, 0, 664, + 0, 0, 0, 0, 702, 0, 476, 0, 0, 0, + 0, 0, 0, 0, 0, 375, 0, 664, 0, 0, + 0, 0, 0, 0, 0, 369, 0, 0, 0, 0, + 0, 346, 0, 376, 0, 0, 0, 0, 0, 346, + 0, 347, 330, 332, 0, 0, 0, 346, 389, 0, + 0, 0, 0, 0, 369, 0, 0, 0, 369, 437, + 346, 0, 0, 0, 346, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 461, 0, + 0, 0, 488, 0, 346, 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 453, 549, 0, 453, 0, 0, 338, 338, 0, - 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 461, + 557, 0, 461, 0, 0, 346, 346, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, - 0, 479, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 453, 0, 0, 0, 0, 0, 338, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 488, 0, 0, 0, 0, 0, 487, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 461, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 453, 0, - 0, 0, 0, 0, 338, 0, 0, 480, 0, 0, - 0, 0, 0, 479, 0, 0, 0, 0, 0, 480, - 0, 0, 0, 0, 0, 479, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 461, 0, 0, 0, + 0, 0, 346, 0, 0, 488, 0, 0, 0, 0, + 0, 487, 0, 0, 0, 0, 0, 488, 0, 0, + 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 453, 0, 0, 0, 0, 0, - 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, - 0, 0, 0, 480, 479, 0, 0, 480, 0, 479, - 0, 0, 0, 479, 0, 0, 0, 0, 0, 0, - 0, 480, 0, 0, 0, 0, 368, 479, 0, 0, - 0, 0, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 480, 0, 0, 0, 480, 0, 479, 0, 0, - 0, 479, 0, 480, 0, 0, 0, 480, 0, 479, - 0, 0, 0, 479, 0, 0, 0, 480, 0, 0, - 0, 371, 0, 479, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 0, 0, - 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 461, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 321, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 458, 459, 460, 0, 461, 462, 463, - 464, 465, 466, 467, 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, 468, 398, - 314, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 0, 0, 411, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 413, 0, 469, 0, 470, 471, - 0, 0, 0, 0, 472, 415, 416, 417, 418, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 321, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 458, 459, 460, 0, 461, 462, 463, - 464, 465, 466, 467, 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, 468, 398, - 314, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 0, 0, 411, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 413, 0, 469, 0, 470, 584, - 0, 0, 0, 0, 472, 415, 416, 417, 418, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 321, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 458, 459, 460, 0, 461, 462, 463, - 464, 465, 466, 467, 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, 468, 398, - 314, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 0, 0, 411, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 413, 0, 469, 0, 470, 0, - 0, 0, 0, 0, 472, 415, 416, 417, 418, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 321, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 458, 459, 460, 0, 461, 462, 463, - 464, 465, 466, 467, 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, 468, 398, - 314, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 0, 0, 411, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 413, 0, 469, 0, 384, 0, - 0, 0, 0, 0, 472, 415, 416, 417, 418, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 321, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 458, 459, 460, 0, 461, 462, 463, - 464, 465, 466, 467, 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, 468, 398, - 314, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 0, 0, 411, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 413, 0, 469, 0, 0, 0, - 0, 0, 0, 0, 472, 415, 416, 417, 418, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 321, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 0, 398, - 314, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 0, 0, 411, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 472, 415, 416, 417, 418, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 321, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 0, 0, - 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 321, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 0, 398, - 314, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 0, 0, 411, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 415, 416, 417, 418, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 365, 314, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 366, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 316, 317, 318, - 319, 320, 1, 2, 3, 4, 5, 6, 7, 8, + 0, 0, 0, 0, 0, 0, 488, 0, 0, 0, + 0, 488, 487, 0, 0, 488, 0, 487, 0, 0, + 0, 487, 0, 0, 0, 0, 0, 0, 0, 488, + 0, 0, 0, 0, 376, 487, 0, 0, 0, 0, + 346, 0, 0, 0, 0, 0, 0, 0, 0, 488, + 0, 0, 0, 488, 0, 487, 0, 0, 0, 487, + 0, 488, 0, 0, 0, 488, 0, 487, 0, 0, + 0, 487, 0, 0, 0, 488, 0, 0, 0, 379, + 0, 487, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 27, @@ -1858,52 +1479,213 @@ static const yytype_int16 yytable[] = 278, 279, 280, 281, 282, 283, 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, 0, 0, 314, 0, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 320, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 323, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 324, 325, 326, 327, 328, 329, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 466, + 467, 468, 0, 469, 470, 471, 472, 473, 474, 475, + 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, 476, 406, 322, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 0, 0, 419, + 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, + 477, 0, 478, 479, 0, 0, 0, 0, 480, 423, + 424, 425, 426, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 324, 325, 326, 327, 328, 329, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 466, 467, 468, + 0, 469, 470, 471, 472, 473, 474, 475, 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, + 476, 406, 322, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 0, 0, 419, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 0, 314, 0, 0, + 0, 0, 0, 0, 0, 0, 421, 0, 477, 0, + 478, 592, 0, 0, 0, 0, 480, 423, 424, 425, + 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 324, 325, 326, 327, 328, 329, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 466, 467, 468, 0, 469, + 470, 471, 472, 473, 474, 475, 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, 476, 406, + 322, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 0, 0, 419, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 421, 0, 477, 0, 478, 0, + 0, 0, 0, 0, 480, 423, 424, 425, 426, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 324, 325, + 326, 327, 328, 329, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 466, 467, 468, 0, 469, 470, 471, + 472, 473, 474, 475, 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, 476, 406, 322, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 0, 0, 419, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 421, 0, 477, 0, 392, 0, 0, 0, + 0, 0, 480, 423, 424, 425, 426, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 324, 325, 326, 327, + 328, 329, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 466, 467, 468, 0, 469, 470, 471, 472, 473, + 474, 475, 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, 476, 406, 322, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 0, + 0, 419, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 622, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 316, 317, 318, 319, 320, + 421, 0, 477, 0, 0, 0, 0, 0, 0, 0, + 480, 423, 424, 425, 426, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 324, 325, 326, 327, 328, 329, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1936,322 +1718,26 @@ static const yytype_int16 yytable[] = 280, 281, 282, 283, 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, 0, 0, 314, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 643, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 316, 317, 318, 319, 320, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 0, 0, 314, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, - 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 0, 0, 316, 317, 318, 319, 320, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 0, 0, 0, 0, 0, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 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, 0, 398, 314, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 0, 0, 411, 412, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 413, 0, 0, - 0, 499, 662, 0, 0, 0, 0, 0, 415, 416, - 417, 418, 3, 4, 5, 6, 7, 0, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 0, 0, 0, 0, 0, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 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, 0, 398, 314, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 0, - 0, 411, 412, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 413, 0, 0, 414, 0, 0, 0, 0, 0, 0, - 0, 415, 416, 417, 418, 3, 4, 5, 6, 7, - 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 0, 0, 0, - 0, 0, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 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, 0, 398, 314, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 0, 0, 411, 412, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 413, 0, 0, 0, 499, 0, 0, - 0, 0, 0, 0, 415, 416, 417, 418, 3, 4, - 5, 6, 7, 0, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 0, 0, 0, 0, 0, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 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, - 0, 398, 314, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 0, 0, 411, 412, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 413, 0, 0, 542, - 0, 0, 0, 0, 0, 0, 0, 415, 416, 417, - 418, 3, 4, 5, 6, 7, 0, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 0, 0, 0, 0, 0, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 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, 0, 398, 314, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 0, 0, - 411, 412, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 413, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 561, - 415, 416, 417, 418, 3, 4, 5, 6, 7, 0, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 0, 0, 0, 0, - 0, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 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, 0, 398, 314, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 0, 0, 411, 412, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 413, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 415, 416, 417, 418, 3, 4, 5, - 6, 7, 0, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 0, - 0, 0, 0, 0, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 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, 517, 0, - 398, 314, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 0, 0, 411, 412, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 415, 416, 417, 418, - 3, 4, 5, 6, 7, 0, 9, 10, 11, 12, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 0, 406, 322, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 0, 0, 419, + 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 480, 423, + 424, 425, 426, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 324, 325, 326, 327, 328, 329, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, + 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, 0, 0, 0, 0, 0, 109, 110, 111, + 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, @@ -2272,436 +1758,98 @@ static const yytype_int16 yytable[] = 282, 283, 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, 0, 0, 314 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 0, 0, 335, 327, 24, 0, 26, 27, 392, - 369, 30, 485, 351, 81, 497, 454, 499, 451, 569, - 502, 328, 328, 351, 346, 347, 364, 633, 360, 344, - 345, 671, 363, 356, 365, 675, 348, 349, 365, 365, - 413, 372, 363, 683, 427, 651, 373, 373, 363, 365, - 365, 389, 390, 373, 369, 365, 372, 380, 386, 381, - 382, 367, 372, 363, 365, 370, 373, 364, 373, 364, - 503, 372, 364, 370, 367, 369, 364, 370, 370, 364, - 373, 364, 370, 370, 557, 370, 445, 370, 366, 448, - 365, 464, 370, 466, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 370, 328, 364, 373, 590, 364, - 548, 328, 370, 372, 497, 370, 499, 411, 412, 502, - 452, 528, 529, 530, 531, 367, 370, 370, 451, 373, - 373, 454, 370, 516, 328, 373, 430, 687, 370, 512, - 328, 373, 389, 390, 391, 378, 379, 380, 375, 367, - 377, 445, 365, 368, 448, 370, 594, 342, 343, 373, - 642, 370, 371, 328, 637, 370, 371, 524, 525, 372, - 526, 527, 532, 533, 364, 385, 363, 384, 350, 383, - 503, 352, 366, 328, 328, 363, 559, 373, 363, 363, - 563, 373, 373, 363, 371, 368, 365, 363, 581, 582, - 363, 328, 328, 364, 366, 328, 688, 590, 366, 327, - 370, 363, 550, 363, 367, 328, 364, 366, 373, 25, - 534, 368, 364, 536, 697, 548, 367, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 367, 620, 372, 364, - 539, 373, 368, 535, 538, 658, 537, 360, 356, 642, - 633, 328, 321, 360, 625, 628, 670, 450, 683, 549, - 684, 594, 354, 628, 495, 651, 495, 343, 651, 495, - 660, 664, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 665, -1, -1, -1, -1, -1, -1, 658, - -1, -1, -1, -1, -1, 688, -1, -1, 327, 682, - 633, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 656, -1, -1, 327, 651, -1, - -1, -1, -1, 327, -1, 335, -1, -1, -1, -1, - -1, 335, -1, 343, 343, 343, -1, -1, -1, 343, - 350, -1, -1, -1, -1, -1, 356, -1, -1, -1, - 360, -1, 356, -1, 658, -1, 360, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 380, -1, -1, -1, 384, -1, 380, -1, -1, -1, - 384, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 451, 452, -1, 454, -1, -1, 451, 452, -1, - 454, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 485, -1, -1, -1, -1, - -1, 485, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 503, -1, -1, -1, -1, -1, 503, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 548, -1, - -1, -1, -1, -1, 548, -1, -1, 557, -1, -1, - -1, -1, -1, 557, -1, -1, -1, -1, -1, 569, - -1, -1, -1, -1, -1, 569, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 594, -1, -1, -1, -1, -1, - 594, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 628, -1, - -1, -1, -1, 633, 628, -1, -1, 637, -1, 633, - -1, -1, -1, 637, -1, -1, -1, -1, -1, -1, - -1, 651, -1, -1, -1, -1, 656, 651, -1, -1, - -1, -1, 656, -1, -1, -1, -1, -1, -1, -1, - -1, 671, -1, -1, -1, 675, -1, 671, -1, -1, - -1, 675, -1, 683, -1, -1, -1, 687, -1, 683, - -1, -1, -1, 687, -1, -1, -1, 697, -1, -1, - -1, 0, -1, 697, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, - 329, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 392, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, -1, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, -1, 365, -1, 367, 368, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 392, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, -1, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, -1, 365, -1, 367, 368, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 392, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, -1, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, -1, 365, -1, 367, -1, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 392, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, -1, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, -1, 365, -1, 367, -1, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 392, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, -1, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, -1, 365, -1, -1, -1, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 392, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 392, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, - 329, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 392, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 374, 375, 376, 377, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 387, 388, - 389, 390, 391, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 323, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 324, 325, 326, 327, 328, 329, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 0, 406, + 322, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 0, 0, 419, 420, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 421, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 423, 424, 425, 426, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 324, 325, + 326, 327, 328, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 0, 373, 322, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 374, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 324, 325, 326, 327, 328, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, @@ -2730,14 +1878,505 @@ static const yytype_int16 yycheck[] = 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, 328, 329, + 320, 321, 0, 0, 322, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 561, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 324, 325, 326, 327, 328, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, + 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, + 325, 326, 327, 328, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 0, 0, 322, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 651, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 324, 325, 326, 327, + 328, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 0, 0, 322, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, + 0, 0, 0, 324, 325, 326, 327, 328, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 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, 0, + 406, 322, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 0, 0, 419, 420, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 421, 0, 0, 0, 507, + 670, 0, 0, 0, 0, 0, 423, 424, 425, 426, + 3, 4, 5, 6, 7, 0, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 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, + 0, 406, 322, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 0, 0, 419, 420, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 421, 0, 0, 422, + 0, 0, 0, 0, 0, 0, 0, 423, 424, 425, + 426, 3, 4, 5, 6, 7, 0, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 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, 0, 406, 322, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 0, 0, 419, 420, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 421, 0, 0, + 0, 507, 0, 0, 0, 0, 0, 0, 423, 424, + 425, 426, 3, 4, 5, 6, 7, 0, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 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, 0, 406, 322, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 0, 0, 419, + 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, + 0, 550, 0, 0, 0, 0, 0, 0, 0, 423, + 424, 425, 426, 3, 4, 5, 6, 7, 0, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 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, 0, 406, 322, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 0, 0, + 419, 420, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 421, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 569, + 423, 424, 425, 426, 3, 4, 5, 6, 7, 0, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 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, 0, 406, 322, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 0, + 0, 419, 420, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 423, 424, 425, 426, 3, 4, 5, 6, 7, + 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 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, 525, 0, 406, 322, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 0, 0, 419, 420, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 423, 424, 425, 426, 3, 4, 5, 6, + 7, 0, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 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, 0, 0, 322 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 0, 0, 335, 343, 24, 0, 26, 27, 400, + 377, 30, 81, 493, 359, 505, 577, 507, 462, 459, + 510, 336, 336, 354, 355, 359, 381, 372, 641, 368, + 352, 353, 364, 373, 371, 679, 373, 372, 374, 683, + 373, 381, 378, 380, 435, 421, 659, 691, 381, 371, + 373, 373, 397, 398, 371, 377, 388, 380, 389, 390, + 394, 375, 373, 373, 532, 533, 381, 372, 372, 380, + 380, 511, 375, 378, 378, 378, 372, 372, 381, 378, + 377, 372, 378, 378, 372, 565, 453, 378, 372, 456, + 378, 383, 378, 385, 378, 381, 472, 336, 474, 536, + 537, 538, 539, 378, 378, 371, 381, 381, 598, 376, + 378, 378, 556, 381, 505, 378, 507, 378, 381, 510, + 381, 460, 419, 420, 397, 398, 399, 459, 350, 351, + 462, 356, 357, 524, 695, 386, 387, 388, 378, 379, + 373, 438, 378, 379, 520, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 336, 453, 375, 602, 456, + 650, 534, 535, 375, 380, 645, 540, 541, 336, 336, + 373, 380, 336, 381, 372, 371, 393, 392, 391, 511, + 358, 360, 374, 336, 336, 371, 381, 381, 371, 371, + 381, 567, 379, 373, 371, 571, 371, 371, 589, 590, + 376, 336, 336, 372, 374, 336, 696, 598, 374, 335, + 371, 371, 336, 558, 372, 378, 375, 374, 372, 381, + 376, 25, 372, 542, 556, 705, 375, 375, 544, 380, + 376, 543, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 381, 628, 546, 666, 545, 368, 364, 547, 650, + 368, 458, 329, 557, 633, 641, 636, 336, 678, 691, + 602, 692, 362, 636, 503, 659, 503, 503, 351, 668, + -1, 672, -1, 659, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 673, -1, 666, + -1, -1, -1, -1, -1, 696, -1, -1, -1, 641, + -1, -1, -1, -1, 690, -1, 335, -1, -1, -1, + -1, -1, -1, -1, -1, 664, -1, 659, -1, -1, + -1, -1, -1, -1, -1, 335, -1, -1, -1, -1, + -1, 335, -1, 343, -1, -1, -1, -1, -1, 343, + -1, 351, 351, 351, -1, -1, -1, 351, 358, -1, + -1, -1, -1, -1, 364, -1, -1, -1, 368, 666, + 364, -1, -1, -1, 368, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 388, -1, + -1, -1, 392, -1, 388, -1, -1, -1, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 387, 388, 389, - 390, 391, 3, 4, 5, 6, 7, 8, 9, 10, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 459, + 460, -1, 462, -1, -1, 459, 460, -1, 462, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 493, -1, -1, -1, -1, -1, 493, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 511, -1, -1, -1, -1, -1, 511, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 556, -1, -1, -1, + -1, -1, 556, -1, -1, 565, -1, -1, -1, -1, + -1, 565, -1, -1, -1, -1, -1, 577, -1, -1, + -1, -1, -1, 577, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 602, -1, -1, -1, -1, -1, 602, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 636, -1, -1, -1, + -1, 641, 636, -1, -1, 645, -1, 641, -1, -1, + -1, 645, -1, -1, -1, -1, -1, -1, -1, 659, + -1, -1, -1, -1, 664, 659, -1, -1, -1, -1, + 664, -1, -1, -1, -1, -1, -1, -1, -1, 679, + -1, -1, -1, 683, -1, 679, -1, -1, -1, 683, + -1, 691, -1, -1, -1, 695, -1, 691, -1, -1, + -1, 695, -1, -1, -1, 705, -1, -1, -1, 0, + -1, 705, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, @@ -2769,52 +2408,213 @@ static const yytype_int16 yycheck[] = 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, -1, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, -1, -1, 337, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 387, 388, 389, 390, - 391, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, 400, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, -1, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, -1, 352, + 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 371, -1, + 373, -1, 375, 376, -1, -1, -1, -1, 381, 382, + 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 395, 396, 397, 398, 399, 400, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, -1, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, -1, 329, -1, -1, + -1, -1, -1, -1, -1, -1, 371, -1, 373, -1, + 375, 376, -1, -1, -1, -1, 381, 382, 383, 384, + 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 395, 396, 397, 398, 399, 400, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, -1, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, -1, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 371, -1, 373, -1, 375, -1, + -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, + 397, 398, 399, 400, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, -1, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, -1, -1, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 371, -1, 373, -1, 375, -1, -1, -1, + -1, -1, 381, 382, 383, 384, 385, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, + 399, 400, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, -1, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, + -1, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 368, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 387, 388, 389, 390, 391, + 371, -1, 373, -1, -1, -1, -1, -1, -1, -1, + 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, 400, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2847,322 +2647,26 @@ static const yytype_int16 yycheck[] = 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, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 368, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 387, 388, 389, 390, 391, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, -1, 329, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, - 6, 7, 8, 9, -1, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, - -1, -1, -1, 387, 388, 389, 390, 391, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, -1, -1, -1, -1, -1, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 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, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, -1, -1, 344, 345, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 363, -1, -1, - -1, 367, 368, -1, -1, -1, -1, -1, 374, 375, - 376, 377, 5, 6, 7, 8, 9, -1, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, -1, -1, -1, -1, -1, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 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, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 363, -1, -1, 366, -1, -1, -1, -1, -1, -1, - -1, 374, 375, 376, 377, 5, 6, 7, 8, 9, - -1, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, -1, -1, -1, - -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 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, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 363, -1, -1, -1, 367, -1, -1, - -1, -1, -1, -1, 374, 375, 376, 377, 5, 6, - 7, 8, 9, -1, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - -1, -1, -1, -1, -1, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 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, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, -1, -1, 344, 345, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, -1, -1, 366, - -1, -1, -1, -1, -1, -1, -1, 374, 375, 376, - 377, 5, 6, 7, 8, 9, -1, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, -1, -1, -1, -1, -1, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 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, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 363, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, - 374, 375, 376, 377, 5, 6, 7, 8, 9, -1, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, -1, -1, -1, -1, - -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 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, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 363, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 374, 375, 376, 377, 5, 6, 7, - 8, 9, -1, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, -1, - -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 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, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, -1, -1, 344, 345, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 363, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 374, 375, 376, 377, - 5, 6, 7, 8, 9, -1, 11, 12, 13, 14, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, -1, 352, + 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 371, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, + 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 395, 396, 397, 398, 399, 400, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, + -1, -1, -1, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + 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, -1, -1, -1, -1, -1, 122, 123, 124, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, @@ -3183,7 +2687,549 @@ static const yytype_int16 yycheck[] = 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 + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + -1, -1, 337, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 381, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 395, 396, 397, 398, 399, 400, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, -1, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, -1, -1, 352, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, + 397, 398, 399, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, -1, 336, 337, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 381, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, -1, -1, 337, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 376, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 395, 396, 397, 398, 399, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, + -1, 337, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, + 396, 397, 398, 399, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, -1, -1, 337, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, + 399, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, -1, -1, 337, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, + 6, 7, 8, 9, -1, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, -1, -1, -1, -1, + -1, -1, -1, 395, 396, 397, 398, 399, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, + 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, -1, -1, 352, 353, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 371, -1, -1, -1, 375, + 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, + 5, 6, 7, 8, 9, -1, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + -1, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, -1, -1, 352, 353, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 371, -1, -1, 374, + -1, -1, -1, -1, -1, -1, -1, 382, 383, 384, + 385, 5, 6, 7, 8, 9, -1, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, -1, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, -1, -1, 352, 353, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, + -1, 375, -1, -1, -1, -1, -1, -1, 382, 383, + 384, 385, 5, 6, 7, 8, 9, -1, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, -1, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, -1, -1, 352, + 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 371, -1, + -1, 374, -1, -1, -1, -1, -1, -1, -1, 382, + 383, 384, 385, 5, 6, 7, 8, 9, -1, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, -1, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, -1, -1, + 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 371, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, + 382, 383, 384, 385, 5, 6, 7, 8, 9, -1, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, -1, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, + -1, 352, 353, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 382, 383, 384, 385, 5, 6, 7, 8, 9, + -1, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, -1, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + -1, -1, 352, 353, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 382, 383, 384, 385, 5, 6, 7, 8, + 9, -1, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, -1, -1, 337 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -3221,108 +3267,108 @@ static const yytype_uint16 yystos[] = 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, 329, 373, 387, 388, 389, 390, - 391, 392, 427, 428, 431, 432, 433, 434, 438, 439, - 440, 441, 442, 443, 446, 447, 448, 449, 450, 452, - 454, 455, 456, 496, 497, 498, 363, 363, 328, 367, - 455, 328, 373, 373, 499, 364, 370, 435, 436, 437, - 447, 452, 370, 373, 328, 328, 373, 448, 452, 365, - 453, 0, 497, 328, 451, 81, 328, 444, 445, 367, - 458, 452, 373, 453, 367, 475, 436, 435, 437, 328, - 328, 363, 372, 453, 367, 370, 373, 430, 328, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 344, 345, 363, 366, 374, 375, 376, 377, 397, - 398, 399, 401, 402, 403, 404, 405, 406, 407, 408, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 337, 381, 395, 396, 397, 398, 399, 400, + 435, 436, 439, 440, 441, 442, 446, 447, 448, 449, + 450, 451, 454, 455, 456, 457, 458, 460, 462, 463, + 464, 504, 505, 506, 371, 371, 336, 375, 463, 336, + 381, 381, 507, 372, 378, 443, 444, 445, 455, 460, + 378, 381, 336, 336, 381, 456, 460, 373, 461, 0, + 505, 336, 459, 81, 336, 452, 453, 375, 466, 460, + 381, 461, 375, 483, 444, 443, 445, 336, 336, 371, + 380, 461, 375, 378, 381, 438, 336, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 352, + 353, 371, 374, 382, 383, 384, 385, 405, 406, 407, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 450, 452, 365, 364, 370, 372, 364, - 370, 457, 447, 452, 459, 460, 373, 373, 22, 23, - 24, 26, 27, 28, 29, 30, 31, 32, 327, 365, - 367, 368, 373, 408, 421, 423, 425, 427, 431, 450, - 452, 465, 466, 467, 468, 476, 477, 478, 479, 482, - 483, 486, 487, 488, 495, 500, 453, 372, 453, 367, - 423, 463, 372, 429, 328, 370, 373, 408, 408, 425, - 344, 345, 365, 369, 364, 364, 370, 326, 423, 363, - 408, 378, 379, 380, 375, 377, 342, 343, 346, 347, - 381, 382, 348, 349, 385, 384, 383, 350, 352, 351, - 386, 366, 366, 421, 328, 421, 426, 445, 459, 452, - 328, 461, 462, 368, 460, 373, 373, 490, 363, 363, - 373, 373, 425, 363, 425, 371, 363, 365, 368, 469, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 372, 424, 370, 373, 368, 466, 479, 483, 488, 463, - 372, 463, 464, 463, 459, 328, 364, 400, 425, 328, - 423, 408, 408, 408, 410, 410, 411, 411, 412, 412, - 412, 412, 413, 413, 414, 415, 416, 417, 418, 419, - 422, 366, 368, 461, 453, 370, 373, 466, 491, 425, - 373, 425, 371, 489, 328, 501, 502, 476, 423, 423, - 463, 368, 370, 368, 366, 425, 373, 462, 327, 465, - 477, 492, 364, 364, 425, 440, 447, 481, 363, 366, - 370, 470, 368, 463, 371, 363, 481, 493, 494, 472, - 473, 474, 480, 484, 328, 364, 426, 366, 502, 368, - 423, 425, 373, 364, 25, 468, 467, 367, 372, 467, - 471, 475, 364, 364, 425, 471, 472, 476, 485, 463, - 373, 368 + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 458, 460, 373, 372, 378, 380, 372, 378, 465, + 455, 460, 467, 468, 381, 381, 22, 23, 24, 26, + 27, 28, 29, 30, 31, 32, 335, 373, 375, 376, + 381, 416, 429, 431, 433, 435, 439, 458, 460, 473, + 474, 475, 476, 484, 485, 486, 487, 490, 491, 494, + 495, 496, 503, 508, 461, 380, 461, 375, 431, 471, + 380, 437, 336, 378, 381, 416, 416, 433, 352, 353, + 373, 377, 372, 372, 378, 334, 431, 371, 416, 386, + 387, 388, 383, 385, 350, 351, 354, 355, 389, 390, + 356, 357, 393, 392, 391, 358, 360, 359, 394, 374, + 374, 429, 336, 429, 434, 453, 467, 460, 336, 469, + 470, 376, 468, 381, 381, 498, 371, 371, 381, 381, + 433, 371, 433, 379, 371, 373, 376, 477, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 380, 432, + 378, 381, 376, 474, 487, 491, 496, 471, 380, 471, + 472, 471, 467, 336, 372, 408, 433, 336, 431, 416, + 416, 416, 418, 418, 419, 419, 420, 420, 420, 420, + 421, 421, 422, 423, 424, 425, 426, 427, 430, 374, + 376, 469, 461, 378, 381, 474, 499, 433, 381, 433, + 379, 497, 336, 509, 510, 484, 431, 431, 471, 376, + 378, 376, 374, 433, 381, 470, 335, 473, 485, 500, + 372, 372, 433, 448, 455, 489, 371, 374, 378, 478, + 376, 471, 379, 371, 489, 501, 502, 480, 481, 482, + 488, 492, 336, 372, 434, 374, 510, 376, 431, 433, + 381, 372, 25, 476, 475, 375, 380, 475, 479, 483, + 372, 372, 433, 479, 480, 484, 493, 471, 381, 376 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 396, 397, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 399, 399, 399, - 399, 399, 399, 400, 401, 402, 403, 403, 404, 404, - 405, 405, 406, 407, 407, 407, 408, 408, 408, 408, - 409, 409, 409, 409, 410, 410, 410, 410, 411, 411, - 411, 412, 412, 412, 413, 413, 413, 413, 413, 414, - 414, 414, 415, 415, 416, 416, 417, 417, 418, 418, - 419, 419, 420, 420, 421, 422, 421, 423, 423, 424, - 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, - 425, 425, 426, 427, 427, 427, 427, 427, 427, 427, - 427, 427, 429, 428, 430, 430, 431, 432, 432, 433, - 433, 434, 435, 435, 436, 436, 436, 436, 437, 438, - 438, 438, 438, 438, 439, 439, 439, 439, 439, 440, - 440, 441, 442, 442, 442, 442, 443, 444, 444, 445, - 445, 445, 446, 447, 447, 448, 448, 448, 448, 448, - 448, 448, 449, 449, 449, 449, 449, 449, 449, 449, - 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, - 449, 449, 449, 449, 449, 449, 450, 451, 451, 452, - 452, 453, 453, 453, 453, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, - 455, 455, 455, 457, 456, 458, 456, 459, 459, 460, - 460, 461, 461, 462, 462, 463, 463, 463, 464, 464, - 465, 466, 466, 467, 467, 467, 467, 467, 467, 467, - 468, 469, 470, 468, 471, 471, 473, 472, 474, 472, - 475, 475, 476, 476, 477, 477, 478, 478, 479, 480, - 480, 481, 481, 482, 482, 484, 483, 485, 485, 486, - 486, 487, 487, 489, 488, 490, 488, 491, 488, 492, - 492, 493, 493, 494, 494, 495, 495, 495, 495, 495, - 496, 496, 497, 497, 497, 499, 498, 500, 501, 501, - 502, 502 + 0, 404, 405, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 407, 407, 407, + 407, 407, 407, 408, 409, 410, 411, 411, 412, 412, + 413, 413, 414, 415, 415, 415, 416, 416, 416, 416, + 417, 417, 417, 417, 418, 418, 418, 418, 419, 419, + 419, 420, 420, 420, 421, 421, 421, 421, 421, 422, + 422, 422, 423, 423, 424, 424, 425, 425, 426, 426, + 427, 427, 428, 428, 429, 430, 429, 431, 431, 432, + 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, + 433, 433, 434, 435, 435, 435, 435, 435, 435, 435, + 435, 435, 437, 436, 438, 438, 439, 440, 440, 441, + 441, 442, 443, 443, 444, 444, 444, 444, 445, 446, + 446, 446, 446, 446, 447, 447, 447, 447, 447, 448, + 448, 449, 450, 450, 450, 450, 450, 450, 450, 450, + 451, 452, 452, 453, 453, 453, 454, 455, 455, 456, + 456, 456, 456, 456, 456, 456, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 458, 459, 459, 460, 460, 461, 461, + 461, 461, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 463, 463, + 463, 465, 464, 466, 464, 467, 467, 468, 468, 469, + 469, 470, 470, 471, 471, 471, 472, 472, 473, 474, + 474, 475, 475, 475, 475, 475, 475, 475, 476, 477, + 478, 476, 479, 479, 481, 480, 482, 480, 483, 483, + 484, 484, 485, 485, 486, 486, 487, 488, 488, 489, + 489, 490, 490, 492, 491, 493, 493, 494, 494, 495, + 495, 497, 496, 498, 496, 499, 496, 500, 500, 501, + 501, 502, 502, 503, 503, 503, 503, 503, 504, 504, + 505, 505, 505, 507, 506, 508, 509, 509, 510, 510 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -3341,12 +3387,13 @@ static const yytype_uint8 yyr2[] = 3, 4, 0, 6, 2, 3, 2, 1, 1, 2, 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, - 2, 1, 1, 1, 1, 1, 4, 1, 3, 1, - 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 2, 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, 4, 1, 1, 3, 1, - 2, 2, 3, 3, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 1, 1, 3, 1, 2, 2, 3, + 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -3375,16 +3422,15 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 6, 0, 5, 1, 2, 3, - 4, 1, 3, 1, 2, 1, 3, 4, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 0, 0, 5, 1, 1, 0, 2, 0, 2, - 2, 3, 1, 2, 1, 2, 1, 2, 5, 3, - 1, 1, 4, 1, 2, 0, 8, 0, 1, 3, - 2, 1, 2, 0, 6, 0, 8, 0, 7, 1, - 1, 1, 0, 2, 3, 2, 2, 2, 3, 2, - 1, 2, 1, 1, 1, 0, 3, 5, 1, 3, - 1, 4 + 1, 0, 6, 0, 5, 1, 2, 3, 4, 1, + 3, 1, 2, 1, 3, 4, 1, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 0, 5, 1, 1, 0, 2, 0, 2, 2, 3, + 1, 2, 1, 2, 1, 2, 5, 3, 1, 1, + 4, 1, 2, 0, 8, 0, 1, 3, 2, 1, + 2, 0, 6, 0, 8, 0, 7, 1, 1, 1, + 0, 2, 3, 2, 2, 2, 3, 2, 1, 2, + 1, 1, 1, 0, 3, 5, 1, 3, 1, 4 }; @@ -4067,250 +4113,250 @@ yyreduce: switch (yyn) { case 2: -#line 293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 294 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 4075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: -#line 299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: -#line 302 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: -#line 306 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 307 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: -#line 310 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: -#line 313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: -#line 317 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 4127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: -#line 321 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 4136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: -#line 325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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 4145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 11: -#line 329 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 12: -#line 333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 4162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: -#line 336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 4171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 14: -#line 340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: -#line 344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: -#line 347 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: -#line 355 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: -#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 4214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: -#line 361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 362 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: -#line 364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 4230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: -#line 367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: -#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: -#line 380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 24: -#line 387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: -#line 394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: -#line 400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 27: -#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 405 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 28: -#line 411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 4302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 29: -#line 414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 30: -#line 420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 421 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4318,11 +4364,11 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 4322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 31: -#line 427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 428 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4330,29 +4376,29 @@ 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 4334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 32: -#line 437 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 4342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 33: -#line 445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 34: -#line 450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -4380,50 +4426,50 @@ yyreduce: (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull); } } -#line 4384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 35: -#line 477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 478 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 36: -#line 485 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 4405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 37: -#line 491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 38: -#line 495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 39: -#line 499 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -4440,179 +4486,179 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 4444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 40: -#line 519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 41: -#line 520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 42: -#line 521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 43: -#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 4469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 44: -#line 528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 45: -#line 529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 46: -#line 534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 47: -#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 48: -#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 49: -#line 549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 50: -#line 554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 555 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 51: -#line 562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 52: -#line 563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 53: -#line 569 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 54: -#line 578 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 55: -#line 579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 56: -#line 584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 57: -#line 589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 58: -#line 594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 59: -#line 602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 60: -#line 603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -4621,11 +4667,11 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 61: -#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -4634,124 +4680,124 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4684 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 62: -#line 622 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 63: -#line 623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 64: -#line 632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 65: -#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 66: -#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 67: -#line 643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 68: -#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 69: -#line 653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 70: -#line 661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: -#line 662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4767 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 72: -#line 670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4773 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 73: -#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 74: -#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 75: -#line 680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 681 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 76: -#line 683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 684 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -4764,17 +4810,17 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 77: -#line 698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 78: -#line 699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -4788,119 +4834,119 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 4792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 79: -#line 715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 4801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 80: -#line 719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 4810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 81: -#line 723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 724 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 4819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 82: -#line 727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 4829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 83: -#line 732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 4838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 84: -#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 85: -#line 740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 86: -#line 744 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 4865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 87: -#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 749 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 4874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 88: -#line 752 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 4883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 89: -#line 756 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 757 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 4892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 90: -#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 764 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 91: -#line 766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -4909,40 +4955,40 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 92: -#line 777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 93: -#line 784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 4932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 94: -#line 789 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 4942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 95: -#line 794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 795 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); @@ -4951,75 +4997,75 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 96: -#line 802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 97: -#line 806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 98: -#line 810 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 811 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 99: -#line 814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 100: -#line 819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 820 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 101: -#line 824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 825 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 102: -#line 833 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 5019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 103: -#line 833 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.structNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -5029,54 +5075,54 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 5033 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 104: -#line 844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 845 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 105: -#line 848 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 106: -#line 855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 856 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 107: -#line 862 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 863 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 108: -#line 865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 109: -#line 872 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -5085,11 +5131,11 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 5089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 110: -#line 880 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Only first parameter of one-parameter functions can be void @@ -5107,11 +5153,11 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 111: -#line 900 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 901 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -5131,11 +5177,11 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 5135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 112: -#line 923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -5151,11 +5197,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 5155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 113: -#line 938 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -5175,11 +5221,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 5179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 114: -#line 963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5191,11 +5237,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 115: -#line 974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -5203,11 +5249,11 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 116: -#line 984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 985 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5218,11 +5264,11 @@ yyreduce: parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 117: -#line 994 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -5230,118 +5276,118 @@ 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 5234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 118: -#line 1004 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1005 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 5245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 119: -#line 1013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1014 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 120: -#line 1016 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1017 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 5262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 121: -#line 1020 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1021 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 5271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 122: -#line 1024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1025 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 123: -#line 1029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1030 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 124: -#line 1037 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 5301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 125: -#line 1042 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 5311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 126: -#line 1047 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 5321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 127: -#line 1052 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1053 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5377 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 128: -#line 1057 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 129: -#line 1066 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1067 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -5353,11 +5399,11 @@ yyreduce: parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 5357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 130: -#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1078 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -5382,22 +5428,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 5386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 131: -#line 1104 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1105 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 5397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 132: -#line 1113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1114 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -5405,11 +5451,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 5409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: -#line 1120 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1121 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -5417,11 +5463,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 5421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 134: -#line 1127 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1128 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); #ifdef NV_EXTENSIONS @@ -5433,11 +5479,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 5437 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 135: -#line 1138 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); @@ -5447,84 +5493,138 @@ yyreduce: (yyval.interm.type).qualifier.explicitInterp = true; #endif } -#line 5451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5497 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 136: -#line 1150 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1148 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.type) = (yyvsp[-1].interm.type); +#ifdef NV_EXTENSIONS + parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.pervertexNV = true; +#endif } -#line 5459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 137: -#line 1156 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1158 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.type) = (yyvsp[0].interm.type); +#ifdef NV_EXTENSIONS + parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NV_mesh_shader, "perprimitiveNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perPrimitiveNV = true; +#endif } -#line 5467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 138: -#line 1159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1166 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef NV_EXTENSIONS + parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NV_mesh_shader, "perviewNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perViewNV = true; +#endif + } +#line 5538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 139: +#line 1174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef NV_EXTENSIONS + parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NV_mesh_shader, "taskNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perTaskNV = true; +#endif + } +#line 5551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 140: +#line 1185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type) = (yyvsp[-1].interm.type); + } +#line 5559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 141: +#line 1191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 5567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 142: +#line 1194 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 5477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 139: -#line 1166 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 143: +#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 5486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 140: -#line 1170 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 144: +#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 5495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 141: -#line 1174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 145: +#line 1209 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 5505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 142: -#line 1182 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 146: +#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 5516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 143: -#line 1191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 147: +#line 1226 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5524 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 144: -#line 1194 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 148: +#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -5533,80 +5633,80 @@ 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 5537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 145: -#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 149: +#line 1240 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 146: -#line 1208 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 150: +#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 147: -#line 1211 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 151: +#line 1246 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 148: -#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 5571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 149: -#line 1219 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 5580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 150: -#line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 5589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 151: -#line 1227 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 5597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: -#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1250 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 5671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 153: +#line 1254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 5680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 154: +#line 1258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 5689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 155: +#line 1262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 5697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 156: +#line 1268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 5606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 153: -#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 157: +#line 1272 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -5619,11 +5719,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 154: -#line 1249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 158: +#line 1284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -5638,43 +5738,43 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 155: -#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 159: +#line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 5652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 156: -#line 1268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 160: +#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 157: -#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 161: +#line 1309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 5674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 158: -#line 1280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 162: +#line 1315 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -5682,239 +5782,288 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 5686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 159: -#line 1287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 163: +#line 1322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 5697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 160: -#line 1293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 164: +#line 1328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 5707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5807 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 161: -#line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 165: +#line 1333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 5717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 162: -#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 166: +#line 1338 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 5727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 163: -#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 167: +#line 1343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef NV_EXTENSIONS + parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNVX"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask + | EShLangAnyHitNVMask), "hitAttributeNVX"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NVX_raytracing, "hitAttributeNVX"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqHitAttrNV; +#endif + } +#line 5842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 168: +#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef NV_EXTENSIONS + parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNVX"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | + EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNVX"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NVX_raytracing, "rayPayloadNVX"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqPayloadNV; +#endif + } +#line 5857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 169: +#line 1363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef NV_EXTENSIONS + parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNVX"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitNVMask | + EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNVX"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_NVX_raytracing, "rayPayloadInNVX"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqPayloadInNV; +#endif + } +#line 5872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 170: +#line 1373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); +#ifdef NV_EXTENSIONS + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); +#else parseContext.requireStage((yyvsp[0].lex).loc, EShLangCompute, "shared"); +#endif (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 5740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 164: -#line 1316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 171: +#line 1385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 5749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 165: -#line 1320 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 172: +#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (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 5759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 166: -#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 173: +#line 1394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (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 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 167: -#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 174: +#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (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 5779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 168: -#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 175: +#line 1404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (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 5789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 169: -#line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 176: +#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (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 5799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5948 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 170: -#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 177: +#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 5808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 171: -#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 178: +#line 1418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 5817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 172: -#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 179: +#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 5826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 173: -#line 1357 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 180: +#line 1426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 5835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 174: -#line 1361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 181: +#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 5846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 175: -#line 1367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 182: +#line 1436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 5857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 176: -#line 1376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 183: +#line 1445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 5866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 177: -#line 1383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 184: +#line 1452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // TODO } -#line 5874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 178: -#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 185: +#line 1455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 5884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6033 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 179: -#line 1394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 186: +#line 1463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); } -#line 5893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 180: -#line 1398 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 187: +#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 5904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 181: -#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 188: +#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 5914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 182: -#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 189: +#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -5923,20 +6072,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); (yyval.interm).arraySizes->addInnerSize(size); } -#line 5927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 183: -#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 190: +#line 1489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 5936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 184: -#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 191: +#line 1493 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -5944,1484 +6093,1495 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); (yyval.interm).arraySizes->addInnerSize(size); } -#line 5948 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 185: -#line 1434 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 192: +#line 1503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 5957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 186: -#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 193: +#line 1507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 5966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 187: -#line 1442 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 194: +#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 5976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 188: -#line 1447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 195: +#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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 5986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 189: -#line 1452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 196: +#line 1521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 5996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 190: -#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 197: +#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 6006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 191: -#line 1462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 198: +#line 1531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 192: -#line 1466 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 199: +#line 1535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 193: -#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 200: +#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 194: -#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 201: +#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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 6045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 195: -#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 202: +#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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 6055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 196: -#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 203: +#line 1555 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { 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 6065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 197: -#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 204: +#line 1560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 198: -#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 205: +#line 1565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 199: -#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 206: +#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 6095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 200: -#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 207: +#line 1575 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 6105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 201: -#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - } -#line 6114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 202: -#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); - } -#line 6124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 203: -#line 1520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); - } -#line 6134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 204: -#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); - } -#line 6144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 205: -#line 1530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); - } -#line 6155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 206: -#line 1536 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); - } -#line 6166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 207: -#line 1542 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(4); - } -#line 6177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 208: -#line 1548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 209: -#line 1554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 210: -#line 1560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 211: -#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); - } -#line 6221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 212: -#line 1572 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); - } -#line 6232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 213: -#line 1578 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); - } -#line 6243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 214: -#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); - } #line 6254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 215: -#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 208: +#line 1580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + } +#line 6263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 209: +#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); + } +#line 6273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 210: +#line 1589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } +#line 6283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 211: +#line 1594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); + } +#line 6293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 212: +#line 1599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); + } +#line 6304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 213: +#line 1605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 6265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 216: -#line 1596 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 214: +#line 1611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 6276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 217: -#line 1602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(2); - } -#line 6286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 218: -#line 1607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(3); - } -#line 6296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 219: -#line 1612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(4); - } -#line 6306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 220: -#line 1617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); - } -#line 6316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 221: -#line 1622 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); - } #line 6326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 222: -#line 1627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 215: +#line 1617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + 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 = EbtInt; + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(2); + } +#line 6337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 216: +#line 1623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 217: +#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 218: +#line 1635 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); + } +#line 6370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 219: +#line 1641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } +#line 6381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 220: +#line 1647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); + } +#line 6392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 221: +#line 1653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); + } +#line 6403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 222: +#line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); + } +#line 6414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 223: -#line 1632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1665 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt8; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); } -#line 6347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 224: -#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - 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 6358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 225: -#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 226: -#line 1650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 6380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 227: -#line 1656 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 228: -#line 1662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 229: -#line 1668 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); - } -#line 6413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 230: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); - } -#line 6424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 231: -#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(4); - } #line 6435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 232: + case 225: +#line 1676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(3); + } +#line 6445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 226: +#line 1681 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(4); + } +#line 6455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 227: #line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 228: +#line 1691 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); + } +#line 6475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 229: +#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); + } +#line 6485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 230: +#line 1701 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 231: +#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 232: +#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: -#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtInt64; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(2); } -#line 6457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: -#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 235: +#line 1731 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 236: +#line 1737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } +#line 6562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 237: +#line 1743 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); + } +#line 6573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 238: +#line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); + } +#line 6584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 239: +#line 1755 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(2); + } +#line 6595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 240: +#line 1761 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(3); + } +#line 6606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 241: +#line 1767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 6468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 235: -#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(2); - } -#line 6479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 236: -#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(3); - } -#line 6490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 237: -#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(4); - } -#line 6501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 238: -#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 239: -#line 1728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 240: -#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 241: -#line 1740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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 6545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: -#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); } -#line 6556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 243: -#line 1752 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1779 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); } -#line 6567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 244: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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); + (yyval.interm.type).setVector(4); } -#line 6578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 245: -#line 1764 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(2); } -#line 6589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 246: -#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint; - (yyval.interm.type).setVector(4); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(3); } -#line 6600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: -#line 1776 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + 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 = EbtUint64; - (yyval.interm.type).setVector(2); - } -#line 6611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 248: -#line 1782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(3); - } -#line 6622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 249: -#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 6633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 250: -#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 6643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 251: -#line 1799 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 6653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 252: -#line 1804 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); - } -#line 6663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 253: -#line 1809 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 6673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 254: -#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); - } #line 6683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 255: -#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 248: +#line 1809 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + 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 = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(2); } -#line 6693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 249: +#line 1815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 250: +#line 1821 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + 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 6716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 251: +#line 1827 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); + } +#line 6727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 252: +#line 1833 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); + } +#line 6738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 253: +#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); + } +#line 6749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 254: +#line 1845 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(2); + } +#line 6760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 255: +#line 1851 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(3); + } +#line 6771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 256: -#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1857 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(4); } -#line 6703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 257: -#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 6713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 258: -#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1868 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).setMatrix(3, 3); } -#line 6723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 259: -#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).setMatrix(4, 4); } -#line 6733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 260: -#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 6743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 261: -#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).setMatrix(2, 3); } -#line 6753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 262: -#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); } -#line 6764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 263: -#line 1860 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); - } -#line 6775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 264: -#line 1866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); - } -#line 6786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 265: -#line 1872 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); - } -#line 6797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 266: -#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 3); - } -#line 6808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 267: -#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 4); - } -#line 6819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 268: -#line 1890 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 6830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 269: -#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); - } -#line 6841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 270: -#line 1902 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 4); - } #line 6852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 271: + case 264: +#line 1898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } +#line 6862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 265: +#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); + } +#line 6872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 266: #line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); + } +#line 6882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 267: +#line 1913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); + } +#line 6892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 268: +#line 1918 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } +#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 269: +#line 1923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).setMatrix(2, 2); } -#line 6863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 270: +#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } +#line 6924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 271: +#line 1935 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } +#line 6935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 272: -#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1941 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 6874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 273: -#line 1920 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1947 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); + } +#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 274: +#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); + } +#line 6968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 275: +#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); + } +#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 276: +#line 1965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } +#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 277: +#line 1971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); + } +#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 278: +#line 1977 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); + } +#line 7012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 279: +#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); + } +#line 7023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 280: +#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 6885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 274: -#line 1926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); - } -#line 6896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 275: -#line 1932 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); - } -#line 6907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 276: -#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 4); - } -#line 6918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 277: -#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); - } -#line 6929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 278: -#line 1950 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 3); - } -#line 6940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 279: -#line 1956 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 4); - } -#line 6951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 280: -#line 1962 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 2); - } -#line 6962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: -#line 1968 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 6973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 282: -#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2001 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).setMatrix(3, 3); } -#line 6984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 283: -#line 1980 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).setMatrix(4, 4); } -#line 6995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 284: -#line 1986 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 7006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 285: -#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 3); + } +#line 7089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 286: +#line 2025 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 4); + } +#line 7100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 287: +#line 2031 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 2); + } +#line 7111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 288: +#line 2037 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 289: +#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 4); + } +#line 7133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 290: +#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 2); + } +#line 7144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 291: +#line 2055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 3); + } +#line 7155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 292: +#line 2061 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 286: -#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 287: -#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 288: -#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 289: -#line 2016 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 290: -#line 2022 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); - } -#line 7072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 291: -#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); - } -#line 7083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 292: -#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); - } -#line 7094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 293: -#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2067 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 294: +#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 294: -#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 295: +#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 296: +#line 2085 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 297: +#line 2091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 3); + } +#line 7221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 298: +#line 2097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); + } +#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 299: +#line 2103 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); + } +#line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 300: +#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 301: +#line 2115 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 295: -#line 2052 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 302: +#line 2121 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 296: -#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 303: +#line 2127 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 297: -#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 304: +#line 2133 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 298: -#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 305: +#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 299: -#line 2076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 306: +#line 2145 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 300: -#line 2082 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 307: +#line 2151 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 301: -#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 308: +#line 2157 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 302: -#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 309: +#line 2163 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 303: -#line 2100 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 310: +#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 304: -#line 2106 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 311: +#line 2175 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 305: -#line 2112 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 312: +#line 2181 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 306: -#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 313: +#line 2187 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 307: -#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 314: +#line 2193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 308: -#line 2130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 315: +#line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 309: -#line 2136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 316: +#line 2205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 310: -#line 2142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 317: +#line 2211 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef NV_EXTENSIONS + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAccStructNV; +#endif + } +#line 7441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 318: +#line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 311: -#line 2147 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 319: +#line 2222 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 7301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 312: -#line 2152 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 320: +#line 2227 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 7311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 313: -#line 2157 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 321: +#line 2232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 7321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 314: -#line 2162 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 322: +#line 2237 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 315: -#line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 323: +#line 2242 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 7341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 316: -#line 2172 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 324: +#line 2247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 7351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 317: -#line 2177 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 325: +#line 2252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 7361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 318: -#line 2182 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 326: +#line 2257 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 7371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 319: -#line 2187 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 327: +#line 2262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 7381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 320: -#line 2192 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 328: +#line 2267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 7391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 321: -#line 2197 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 329: +#line 2272 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 7401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 322: -#line 2202 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 330: +#line 2277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 7411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 323: -#line 2207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 331: +#line 2282 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 7421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 324: -#line 2212 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 332: +#line 2287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7430,11 +7590,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); #endif } -#line 7434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 325: -#line 2220 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 333: +#line 2295 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7443,11 +7603,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); #endif } -#line 7447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 326: -#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 334: +#line 2303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7456,11 +7616,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); #endif } -#line 7460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 327: -#line 2236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 335: +#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7469,11 +7629,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); #endif } -#line 7473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 328: -#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 336: +#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7482,11 +7642,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); #endif } -#line 7486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 329: -#line 2252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 337: +#line 2327 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7495,11 +7655,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); #endif } -#line 7499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 330: -#line 2260 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 338: +#line 2335 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7508,11 +7668,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); #endif } -#line 7512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 331: -#line 2268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 339: +#line 2343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7521,11 +7681,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); #endif } -#line 7525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 332: -#line 2276 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 340: +#line 2351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7534,11 +7694,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); #endif } -#line 7538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 333: -#line 2284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 341: +#line 2359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7547,11 +7707,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); #endif } -#line 7551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 334: -#line 2292 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 342: +#line 2367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7560,11 +7720,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); #endif } -#line 7564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 335: -#line 2300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 343: +#line 2375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7573,11 +7733,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); #endif } -#line 7577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 336: -#line 2308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 344: +#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7586,171 +7746,171 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); #endif } -#line 7590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 337: -#line 2316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 345: +#line 2391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 7600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 338: -#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 346: +#line 2396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 7610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 339: -#line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 347: +#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 7620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 340: -#line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 348: +#line 2406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 7630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 341: -#line 2336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 349: +#line 2411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 7640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 342: -#line 2341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 350: +#line 2416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 7650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 343: -#line 2346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 351: +#line 2421 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 7660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 344: -#line 2351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 352: +#line 2426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 7670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 345: -#line 2356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 353: +#line 2431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 7680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 346: -#line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 354: +#line 2436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 7690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 347: -#line 2366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 355: +#line 2441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 348: -#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 356: +#line 2446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 7710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 349: -#line 2376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 357: +#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 7720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 350: -#line 2381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 358: +#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 7730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 351: -#line 2386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 359: +#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 7740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 352: -#line 2391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 360: +#line 2466 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 7750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 353: -#line 2396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 361: +#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7759,11 +7919,11 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); #endif } -#line 7763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7923 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 354: -#line 2404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 362: +#line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7772,41 +7932,41 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); #endif } -#line 7776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 355: -#line 2412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 363: +#line 2487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 7786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 356: -#line 2417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 364: +#line 2492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 7796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 357: -#line 2422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 365: +#line 2497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 7806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 358: -#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 366: +#line 2502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7815,41 +7975,41 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); #endif } -#line 7819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 359: -#line 2435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 367: +#line 2510 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 7829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 360: -#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 368: +#line 2515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 7839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 361: -#line 2445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 369: +#line 2520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 7849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8009 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 362: -#line 2450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 370: +#line 2525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7858,41 +8018,41 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); #endif } -#line 7862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 363: -#line 2458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 371: +#line 2533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 364: -#line 2463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 372: +#line 2538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 365: -#line 2468 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 373: +#line 2543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 366: -#line 2473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 374: +#line 2548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); @@ -7901,61 +8061,61 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); #endif } -#line 7905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 367: -#line 2481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 375: +#line 2556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 7915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 368: -#line 2486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 376: +#line 2561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 7925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 369: -#line 2491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 377: +#line 2566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 7935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 370: -#line 2496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 378: +#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 7945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 371: -#line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 379: +#line 2576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 7955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 372: -#line 2506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 380: +#line 2581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -7964,21 +8124,21 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); #endif } -#line 7968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 373: -#line 2514 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 381: +#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 7978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 374: -#line 2519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 382: +#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -7987,21 +8147,21 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); #endif } -#line 7991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 375: -#line 2527 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 383: +#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 8001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 376: -#line 2532 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 384: +#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8010,21 +8170,21 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); #endif } -#line 8014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 377: -#line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 385: +#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 8024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 378: -#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 386: +#line 2620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8033,21 +8193,21 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); #endif } -#line 8037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 379: -#line 2553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 387: +#line 2628 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 8047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 380: -#line 2558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 388: +#line 2633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8056,21 +8216,21 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); #endif } -#line 8060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 381: -#line 2566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 389: +#line 2641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 8070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 382: -#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 390: +#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8079,21 +8239,21 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); #endif } -#line 8083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 383: -#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 391: +#line 2654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 8093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 384: -#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 392: +#line 2659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8102,161 +8262,161 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); #endif } -#line 8106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 385: -#line 2592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 393: +#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 8116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 386: -#line 2597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 394: +#line 2672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 8126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 387: -#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 395: +#line 2677 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 8136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 388: -#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 396: +#line 2682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 8146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 389: -#line 2612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 397: +#line 2687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 8156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 390: -#line 2617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 398: +#line 2692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 8166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 391: -#line 2622 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 399: +#line 2697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 8176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 392: -#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 400: +#line 2702 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 8186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 393: -#line 2632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 401: +#line 2707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 8196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 394: -#line 2637 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 402: +#line 2712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 8206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 395: -#line 2642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 403: +#line 2717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 8216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 396: -#line 2647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 404: +#line 2722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 8226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 397: -#line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 405: +#line 2727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 8236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 398: -#line 2657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 406: +#line 2732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 8246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 399: -#line 2662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 407: +#line 2737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 8256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 400: -#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 408: +#line 2742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8265,41 +8425,41 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); #endif } -#line 8269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 401: -#line 2675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 409: +#line 2750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 8279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 402: -#line 2680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 410: +#line 2755 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 8289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 403: -#line 2685 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 411: +#line 2760 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 8299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 404: -#line 2690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 412: +#line 2765 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8308,41 +8468,41 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); #endif } -#line 8312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 405: -#line 2698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 413: +#line 2773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 8322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 406: -#line 2703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 414: +#line 2778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 8332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 407: -#line 2708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 415: +#line 2783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 8342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 408: -#line 2713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 416: +#line 2788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8351,41 +8511,41 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); #endif } -#line 8355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 409: -#line 2721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 417: +#line 2796 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 8365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 410: -#line 2726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 418: +#line 2801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 8375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 411: -#line 2731 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 419: +#line 2806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 8385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 412: -#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 420: +#line 2811 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); @@ -8394,41 +8554,41 @@ yyreduce: (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); #endif } -#line 8398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 413: -#line 2744 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 421: +#line 2819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 8408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 414: -#line 2749 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 422: +#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 8418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 415: -#line 2754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 423: +#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 8428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 416: -#line 2759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 424: +#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8437,41 +8597,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); #endif } -#line 8441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 417: -#line 2767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 425: +#line 2842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 8451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 418: -#line 2772 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 426: +#line 2847 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 8461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 419: -#line 2777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 427: +#line 2852 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 8471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 420: -#line 2782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 428: +#line 2857 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8480,41 +8640,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); #endif } -#line 8484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 421: -#line 2790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 429: +#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 8494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 422: -#line 2795 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 430: +#line 2870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 8504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 423: -#line 2800 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 431: +#line 2875 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 8514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 424: -#line 2805 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 432: +#line 2880 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8523,41 +8683,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); #endif } -#line 8527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8687 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 425: -#line 2813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 433: +#line 2888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 8537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 426: -#line 2818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 434: +#line 2893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 8547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 427: -#line 2823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 435: +#line 2898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 8557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 428: -#line 2828 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 436: +#line 2903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8566,41 +8726,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); #endif } -#line 8570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 429: -#line 2836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 437: +#line 2911 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 8580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 430: -#line 2841 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 438: +#line 2916 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 8590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 431: -#line 2846 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 439: +#line 2921 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 8600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 432: -#line 2851 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 440: +#line 2926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8609,41 +8769,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); #endif } -#line 8613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8773 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 433: -#line 2859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 441: +#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 8623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 434: -#line 2864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 442: +#line 2939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 8633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 435: -#line 2869 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 443: +#line 2944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 8643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 436: -#line 2874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 444: +#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8652,41 +8812,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); #endif } -#line 8656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8816 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 437: -#line 2882 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 445: +#line 2957 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 8666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 438: -#line 2887 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 446: +#line 2962 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 8676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 439: -#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 447: +#line 2967 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 8686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 440: -#line 2897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 448: +#line 2972 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8695,41 +8855,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); #endif } -#line 8699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 441: -#line 2905 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 449: +#line 2980 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 8709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 442: -#line 2910 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 450: +#line 2985 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 8719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 443: -#line 2915 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 451: +#line 2990 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 8729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 444: -#line 2920 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 452: +#line 2995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8738,41 +8898,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); #endif } -#line 8742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 445: -#line 2928 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 453: +#line 3003 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 8752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 446: -#line 2933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 454: +#line 3008 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 8762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 447: -#line 2938 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 455: +#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 448: -#line 2943 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 456: +#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8781,41 +8941,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); #endif } -#line 8785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 449: -#line 2951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 457: +#line 3026 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 8795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 450: -#line 2956 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 458: +#line 3031 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 8805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 451: -#line 2961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 459: +#line 3036 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 8815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 452: -#line 2966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 460: +#line 3041 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8824,41 +8984,41 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); #endif } -#line 8828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 453: -#line 2974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 461: +#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 8838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 454: -#line 2979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 462: +#line 3054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 8848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 455: -#line 2984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 463: +#line 3059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 8858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 456: -#line 2989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 464: +#line 3064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); @@ -8867,64 +9027,64 @@ yyreduce: (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); #endif } -#line 8871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 457: -#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 465: +#line 3072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 8881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 458: -#line 3002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 466: +#line 3077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 8891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 459: -#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 467: +#line 3082 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 8902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 460: -#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 468: +#line 3088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 8913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 461: -#line 3019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 469: +#line 3094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 8924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 462: -#line 3025 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 470: +#line 3100 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); @@ -8934,11 +9094,11 @@ yyreduce: (yyval.interm.type).sampler.setSubpass(EbtFloat16); #endif } -#line 8938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 463: -#line 3034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 471: +#line 3109 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); @@ -8948,65 +9108,65 @@ yyreduce: (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); #endif } -#line 8952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 464: -#line 3043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 472: +#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 8963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 465: -#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 473: +#line 3124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 8974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 466: -#line 3055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 474: +#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 8985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 467: -#line 3061 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 475: +#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 8996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 468: -#line 3067 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 476: +#line 3142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 9006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 469: -#line 3072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 477: +#line 3147 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -9020,47 +9180,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 9024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 470: -#line 3088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 478: +#line 3163 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 9034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 471: -#line 3093 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 479: +#line 3168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 9044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 472: -#line 3098 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 480: +#line 3173 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 9054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 473: -#line 3106 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 481: +#line 3181 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 9060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 474: -#line 3106 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 482: +#line 3181 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -9072,17 +9232,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 475: -#line 3117 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 483: +#line 3192 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 9082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 476: -#line 3117 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 484: +#line 3192 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -9090,19 +9250,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 477: -#line 3127 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 485: +#line 3202 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 9102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 478: -#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 486: +#line 3205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -9113,11 +9273,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 9117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 479: -#line 3143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 487: +#line 3218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -9140,11 +9300,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 480: -#line 3165 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 488: +#line 3240 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -9169,38 +9329,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 481: -#line 3192 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 489: +#line 3267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 482: -#line 3196 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 490: +#line 3271 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9350 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 483: -#line 3202 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 491: +#line 3277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 9200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 484: -#line 3207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 492: +#line 3282 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -9209,219 +9369,219 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 9213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 485: -#line 3218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 493: +#line 3293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 9221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 486: -#line 3221 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 494: +#line 3296 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 9232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 487: -#line 3227 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 495: +#line 3302 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 9243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 488: -#line 3236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); - } -#line 9251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 489: -#line 3239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - } -#line 9259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 490: -#line 3245 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 491: -#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 492: -#line 3250 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 493: -#line 3256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 494: -#line 3257 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 495: -#line 3258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 496: -#line 3259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); + } +#line 9411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 497: -#line 3260 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + } +#line 9419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 498: -#line 3261 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3320 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 499: -#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 500: -#line 3266 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 9325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9437 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 501: -#line 3267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 502: +#line 3332 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 503: +#line 3333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 504: +#line 3334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 505: +#line 3335 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 506: +#line 3336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 507: +#line 3337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 508: +#line 3341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = 0; } +#line 9485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 509: +#line 3342 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 9334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 502: -#line 3271 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 510: +#line 3346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 9343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 503: -#line 3275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 511: +#line 3350 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 9353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 504: -#line 3283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 512: +#line 3358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 505: -#line 3284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 513: +#line 3359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 506: -#line 3288 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 514: +#line 3363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 9373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 507: -#line 3291 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 515: +#line 3366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 508: -#line 3295 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 516: +#line 3370 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 509: -#line 3300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 517: +#line 3375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 510: -#line 3309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 518: +#line 3384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 511: -#line 3312 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 519: +#line 3387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 512: -#line 3320 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 520: +#line 3395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -9430,11 +9590,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 9434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 513: -#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 521: +#line 3403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -9443,76 +9603,76 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 9447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 514: -#line 3339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 522: +#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 515: -#line 3340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 523: +#line 3415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 9459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 516: -#line 3344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 524: +#line 3419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 517: -#line 3347 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 525: +#line 3422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 518: -#line 3353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 526: +#line 3428 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 9485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 519: -#line 3360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 527: +#line 3435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 9494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 520: -#line 3364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 528: +#line 3439 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 9503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 521: -#line 3372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 529: +#line 3447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 9512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 522: -#line 3376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 530: +#line 3451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -9523,28 +9683,28 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 9527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9687 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 523: -#line 3389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 531: +#line 3464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 524: -#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 532: +#line 3467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 525: -#line 3398 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 533: +#line 3473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -9553,11 +9713,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 9557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 526: -#line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 534: +#line 3481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -9567,27 +9727,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 527: -#line 3418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 535: +#line 3493 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 528: -#line 3421 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 536: +#line 3496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 529: -#line 3427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 537: +#line 3502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -9600,11 +9760,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 9604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 530: -#line 3439 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 538: +#line 3514 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -9614,28 +9774,28 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 9618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 531: -#line 3451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 539: +#line 3526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 532: -#line 3454 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 540: +#line 3529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 533: -#line 3460 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 541: +#line 3535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -9644,11 +9804,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9648 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 534: -#line 3468 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 542: +#line 3543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -9656,21 +9816,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 535: -#line 3475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 543: +#line 3550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 536: -#line 3480 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 544: +#line 3555 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -9682,22 +9842,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 537: -#line 3491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 545: +#line 3566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 538: -#line 3497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 546: +#line 3572 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -9710,81 +9870,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 539: -#line 3512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 547: +#line 3587 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 540: -#line 3515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 548: +#line 3590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 541: -#line 3521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 549: +#line 3596 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 542: -#line 3524 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 550: +#line 3599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = 0; } -#line 9746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 543: -#line 3530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 551: +#line 3605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 9755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 544: -#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 552: +#line 3609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 9764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 545: -#line 3541 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 553: +#line 3616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 9774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 546: -#line 3546 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 554: +#line 3621 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 9784 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 547: -#line 3551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 555: +#line 3626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -9792,83 +9952,83 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 9796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 548: -#line 3558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 556: +#line 3633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 9804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 549: -#line 3561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 557: +#line 3636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 9813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 550: -#line 3570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 558: +#line 3645 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 9822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 551: -#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 559: +#line 3649 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 9833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 552: -#line 3583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 560: +#line 3658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 553: -#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 561: +#line 3661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10009 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 554: -#line 3589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 562: +#line 3664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 9859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 555: -#line 3597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 563: +#line 3672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); } -#line 9868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 556: -#line 3601 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 564: +#line 3676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -9884,52 +10044,52 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 9888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 557: -#line 3619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 565: +#line 3694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); } -#line 9897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 558: -#line 3625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 566: +#line 3700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 9905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 559: -#line 3628 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 567: +#line 3703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 9913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 560: -#line 3633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 568: +#line 3708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 9921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 561: -#line 3636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 569: +#line 3711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 9929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 9933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10157,5 +10317,5 @@ yyreturn: #endif return yyresult; } -#line 3640 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 3715 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 7534eea7..d1f2e711 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -125,319 +125,327 @@ extern int yydebug; BUFFER = 335, SHARED = 336, NONUNIFORM = 337, - COHERENT = 338, - VOLATILE = 339, - RESTRICT = 340, - READONLY = 341, - WRITEONLY = 342, - DEVICECOHERENT = 343, - QUEUEFAMILYCOHERENT = 344, - WORKGROUPCOHERENT = 345, - SUBGROUPCOHERENT = 346, - NONPRIVATE = 347, - DVEC2 = 348, - DVEC3 = 349, - DVEC4 = 350, - DMAT2 = 351, - DMAT3 = 352, - DMAT4 = 353, - F16VEC2 = 354, - F16VEC3 = 355, - F16VEC4 = 356, - F16MAT2 = 357, - F16MAT3 = 358, - F16MAT4 = 359, - F32VEC2 = 360, - F32VEC3 = 361, - F32VEC4 = 362, - F32MAT2 = 363, - F32MAT3 = 364, - F32MAT4 = 365, - F64VEC2 = 366, - F64VEC3 = 367, - F64VEC4 = 368, - F64MAT2 = 369, - F64MAT3 = 370, - F64MAT4 = 371, - NOPERSPECTIVE = 372, - FLAT = 373, - SMOOTH = 374, - LAYOUT = 375, - EXPLICITINTERPAMD = 376, - MAT2X2 = 377, - MAT2X3 = 378, - MAT2X4 = 379, - MAT3X2 = 380, - MAT3X3 = 381, - MAT3X4 = 382, - MAT4X2 = 383, - MAT4X3 = 384, - MAT4X4 = 385, - DMAT2X2 = 386, - DMAT2X3 = 387, - DMAT2X4 = 388, - DMAT3X2 = 389, - DMAT3X3 = 390, - DMAT3X4 = 391, - DMAT4X2 = 392, - DMAT4X3 = 393, - DMAT4X4 = 394, - F16MAT2X2 = 395, - F16MAT2X3 = 396, - F16MAT2X4 = 397, - F16MAT3X2 = 398, - F16MAT3X3 = 399, - F16MAT3X4 = 400, - F16MAT4X2 = 401, - F16MAT4X3 = 402, - F16MAT4X4 = 403, - F32MAT2X2 = 404, - F32MAT2X3 = 405, - F32MAT2X4 = 406, - F32MAT3X2 = 407, - F32MAT3X3 = 408, - F32MAT3X4 = 409, - F32MAT4X2 = 410, - F32MAT4X3 = 411, - F32MAT4X4 = 412, - F64MAT2X2 = 413, - F64MAT2X3 = 414, - F64MAT2X4 = 415, - F64MAT3X2 = 416, - F64MAT3X3 = 417, - F64MAT3X4 = 418, - F64MAT4X2 = 419, - F64MAT4X3 = 420, - F64MAT4X4 = 421, - ATOMIC_UINT = 422, - SAMPLER1D = 423, - SAMPLER2D = 424, - SAMPLER3D = 425, - SAMPLERCUBE = 426, - SAMPLER1DSHADOW = 427, - SAMPLER2DSHADOW = 428, - SAMPLERCUBESHADOW = 429, - SAMPLER1DARRAY = 430, - SAMPLER2DARRAY = 431, - SAMPLER1DARRAYSHADOW = 432, - SAMPLER2DARRAYSHADOW = 433, - ISAMPLER1D = 434, - ISAMPLER2D = 435, - ISAMPLER3D = 436, - ISAMPLERCUBE = 437, - ISAMPLER1DARRAY = 438, - ISAMPLER2DARRAY = 439, - USAMPLER1D = 440, - USAMPLER2D = 441, - USAMPLER3D = 442, - USAMPLERCUBE = 443, - USAMPLER1DARRAY = 444, - USAMPLER2DARRAY = 445, - SAMPLER2DRECT = 446, - SAMPLER2DRECTSHADOW = 447, - ISAMPLER2DRECT = 448, - USAMPLER2DRECT = 449, - SAMPLERBUFFER = 450, - ISAMPLERBUFFER = 451, - USAMPLERBUFFER = 452, - SAMPLERCUBEARRAY = 453, - SAMPLERCUBEARRAYSHADOW = 454, - ISAMPLERCUBEARRAY = 455, - USAMPLERCUBEARRAY = 456, - SAMPLER2DMS = 457, - ISAMPLER2DMS = 458, - USAMPLER2DMS = 459, - SAMPLER2DMSARRAY = 460, - ISAMPLER2DMSARRAY = 461, - USAMPLER2DMSARRAY = 462, - SAMPLEREXTERNALOES = 463, - F16SAMPLER1D = 464, - F16SAMPLER2D = 465, - F16SAMPLER3D = 466, - F16SAMPLER2DRECT = 467, - F16SAMPLERCUBE = 468, - F16SAMPLER1DARRAY = 469, - F16SAMPLER2DARRAY = 470, - F16SAMPLERCUBEARRAY = 471, - F16SAMPLERBUFFER = 472, - F16SAMPLER2DMS = 473, - F16SAMPLER2DMSARRAY = 474, - F16SAMPLER1DSHADOW = 475, - F16SAMPLER2DSHADOW = 476, - F16SAMPLER1DARRAYSHADOW = 477, - F16SAMPLER2DARRAYSHADOW = 478, - F16SAMPLER2DRECTSHADOW = 479, - F16SAMPLERCUBESHADOW = 480, - F16SAMPLERCUBEARRAYSHADOW = 481, - SAMPLER = 482, - SAMPLERSHADOW = 483, - TEXTURE1D = 484, - TEXTURE2D = 485, - TEXTURE3D = 486, - TEXTURECUBE = 487, - TEXTURE1DARRAY = 488, - TEXTURE2DARRAY = 489, - ITEXTURE1D = 490, - ITEXTURE2D = 491, - ITEXTURE3D = 492, - ITEXTURECUBE = 493, - ITEXTURE1DARRAY = 494, - ITEXTURE2DARRAY = 495, - UTEXTURE1D = 496, - UTEXTURE2D = 497, - UTEXTURE3D = 498, - UTEXTURECUBE = 499, - UTEXTURE1DARRAY = 500, - UTEXTURE2DARRAY = 501, - TEXTURE2DRECT = 502, - ITEXTURE2DRECT = 503, - UTEXTURE2DRECT = 504, - TEXTUREBUFFER = 505, - ITEXTUREBUFFER = 506, - UTEXTUREBUFFER = 507, - TEXTURECUBEARRAY = 508, - ITEXTURECUBEARRAY = 509, - UTEXTURECUBEARRAY = 510, - TEXTURE2DMS = 511, - ITEXTURE2DMS = 512, - UTEXTURE2DMS = 513, - TEXTURE2DMSARRAY = 514, - ITEXTURE2DMSARRAY = 515, - UTEXTURE2DMSARRAY = 516, - F16TEXTURE1D = 517, - F16TEXTURE2D = 518, - F16TEXTURE3D = 519, - F16TEXTURE2DRECT = 520, - F16TEXTURECUBE = 521, - F16TEXTURE1DARRAY = 522, - F16TEXTURE2DARRAY = 523, - F16TEXTURECUBEARRAY = 524, - F16TEXTUREBUFFER = 525, - F16TEXTURE2DMS = 526, - F16TEXTURE2DMSARRAY = 527, - SUBPASSINPUT = 528, - SUBPASSINPUTMS = 529, - ISUBPASSINPUT = 530, - ISUBPASSINPUTMS = 531, - USUBPASSINPUT = 532, - USUBPASSINPUTMS = 533, - F16SUBPASSINPUT = 534, - F16SUBPASSINPUTMS = 535, - IMAGE1D = 536, - IIMAGE1D = 537, - UIMAGE1D = 538, - IMAGE2D = 539, - IIMAGE2D = 540, - UIMAGE2D = 541, - IMAGE3D = 542, - IIMAGE3D = 543, - UIMAGE3D = 544, - IMAGE2DRECT = 545, - IIMAGE2DRECT = 546, - UIMAGE2DRECT = 547, - IMAGECUBE = 548, - IIMAGECUBE = 549, - UIMAGECUBE = 550, - IMAGEBUFFER = 551, - IIMAGEBUFFER = 552, - UIMAGEBUFFER = 553, - IMAGE1DARRAY = 554, - IIMAGE1DARRAY = 555, - UIMAGE1DARRAY = 556, - IMAGE2DARRAY = 557, - IIMAGE2DARRAY = 558, - UIMAGE2DARRAY = 559, - IMAGECUBEARRAY = 560, - IIMAGECUBEARRAY = 561, - UIMAGECUBEARRAY = 562, - IMAGE2DMS = 563, - IIMAGE2DMS = 564, - UIMAGE2DMS = 565, - IMAGE2DMSARRAY = 566, - IIMAGE2DMSARRAY = 567, - UIMAGE2DMSARRAY = 568, - F16IMAGE1D = 569, - F16IMAGE2D = 570, - F16IMAGE3D = 571, - F16IMAGE2DRECT = 572, - F16IMAGECUBE = 573, - F16IMAGE1DARRAY = 574, - F16IMAGE2DARRAY = 575, - F16IMAGECUBEARRAY = 576, - F16IMAGEBUFFER = 577, - F16IMAGE2DMS = 578, - F16IMAGE2DMSARRAY = 579, - STRUCT = 580, - VOID = 581, - WHILE = 582, - IDENTIFIER = 583, - TYPE_NAME = 584, - FLOATCONSTANT = 585, - DOUBLECONSTANT = 586, - INT16CONSTANT = 587, - UINT16CONSTANT = 588, - INT32CONSTANT = 589, - UINT32CONSTANT = 590, - INTCONSTANT = 591, - UINTCONSTANT = 592, - INT64CONSTANT = 593, - UINT64CONSTANT = 594, - BOOLCONSTANT = 595, - FLOAT16CONSTANT = 596, - LEFT_OP = 597, - RIGHT_OP = 598, - INC_OP = 599, - DEC_OP = 600, - LE_OP = 601, - GE_OP = 602, - EQ_OP = 603, - NE_OP = 604, - AND_OP = 605, - OR_OP = 606, - XOR_OP = 607, - MUL_ASSIGN = 608, - DIV_ASSIGN = 609, - ADD_ASSIGN = 610, - MOD_ASSIGN = 611, - LEFT_ASSIGN = 612, - RIGHT_ASSIGN = 613, - AND_ASSIGN = 614, - XOR_ASSIGN = 615, - OR_ASSIGN = 616, - SUB_ASSIGN = 617, - LEFT_PAREN = 618, - RIGHT_PAREN = 619, - LEFT_BRACKET = 620, - RIGHT_BRACKET = 621, - LEFT_BRACE = 622, - RIGHT_BRACE = 623, - DOT = 624, - COMMA = 625, - COLON = 626, - EQUAL = 627, - SEMICOLON = 628, - BANG = 629, - DASH = 630, - TILDE = 631, - PLUS = 632, - STAR = 633, - SLASH = 634, - PERCENT = 635, - LEFT_ANGLE = 636, - RIGHT_ANGLE = 637, - VERTICAL_BAR = 638, - CARET = 639, - AMPERSAND = 640, - QUESTION = 641, - INVARIANT = 642, - PRECISE = 643, - HIGH_PRECISION = 644, - MEDIUM_PRECISION = 645, - LOW_PRECISION = 646, - PRECISION = 647, - PACKED = 648, - RESOURCE = 649, - SUPERP = 650 + PAYLOADNV = 338, + PAYLOADINNV = 339, + HITATTRNV = 340, + COHERENT = 341, + VOLATILE = 342, + RESTRICT = 343, + READONLY = 344, + WRITEONLY = 345, + DEVICECOHERENT = 346, + QUEUEFAMILYCOHERENT = 347, + WORKGROUPCOHERENT = 348, + SUBGROUPCOHERENT = 349, + NONPRIVATE = 350, + DVEC2 = 351, + DVEC3 = 352, + DVEC4 = 353, + DMAT2 = 354, + DMAT3 = 355, + DMAT4 = 356, + F16VEC2 = 357, + F16VEC3 = 358, + F16VEC4 = 359, + F16MAT2 = 360, + F16MAT3 = 361, + F16MAT4 = 362, + F32VEC2 = 363, + F32VEC3 = 364, + F32VEC4 = 365, + F32MAT2 = 366, + F32MAT3 = 367, + F32MAT4 = 368, + F64VEC2 = 369, + F64VEC3 = 370, + F64VEC4 = 371, + F64MAT2 = 372, + F64MAT3 = 373, + F64MAT4 = 374, + NOPERSPECTIVE = 375, + FLAT = 376, + SMOOTH = 377, + LAYOUT = 378, + EXPLICITINTERPAMD = 379, + PERVERTEXNV = 380, + PERPRIMITIVENV = 381, + PERVIEWNV = 382, + PERTASKNV = 383, + MAT2X2 = 384, + MAT2X3 = 385, + MAT2X4 = 386, + MAT3X2 = 387, + MAT3X3 = 388, + MAT3X4 = 389, + MAT4X2 = 390, + MAT4X3 = 391, + MAT4X4 = 392, + DMAT2X2 = 393, + DMAT2X3 = 394, + DMAT2X4 = 395, + DMAT3X2 = 396, + DMAT3X3 = 397, + DMAT3X4 = 398, + DMAT4X2 = 399, + DMAT4X3 = 400, + DMAT4X4 = 401, + F16MAT2X2 = 402, + F16MAT2X3 = 403, + F16MAT2X4 = 404, + F16MAT3X2 = 405, + F16MAT3X3 = 406, + F16MAT3X4 = 407, + F16MAT4X2 = 408, + F16MAT4X3 = 409, + F16MAT4X4 = 410, + F32MAT2X2 = 411, + F32MAT2X3 = 412, + F32MAT2X4 = 413, + F32MAT3X2 = 414, + F32MAT3X3 = 415, + F32MAT3X4 = 416, + F32MAT4X2 = 417, + F32MAT4X3 = 418, + F32MAT4X4 = 419, + F64MAT2X2 = 420, + F64MAT2X3 = 421, + F64MAT2X4 = 422, + F64MAT3X2 = 423, + F64MAT3X3 = 424, + F64MAT3X4 = 425, + F64MAT4X2 = 426, + F64MAT4X3 = 427, + F64MAT4X4 = 428, + ATOMIC_UINT = 429, + ACCSTRUCTNV = 430, + SAMPLER1D = 431, + SAMPLER2D = 432, + SAMPLER3D = 433, + SAMPLERCUBE = 434, + SAMPLER1DSHADOW = 435, + SAMPLER2DSHADOW = 436, + SAMPLERCUBESHADOW = 437, + SAMPLER1DARRAY = 438, + SAMPLER2DARRAY = 439, + SAMPLER1DARRAYSHADOW = 440, + SAMPLER2DARRAYSHADOW = 441, + ISAMPLER1D = 442, + ISAMPLER2D = 443, + ISAMPLER3D = 444, + ISAMPLERCUBE = 445, + ISAMPLER1DARRAY = 446, + ISAMPLER2DARRAY = 447, + USAMPLER1D = 448, + USAMPLER2D = 449, + USAMPLER3D = 450, + USAMPLERCUBE = 451, + USAMPLER1DARRAY = 452, + USAMPLER2DARRAY = 453, + SAMPLER2DRECT = 454, + SAMPLER2DRECTSHADOW = 455, + ISAMPLER2DRECT = 456, + USAMPLER2DRECT = 457, + SAMPLERBUFFER = 458, + ISAMPLERBUFFER = 459, + USAMPLERBUFFER = 460, + SAMPLERCUBEARRAY = 461, + SAMPLERCUBEARRAYSHADOW = 462, + ISAMPLERCUBEARRAY = 463, + USAMPLERCUBEARRAY = 464, + SAMPLER2DMS = 465, + ISAMPLER2DMS = 466, + USAMPLER2DMS = 467, + SAMPLER2DMSARRAY = 468, + ISAMPLER2DMSARRAY = 469, + USAMPLER2DMSARRAY = 470, + SAMPLEREXTERNALOES = 471, + F16SAMPLER1D = 472, + F16SAMPLER2D = 473, + F16SAMPLER3D = 474, + F16SAMPLER2DRECT = 475, + F16SAMPLERCUBE = 476, + F16SAMPLER1DARRAY = 477, + F16SAMPLER2DARRAY = 478, + F16SAMPLERCUBEARRAY = 479, + F16SAMPLERBUFFER = 480, + F16SAMPLER2DMS = 481, + F16SAMPLER2DMSARRAY = 482, + F16SAMPLER1DSHADOW = 483, + F16SAMPLER2DSHADOW = 484, + F16SAMPLER1DARRAYSHADOW = 485, + F16SAMPLER2DARRAYSHADOW = 486, + F16SAMPLER2DRECTSHADOW = 487, + F16SAMPLERCUBESHADOW = 488, + F16SAMPLERCUBEARRAYSHADOW = 489, + SAMPLER = 490, + SAMPLERSHADOW = 491, + TEXTURE1D = 492, + TEXTURE2D = 493, + TEXTURE3D = 494, + TEXTURECUBE = 495, + TEXTURE1DARRAY = 496, + TEXTURE2DARRAY = 497, + ITEXTURE1D = 498, + ITEXTURE2D = 499, + ITEXTURE3D = 500, + ITEXTURECUBE = 501, + ITEXTURE1DARRAY = 502, + ITEXTURE2DARRAY = 503, + UTEXTURE1D = 504, + UTEXTURE2D = 505, + UTEXTURE3D = 506, + UTEXTURECUBE = 507, + UTEXTURE1DARRAY = 508, + UTEXTURE2DARRAY = 509, + TEXTURE2DRECT = 510, + ITEXTURE2DRECT = 511, + UTEXTURE2DRECT = 512, + TEXTUREBUFFER = 513, + ITEXTUREBUFFER = 514, + UTEXTUREBUFFER = 515, + TEXTURECUBEARRAY = 516, + ITEXTURECUBEARRAY = 517, + UTEXTURECUBEARRAY = 518, + TEXTURE2DMS = 519, + ITEXTURE2DMS = 520, + UTEXTURE2DMS = 521, + TEXTURE2DMSARRAY = 522, + ITEXTURE2DMSARRAY = 523, + UTEXTURE2DMSARRAY = 524, + F16TEXTURE1D = 525, + F16TEXTURE2D = 526, + F16TEXTURE3D = 527, + F16TEXTURE2DRECT = 528, + F16TEXTURECUBE = 529, + F16TEXTURE1DARRAY = 530, + F16TEXTURE2DARRAY = 531, + F16TEXTURECUBEARRAY = 532, + F16TEXTUREBUFFER = 533, + F16TEXTURE2DMS = 534, + F16TEXTURE2DMSARRAY = 535, + SUBPASSINPUT = 536, + SUBPASSINPUTMS = 537, + ISUBPASSINPUT = 538, + ISUBPASSINPUTMS = 539, + USUBPASSINPUT = 540, + USUBPASSINPUTMS = 541, + F16SUBPASSINPUT = 542, + F16SUBPASSINPUTMS = 543, + IMAGE1D = 544, + IIMAGE1D = 545, + UIMAGE1D = 546, + IMAGE2D = 547, + IIMAGE2D = 548, + UIMAGE2D = 549, + IMAGE3D = 550, + IIMAGE3D = 551, + UIMAGE3D = 552, + IMAGE2DRECT = 553, + IIMAGE2DRECT = 554, + UIMAGE2DRECT = 555, + IMAGECUBE = 556, + IIMAGECUBE = 557, + UIMAGECUBE = 558, + IMAGEBUFFER = 559, + IIMAGEBUFFER = 560, + UIMAGEBUFFER = 561, + IMAGE1DARRAY = 562, + IIMAGE1DARRAY = 563, + UIMAGE1DARRAY = 564, + IMAGE2DARRAY = 565, + IIMAGE2DARRAY = 566, + UIMAGE2DARRAY = 567, + IMAGECUBEARRAY = 568, + IIMAGECUBEARRAY = 569, + UIMAGECUBEARRAY = 570, + IMAGE2DMS = 571, + IIMAGE2DMS = 572, + UIMAGE2DMS = 573, + IMAGE2DMSARRAY = 574, + IIMAGE2DMSARRAY = 575, + UIMAGE2DMSARRAY = 576, + F16IMAGE1D = 577, + F16IMAGE2D = 578, + F16IMAGE3D = 579, + F16IMAGE2DRECT = 580, + F16IMAGECUBE = 581, + F16IMAGE1DARRAY = 582, + F16IMAGE2DARRAY = 583, + F16IMAGECUBEARRAY = 584, + F16IMAGEBUFFER = 585, + F16IMAGE2DMS = 586, + F16IMAGE2DMSARRAY = 587, + STRUCT = 588, + VOID = 589, + WHILE = 590, + IDENTIFIER = 591, + TYPE_NAME = 592, + FLOATCONSTANT = 593, + DOUBLECONSTANT = 594, + INT16CONSTANT = 595, + UINT16CONSTANT = 596, + INT32CONSTANT = 597, + UINT32CONSTANT = 598, + INTCONSTANT = 599, + UINTCONSTANT = 600, + INT64CONSTANT = 601, + UINT64CONSTANT = 602, + BOOLCONSTANT = 603, + FLOAT16CONSTANT = 604, + LEFT_OP = 605, + RIGHT_OP = 606, + INC_OP = 607, + DEC_OP = 608, + LE_OP = 609, + GE_OP = 610, + EQ_OP = 611, + NE_OP = 612, + AND_OP = 613, + OR_OP = 614, + XOR_OP = 615, + MUL_ASSIGN = 616, + DIV_ASSIGN = 617, + ADD_ASSIGN = 618, + MOD_ASSIGN = 619, + LEFT_ASSIGN = 620, + RIGHT_ASSIGN = 621, + AND_ASSIGN = 622, + XOR_ASSIGN = 623, + OR_ASSIGN = 624, + SUB_ASSIGN = 625, + LEFT_PAREN = 626, + RIGHT_PAREN = 627, + LEFT_BRACKET = 628, + RIGHT_BRACKET = 629, + LEFT_BRACE = 630, + RIGHT_BRACE = 631, + DOT = 632, + COMMA = 633, + COLON = 634, + EQUAL = 635, + SEMICOLON = 636, + BANG = 637, + DASH = 638, + TILDE = 639, + PLUS = 640, + STAR = 641, + SLASH = 642, + PERCENT = 643, + LEFT_ANGLE = 644, + RIGHT_ANGLE = 645, + VERTICAL_BAR = 646, + CARET = 647, + AMPERSAND = 648, + QUESTION = 649, + INVARIANT = 650, + PRECISE = 651, + HIGH_PRECISION = 652, + MEDIUM_PRECISION = 653, + LOW_PRECISION = 654, + PRECISION = 655, + PACKED = 656, + RESOURCE = 657, + SUPERP = 658 }; #endif @@ -481,7 +489,7 @@ union YYSTYPE }; } interm; -#line 485 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ +#line 493 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 52511411..5aa57761 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -956,7 +956,13 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpSparseTextureGatherLodOffsets: out.debug << "sparseTextureGatherLodOffsets"; break; case EOpSparseImageLoadLod: out.debug << "sparseImageLoadLod"; break; #endif - +#ifdef NV_EXTENSIONS + case EOpImageSampleFootprintNV: out.debug << "imageSampleFootprintNV"; break; + case EOpImageSampleFootprintClampNV: out.debug << "imageSampleFootprintClampNV"; break; + case EOpImageSampleFootprintLodNV: out.debug << "imageSampleFootprintLodNV"; break; + case EOpImageSampleFootprintGradNV: out.debug << "imageSampleFootprintGradNV"; break; + case EOpImageSampleFootprintGradClampNV: out.debug << "mageSampleFootprintGradClampNV"; break; +#endif case EOpAddCarry: out.debug << "addCarry"; break; case EOpSubBorrow: out.debug << "subBorrow"; break; case EOpUMulExtended: out.debug << "uMulExtended"; break; @@ -1042,6 +1048,14 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpSubpassLoad: out.debug << "subpassLoad"; break; case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; +#ifdef NV_EXTENSIONS + case EOpTraceNV: out.debug << "traceNVX"; break; + case EOpReportIntersectionNV: out.debug << "reportIntersectionNVX"; break; + case EOpIgnoreIntersectionNV: out.debug << "ignoreIntersectionNVX"; break; + case EOpTerminateRayNV: out.debug << "terminateRayNVX"; break; + case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break; +#endif + default: out.debug.message(EPrefixError, "Bad aggregation op"); } @@ -1445,6 +1459,16 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) } break; +#ifdef NV_EXTENSIONS + case EShLangMeshNV: + infoSink.debug << "max_vertices = " << vertices << "\n"; + infoSink.debug << "max_primitives = " << primitives << "\n"; + infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n"; + // Fall through + + case EShLangTaskNV: + // Fall through +#endif 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 4c89c8bf..7ce7cddf 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -141,13 +141,27 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) if (vertices == TQualifier::layoutNotSet) vertices = unit.vertices; else if (vertices != unit.vertices) { - if (language == EShLangGeometry) + if (language == EShLangGeometry +#ifdef NV_EXTENSIONS + || language == EShLangMeshNV +#endif + ) error(infoSink, "Contradictory layout max_vertices values"); else if (language == EShLangTessControl) error(infoSink, "Contradictory layout vertices values"); else assert(0); } +#ifdef NV_EXTENSIONS + if (primitives == TQualifier::layoutNotSet) + primitives = unit.primitives; + else if (primitives != unit.primitives) { + if (language == EShLangMeshNV) + error(infoSink, "Contradictory layout max_primitives values"); + else + assert(0); + } +#endif if (inputPrimitive == ElgNone) inputPrimitive = unit.inputPrimitive; @@ -265,6 +279,13 @@ void TIntermediate::mergeTrees(TInfoSink& infoSink, TIntermediate& unit) } // Getting this far means we have two existing trees to merge... +#ifdef NV_EXTENSIONS + numShaderRecordNVBlocks += unit.numShaderRecordNVBlocks; +#endif + +#ifdef NV_EXTENSIONS + numTaskNVBlocks += unit.numTaskNVBlocks; +#endif // Get the top-level globals of each unit TIntermSequence& globals = treeRoot->getAsAggregate()->getSequence(); @@ -690,6 +711,31 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) break; case EShLangCompute: break; + +#ifdef NV_EXTENSIONS + case EShLangRayGenNV: + case EShLangIntersectNV: + case EShLangAnyHitNV: + case EShLangClosestHitNV: + case EShLangMissNV: + case EShLangCallableNV: + if (numShaderRecordNVBlocks > 1) + error(infoSink, "Only one shaderRecordNVX buffer block is allowed per stage"); + break; + case EShLangMeshNV: + if (outputPrimitive == ElgNone) + error(infoSink, "At least one shader must specify an output layout primitive"); + if (vertices == TQualifier::layoutNotSet) + error(infoSink, "At least one shader must specify a layout(max_vertices = value)"); + if (primitives == TQualifier::layoutNotSet) + error(infoSink, "At least one shader must specify a layout(max_primitives = value)"); + // fall through + case EShLangTaskNV: + if (numTaskNVBlocks > 1) + error(infoSink, "Only one taskNV interface block is allowed per shader"); + break; +#endif + default: error(infoSink, "Unknown Stage."); break; @@ -960,7 +1006,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ return -1; int size; - if (qualifier.isUniformOrBuffer()) { + if (qualifier.isUniformOrBuffer() || qualifier.isTaskMemory()) { if (type.isSizedArray()) size = type.getCumulativeArraySize(); else @@ -1111,10 +1157,19 @@ int TIntermediate::computeTypeLocationSize(const TType& type, EShLanguage stage) // TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness // TODO: are there valid cases of having an unsized array with a location? If so, running this code too early. TType elementType(type, 0); - if (type.isSizedArray()) + if (type.isSizedArray() +#ifdef NV_EXTENSIONS + && !type.getQualifier().isPerView() +#endif + ) return type.getOuterArraySize() * computeTypeLocationSize(elementType, stage); - else + else { +#ifdef NV_EXTENSIONS + // unset perViewNV attributes for arrayed per-view outputs: "perviewNV vec4 v[MAX_VIEWS][3];" + elementType.getQualifier().perViewNV = false; +#endif return computeTypeLocationSize(elementType, stage); + } } // "The locations consumed by block and structure members are determined by applying the rules above diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index e9fe0e41..3fab9ce9 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -206,6 +206,17 @@ class TSymbolTable; class TSymbol; class TVariable; +#ifdef NV_EXTENSIONS +// +// Texture and Sampler transformation mode. +// +enum ComputeDerivativeMode { + LayoutDerivativeNone, // default layout as SPV_NV_compute_shader_derivatives not enabled + LayoutDerivativeGroupQuads, // derivative_group_quadsNV + LayoutDerivativeGroupLinear, // derivative_group_linearNV +}; +#endif + // // Set of helper functions to help parse and build the tree. // @@ -225,6 +236,10 @@ public: #ifdef NV_EXTENSIONS layoutOverrideCoverage(false), geoPassthroughEXT(false), + numShaderRecordNVBlocks(0), + computeDerivativeMode(LayoutDerivativeNone), + primitives(TQualifier::layoutNotSet), + numTaskNVBlocks(0), #endif autoMapBindings(false), autoMapLocations(false), @@ -415,6 +430,11 @@ public: int getNumEntryPoints() const { return numEntryPoints; } int getNumErrors() const { return numErrors; } void addPushConstantCount() { ++numPushConstants; } +#ifdef NV_EXTENSIONS + void addShaderRecordNVCount() { ++numShaderRecordNVBlocks; } + void addTaskNVCount() { ++numTaskNVBlocks; } +#endif + bool isRecursive() const { return recursive; } TIntermSymbol* addSymbol(const TVariable&); @@ -622,6 +642,16 @@ public: bool getLayoutOverrideCoverage() const { return layoutOverrideCoverage; } void setGeoPassthroughEXT() { geoPassthroughEXT = true; } bool getGeoPassthroughEXT() const { return geoPassthroughEXT; } + void setLayoutDerivativeMode(ComputeDerivativeMode mode) { computeDerivativeMode = mode; } + ComputeDerivativeMode getLayoutDerivativeModeNone() const { return computeDerivativeMode; } + bool setPrimitives(int m) + { + if (primitives != TQualifier::layoutNotSet) + return primitives == m; + primitives = m; + return true; + } + int getPrimitives() const { return primitives; } #endif const char* addSemanticName(const TString& name) @@ -725,6 +755,10 @@ protected: #ifdef NV_EXTENSIONS bool layoutOverrideCoverage; bool geoPassthroughEXT; + int numShaderRecordNVBlocks; + ComputeDerivativeMode computeDerivativeMode; + int primitives; + int numTaskNVBlocks; #endif // Base shift values diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 7fc2ca34..58520246 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -94,6 +94,16 @@ typedef enum { EShLangGeometry, EShLangFragment, EShLangCompute, +#ifdef NV_EXTENSIONS + EShLangRayGenNV, + EShLangIntersectNV, + EShLangAnyHitNV, + EShLangClosestHitNV, + EShLangMissNV, + EShLangCallableNV, + EShLangTaskNV, + EShLangMeshNV, +#endif EShLangCount, } EShLanguage; // would be better as stage, but this is ancient now @@ -104,6 +114,16 @@ typedef enum { EShLangGeometryMask = (1 << EShLangGeometry), EShLangFragmentMask = (1 << EShLangFragment), EShLangComputeMask = (1 << EShLangCompute), +#ifdef NV_EXTENSIONS + EShLangRayGenNVMask = (1 << EShLangRayGenNV), + EShLangIntersectNVMask = (1 << EShLangIntersectNV), + EShLangAnyHitNVMask = (1 << EShLangAnyHitNV), + EShLangClosestHitNVMask = (1 << EShLangClosestHitNV), + EShLangMissNVMask = (1 << EShLangMissNV), + EShLangCallableNVMask = (1 << EShLangCallableNV), + EShLangTaskNVMask = (1 << EShLangTaskNV), + EShLangMeshNVMask = (1 << EShLangMeshNV), +#endif } EShLanguageMask; namespace glslang { diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 060232a4..29e75bb6 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -501,6 +501,30 @@ INSTANTIATE_TEST_CASE_P( "spv.multiviewPerViewAttributes.vert", "spv.multiviewPerViewAttributes.tesc", "spv.atomicInt64.comp", + "spv.shadingRate.frag", + "spv.RayGenShader.rgen", + "spv.RayGenShader_Errors.rgen", + "spv.RayConstants.rgen", + "spv.IntersectShader.rint", + "spv.IntersectShader_Errors.rint", + "spv.AnyHitShader.rahit", + "spv.AnyHitShader_Errors.rahit", + "spv.ClosestHitShader.rchit", + "spv.ClosestHitShader_Errors.rchit", + "spv.MissShader.rmiss", + "spv.MissShader_Errors.rmiss", + "spv.fragmentShaderBarycentric.frag", + "spv.fragmentShaderBarycentric2.frag", + "spv.computeShaderDerivatives.comp", + "spv.computeShaderDerivatives2.comp", + "spv.shaderImageFootprint.frag", + "spv.meshShaderBuiltins.mesh", + "spv.meshShaderUserDefined.mesh", + "spv.meshShaderPerViewBuiltins.mesh", + "spv.meshShaderPerViewUserDefined.mesh", + "spv.meshShaderSharedMem.mesh", + "spv.meshShaderTaskMem.mesh", + "spv.meshTaskShader.task", })), FileNameAsCustomTestSuffix ); diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp index 77bada5f..d899c780 100644 --- a/gtests/TestFixture.cpp +++ b/gtests/TestFixture.cpp @@ -60,6 +60,24 @@ EShLanguage GetShaderStage(const std::string& stage) return EShLangFragment; } else if (stage == "comp") { return EShLangCompute; +#ifdef NV_EXTENSIONS + } else if (stage == "rgen") { + return EShLangRayGenNV; + } else if (stage == "rint") { + return EShLangIntersectNV; + } else if (stage == "rahit") { + return EShLangAnyHitNV; + } else if (stage == "rchit") { + return EShLangClosestHitNV; + } else if (stage == "rmiss") { + return EShLangMissNV; + } else if (stage == "rcall") { + return EShLangCallableNV; + } else if (stage == "task") { + return EShLangTaskNV; + } else if (stage == "mesh") { + return EShLangMeshNV; +#endif } else { assert(0 && "Unknown shader stage"); return EShLangCount;