diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.ARM.h b/3rdparty/glslang/SPIRV/GLSL.ext.ARM.h index 14425be1e..eef5b03e1 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.ARM.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.ARM.h @@ -1,5 +1,5 @@ /* -** Copyright (c) 2022 ARM Limited +** Copyright (c) 2022, 2025 ARM Limited ** ** Permission is hereby granted, free of charge, to any person obtaining a copy ** of this software and/or associated documentation files (the "Materials"), @@ -28,8 +28,10 @@ #define GLSLextARM_H static const int GLSLextARMVersion = 100; -static const int GLSLextARMRevision = 1; +static const int GLSLextARMRevision = 2; -static const char * const E_SPV_ARM_core_builtins = "SPV_ARM_core_builtins"; +static const char* const E_SPV_ARM_core_builtins = "SPV_ARM_core_builtins"; +static const char* const E_SPV_ARM_cooperative_matrix_layouts = "SPV_ARM_cooperative_matrix_layouts"; +static const char* const E_SPV_ARM_tensors = "SPV_ARM_tensors"; #endif // #ifndef GLSLextARM_H diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.EXT.h b/3rdparty/glslang/SPIRV/GLSL.ext.EXT.h index 07f3c3026..748d9c883 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.EXT.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.EXT.h @@ -41,6 +41,6 @@ static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64"; static const char* const E_SPV_EXT_shader_tile_image = "SPV_EXT_shader_tile_image"; static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader"; -static const char* const E_SPV_ARM_cooperative_matrix_layouts = "SPV_ARM_cooperative_matrix_layouts"; +static const char* const E_SPV_EXT_float8 = "SPV_EXT_float8"; #endif // #ifndef GLSLextEXT_H diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.QCOM.h b/3rdparty/glslang/SPIRV/GLSL.ext.QCOM.h index a671d79a8..7633d4079 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.QCOM.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.QCOM.h @@ -39,6 +39,8 @@ static const int GLSLextQCOMRevision = 1; const char* const E_SPV_QCOM_image_processing = "SPV_QCOM_image_processing"; //SPV_QCOM_image_processing2 const char* const E_SPV_QCOM_image_processing2 = "SPV_QCOM_image_processing2"; +//SPV_QCOM_cooperative_matrix_conversion +const char* const E_SPV_QCOM_cooperative_matrix_conversion = "SPV_QCOM_cooperative_matrix_conversion"; //SPV_QCOM_tile_shading const char* const E_SPV_QCOM_tile_shading = "SPV_QCOM_tile_shading"; diff --git a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp index 9088f776b..b409ba3fb 100644 --- a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp +++ b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp @@ -1505,6 +1505,10 @@ bool IsDescriptorResource(const glslang::TType& type) type.getBasicType() == glslang::EbtAccStruct) return type.getQualifier().isUniformOrBuffer(); + // Tensors are tied to a descriptor. + if (type.isTensorARM()) + return true; + // None of the above. return false; } @@ -2399,6 +2403,16 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T node->getRight()->traverse(this); spv::Id index = accessChainLoad(node->getRight()->getType()); + // Zero-extend smaller unsigned integer types for array indexing. + // SPIR-V OpAccessChain treats indices as signed, so we need to zero-extend + // unsigned types to preserve their values (signed types are fine as-is). + spv::Id indexType = builder.getTypeId(index); + if (builder.isUintType(indexType) && builder.getScalarTypeWidth(indexType) < 32) { + // Zero-extend unsigned types to preserve their values + spv::Id uintType = builder.makeUintType(32); + index = builder.createUnaryOp(spv::Op::OpUConvert, uintType, index); + } + addIndirectionIndexCapabilities(node->getLeft()->getType(), node->getRight()->getType()); // restore the saved access chain @@ -2855,6 +2869,10 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI one = builder.makeFloat16Constant(1.0F); else if (node->getBasicType() == glslang::EbtBFloat16) one = builder.makeBFloat16Constant(1.0F); + else if (node->getBasicType() == glslang::EbtFloatE5M2) + one = builder.makeFloatE5M2Constant(1.0F); + else if (node->getBasicType() == glslang::EbtFloatE4M3) + one = builder.makeFloatE4M3Constant(1.0F); else if (node->getBasicType() == glslang::EbtInt8 || node->getBasicType() == glslang::EbtUint8) one = builder.makeInt8Constant(1); else if (node->getBasicType() == glslang::EbtInt16 || node->getBasicType() == glslang::EbtUint16) @@ -3198,6 +3216,14 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructBF16Vec2: case glslang::EOpConstructBF16Vec3: case glslang::EOpConstructBF16Vec4: + case glslang::EOpConstructFloatE5M2: + case glslang::EOpConstructFloatE5M2Vec2: + case glslang::EOpConstructFloatE5M2Vec3: + case glslang::EOpConstructFloatE5M2Vec4: + case glslang::EOpConstructFloatE4M3: + case glslang::EOpConstructFloatE4M3Vec2: + case glslang::EOpConstructFloatE4M3Vec3: + case glslang::EOpConstructFloatE4M3Vec4: case glslang::EOpConstructBool: case glslang::EOpConstructBVec2: case glslang::EOpConstructBVec3: @@ -3240,6 +3266,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructCooperativeMatrixNV: case glslang::EOpConstructCooperativeMatrixKHR: case glslang::EOpConstructCooperativeVectorNV: + case glslang::EOpConstructSaturated: { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); std::vector arguments; @@ -3277,6 +3304,16 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt constructed = createCompositeConstruct(resultType(), constituents); } else if (isMatrix) constructed = builder.createMatrixConstructor(precision, arguments, resultType()); + else if (node->getOp() == glslang::EOpConstructSaturated) { + OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), + TranslateNoContractionDecoration(node->getType().getQualifier()), + TranslateNonUniformDecoration(lvalueCoherentFlags) }; + + constructed = createConversion(node->getOp(), decorations, resultType(), arguments[1], + node->getType().getBasicType(), node->getSequence()[1]->getAsTyped()->getBasicType()); + builder.addDecoration(constructed, spv::Decoration::SaturatedToLargestFloat8NormalConversionEXT); + builder.createStore(constructed, arguments[0]); + } else constructed = builder.createConstructor(precision, arguments, resultType()); @@ -3557,6 +3594,9 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.addCapability(spv::Capability::TextureBlockMatchQCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing); break; + case glslang::EOpTensorWriteARM: + noReturnValue = true; + break; case glslang::EOpImageBlockMatchWindowSSDQCOM: case glslang::EOpImageBlockMatchWindowSADQCOM: @@ -3807,6 +3847,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (arg == 0 || arg == 2) lvalue = true; break; + case glslang::EOpTensorReadARM: + if (arg == 2) + lvalue = true; + break; default: break; } @@ -4218,6 +4262,24 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // store the result to the pointer builder.createStore(result, operands[0]); result = 0; + } else if (node->getOp() == glslang::EOpBitCastArrayQCOM) { + builder.addCapability(spv::Capability::CooperativeMatrixConversionQCOM); + builder.addExtension(spv::E_SPV_QCOM_cooperative_matrix_conversion); + result = builder.createUnaryOp(spv::Op::OpBitCastArrayQCOM, resultType(), operands[0]); + } else if (node->getOp() == glslang::EOpCompositeConstructCoopMatQCOM) { + builder.addCapability(spv::Capability::CooperativeMatrixConversionQCOM); + builder.addExtension(spv::E_SPV_QCOM_cooperative_matrix_conversion); + result = builder.createUnaryOp(spv::Op::OpCompositeConstructCoopMatQCOM, resultType(), operands[0]); + } else if (node->getOp() == glslang::EOpCompositeExtractCoopMatQCOM) { + builder.addCapability(spv::Capability::CooperativeMatrixConversionQCOM); + builder.addExtension(spv::E_SPV_QCOM_cooperative_matrix_conversion); + result = builder.createUnaryOp(spv::Op::OpCompositeExtractCoopMatQCOM, resultType(), operands[0]); + } else if (node->getOp() == glslang::EOpExtractSubArrayQCOM) { + builder.addCapability(spv::Capability::CooperativeMatrixConversionQCOM); + builder.addExtension(spv::E_SPV_QCOM_cooperative_matrix_conversion); + + std::vector arguments { operands[0], operands[1] };; + result = builder.createOp(spv::Op::OpExtractSubArrayQCOM, resultType(), arguments); } else if (node->getOp() == glslang::EOpCooperativeVectorMatMulNV || node->getOp() == glslang::EOpCooperativeVectorMatMulAddNV) { auto matrixOperands = spv::CooperativeMatrixOperandsMask::MaskNone; @@ -4308,6 +4370,66 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt idImmOps.push_back(spv::IdImmediate(true, operands[0])); // A builder.createNoResultOp(spv::Op::OpCooperativeVectorReduceSumAccumulateNV, idImmOps); result = 0; + } else if (node->getOp() == glslang::EOpTensorReadARM || + node->getOp() == glslang::EOpTensorWriteARM) { + const bool isWrite = node->getOp() == glslang::EOpTensorWriteARM; + const unsigned int tensorMinOperandCount = 3; + assert(operands.size() >= tensorMinOperandCount); + std::vector idImmOps; + + idImmOps.push_back(spv::IdImmediate(true, operands[0])); // tensor + idImmOps.push_back(spv::IdImmediate(true, operands[1])); // coords + if (isWrite) { + idImmOps.push_back(spv::IdImmediate(true, operands[2])); // value + } + + // Analyze the tensor operands + spv::IdImmediate tensorOperands = { false, uint32_t(spv::TensorOperandsMask::MaskNone) }; + bool pushExtraArg = false; + if (operands.size() > tensorMinOperandCount) { + auto enumVal = builder.getConstantScalar(operands[tensorMinOperandCount]); + + if (enumVal & uint32_t(spv::TensorOperandsMask::NontemporalARM)) { + tensorOperands.word |= uint32_t(spv::TensorOperandsMask::NontemporalARM); + } + if (enumVal & uint32_t(spv::TensorOperandsMask::OutOfBoundsValueARM)) { + tensorOperands.word |= uint32_t(spv::TensorOperandsMask::OutOfBoundsValueARM); + assert(operands.size() >= tensorMinOperandCount + 2 && + "TensorOperandsOutOfBoundsValueMask requires an additional value"); + pushExtraArg = true; + } + } + + // Append optional tensor operands if the mask was non-zero. + if (tensorOperands.word) { + idImmOps.push_back(tensorOperands); + if (pushExtraArg) + idImmOps.push_back(spv::IdImmediate(true, operands[tensorMinOperandCount + 1])); + } + + if (isWrite) { + builder.createNoResultOp(spv::Op::OpTensorWriteARM, idImmOps); + result = 0; + } else { + // Use the result argument type as the OpTensorReadARM result type. + const glslang::TType &resArgType = glslangOperands[2]->getAsTyped()->getType(); + spv::Id retType = convertGlslangToSpvType(resArgType); + result = builder.createOp(spv::Op::OpTensorReadARM, retType, idImmOps); + // Store the result to the result argument. + builder.createStore(result, operands[2]); + } + } else if (node->getOp() == glslang::EOpTensorSizeARM) { + // Expected operands are (tensor, dimension) + assert(operands.size() == 2); + + spv::Id tensorOp = operands[0]; + spv::Id dimOp = operands[1]; + assert(builder.isTensorTypeARM(builder.getTypeId(tensorOp)) && "operand #0 must be a tensor"); + + std::vector idImmOps; + idImmOps.push_back(spv::IdImmediate(true, tensorOp)); + idImmOps.push_back(spv::IdImmediate(true, dimOp)); + result = builder.createOp(spv::Op::OpTensorQuerySizeARM, resultType(), idImmOps); } else if (atomic) { // Handle all atomics glslang::TBasicType typeProxy = (node->getOp() == glslang::EOpAtomicStore) @@ -5007,6 +5129,12 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty case glslang::EbtBFloat16: spvType = builder.makeBFloat16Type(); break; + case glslang::EbtFloatE5M2: + spvType = builder.makeFloatE5M2Type(); + break; + case glslang::EbtFloatE4M3: + spvType = builder.makeFloatE4M3Type(); + break; case glslang::EbtInt8: spvType = builder.makeIntType(8); break; @@ -5257,6 +5385,11 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addCapability(spv::Capability::BFloat16CooperativeMatrixKHR); } + if (type.getBasicType() == glslang::EbtFloatE5M2 || type.getBasicType() == glslang::EbtFloatE4M3) { + builder.addExtension(spv::E_SPV_EXT_float8); + builder.addCapability(spv::Capability::Float8CooperativeMatrixEXT); + } + if (type.getBasicType() == glslang::EbtFloat16) builder.addCapability(spv::Capability::Float16); if (type.getBasicType() == glslang::EbtUint8 || type.getBasicType() == glslang::EbtInt8) { @@ -5266,10 +5399,29 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spv::Id scope = makeArraySizeId(*type.getTypeParameters()->arraySizes, 0); spv::Id rows = makeArraySizeId(*type.getTypeParameters()->arraySizes, 1); spv::Id cols = makeArraySizeId(*type.getTypeParameters()->arraySizes, 2); - spv::Id use = builder.makeUintConstant(type.getCoopMatKHRuse()); + spv::Id use = makeArraySizeId(*type.getTypeParameters()->arraySizes, 3, true); spvType = builder.makeCooperativeMatrixTypeKHR(spvType, scope, rows, cols, use); } + else if (type.isTensorARM()) { + builder.addCapability(spv::Capability::TensorsARM); + builder.addExtension(spv::E_SPV_ARM_tensors); + if (type.getBasicType() == glslang::EbtInt8 || type.getBasicType() == glslang::EbtUint8) { + builder.addCapability(spv::Capability::Int8); + } else if (type.getBasicType() == glslang::EbtInt16 || + type.getBasicType() == glslang::EbtUint16) { + builder.addCapability(spv::Capability::Int16); + } else if (type.getBasicType() == glslang::EbtInt64 || + type.getBasicType() == glslang::EbtUint64) { + builder.addCapability(spv::Capability::Int64); + } else if (type.getBasicType() == glslang::EbtFloat16) { + builder.addCapability(spv::Capability::Float16); + } + + spv::Id rank = makeArraySizeId(*type.getTypeParameters()->arraySizes, 0); + + spvType = builder.makeTensorTypeARM(spvType, rank); + } if (type.isCoopVecNV()) { builder.addCapability(spv::Capability::CooperativeVectorNV); @@ -6371,6 +6523,10 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& if (i == 2) lvalue = true; break; + case glslang::EOpConstructSaturated: + if (i == 0) + lvalue = true; + break; default: break; } @@ -8124,7 +8280,7 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora int vectorSize = builder.isVectorType(destType) ? builder.getNumTypeComponents(destType) : 0; - if (IsOpNumericConv(op)) { + if (IsOpNumericConv(op) || op == glslang::EOpConstructSaturated) { if (isTypeSignedInt(operandBasicType) && isTypeFloat(resultBasicType)) { convOp = spv::Op::OpConvertSToF; } @@ -10583,6 +10739,12 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtBFloat16: spvConsts.push_back(builder.makeBFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; + case glslang::EbtFloatE5M2: + spvConsts.push_back(builder.makeFloatE5M2Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); + break; + case glslang::EbtFloatE4M3: + spvConsts.push_back(builder.makeFloatE4M3Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); + break; default: assert(0); break; @@ -10638,6 +10800,12 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtBFloat16: scalar = builder.makeBFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; + case glslang::EbtFloatE5M2: + scalar = builder.makeFloatE5M2Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); + break; + case glslang::EbtFloatE4M3: + scalar = builder.makeFloatE4M3Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); + break; case glslang::EbtReference: scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant); scalar = builder.createUnaryOp(spv::Op::OpBitcast, typeId, scalar); diff --git a/3rdparty/glslang/SPIRV/SpvBuilder.cpp b/3rdparty/glslang/SPIRV/SpvBuilder.cpp index 0f953ac5a..5a5affacd 100644 --- a/3rdparty/glslang/SPIRV/SpvBuilder.cpp +++ b/3rdparty/glslang/SPIRV/SpvBuilder.cpp @@ -341,6 +341,80 @@ Id Builder::makeBFloat16Type() return type->getResultId(); } +Id Builder::makeFloatE5M2Type() +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeFloat)].size(); ++t) { + type = groupedTypes[enumCast(Op::OpTypeFloat)][t]; + if (type->getNumOperands() != 2) { + continue; + } + if (type->getImmediateOperand(0) == (unsigned)8 && + type->getImmediateOperand(1) == FPEncoding::Float8E5M2EXT) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), NoType, Op::OpTypeFloat); + type->addImmediateOperand(8); + type->addImmediateOperand(FPEncoding::Float8E5M2EXT); + groupedTypes[enumCast(Op::OpTypeFloat)].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + addExtension(spv::E_SPV_EXT_float8); + addCapability(Capability::Float8EXT); + +#if 0 + // XXX not supported + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeFloatDebugType(width); + debugId[type->getResultId()] = debugResultId; + } +#endif + + return type->getResultId(); +} + +Id Builder::makeFloatE4M3Type() +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeFloat)].size(); ++t) { + type = groupedTypes[enumCast(Op::OpTypeFloat)][t]; + if (type->getNumOperands() != 2) { + continue; + } + if (type->getImmediateOperand(0) == (unsigned)8 && + type->getImmediateOperand(1) == FPEncoding::Float8E4M3EXT) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), NoType, Op::OpTypeFloat); + type->addImmediateOperand(8); + type->addImmediateOperand(FPEncoding::Float8E4M3EXT); + groupedTypes[enumCast(Op::OpTypeFloat)].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + addExtension(spv::E_SPV_EXT_float8); + addCapability(Capability::Float8EXT); + +#if 0 + // XXX not supported + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeFloatDebugType(width); + debugId[type->getResultId()] = debugResultId; + } +#endif + + return type->getResultId(); +} + // Make a struct without checking for duplication. // See makeStructResultType() for non-decorated structs // needed as the result of some instructions, which does @@ -578,6 +652,26 @@ Id Builder::makeCooperativeVectorTypeNV(Id componentType, Id components) return type->getResultId(); } +Id Builder::makeTensorTypeARM(Id elementType, Id rank) +{ + // See if an OpTypeTensorARM with same element type and rank already exists. + for (int t = 0; t < (int)groupedTypes[enumCast(Op::OpTypeTensorARM)].size(); ++t) { + const Instruction *type = groupedTypes[enumCast(Op::OpTypeTensorARM)][t]; + if (type->getIdOperand(0) == elementType && type->getIdOperand(1) == rank) + return type->getResultId(); + } + + // Not found, make it. + std::unique_ptr type(new Instruction(getUniqueId(), NoType, Op::OpTypeTensorARM)); + type->addIdOperand(elementType); + type->addIdOperand(rank); + groupedTypes[enumCast(Op::OpTypeTensorARM)].push_back(type.get()); + module.mapInstruction(type.get()); + Id resultID = type->getResultId(); + constantsTypesGlobals.push_back(std::move(type)); + return resultID; +} + Id Builder::makeGenericType(spv::Op opcode, std::vector& operands) { // try to find it @@ -1897,6 +1991,62 @@ Id Builder::makeBFloat16Constant(float bf16, bool specConstant) return c->getResultId(); } +Id Builder::makeFloatE5M2Constant(float fe5m2, bool specConstant) +{ + Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; + Id typeId = makeFloatE5M2Type(); + + spvutils::HexFloat> fVal(fe5m2); + spvutils::HexFloat> fe5m2Val(0); + fVal.castTo(fe5m2Val, spvutils::kRoundToZero); + + unsigned value = fe5m2Val.value().getAsFloat().get_value(); + + // See if we already made it. Applies only to regular constants, because specialization constants + // must remain distinct for the purpose of applying a SpecId decoration. + if (!specConstant) { + Id existing = findScalarConstant(Op::OpTypeFloat, opcode, typeId, value); + if (existing) + return existing; + } + + Instruction* c = new Instruction(getUniqueId(), typeId, opcode); + c->addImmediateOperand(value); + constantsTypesGlobals.push_back(std::unique_ptr(c)); + groupedConstants[enumCast(Op::OpTypeFloat)].push_back(c); + module.mapInstruction(c); + + return c->getResultId(); +} + +Id Builder::makeFloatE4M3Constant(float fe4m3, bool specConstant) +{ + Op opcode = specConstant ? Op::OpSpecConstant : Op::OpConstant; + Id typeId = makeFloatE4M3Type(); + + spvutils::HexFloat> fVal(fe4m3); + spvutils::HexFloat> fe4m3Val(0); + fVal.castTo(fe4m3Val, spvutils::kRoundToZero); + + unsigned value = fe4m3Val.value().getAsFloat().get_value(); + + // See if we already made it. Applies only to regular constants, because specialization constants + // must remain distinct for the purpose of applying a SpecId decoration. + if (!specConstant) { + Id existing = findScalarConstant(Op::OpTypeFloat, opcode, typeId, value); + if (existing) + return existing; + } + + Instruction* c = new Instruction(getUniqueId(), typeId, opcode); + c->addImmediateOperand(value); + constantsTypesGlobals.push_back(std::unique_ptr(c)); + groupedConstants[enumCast(Op::OpTypeFloat)].push_back(c); + module.mapInstruction(c); + + return c->getResultId(); +} + Id Builder::makeFpConstant(Id type, double d, bool specConstant) { const int width = getScalarTypeWidth(type); diff --git a/3rdparty/glslang/SPIRV/SpvBuilder.h b/3rdparty/glslang/SPIRV/SpvBuilder.h index f5aa17be9..9b5bc9e41 100644 --- a/3rdparty/glslang/SPIRV/SpvBuilder.h +++ b/3rdparty/glslang/SPIRV/SpvBuilder.h @@ -209,6 +209,8 @@ public: Id makeUintType(int width) { return makeIntegerType(width, false); } Id makeFloatType(int width); Id makeBFloat16Type(); + Id makeFloatE5M2Type(); + Id makeFloatE4M3Type(); Id makeStructType(const std::vector& members, const char* name, bool const compilerGenerated = true); Id makeStructResultType(Id type0, Id type1); Id makeVectorType(Id component, int size); @@ -223,6 +225,7 @@ public: Id makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols); Id makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType); Id makeCooperativeVectorTypeNV(Id componentType, Id components); + Id makeTensorTypeARM(Id elementType, Id rank); Id makeGenericType(spv::Op opcode, std::vector& operands); // SPIR-V NonSemantic Shader DebugInfo Instructions @@ -320,6 +323,7 @@ public: } bool isTensorViewType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeTensorViewNV; } bool isCooperativeVectorType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeCooperativeVectorNV; } + bool isTensorTypeARM(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeTensorARM; } bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); } bool isImageType(Id typeId) const { return getTypeClass(typeId) == Op::OpTypeImage; } @@ -414,6 +418,8 @@ public: Id makeDoubleConstant(double d, bool specConstant = false); Id makeFloat16Constant(float f16, bool specConstant = false); Id makeBFloat16Constant(float bf16, bool specConstant = false); + Id makeFloatE5M2Constant(float fe5m2, bool specConstant = false); + Id makeFloatE4M3Constant(float fe4m3, bool specConstant = false); Id makeFpConstant(Id type, double d, bool specConstant = false); Id importNonSemanticShaderDebugInfoInstructions(); diff --git a/3rdparty/glslang/SPIRV/disassemble.cpp b/3rdparty/glslang/SPIRV/disassemble.cpp index a73399693..9b85ff28e 100644 --- a/3rdparty/glslang/SPIRV/disassemble.cpp +++ b/3rdparty/glslang/SPIRV/disassemble.cpp @@ -61,7 +61,7 @@ namespace spv { #include "GLSL.ext.QCOM.h" } } -const char* GlslStd450DebugNames[spv::GLSLstd450Count]; +static const char* GlslStd450DebugNames[spv::GLSLstd450Count]; namespace spv { @@ -382,9 +382,22 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, break; case Op::OpTypeFloat: switch (stream[word]) { + case 8: case 16: - if (numOperands > 1 && stream[word+1] == spv::FPEncoding::BFloat16KHR) { - idDescriptor[resultId] = "bfloat16_t"; + if (numOperands > 1) { + switch (stream[word+1]) { + default: + assert(0); [[fallthrough]]; + case (int)spv::FPEncoding::BFloat16KHR: + idDescriptor[resultId] = "bfloat16_t"; + break; + case (int)spv::FPEncoding::Float8E4M3EXT: + idDescriptor[resultId] = "floate4m3_t"; + break; + case (int)spv::FPEncoding::Float8E5M2EXT: + idDescriptor[resultId] = "floate5m2_t"; + break; + } } else { idDescriptor[resultId] = "float16_t"; } diff --git a/3rdparty/glslang/SPIRV/doc.cpp b/3rdparty/glslang/SPIRV/doc.cpp index db097a7ac..b0189a533 100644 --- a/3rdparty/glslang/SPIRV/doc.cpp +++ b/3rdparty/glslang/SPIRV/doc.cpp @@ -344,6 +344,8 @@ const char* DecorationString(int decoration) case (int)Decoration::AliasedPointerEXT: return "DecorationAliasedPointerEXT"; case (int)Decoration::HitObjectShaderRecordBufferNV: return "DecorationHitObjectShaderRecordBufferNV"; + + case (int)Decoration::SaturatedToLargestFloat8NormalConversionEXT: return "DecorationSaturatedToLargestFloat8NormalConversionEXT"; } } @@ -975,7 +977,7 @@ const char* CapabilityString(int info) case (int)Capability::SubgroupBallotKHR: return "SubgroupBallotKHR"; case (int)Capability::DrawParameters: return "DrawParameters"; case (int)Capability::SubgroupVoteKHR: return "SubgroupVoteKHR"; - case (int)Capability::GroupNonUniformRotateKHR: return "CapabilityGroupNonUniformRotateKHR"; + case (int)Capability::GroupNonUniformRotateKHR: return "GroupNonUniformRotateKHR"; case (int)Capability::StorageUniformBufferBlock16: return "StorageUniformBufferBlock16"; case (int)Capability::StorageUniform16: return "StorageUniform16"; @@ -1021,7 +1023,7 @@ const char* CapabilityString(int info) case (int)Capability::RayTracingPositionFetchKHR: return "RayTracingPositionFetchKHR"; case (int)Capability::DisplacementMicromapNV: return "DisplacementMicromapNV"; case (int)Capability::RayTracingOpacityMicromapEXT: return "RayTracingOpacityMicromapEXT"; - case (int)Capability::RayTracingDisplacementMicromapNV: return "CapabilityRayTracingDisplacementMicromapNV"; + case (int)Capability::RayTracingDisplacementMicromapNV: return "RayTracingDisplacementMicromapNV"; case (int)Capability::RayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR"; case (int)Capability::ComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; case (int)Capability::ComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; @@ -1069,15 +1071,16 @@ const char* CapabilityString(int info) case (int)Capability::CooperativeVectorNV: return "CooperativeVectorNV"; case (int)Capability::CooperativeVectorTrainingNV: return "CooperativeVectorTrainingNV"; - case (int)Capability::FragmentShaderSampleInterlockEXT: return "CapabilityFragmentShaderSampleInterlockEXT"; - case (int)Capability::FragmentShaderPixelInterlockEXT: return "CapabilityFragmentShaderPixelInterlockEXT"; - case (int)Capability::FragmentShaderShadingRateInterlockEXT: return "CapabilityFragmentShaderShadingRateInterlockEXT"; + case (int)Capability::FragmentShaderSampleInterlockEXT: return "FragmentShaderSampleInterlockEXT"; + case (int)Capability::FragmentShaderPixelInterlockEXT: return "FragmentShaderPixelInterlockEXT"; + case (int)Capability::FragmentShaderShadingRateInterlockEXT: return "FragmentShaderShadingRateInterlockEXT"; case (int)Capability::TileImageColorReadAccessEXT: return "TileImageColorReadAccessEXT"; case (int)Capability::TileImageDepthReadAccessEXT: return "TileImageDepthReadAccessEXT"; case (int)Capability::TileImageStencilReadAccessEXT: return "TileImageStencilReadAccessEXT"; case (int)Capability::CooperativeMatrixLayoutsARM: return "CooperativeMatrixLayoutsARM"; + case (int)Capability::TensorsARM: return "TensorsARM"; case (int)Capability::FragmentShadingRateKHR: return "FragmentShadingRateKHR"; @@ -1087,7 +1090,7 @@ const char* CapabilityString(int info) case (int)Capability::QuadControlKHR: return "QuadControlKHR"; case (int)Capability::Int64ImageEXT: return "Int64ImageEXT"; - case (int)Capability::IntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; + case (int)Capability::IntegerFunctions2INTEL: return "IntegerFunctions2INTEL"; case (int)Capability::ExpectAssumeKHR: return "ExpectAssumeKHR"; @@ -1098,9 +1101,9 @@ const char* CapabilityString(int info) case (int)Capability::AtomicFloat32MinMaxEXT: return "AtomicFloat32MinMaxEXT"; case (int)Capability::AtomicFloat64MinMaxEXT: return "AtomicFloat64MinMaxEXT"; - case (int)Capability::WorkgroupMemoryExplicitLayoutKHR: return "CapabilityWorkgroupMemoryExplicitLayoutKHR"; - case (int)Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR"; - case (int)Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR"; + case (int)Capability::WorkgroupMemoryExplicitLayoutKHR: return "WorkgroupMemoryExplicitLayoutKHR"; + case (int)Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR: return "WorkgroupMemoryExplicitLayout8BitAccessKHR"; + case (int)Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR: return "WorkgroupMemoryExplicitLayout16BitAccessKHR"; case (int)Capability::CoreBuiltinsARM: return "CoreBuiltinsARM"; case (int)Capability::ShaderInvocationReorderNV: return "ShaderInvocationReorderNV"; @@ -1111,7 +1114,9 @@ const char* CapabilityString(int info) case (int)Capability::TileShadingQCOM: return "TileShadingQCOM"; case (int)Capability::TextureBlockMatch2QCOM: return "TextureBlockMatch2QCOM"; - case (int)Capability::ReplicatedCompositesEXT: return "CapabilityReplicatedCompositesEXT"; + case (int)Capability::CooperativeMatrixConversionQCOM: return "CooperativeMatrixConversionQCOM"; + + case (int)Capability::ReplicatedCompositesEXT: return "ReplicatedCompositesEXT"; case (int)Capability::DotProductKHR: return "DotProductKHR"; case (int)Capability::DotProductInputAllKHR: return "DotProductInputAllKHR"; @@ -1123,9 +1128,12 @@ const char* CapabilityString(int info) case (int)Capability::RayTracingSpheresGeometryNV: return "RayTracingSpheresGeometryNV"; case (int)Capability::RayTracingLinearSweptSpheresGeometryNV: return "RayTracingLinearSweptSpheresGeometryNV"; - case (int)Capability::BFloat16TypeKHR: return "CapabilityBFloat16TypeKHR"; - case (int)Capability::BFloat16DotProductKHR: return "CapabilityBFloat16DotProductKHR"; - case (int)Capability::BFloat16CooperativeMatrixKHR: return "CapabilityBFloat16CooperativeMatrixKHR"; + case (int)Capability::BFloat16TypeKHR: return "BFloat16TypeKHR"; + case (int)Capability::BFloat16DotProductKHR: return "BFloat16DotProductKHR"; + case (int)Capability::BFloat16CooperativeMatrixKHR: return "BFloat16CooperativeMatrixKHR"; + + case (int)Capability::Float8EXT: return "Float8EXT"; + case (int)Capability::Float8CooperativeMatrixEXT: return "Float8CooperativeMatrixEXT"; default: return "Bad"; } @@ -1621,6 +1629,11 @@ const char* OpcodeString(int op) case (int)Op::OpTensorViewSetStrideNV: return "OpTensorViewSetStrideNV"; case (int)Op::OpTensorViewSetClipNV: return "OpTensorViewSetClipNV"; + case (int)Op::OpTypeTensorARM: return "OpTypeTensorARM"; + case (int)Op::OpTensorReadARM: return "OpTensorReadARM"; + case (int)Op::OpTensorWriteARM: return "OpTensorWriteARM"; + case (int)Op::OpTensorQuerySizeARM: return "OpTensorQuerySizeARM"; + case (int)Op::OpTypeCooperativeVectorNV: return "OpTypeCooperativeVectorNV"; case (int)Op::OpCooperativeVectorMatrixMulNV: return "OpCooperativeVectorMatrixMulNV"; case (int)Op::OpCooperativeVectorMatrixMulAddNV: return "OpCooperativeVectorMatrixMulAddNV"; @@ -1689,6 +1702,11 @@ const char* OpcodeString(int op) case (int)Op::OpImageBlockMatchGatherSSDQCOM: return "OpImageBlockMatchGatherSSDQCOM"; case (int)Op::OpImageBlockMatchGatherSADQCOM: return "OpImageBlockMatchGatherSADQCOM"; + case (int)Op::OpBitCastArrayQCOM: return "OpBitCastArrayQCOM"; + case (int)Op::OpCompositeConstructCoopMatQCOM: return "OpCompositeConstructCoopMatQCOM"; + case (int)Op::OpCompositeExtractCoopMatQCOM: return "OpCompositeExtractCoopMatQCOM"; + case (int)Op::OpExtractSubArrayQCOM: return "OpExtractSubArrayQCOM"; + case (int)Op::OpConstantCompositeReplicateEXT: return "OpConstantCompositeReplicateEXT"; case (int)Op::OpSpecConstantCompositeReplicateEXT: return "OpSpecConstantCompositeReplicateEXT"; case (int)Op::OpCompositeConstructReplicateEXT: return "OpCompositeConstructReplicateEXT"; @@ -1828,6 +1846,10 @@ void Parameterize() InstructionDesc[enumCast(Op::OpCooperativeVectorOuterProductAccumulateNV)].setResultAndType(false, false); InstructionDesc[enumCast(Op::OpCooperativeVectorReduceSumAccumulateNV)].setResultAndType(false, false); + InstructionDesc[enumCast(Op::OpTypeTensorARM)].setResultAndType(true, false); + InstructionDesc[enumCast(Op::OpTensorReadARM)].setResultAndType(true, true); + InstructionDesc[enumCast(Op::OpTensorWriteARM)].setResultAndType(false, false); + // Specific additional context-dependent operands ExecutionModeOperands[enumCast(ExecutionMode::Invocations)].push(OperandLiteralNumber, "'Number of <>'"); @@ -3709,6 +3731,19 @@ void Parameterize() InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].operands.push(OperandImageOperands, "", true); InstructionDesc[enumCast(Op::OpImageBlockMatchGatherSADQCOM)].setResultAndType(true, true); + InstructionDesc[enumCast(Op::OpBitCastArrayQCOM)].operands.push(OperandId, "'source array'"); + InstructionDesc[enumCast(Op::OpBitCastArrayQCOM)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpCompositeConstructCoopMatQCOM)].operands.push(OperandId, "'source array'"); + InstructionDesc[enumCast(Op::OpCompositeConstructCoopMatQCOM)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpCompositeExtractCoopMatQCOM)].operands.push(OperandId, "'source cooperative matrix'"); + InstructionDesc[enumCast(Op::OpCompositeExtractCoopMatQCOM)].setResultAndType(true, true); + + InstructionDesc[enumCast(Op::OpExtractSubArrayQCOM)].operands.push(OperandId, "'source array'"); + InstructionDesc[enumCast(Op::OpExtractSubArrayQCOM)].operands.push(OperandId, "'start index'"); + InstructionDesc[enumCast(Op::OpExtractSubArrayQCOM)].setResultAndType(true, true); + InstructionDesc[enumCast(Op::OpConstantCompositeReplicateEXT)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpSpecConstantCompositeReplicateEXT)].operands.push(OperandId, "'Value'"); InstructionDesc[enumCast(Op::OpCompositeConstructReplicateEXT)].operands.push(OperandId, "'Value'"); @@ -3800,6 +3835,24 @@ void Parameterize() InstructionDesc[enumCast(Op::OpSUDotAccSatKHR)].operands.push(OperandId, "'Vector2'"); InstructionDesc[enumCast(Op::OpSUDotAccSatKHR)].operands.push(OperandId, "'Accumulator'"); InstructionDesc[enumCast(Op::OpSUDotAccSatKHR)].operands.push(OperandLiteralNumber, "'PackedVectorFormat'"); + + InstructionDesc[enumCast(Op::OpTypeTensorARM)].operands.push(OperandId, "'Element Type'"); + InstructionDesc[enumCast(Op::OpTypeTensorARM)].operands.push(OperandId, "'Rank'"); + + InstructionDesc[enumCast(Op::OpTensorReadARM)].operands.push(OperandId, "'Tensor'"); + InstructionDesc[enumCast(Op::OpTensorReadARM)].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[enumCast(Op::OpTensorReadARM)].operands.push(OperandLiteralNumber, "'Tensor Operand'", true); + InstructionDesc[enumCast(Op::OpTensorReadARM)].operands.push(OperandVariableIds, "'Tensor Operands'"); + + InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandId, "'Tensor'"); + InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandId, "'Object'"); + InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandLiteralNumber, "'Tensor Operand'", true); + InstructionDesc[enumCast(Op::OpTensorWriteARM)].operands.push(OperandVariableIds, "'Tensor Operands'"); + + InstructionDesc[enumCast(Op::OpTensorQuerySizeARM)].operands.push(OperandId, "'Tensor'"); + InstructionDesc[enumCast(Op::OpTensorQuerySizeARM)].operands.push(OperandId, "'Dimension'", true); + }); } diff --git a/3rdparty/glslang/SPIRV/hex_float.h b/3rdparty/glslang/SPIRV/hex_float.h index 785e8af11..c2259e3f4 100644 --- a/3rdparty/glslang/SPIRV/hex_float.h +++ b/3rdparty/glslang/SPIRV/hex_float.h @@ -50,6 +50,52 @@ class Float16 { uint16_t val; }; +class FloatE5M2 { + public: + FloatE5M2(uint8_t v) : val(v) {} + FloatE5M2() {} + static bool isNan(const FloatE5M2& val) { + return ((val.val & 0x7C) == 0x7C) && ((val.val & 0x3) != 0); + } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(const FloatE5M2& val) { + return ((val.val & 0x7C) == 0x7C) && ((val.val & 0x3) == 0); + } + FloatE5M2(const FloatE5M2& other) { val = other.val; } + uint8_t get_value() const { return val; } + + // Returns the maximum normal value. + static FloatE5M2 max() { return FloatE5M2(0x7B); } + // Returns the lowest normal value. + static FloatE5M2 lowest() { return FloatE5M2(0xFB); } + + private: + uint8_t val; +}; + +class FloatE4M3 { + public: + FloatE4M3(uint8_t v) : val(v) {} + FloatE4M3() {} + static bool isNan(const FloatE4M3& val) { + return (val.val & 0x7F) == 0x7F; + } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(const FloatE4M3&) { + return false; + } + FloatE4M3(const FloatE4M3& other) { val = other.val; } + uint8_t get_value() const { return val; } + + // Returns the maximum normal value. + static FloatE4M3 max() { return FloatE4M3(0x7E); } + // Returns the lowest normal value. + static FloatE4M3 lowest() { return FloatE4M3(0xFE); } + + private: + uint8_t val; +}; + // To specialize this type, you must override uint_type to define // an unsigned integer that can fit your floating point type. // You must also add a isNan function that returns true if @@ -95,6 +141,30 @@ struct FloatProxyTraits { static Float16 lowest() { return Float16::lowest(); } }; +template <> +struct FloatProxyTraits { + typedef uint8_t uint_type; + static bool isNan(FloatE5M2 f) { return FloatE5M2::isNan(f); } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(FloatE5M2 f) { return FloatE5M2::isInfinity(f); } + // Returns the maximum normal value. + static FloatE5M2 max() { return FloatE5M2::max(); } + // Returns the lowest normal value. + static FloatE5M2 lowest() { return FloatE5M2::lowest(); } +}; + +template <> +struct FloatProxyTraits { + typedef uint8_t uint_type; + static bool isNan(FloatE4M3 f) { return FloatE4M3::isNan(f); } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(FloatE4M3 f) { return FloatE4M3::isInfinity(f); } + // Returns the maximum normal value. + static FloatE4M3 max() { return FloatE4M3::max(); } + // Returns the lowest normal value. + static FloatE4M3 lowest() { return FloatE4M3::lowest(); } +}; + // Since copying a floating point number (especially if it is NaN) // does not guarantee that bits are preserved, this class lets us // store the type and use it as a float when necessary. @@ -182,6 +252,7 @@ struct HexFloatTraits { // The bias of the exponent. (How much we need to subtract from the stored // value to get the correct value.) static const uint32_t exponent_bias = 0; + static bool supportsInfinity() { return true; } }; // Traits for IEEE float. @@ -196,6 +267,7 @@ struct HexFloatTraits> { static const uint_type num_exponent_bits = 8; static const uint_type num_fraction_bits = 23; static const uint_type exponent_bias = 127; + static bool supportsInfinity() { return true; } }; // Traits for IEEE double. @@ -210,6 +282,7 @@ struct HexFloatTraits> { static const uint_type num_exponent_bits = 11; static const uint_type num_fraction_bits = 52; static const uint_type exponent_bias = 1023; + static bool supportsInfinity() { return true; } }; // Traits for IEEE half. @@ -224,6 +297,33 @@ struct HexFloatTraits> { static const uint_type num_exponent_bits = 5; static const uint_type num_fraction_bits = 10; static const uint_type exponent_bias = 15; + static bool supportsInfinity() { return true; } +}; + +template <> +struct HexFloatTraits> { + typedef uint8_t uint_type; + typedef int8_t int_type; + typedef uint8_t underlying_type; + typedef uint8_t native_type; + static const uint_type num_used_bits = 8; + static const uint_type num_exponent_bits = 5; + static const uint_type num_fraction_bits = 2; + static const uint_type exponent_bias = 15; + static bool supportsInfinity() { return true; } +}; + +template <> +struct HexFloatTraits> { + typedef uint8_t uint_type; + typedef int8_t int_type; + typedef uint8_t underlying_type; + typedef uint8_t native_type; + static const uint_type num_used_bits = 8; + static const uint_type num_exponent_bits = 4; + static const uint_type num_fraction_bits = 3; + static const uint_type exponent_bias = 7; + static bool supportsInfinity() { return false; } }; enum round_direction { @@ -243,6 +343,7 @@ class HexFloat { typedef typename Traits::int_type int_type; typedef typename Traits::underlying_type underlying_type; typedef typename Traits::native_type native_type; + using Traits_T = Traits; explicit HexFloat(T f) : value_(f) {} @@ -584,14 +685,22 @@ class HexFloat { (getBits() & exponent_mask) == exponent_mask && significand != 0; bool is_inf = !is_nan && - ((exponent + carried) > static_cast(other_T::exponent_bias) || + (((exponent + carried) > static_cast(other_T::exponent_bias) && other_T::Traits_T::supportsInfinity()) || + ((exponent + carried) > static_cast(other_T::exponent_bias + 1) && !other_T::Traits_T::supportsInfinity()) || (significand == 0 && (getBits() & exponent_mask) == exponent_mask)); // If we are Nan or Inf we should pass that through. if (is_inf) { - other.set_value(BitwiseCast( - static_cast( - (negate ? other_T::sign_mask : 0) | other_T::exponent_mask))); + if (other_T::Traits_T::supportsInfinity()) { + // encode as +/-inf + other.set_value(BitwiseCast( + static_cast( + (negate ? other_T::sign_mask : 0) | other_T::exponent_mask))); + } else { + // encode as +/-nan + other.set_value(BitwiseCast( + static_cast(negate ? ~0 : ~other_T::sign_mask))); + } return; } if (is_nan) { diff --git a/3rdparty/glslang/SPIRV/spirv.hpp11 b/3rdparty/glslang/SPIRV/spirv.hpp11 index e9e36c37f..2ad294db8 100644 --- a/3rdparty/glslang/SPIRV/spirv.hpp11 +++ b/3rdparty/glslang/SPIRV/spirv.hpp11 @@ -547,6 +547,7 @@ enum class Decoration : unsigned { MaxByteOffset = 45, AlignmentId = 46, MaxByteOffsetId = 47, + SaturatedToLargestFloat8NormalConversionEXT = 4216, NoSignedWrap = 4469, NoUnsignedWrap = 4470, WeightTextureQCOM = 4487, @@ -1069,7 +1070,10 @@ enum class Capability : unsigned { TileImageColorReadAccessEXT = 4166, TileImageDepthReadAccessEXT = 4167, TileImageStencilReadAccessEXT = 4168, + TensorsARM = 4174, CooperativeMatrixLayoutsARM = 4201, + Float8EXT = 4212, + Float8CooperativeMatrixEXT = 4213, FragmentShadingRateKHR = 4422, SubgroupBallotKHR = 4423, DrawParameters = 4427, @@ -1106,6 +1110,7 @@ enum class Capability : unsigned { TextureBoxFilterQCOM = 4485, TextureBlockMatchQCOM = 4486, TileShadingQCOM = 4495, + CooperativeMatrixConversionQCOM = 4496, TextureBlockMatch2QCOM = 4498, Float16ImageAMD = 5008, ImageGatherBiasLodAMD = 5009, @@ -1457,6 +1462,18 @@ enum class TensorAddressingOperandsMask : unsigned { DecodeFunc = 0x00000002, }; +enum class TensorOperandsShift : unsigned { + NontemporalARM = 0, + OutOfBoundsValueARM = 1, + Max = 0x7fffffff, +}; + +enum class TensorOperandsMask : unsigned { + MaskNone = 0, + NontemporalARM = 0x00000001, + OutOfBoundsValueARM = 0x00000002, +}; + enum class InitializationModeQualifier : unsigned { InitOnDeviceReprogramINTEL = 0, InitOnDeviceResetINTEL = 1, @@ -1543,6 +1560,8 @@ enum class RawAccessChainOperandsMask : unsigned { enum class FPEncoding : unsigned { BFloat16KHR = 0, + Float8E4M3EXT = 4214, + Float8E5M2EXT = 4215, Max = 0x7fffffff, }; @@ -1921,6 +1940,10 @@ enum class Op : unsigned { OpColorAttachmentReadEXT = 4160, OpDepthAttachmentReadEXT = 4161, OpStencilAttachmentReadEXT = 4162, + OpTypeTensorARM = 4163, + OpTensorReadARM = 4164, + OpTensorWriteARM = 4165, + OpTensorQuerySizeARM = 4166, OpTerminateInvocation = 4416, OpTypeUntypedPointerKHR = 4417, OpUntypedVariableKHR = 4418, @@ -1974,10 +1997,14 @@ enum class Op : unsigned { OpImageBoxFilterQCOM = 4481, OpImageBlockMatchSSDQCOM = 4482, OpImageBlockMatchSADQCOM = 4483, + OpBitCastArrayQCOM = 4497, OpImageBlockMatchWindowSSDQCOM = 4500, OpImageBlockMatchWindowSADQCOM = 4501, OpImageBlockMatchGatherSSDQCOM = 4502, OpImageBlockMatchGatherSADQCOM = 4503, + OpCompositeConstructCoopMatQCOM = 4540, + OpCompositeExtractCoopMatQCOM = 4541, + OpExtractSubArrayQCOM = 4542, OpGroupIAddNonUniformAMD = 5000, OpGroupFAddNonUniformAMD = 5001, OpGroupFMinNonUniformAMD = 5002, @@ -2730,6 +2757,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case Op::OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case Op::OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case Op::OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; + case Op::OpTypeTensorARM: *hasResult = true; *hasResultType = false; break; + case Op::OpTensorReadARM: *hasResult = true; *hasResultType = true; break; + case Op::OpTensorWriteARM: *hasResult = false; *hasResultType = false; break; + case Op::OpTensorQuerySizeARM: *hasResult = true; *hasResultType = true; break; case Op::OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; case Op::OpTypeUntypedPointerKHR: *hasResult = true; *hasResultType = false; break; case Op::OpUntypedVariableKHR: *hasResult = true; *hasResultType = true; break; @@ -2777,10 +2808,14 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case Op::OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break; + case Op::OpBitCastArrayQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break; + case Op::OpCompositeConstructCoopMatQCOM: *hasResult = true; *hasResultType = true; break; + case Op::OpCompositeExtractCoopMatQCOM: *hasResult = true; *hasResultType = true; break; + case Op::OpExtractSubArrayQCOM: *hasResult = true; *hasResultType = true; break; case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; @@ -3596,6 +3631,7 @@ inline const char* DecorationToString(Decoration value) { case Decoration::MaxByteOffset: return "MaxByteOffset"; case Decoration::AlignmentId: return "AlignmentId"; case Decoration::MaxByteOffsetId: return "MaxByteOffsetId"; + case Decoration::SaturatedToLargestFloat8NormalConversionEXT: return "SaturatedToLargestFloat8NormalConversionEXT"; case Decoration::NoSignedWrap: return "NoSignedWrap"; case Decoration::NoUnsignedWrap: return "NoUnsignedWrap"; case Decoration::WeightTextureQCOM: return "WeightTextureQCOM"; @@ -3938,7 +3974,10 @@ inline const char* CapabilityToString(Capability value) { case Capability::TileImageColorReadAccessEXT: return "TileImageColorReadAccessEXT"; case Capability::TileImageDepthReadAccessEXT: return "TileImageDepthReadAccessEXT"; case Capability::TileImageStencilReadAccessEXT: return "TileImageStencilReadAccessEXT"; + case Capability::TensorsARM: return "TensorsARM"; case Capability::CooperativeMatrixLayoutsARM: return "CooperativeMatrixLayoutsARM"; + case Capability::Float8EXT: return "Float8EXT"; + case Capability::Float8CooperativeMatrixEXT: return "Float8CooperativeMatrixEXT"; case Capability::FragmentShadingRateKHR: return "FragmentShadingRateKHR"; case Capability::SubgroupBallotKHR: return "SubgroupBallotKHR"; case Capability::DrawParameters: return "DrawParameters"; @@ -3973,6 +4012,7 @@ inline const char* CapabilityToString(Capability value) { case Capability::TextureBoxFilterQCOM: return "TextureBoxFilterQCOM"; case Capability::TextureBlockMatchQCOM: return "TextureBlockMatchQCOM"; case Capability::TileShadingQCOM: return "TileShadingQCOM"; + case Capability::CooperativeMatrixConversionQCOM: return "CooperativeMatrixConversionQCOM"; case Capability::TextureBlockMatch2QCOM: return "TextureBlockMatch2QCOM"; case Capability::Float16ImageAMD: return "Float16ImageAMD"; case Capability::ImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD"; @@ -4277,6 +4317,8 @@ inline const char* NamedMaximumNumberOfRegistersToString(NamedMaximumNumberOfReg inline const char* FPEncodingToString(FPEncoding value) { switch (value) { case FPEncoding::BFloat16KHR: return "BFloat16KHR"; + case FPEncoding::Float8E4M3EXT: return "Float8E4M3EXT"; + case FPEncoding::Float8E5M2EXT: return "Float8E5M2EXT"; default: return "Unknown"; } } @@ -4661,6 +4703,10 @@ inline const char* OpToString(Op value) { case Op::OpColorAttachmentReadEXT: return "OpColorAttachmentReadEXT"; case Op::OpDepthAttachmentReadEXT: return "OpDepthAttachmentReadEXT"; case Op::OpStencilAttachmentReadEXT: return "OpStencilAttachmentReadEXT"; + case Op::OpTypeTensorARM: return "OpTypeTensorARM"; + case Op::OpTensorReadARM: return "OpTensorReadARM"; + case Op::OpTensorWriteARM: return "OpTensorWriteARM"; + case Op::OpTensorQuerySizeARM: return "OpTensorQuerySizeARM"; case Op::OpTerminateInvocation: return "OpTerminateInvocation"; case Op::OpTypeUntypedPointerKHR: return "OpTypeUntypedPointerKHR"; case Op::OpUntypedVariableKHR: return "OpUntypedVariableKHR"; @@ -4708,10 +4754,14 @@ inline const char* OpToString(Op value) { case Op::OpImageBoxFilterQCOM: return "OpImageBoxFilterQCOM"; case Op::OpImageBlockMatchSSDQCOM: return "OpImageBlockMatchSSDQCOM"; case Op::OpImageBlockMatchSADQCOM: return "OpImageBlockMatchSADQCOM"; + case Op::OpBitCastArrayQCOM: return "OpBitCastArrayQCOM"; case Op::OpImageBlockMatchWindowSSDQCOM: return "OpImageBlockMatchWindowSSDQCOM"; case Op::OpImageBlockMatchWindowSADQCOM: return "OpImageBlockMatchWindowSADQCOM"; case Op::OpImageBlockMatchGatherSSDQCOM: return "OpImageBlockMatchGatherSSDQCOM"; case Op::OpImageBlockMatchGatherSADQCOM: return "OpImageBlockMatchGatherSADQCOM"; + case Op::OpCompositeConstructCoopMatQCOM: return "OpCompositeConstructCoopMatQCOM"; + case Op::OpCompositeExtractCoopMatQCOM: return "OpCompositeExtractCoopMatQCOM"; + case Op::OpExtractSubArrayQCOM: return "OpExtractSubArrayQCOM"; case Op::OpGroupIAddNonUniformAMD: return "OpGroupIAddNonUniformAMD"; case Op::OpGroupFAddNonUniformAMD: return "OpGroupFAddNonUniformAMD"; case Op::OpGroupFMinNonUniformAMD: return "OpGroupFMinNonUniformAMD"; @@ -5161,6 +5211,10 @@ constexpr TensorAddressingOperandsMask operator|(TensorAddressingOperandsMask a, constexpr TensorAddressingOperandsMask operator&(TensorAddressingOperandsMask a, TensorAddressingOperandsMask b) { return TensorAddressingOperandsMask(unsigned(a) & unsigned(b)); } constexpr TensorAddressingOperandsMask operator^(TensorAddressingOperandsMask a, TensorAddressingOperandsMask b) { return TensorAddressingOperandsMask(unsigned(a) ^ unsigned(b)); } constexpr TensorAddressingOperandsMask operator~(TensorAddressingOperandsMask a) { return TensorAddressingOperandsMask(~unsigned(a)); } +constexpr TensorOperandsMask operator|(TensorOperandsMask a, TensorOperandsMask b) { return TensorOperandsMask(unsigned(a) | unsigned(b)); } +constexpr TensorOperandsMask operator&(TensorOperandsMask a, TensorOperandsMask b) { return TensorOperandsMask(unsigned(a) & unsigned(b)); } +constexpr TensorOperandsMask operator^(TensorOperandsMask a, TensorOperandsMask b) { return TensorOperandsMask(unsigned(a) ^ unsigned(b)); } +constexpr TensorOperandsMask operator~(TensorOperandsMask a) { return TensorOperandsMask(~unsigned(a)); } constexpr MatrixMultiplyAccumulateOperandsMask operator|(MatrixMultiplyAccumulateOperandsMask a, MatrixMultiplyAccumulateOperandsMask b) { return MatrixMultiplyAccumulateOperandsMask(unsigned(a) | unsigned(b)); } constexpr MatrixMultiplyAccumulateOperandsMask operator&(MatrixMultiplyAccumulateOperandsMask a, MatrixMultiplyAccumulateOperandsMask b) { return MatrixMultiplyAccumulateOperandsMask(unsigned(a) & unsigned(b)); } constexpr MatrixMultiplyAccumulateOperandsMask operator^(MatrixMultiplyAccumulateOperandsMask a, MatrixMultiplyAccumulateOperandsMask b) { return MatrixMultiplyAccumulateOperandsMask(unsigned(a) ^ unsigned(b)); } diff --git a/3rdparty/glslang/build_info.h b/3rdparty/glslang/build_info.h index f78ec2a13..327c69e25 100644 --- a/3rdparty/glslang/build_info.h +++ b/3rdparty/glslang/build_info.h @@ -35,7 +35,7 @@ #define GLSLANG_BUILD_INFO #define GLSLANG_VERSION_MAJOR 15 -#define GLSLANG_VERSION_MINOR 3 +#define GLSLANG_VERSION_MINOR 4 #define GLSLANG_VERSION_PATCH 0 #define GLSLANG_VERSION_FLAVOR "" diff --git a/3rdparty/glslang/glslang/Include/BaseTypes.h b/3rdparty/glslang/glslang/Include/BaseTypes.h index a33ab3f15..f0c871428 100644 --- a/3rdparty/glslang/glslang/Include/BaseTypes.h +++ b/3rdparty/glslang/glslang/Include/BaseTypes.h @@ -50,6 +50,8 @@ enum TBasicType { EbtDouble, EbtFloat16, EbtBFloat16, + EbtFloatE5M2, + EbtFloatE4M3, EbtInt8, EbtUint8, EbtInt16, @@ -72,6 +74,7 @@ enum TBasicType { EbtTensorLayoutNV, EbtTensorViewNV, EbtCoopvecNV, + EbtTensorARM, // SPIR-V type defined by spirv_type EbtSpirvType, @@ -609,6 +612,8 @@ __inline bool isTypeFloat(TBasicType type) case EbtDouble: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: return true; default: return false; @@ -620,6 +625,8 @@ __inline uint32_t GetNumBits(TBasicType type) switch (type) { case EbtInt8: case EbtUint8: + case EbtFloatE5M2: + case EbtFloatE4M3: return 8; case EbtBFloat16: case EbtFloat16: diff --git a/3rdparty/glslang/glslang/Include/ConstantUnion.h b/3rdparty/glslang/glslang/Include/ConstantUnion.h index da4737b65..bf6b8a88b 100644 --- a/3rdparty/glslang/glslang/Include/ConstantUnion.h +++ b/3rdparty/glslang/glslang/Include/ConstantUnion.h @@ -899,6 +899,17 @@ public: unionArray = new TConstUnionVector(size, val); } + TConstUnionArray* clone() const + { + TConstUnionArray *copy = new TConstUnionArray(size()); + if (unionArray) { + for (const auto i : *unionArray) { + copy->unionArray->push_back(i); + } + } + return copy; + } + int size() const { return unionArray ? (int)unionArray->size() : 0; } TConstUnion& operator[](size_t index) { return (*unionArray)[index]; } const TConstUnion& operator[](size_t index) const { return (*unionArray)[index]; } diff --git a/3rdparty/glslang/glslang/Include/Types.h b/3rdparty/glslang/glslang/Include/Types.h index d6841bb0d..faada175d 100644 --- a/3rdparty/glslang/glslang/Include/Types.h +++ b/3rdparty/glslang/glslang/Include/Types.h @@ -252,6 +252,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, case EbtUint: s.append("u"); break; case EbtFloat16: s.append("f16"); break; case EbtBFloat16: s.append("bf16"); break; + case EbtFloatE5M2: s.append("fe5m2"); break; + case EbtFloatE4M3: s.append("fe4m3"); break; case EbtInt8: s.append("i8"); break; case EbtUint16: s.append("u8"); break; case EbtInt16: s.append("i16"); break; @@ -1500,6 +1502,7 @@ public: bool coopmatKHR : 1; bool coopvecNV : 1; bool tileAttachmentQCOM: 1; + uint32_t tensorRankARM : 4; TArraySizes* arraySizes; const TType* userDef; TSourceLoc loc; @@ -1511,7 +1514,8 @@ public: bool isCoopmatNV() const { return coopmatNV; } bool isCoopmatKHR() const { return coopmatKHR; } bool isCoopvecNV() const { return coopvecNV; } - bool isCoopmatOrvec() const { return isCoopmat() || isCoopvecNV(); } + bool isTensorARM() const { return tensorRankARM; } + bool hasTypeParameter() const { return isCoopmat() || isCoopvecNV() || isTensorARM(); } bool isTensorLayoutNV() const { return basicType == EbtTensorLayoutNV; } bool isTensorViewNV() const { return basicType == EbtTensorViewNV; } @@ -1530,6 +1534,7 @@ public: coopmatKHR = false; coopvecNV = false; tileAttachmentQCOM = false; + tensorRankARM = 0; spirvType = nullptr; } @@ -1590,7 +1595,7 @@ public: explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : basicType(t), vectorSize(static_cast(vs) & 0b1111), matrixCols(static_cast(mc) & 0b1111), matrixRows(static_cast(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), - tileAttachmentQCOM(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), + tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { assert(vs >= 0); @@ -1606,7 +1611,7 @@ public: TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : basicType(t), vectorSize(static_cast(vs) & 0b1111), matrixCols(static_cast(mc) & 0b1111), matrixRows(static_cast(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), - tileAttachmentQCOM(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), + tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { assert(vs >= 0); @@ -1624,7 +1629,7 @@ public: explicit TType(const TPublicType& p) : basicType(p.basicType), vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(p.coopvecNV), - tileAttachmentQCOM(p.tileAttachmentQCOM), arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters), + tileAttachmentQCOM(p.tileAttachmentQCOM), tensorRankARM(p.tensorRankARM), arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters), spirvType(p.spirvType) { if (basicType == EbtSampler) @@ -1677,11 +1682,17 @@ public: if (p.isCoopvecNV() && p.typeParameters) { basicType = p.typeParameters->basicType; } + if (p.isTensorARM() && p.typeParameters) { + basicType = p.typeParameters->basicType; + if (p.typeParameters->arraySizes->getNumDims() > 0) { + tensorRankARM = static_cast(p.typeParameters->arraySizes->getDimSize(0)) & 0b1111; + } + } } // for construction of sampler types TType(const TSampler& sampler, TStorageQualifier q = EvqUniform, TArraySizes* as = nullptr) : basicType(EbtSampler), vectorSize(1u), matrixCols(0u), matrixRows(0u), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), - tileAttachmentQCOM(false), arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr), + tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr), sampler(sampler), typeParameters(nullptr), spirvType(nullptr) { qualifier.clear(); @@ -1739,7 +1750,7 @@ public: // for making structures, ... TType(TTypeList* userDef, const TString& n) : basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), - tileAttachmentQCOM(false), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), + tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), spirvType(nullptr) { sampler.clear(); @@ -1749,7 +1760,7 @@ public: // For interface blocks TType(TTypeList* userDef, const TString& n, const TQualifier& q) : basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), coopvecNV(false), - tileAttachmentQCOM(false), qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), + tileAttachmentQCOM(false), tensorRankARM(0), qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), spirvType(nullptr) { sampler.clear(); @@ -1758,7 +1769,7 @@ public: // for block reference (first parameter must be EbtReference) explicit TType(TBasicType t, const TType &p, const TString& n) : basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), - tileAttachmentQCOM(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), + tileAttachmentQCOM(false), tensorRankARM(0), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { assert(t == EbtReference); @@ -1798,6 +1809,7 @@ public: coopmatKHRUseValid = copyOf.coopmatKHRUseValid; coopvecNV = copyOf.isCoopVecNV(); tileAttachmentQCOM = copyOf.tileAttachmentQCOM; + tensorRankARM = copyOf.tensorRankARM; } // Make complete copy of the whole type graph rooted at 'copyOf'. @@ -1837,6 +1849,7 @@ public: return *typeName; } + virtual bool hasFieldName() const { return (fieldName != nullptr); } virtual const TString& getFieldName() const { assert(fieldName); @@ -1895,7 +1908,8 @@ public: virtual void updateImplicitArraySize(int size) { assert(isArray()); arraySizes->updateImplicitSize(size); } virtual void setImplicitlySized(bool isImplicitSized) { arraySizes->setImplicitlySized(isImplicitSized); } virtual bool isStruct() const { return basicType == EbtStruct || basicType == EbtBlock; } - virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16 || basicType == EbtBFloat16; } + virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16 || + basicType == EbtBFloat16 || basicType == EbtFloatE5M2 || basicType == EbtFloatE4M3; } virtual bool isIntegerDomain() const { switch (basicType) { @@ -1916,7 +1930,9 @@ public: } virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery - || basicType == EbtHitObjectNV || isTileAttachmentQCOM(); } + || basicType == EbtHitObjectNV || isTileAttachmentQCOM() + || isTensorARM(); + } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } virtual bool isAttachmentEXT() const { return basicType == EbtSampler && getSampler().isAttachmentEXT(); } @@ -1933,8 +1949,10 @@ public: bool isCoopMatNV() const { return coopmatNV; } bool isCoopMatKHR() const { return coopmatKHR; } bool isCoopVecNV() const { return coopvecNV; } - bool isCoopMatOrVec() const { return isCoopMat() || isCoopVecNV(); } bool isTileAttachmentQCOM() const { return tileAttachmentQCOM; } + bool isTensorARM() const { return tensorRankARM; } + bool hasTypeParameter() const { return isCoopMat() || isCoopVecNV() || isTensorARM(); } + int getTensorRankARM() const { return static_cast(tensorRankARM); } bool isReference() const { return getBasicType() == EbtReference; } bool isSpirvType() const { return getBasicType() == EbtSpirvType; } int getCoopMatKHRuse() const { return static_cast(coopmatKHRuse); } @@ -1996,6 +2014,11 @@ public: virtual bool containsNonOpaque() const { + if (isTensorARM()) { + // Tensors have a numerical basicType even though it is Opaque + return false; + } + const auto nonOpaque = [](const TType* t) { switch (t->basicType) { case EbtVoid: @@ -2003,6 +2026,8 @@ public: case EbtDouble: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtInt8: case EbtUint8: case EbtInt16: @@ -2039,6 +2064,10 @@ public: { return containsBasicType(EbtBFloat16); } + bool contains8BitFloat() const + { + return containsBasicType(EbtFloatE5M2) || containsBasicType(EbtFloatE4M3); + } bool contains64BitInt() const { return containsBasicType(EbtInt64) || containsBasicType(EbtUint64); @@ -2161,6 +2190,8 @@ public: case EbtDouble: return "double"; case EbtFloat16: return "float16_t"; case EbtBFloat16: return "bfloat16_t"; + case EbtFloatE5M2: return "floate5m2_t"; + case EbtFloatE4M3: return "floate4m3_t"; case EbtInt8: return "int8_t"; case EbtUint8: return "uint8_t"; case EbtInt16: return "int16_t"; @@ -2180,6 +2211,7 @@ public: case EbtTensorLayoutNV: return "tensorLayoutNV"; case EbtTensorViewNV: return "tensorViewNV"; case EbtCoopvecNV: return "coopvecNV"; + case EbtTensorARM: return "tensorARM"; default: return "unknown type"; } } @@ -2792,6 +2824,7 @@ public: isCoopMatNV() == right.isCoopMatNV() && isCoopMatKHR() == right.isCoopMatKHR() && isCoopVecNV() == right.isCoopVecNV() && + isTensorARM() == right.isTensorARM() && sameStructType(right, lpidx, rpidx) && sameReferenceType(right); } @@ -2839,8 +2872,8 @@ public: else rv = false; } else if (isCoopMatKHR() && right.isCoopMatKHR()) { - if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16 || getBasicType() == EbtBFloat16) - rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16 || right.getBasicType() == EbtBFloat16 || right.getBasicType() == EbtCoopmat; + if (isFloatingDomain()) + rv = right.isFloatingDomain() || right.getBasicType() == EbtCoopmat; else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16) rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16 || right.getBasicType() == EbtCoopmat; else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16) @@ -2859,9 +2892,18 @@ public: if (isTensorViewNV()) { return right.isTensorViewNV() && right.typeParameters == nullptr && typeParameters != nullptr; } + if (isTensorARM()) { + return right.isTensorARM() && right.typeParameters == nullptr && typeParameters != nullptr; + } + return false; } + bool sameTensorBaseTypeARM(const TType &right) const { + return (typeParameters == nullptr || right.typeParameters == nullptr || + (tensorRankARM == right.tensorRankARM && getBasicType() == right.getBasicType())); + } + bool sameCoopVecBaseType(const TType &right) const { bool rv = false; @@ -3009,6 +3051,7 @@ protected: bool coopmatKHRUseValid : 1; // True if coopmatKHRuse has been set bool coopvecNV : 1; bool tileAttachmentQCOM : 1; + uint32_t tensorRankARM : 4; // 0 means not a tensor; non-zero indicates the tensor rank. TQualifier qualifier; TArraySizes* arraySizes; // nullptr unless an array; can be shared across types diff --git a/3rdparty/glslang/glslang/Include/intermediate.h b/3rdparty/glslang/glslang/Include/intermediate.h index 2595bb122..9508ad770 100644 --- a/3rdparty/glslang/glslang/Include/intermediate.h +++ b/3rdparty/glslang/glslang/Include/intermediate.h @@ -479,6 +479,10 @@ enum TOperator { EOpCooperativeVectorOuterProductAccumulateNV, EOpCooperativeVectorReduceSumAccumulateNV, + EOpTensorReadARM, + EOpTensorWriteARM, + EOpTensorSizeARM, + EOpBeginInvocationInterlock, // Fragment only EOpEndInvocationInterlock, // Fragment only @@ -615,6 +619,14 @@ enum TOperator { EOpConstructBF16Vec2, EOpConstructBF16Vec3, EOpConstructBF16Vec4, + EOpConstructFloatE5M2, + EOpConstructFloatE5M2Vec2, + EOpConstructFloatE5M2Vec3, + EOpConstructFloatE5M2Vec4, + EOpConstructFloatE4M3, + EOpConstructFloatE4M3Vec2, + EOpConstructFloatE4M3Vec3, + EOpConstructFloatE4M3Vec4, EOpConstructStruct, EOpConstructTextureSampler, EOpConstructNonuniform, // expected to be transformed away, not present in final AST @@ -623,6 +635,7 @@ enum TOperator { EOpConstructCooperativeMatrixKHR, EOpConstructCooperativeVectorNV, EOpConstructAccStruct, + EOpConstructSaturated, EOpConstructGuardEnd, // @@ -972,6 +985,12 @@ enum TOperator { EOpImageBlockMatchGatherSSDQCOM, EOpImageBlockMatchGatherSADQCOM, + // Cooperative Matrix Conversion + EOpBitCastArrayQCOM, + EOpExtractSubArrayQCOM, + EOpCompositeConstructCoopMatQCOM, + EOpCompositeExtractCoopMatQCOM, + // GL_NV_cluster_acceleration_structure EOpRayQueryGetIntersectionClusterIdNV, EOpHitObjectGetClusterIdNV, @@ -1095,6 +1114,7 @@ public: virtual int getVectorSize() const { return type.getVectorSize(); } virtual int getMatrixCols() const { return type.getMatrixCols(); } virtual int getMatrixRows() const { return type.getMatrixRows(); } + virtual int getTensorRankARM() const { return type.getTensorRankARM(); } virtual bool isMatrix() const { return type.isMatrix(); } virtual bool isArray() const { return type.isArray(); } virtual bool isVector() const { return type.isVector(); } diff --git a/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp b/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp index b07678153..d6528b735 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp @@ -152,6 +152,8 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right case EbtFloat: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: if (rightUnionArray[i].getDConst() != 0.0) newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst()); else if (leftUnionArray[i].getDConst() > 0.0) @@ -505,6 +507,8 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtDouble: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtFloat: valf = unionArray[i].getDConst(); srcType = CONV_FLOAT; @@ -554,6 +558,8 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtDouble: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtFloat: dstType = CONV_FLOAT; break; @@ -625,6 +631,8 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtDouble: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtFloat: newConstArray[i].setDConst(valf); break; case EbtInt8: @@ -657,6 +665,8 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtDouble: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break; // Note: avoid UBSAN error regarding negating 0x80000000 case EbtInt: newConstArray[i].setIConst( @@ -950,6 +960,8 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) switch(children[0]->getAsTyped()->getBasicType()) { case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtFloat: case EbtDouble: newConstArray[comp].setDConst(std::min(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); @@ -985,6 +997,8 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) switch(children[0]->getAsTyped()->getBasicType()) { case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtFloat: case EbtDouble: newConstArray[comp].setDConst(std::max(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst())); @@ -1020,6 +1034,8 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) switch(children[0]->getAsTyped()->getBasicType()) { case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtFloat: case EbtDouble: newConstArray[comp].setDConst(std::min(std::max(childConstUnions[0][arg0comp].getDConst(), childConstUnions[1][arg1comp].getDConst()), diff --git a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp index 862f4aba0..624296368 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp @@ -4025,6 +4025,47 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bf16vec3 uintBitsToBFloat16EXT(u16vec3 value);" "bf16vec4 uintBitsToBFloat16EXT(u16vec4 value);" + "int8_t floate5m2BitsToIntEXT(floate5m2_t value);" + "i8vec2 floate5m2BitsToIntEXT(fe5m2vec2 value);" + "i8vec3 floate5m2BitsToIntEXT(fe5m2vec3 value);" + "i8vec4 floate5m2BitsToIntEXT(fe5m2vec4 value);" + + "uint8_t floate5m2BitsToUintEXT(floate5m2_t value);" + "u8vec2 floate5m2BitsToUintEXT(fe5m2vec2 value);" + "u8vec3 floate5m2BitsToUintEXT(fe5m2vec3 value);" + "u8vec4 floate5m2BitsToUintEXT(fe5m2vec4 value);" + + "floate5m2_t intBitsToFloate5m2EXT(int8_t value);" + "fe5m2vec2 intBitsToFloate5m2EXT(i8vec2 value);" + "fe5m2vec3 intBitsToFloate5m2EXT(i8vec3 value);" + "fe5m2vec4 intBitsToFloate5m2EXT(i8vec4 value);" + + "floate5m2_t uintBitsToFloate5m2EXT(uint8_t value);" + "fe5m2vec2 uintBitsToFloate5m2EXT(u8vec2 value);" + "fe5m2vec3 uintBitsToFloate5m2EXT(u8vec3 value);" + "fe5m2vec4 uintBitsToFloate5m2EXT(u8vec4 value);" + + "int8_t floate4m3BitsToIntEXT(floate4m3_t value);" + "i8vec2 floate4m3BitsToIntEXT(fe4m3vec2 value);" + "i8vec3 floate4m3BitsToIntEXT(fe4m3vec3 value);" + "i8vec4 floate4m3BitsToIntEXT(fe4m3vec4 value);" + + "uint8_t floate4m3BitsToUintEXT(floate4m3_t value);" + "u8vec2 floate4m3BitsToUintEXT(fe4m3vec2 value);" + "u8vec3 floate4m3BitsToUintEXT(fe4m3vec3 value);" + "u8vec4 floate4m3BitsToUintEXT(fe4m3vec4 value);" + + "floate4m3_t intBitsToFloate4m3EXT(int8_t value);" + "fe4m3vec2 intBitsToFloate4m3EXT(i8vec2 value);" + "fe4m3vec3 intBitsToFloate4m3EXT(i8vec3 value);" + "fe4m3vec4 intBitsToFloate4m3EXT(i8vec4 value);" + + "floate4m3_t uintBitsToFloate4m3EXT(uint8_t value);" + "fe4m3vec2 uintBitsToFloate4m3EXT(u8vec2 value);" + "fe4m3vec3 uintBitsToFloate4m3EXT(u8vec3 value);" + "fe4m3vec4 uintBitsToFloate4m3EXT(u8vec4 value);" + + "void saturatedConvertEXT();" "\n"); } @@ -4777,6 +4818,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "float", "vec2", "vec4", "float16_t", "f16vec2", "f16vec4", "bfloat16_t", "bf16vec2", "bf16vec4", + "floate5m2_t", "fe5m2vec2", "fe5m2vec4", + "floate4m3_t", "fe4m3vec2", "fe4m3vec4", "double", "dvec2", "dvec4", "int8_t", "i8vec2", "i8vec4", "int16_t", "i16vec2", "i16vec4", @@ -4841,6 +4884,31 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n" ); + { + std::stringstream coopMatConvFuncs; + + const std::string eltTypes[] = {"uint32_t", "uint", "int32_t", "int", "float32_t", "float", "float16_t"}; + + for (auto srcEltTy : eltTypes) { + for (auto dstEltTy : eltTypes) { + coopMatConvFuncs << "void bitcastQCOM(" << srcEltTy.c_str() << " SrcArr[], " << dstEltTy.c_str() + << " DstArr[]);\n"; + } + } + coopMatConvFuncs << "\n"; + + for (auto eltTy : {"float32_t", "float16_t", "int8_t", "uint8_t", "uint32_t", "uint", "int32_t", "int"}) { + coopMatConvFuncs << "void vectorToCoopmatQCOM(" << eltTy << " SrcVec[], coopmat CM);\n"; + coopMatConvFuncs << "void coopmatToVectorQCOM(coopmat CM, " << eltTy << " Dstvec[]);\n"; + } + + for (auto eltTy : {"uint32_t", "uint", "int32_t", "int", "float32_t", "float", "float16_t"}) { + coopMatConvFuncs << "void extractSubArrayQCOM(" << eltTy << " arr[], uint index, " << eltTy << " subarr[]);\n"; + } + + commonBuiltins.append(coopMatConvFuncs.str().c_str()); + } + commonBuiltins.append( "tensorLayoutNV createTensorLayoutNV(uint Dim);\n" "tensorLayoutNV createTensorLayoutNV(uint Dim, uint Mode);\n" @@ -4894,6 +4962,29 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "tensorViewNV setTensorViewClipNV(tensorViewNV v, uint clipRowOffset, uint clipRowSpan, uint clipColOffset, uint clipColSpan);\n" "\n" ); + + // GL_ARM_tensors builtins. + static const char *tensorDataTypesARM[] = { + "bool", + "int8_t", "int16_t", "int32_t", "int64_t", + "uint8_t", "uint16_t", "uint32_t", "uint64_t", + "float16_t", "float32_t", "float64_t", + }; + std::ostringstream ostream; + for (auto t : tensorDataTypesARM) { + // Scalar + ostream << "void tensorReadARM(readonly tensorARM t, uint coords[], out " + << t << " data, uint tensorOperands = 0U, ...);\n"; + ostream << "void tensorWriteARM(writeonly tensorARM t, uint coords[], " + << t << " data, uint tensorOperands = 0U, ...);\n"; + // Array + ostream << "void tensorReadARM(readonly tensorARM t, uint coords[], " + << t << " data[], uint tensorOperands = 0U, ...);\n"; + ostream << "void tensorWriteARM(writeonly tensorARM t, uint coords[], " + << t << " data[], uint tensorOperands = 0U, ...);\n"; + } + ostream << "uint tensorSizeARM(readonly writeonly tensorARM t, uint dim);\n"; + commonBuiltins.append(ostream.str()); } if (profile != EEsProfile && version >= 450) { @@ -8285,6 +8376,12 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf snprintf(builtInConstant, maxSize, "const int gl_MaxComputeTextureImageUnits = %d;", resources.maxComputeTextureImageUnits); s.append(builtInConstant); + // GL_ARM_tensors operands. + snprintf(builtInConstant, maxSize, "const uint gl_TensorOperandsNonTemporalARM = 0x1U;"); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const uint gl_TensorOperandsOutOfBoundsValueARM = 0x2U;"); + s.append(builtInConstant); + s.append("\n"); } @@ -9706,6 +9803,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("setTensorViewClipNV", 1, &E_GL_NV_cooperative_matrix2); } + { + symbolTable.setFunctionExtensions("tensorReadARM", 1, &E_GL_ARM_tensors); + symbolTable.setFunctionExtensions("tensorWriteARM", 1, &E_GL_ARM_tensors); + symbolTable.setFunctionExtensions("tensorSizeARM", 1, &E_GL_ARM_tensors); + } + { symbolTable.setFunctionExtensions("coopVecMatMulNV", 1, &E_GL_NV_cooperative_vector); symbolTable.setFunctionExtensions("coopVecMatMulAddNV", 1, &E_GL_NV_cooperative_vector); @@ -9713,6 +9816,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("coopVecReduceSumAccumulateNV", 1, &E_GL_NV_cooperative_vector); } + { + symbolTable.setFunctionExtensions("bitcastQCOM", 1, &E_GL_QCOM_cooperative_matrix_conversion); + symbolTable.setFunctionExtensions("extractSubArrayQCOM", 1, &E_GL_QCOM_cooperative_matrix_conversion); + symbolTable.setFunctionExtensions("vectorToCoopmatQCOM", 1, &E_GL_QCOM_cooperative_matrix_conversion); + symbolTable.setFunctionExtensions("coopmatToVectorQCOM", 1, &E_GL_QCOM_cooperative_matrix_conversion); + } + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_NV_compute_shader_derivatives); @@ -9752,6 +9862,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("bfloat16BitsToUintEXT", 1, &E_GL_EXT_bfloat16); symbolTable.setFunctionExtensions("intBitsToBFloat16EXT", 1, &E_GL_EXT_bfloat16); symbolTable.setFunctionExtensions("uintBitsToBFloat16EXT", 1, &E_GL_EXT_bfloat16); + + symbolTable.setFunctionExtensions("floate5m2BitsToIntEXT", 1, &E_GL_EXT_float_e5m2); + symbolTable.setFunctionExtensions("floate5m2BitsToUintEXT", 1, &E_GL_EXT_float_e5m2); + symbolTable.setFunctionExtensions("intBitsToFloate5m2EXT", 1, &E_GL_EXT_float_e5m2); + symbolTable.setFunctionExtensions("uintBitsToFloate5m2EXT", 1, &E_GL_EXT_float_e5m2); + + symbolTable.setFunctionExtensions("floate4m3BitsToIntEXT", 1, &E_GL_EXT_float_e4m3); + symbolTable.setFunctionExtensions("floate4m3BitsToUintEXT", 1, &E_GL_EXT_float_e4m3); + symbolTable.setFunctionExtensions("intBitsToFloate4m3EXT", 1, &E_GL_EXT_float_e4m3); + symbolTable.setFunctionExtensions("uintBitsToFloate4m3EXT", 1, &E_GL_EXT_float_e4m3); + + const char *float8exts[] = {E_GL_EXT_float_e5m2, E_GL_EXT_float_e4m3}; + symbolTable.setFunctionExtensions("saturatedConvertEXT", 2, float8exts); } // E_SPV_QCOM_tile_shading @@ -10750,6 +10873,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("bfloat16BitsToUintEXT", EOpFloatBitsToUint); symbolTable.relateToOperator("intBitsToBFloat16EXT", EOpIntBitsToFloat); symbolTable.relateToOperator("uintBitsToBFloat16EXT", EOpUintBitsToFloat); + + symbolTable.relateToOperator("floate5m2BitsToIntEXT", EOpFloatBitsToInt); + symbolTable.relateToOperator("floate5m2BitsToUintEXT", EOpFloatBitsToUint); + symbolTable.relateToOperator("intBitsToFloate5m2EXT", EOpIntBitsToFloat); + symbolTable.relateToOperator("uintBitsToFloate5m2EXT", EOpUintBitsToFloat); + + symbolTable.relateToOperator("floate4m3BitsToIntEXT", EOpFloatBitsToInt); + symbolTable.relateToOperator("floate4m3BitsToUintEXT", EOpFloatBitsToUint); + symbolTable.relateToOperator("intBitsToFloate4m3EXT", EOpIntBitsToFloat); + symbolTable.relateToOperator("uintBitsToFloate4m3EXT", EOpUintBitsToFloat); + + symbolTable.relateToOperator("saturatedConvertEXT", EOpConstructSaturated); } // GL_KHR_shader_subgroup @@ -10997,6 +11132,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("setTensorViewStrideNV", EOpTensorViewSetStrideNV); symbolTable.relateToOperator("setTensorViewClipNV", EOpTensorViewSetClipNV); + symbolTable.relateToOperator("tensorReadARM", EOpTensorReadARM); + symbolTable.relateToOperator("tensorWriteARM", EOpTensorWriteARM); + symbolTable.relateToOperator("tensorSizeARM", EOpTensorSizeARM); + + symbolTable.relateToOperator("bitcastQCOM", EOpBitCastArrayQCOM); + symbolTable.relateToOperator("extractSubArrayQCOM", EOpExtractSubArrayQCOM); + symbolTable.relateToOperator("vectorToCoopmatQCOM", EOpCompositeConstructCoopMatQCOM); + symbolTable.relateToOperator("coopmatToVectorQCOM", EOpCompositeExtractCoopMatQCOM); + if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("fetchMicroTriangleVertexPositionNV", EOpFetchMicroTriangleVertexPositionNV); symbolTable.relateToOperator("fetchMicroTriangleVertexBarycentricNV", EOpFetchMicroTriangleVertexBarycentricNV); diff --git a/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp b/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp index 638f9c1e1..203430e95 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp @@ -400,6 +400,8 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, case EOpConstructDouble: newType = EbtDouble; break; case EOpConstructFloat16: newType = EbtFloat16; break; case EOpConstructBFloat16: newType = EbtBFloat16; break; + case EOpConstructFloatE4M3: newType = EbtFloatE4M3; break; + case EOpConstructFloatE5M2: newType = EbtFloatE5M2; break; default: break; // some compilers want this } @@ -430,7 +432,9 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, case EOpConstructFloat: case EOpConstructDouble: case EOpConstructFloat16: - case EOpConstructBFloat16: { + case EOpConstructBFloat16: + case EOpConstructFloatE5M2: + case EOpConstructFloatE4M3: { TIntermUnary* unary_node = child->getAsUnaryNode(); if (unary_node != nullptr) unary_node->updatePrecision(); @@ -571,9 +575,9 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& newOp) const { - // bfloat16_t <-> bool not supported - if ((src == EbtBFloat16 && dst == EbtBool) || - (dst == EbtBFloat16 && src == EbtBool)) { + // (bfloat16_t,fp8) <-> bool not supported + if (((src == EbtBFloat16 || src == EbtFloatE5M2 || src == EbtFloatE4M3) && dst == EbtBool) || + ((dst == EbtBFloat16 || dst == EbtFloatE5M2 || dst == EbtFloatE4M3) && src == EbtBool)) { return false; } @@ -604,12 +608,15 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped node->getBasicType() == EbtInt || node->getBasicType() == EbtUint || node->getBasicType() == EbtInt64 || node->getBasicType() == EbtUint64); - bool convertToFloatTypes = (convertTo == EbtFloat16 || convertTo == EbtBFloat16 || convertTo == EbtFloat || convertTo == EbtDouble); + bool convertToFloatTypes = (convertTo == EbtFloat16 || convertTo == EbtBFloat16 || convertTo == EbtFloat || convertTo == EbtDouble || + convertTo == EbtFloatE5M2 || convertTo == EbtFloatE4M3); bool convertFromFloatTypes = (node->getBasicType() == EbtFloat16 || node->getBasicType() == EbtBFloat16 || node->getBasicType() == EbtFloat || - node->getBasicType() == EbtDouble); + node->getBasicType() == EbtDouble || + node->getBasicType() == EbtFloatE5M2 || + node->getBasicType() == EbtFloatE4M3); if (((convertTo == EbtInt8 || convertTo == EbtUint8) && ! convertFromIntTypes) || ((node->getBasicType() == EbtInt8 || node->getBasicType() == EbtUint8) && ! convertToIntTypes)) { @@ -832,7 +839,8 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt // Reject implicit conversions to cooperative matrix types if (node->getType().isCoopMat() && op != EOpConstructCooperativeMatrixNV && - op != EOpConstructCooperativeMatrixKHR) + op != EOpConstructCooperativeMatrixKHR && + op != glslang::EOpCompositeConstructCoopMatQCOM) return nullptr; if (node->getType().isTensorLayoutNV() || @@ -858,12 +866,15 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpConstructDouble: case EOpConstructFloat16: case EOpConstructBFloat16: + case EOpConstructFloatE5M2: + case EOpConstructFloatE4M3: case EOpConstructInt8: case EOpConstructUint8: case EOpConstructInt16: case EOpConstructUint16: case EOpConstructInt64: case EOpConstructUint64: + case EOpConstructSaturated: break; // @@ -965,6 +976,8 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt // - at the time of this writing (14-Aug-2020), no test results are changed by this. switch (op) { case EOpConstructBFloat16: + case EOpConstructFloatE5M2: + case EOpConstructFloatE4M3: canPromoteConstant = true; break; case EOpConstructFloat16: @@ -1270,6 +1283,8 @@ bool TIntermediate::isFPPromotion(TBasicType from, TBasicType to) const if (to == EbtDouble) { switch(from) { case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtFloat16: case EbtFloat: return true; @@ -1362,7 +1377,7 @@ bool TIntermediate::isIntegralConversion(TBasicType from, TBasicType to) const bool TIntermediate::isFPConversion(TBasicType from, TBasicType to) const { - if (to == EbtFloat && (from == EbtFloat16 || from == EbtBFloat16)) { + if (to == EbtFloat && (from == EbtFloat16 || from == EbtBFloat16 || from == EbtFloatE5M2 || from == EbtFloatE4M3)) { return true; } else { return false; @@ -1517,6 +1532,8 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat (numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) || numericFeatures.contains(TNumericFeatures::gpu_shader_half_float)); case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: return true; case EbtInt8: case EbtUint8: @@ -1540,6 +1557,8 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat numericFeatures.contains(TNumericFeatures::nv_gpu_shader5_types) || getSource() == EShSourceHlsl; case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: return true; case EbtInt8: case EbtUint8: @@ -1610,6 +1629,18 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtInt16: case EbtUint16: return numericFeatures.contains(TNumericFeatures::gpu_shader_int16); + case EbtFloatE5M2: + case EbtFloatE4M3: + return true; + default: + break; + } + return false; + case EbtBFloat16: + switch (from) { + case EbtFloatE5M2: + case EbtFloatE4M3: + return true; default: break; } @@ -2077,6 +2108,24 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const default: break; // some compilers want this } break; + case EbtFloatE5M2: + switch (type.getVectorSize()) { + case 1: op = EOpConstructFloatE5M2; break; + case 2: op = EOpConstructFloatE5M2Vec2; break; + case 3: op = EOpConstructFloatE5M2Vec3; break; + case 4: op = EOpConstructFloatE5M2Vec4; break; + default: break; // some compilers want this + } + break; + case EbtFloatE4M3: + switch (type.getVectorSize()) { + case 1: op = EOpConstructFloatE4M3; break; + case 2: op = EOpConstructFloatE4M3Vec2; break; + case 3: op = EOpConstructFloatE4M3Vec3; break; + case 4: op = EOpConstructFloatE4M3Vec4; break; + default: break; // some compilers want this + } + break; case EbtInt8: switch(type.getVectorSize()) { case 1: op = EOpConstructInt8; break; @@ -2486,7 +2535,7 @@ TIntermConstantUnion* TIntermediate::addConstantUnion(bool b, const TSourceLoc& TIntermConstantUnion* TIntermediate::addConstantUnion(double d, TBasicType baseType, const TSourceLoc& loc, bool literal) const { - assert(baseType == EbtFloat || baseType == EbtDouble || baseType == EbtFloat16 || baseType == EbtBFloat16); + assert(baseType == EbtFloat || baseType == EbtDouble || baseType == EbtFloat16 || baseType == EbtBFloat16 || baseType == EbtFloatE5M2 || baseType == EbtFloatE4M3); if (isEsProfile() && (baseType == EbtFloat || baseType == EbtFloat16)) { int exponent = 0; @@ -3741,6 +3790,8 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC #define TO_ALL(Get) \ switch (promoteTo) { \ case EbtBFloat16: PROMOTE(setDConst, double, Get); break; \ + case EbtFloatE5M2: PROMOTE(setDConst, double, Get); break; \ + case EbtFloatE4M3: PROMOTE(setDConst, double, Get); break; \ case EbtFloat16: PROMOTE(setDConst, double, Get); break; \ case EbtFloat: PROMOTE(setDConst, double, Get); break; \ case EbtDouble: PROMOTE(setDConst, double, Get); break; \ @@ -3763,6 +3814,8 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC case EbtBool: TO_ALL(getBConst); break; case EbtFloat16: TO_ALL(getDConst); break; case EbtBFloat16: TO_ALL(getDConst); break; + case EbtFloatE5M2: TO_ALL(getDConst); break; + case EbtFloatE4M3: TO_ALL(getDConst); break; case EbtDouble: TO_ALL(getDConst); break; case EbtInt8: TO_ALL(getI8Const); break; case EbtInt16: TO_ALL(getI16Const); break; diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp index 986b94194..95c7f0053 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp @@ -424,7 +424,7 @@ const TFunction* TParseContextBase::selectFunction( // to even be a potential match, number of arguments must be >= the number of // fixed (non-default) parameters, and <= the total (including parameter with defaults). if (call.getParamCount() < candidate.getFixedParamCount() || - call.getParamCount() > candidate.getParamCount()) + (call.getParamCount() > candidate.getParamCount() && !candidate.isVariadic())) continue; // see if arguments are convertible @@ -463,7 +463,8 @@ const TFunction* TParseContextBase::selectFunction( const auto betterParam = [&call, &better](const TFunction& can1, const TFunction& can2) -> bool { // is call -> can2 better than call -> can1 for any parameter bool hasBetterParam = false; - for (int param = 0; param < call.getParamCount(); ++param) { + const int paramCount = std::min({call.getParamCount(), can1.getParamCount(), can2.getParamCount()}); + for (int param = 0; param < paramCount; ++param) { if (better(*call[param].type, *can1[param].type, *can2[param].type)) { hasBetterParam = true; break; @@ -474,7 +475,8 @@ const TFunction* TParseContextBase::selectFunction( const auto equivalentParams = [&call, &better](const TFunction& can1, const TFunction& can2) -> bool { // is call -> can2 equivalent to call -> can1 for all the call parameters? - for (int param = 0; param < call.getParamCount(); ++param) { + const int paramCount = std::min({call.getParamCount(), can1.getParamCount(), can2.getParamCount()}); + for (int param = 0; param < paramCount; ++param) { if (better(*call[param].type, *can1[param].type, *can2[param].type) || better(*call[param].type, *can2[param].type, *can1[param].type)) return false; diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp index 8ea6e2e3b..845020afa 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp @@ -912,7 +912,8 @@ TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* if (((left->getType().contains16BitFloat() || right->getType().contains16BitFloat()) && !float16Arithmetic()) || ((left->getType().contains16BitInt() || right->getType().contains16BitInt()) && !int16Arithmetic()) || ((left->getType().contains8BitInt() || right->getType().contains8BitInt()) && !int8Arithmetic()) || - (left->getType().containsBFloat16() || right->getType().containsBFloat16())) { + (left->getType().containsBFloat16() || right->getType().containsBFloat16()) || + (left->getType().contains8BitFloat() || right->getType().contains8BitFloat())) { allowed = false; } @@ -940,7 +941,8 @@ TIntermTyped* TParseContext::handleUnaryMath(const TSourceLoc& loc, const char* if ((childNode->getType().contains16BitFloat() && !float16Arithmetic()) || (childNode->getType().contains16BitInt() && !int16Arithmetic()) || (childNode->getType().contains8BitInt() && !int8Arithmetic()) || - (childNode->getType().containsBFloat16())) { + (childNode->getType().containsBFloat16()) || + (childNode->getType().contains8BitFloat())) { allowed = false; } @@ -1405,6 +1407,24 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // At this early point there is a slight ambiguity between whether an aggregate 'arguments' // is the single argument itself or its children are the arguments. Only one argument // means take 'arguments' itself as the one argument. + if ((*fnCandidate)[i].defaultValue) { + if (!aggregate) { + // Only one argument was passed (rest are default arguments) so arguments isn't a TIntermAggregate. + // But the function takes at least one more argument, so a TIntermAggregate is needed. + aggregate = new TIntermAggregate; + aggregate->getSequence().push_back(arguments); + arguments = aggregate; + } + if (i >= static_cast(aggregate->getSequence().size())) { + // Append the default value if there are no more arguments left in the aggregate. + TIntermConstantUnion *defaultValue = nullptr; + if (const auto *constUnion = (*fnCandidate)[i].defaultValue->getAsConstantUnion()) { + defaultValue = new TIntermConstantUnion(constUnion->getConstArray(), constUnion->getType()); + } + assert(defaultValue && "unsupported default value construct"); + aggregate->getSequence().push_back(defaultValue); + } + } TIntermNode* arg = fnCandidate->getParamCount() == 1 ? arguments : (aggregate ? aggregate->getSequence()[i] : arguments); TQualifier& formalQualifier = (*fnCandidate)[i].type->getQualifier(); if (formalQualifier.isParamOutput()) { @@ -1520,6 +1540,8 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction handleCoopMat2FunctionCall(loc, fnCandidate, result, arguments); + handleVector2CoopMatConversionCall(loc, fnCandidate, result, arguments); + if (result->getAsTyped()->getType().isCoopVecNV() && !result->getAsTyped()->getType().isParameterized()) { if (auto unaryNode = result->getAsUnaryNode()) @@ -1527,6 +1549,11 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction else result->setType(result->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()); } + + if (fnCandidate->getBuiltInOp() == EOpConstructSaturated) { + // result type is taken from the first parameter + result->setType(result->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()); + } } } @@ -1756,6 +1783,297 @@ void TParseContext::handleCoopMat2FunctionCall(const TSourceLoc& loc, const TFun } } + +static const uint32_t spv_Scope_Subgroup = 3; + +void TParseContext::handleVector2CoopMatConversionCall(const TSourceLoc& loc, const TFunction* fnCandidate, + TIntermTyped*& result, TIntermNode* arguments) +{ + const int CM_MatrixUseA = 0; // == gl_MatrixUseA + const int CM_MatrixUseB = 1; // == gl_MatrixUseB + const int CM_MatrixUseAccumulator = 2; // == gl_MatrixUseAccumulator + + TOperator builtinOp = fnCandidate->getBuiltInOp(); + + if (!(builtinOp == EOpBitCastArrayQCOM || builtinOp == EOpExtractSubArrayQCOM || + builtinOp == EOpCompositeConstructCoopMatQCOM || builtinOp == EOpCompositeExtractCoopMatQCOM)) + return; + + TPublicType pubType{}; + auto* oldResult = result; + + if (builtinOp == EOpBitCastArrayQCOM) { + auto srcArr = arguments->getAsAggregate()->getSequence()[0]->getAsTyped(); + auto& srcTy = srcArr->getType(); + auto srcArrLen = srcTy.getArraySizes()->getDimSize(0); + auto srcLenAsNode = srcTy.getArraySizes()->getDimNode(0); + + auto dstArr = arguments->getAsAggregate()->getSequence()[1]->getAsTyped(); + auto& dstTy = dstArr->getType(); + auto dstArrLen = dstTy.getArraySizes()->getDimSize(0); + auto dstLenAsNode = dstTy.getArraySizes()->getDimNode(0); + + if (srcLenAsNode == nullptr && dstLenAsNode == nullptr) { + //do basic tests: + if ((srcArrLen * GetNumBits(srcTy.getBasicType())) != (dstArrLen * GetNumBits(dstTy.getBasicType()))) + error(loc, "source and target arrays have different bit sizes", "", ""); + } + + pubType.basicType = dstTy.getBasicType(); + pubType.vectorSize = 1u; + pubType.qualifier.precision = EpqNone; + pubType.coopmatNV = false; + pubType.coopmatKHR = false; + pubType.arraySizes = new TArraySizes; + pubType.arraySizes->addInnerSize(dstArrLen, dstLenAsNode); + pubType.typeParameters = nullptr; + } + + if (builtinOp == EOpExtractSubArrayQCOM) { + auto dstArr = arguments->getAsAggregate()->getSequence()[2]->getAsTyped(); + auto& dstTy = dstArr->getType(); + auto dstArrLen = dstTy.getArraySizes()->getDimSize(0); + auto dstLenAsNode = dstTy.getArraySizes()->getDimNode(0); + + if (dstLenAsNode == nullptr) { + if ((dstArrLen * GetNumBits(dstTy.getBasicType())) == 32) + error(loc, "the byte size of the target array must be 32", "", ""); + } + + pubType.basicType = dstTy.getBasicType(); + pubType.vectorSize = 1u; + pubType.qualifier.precision = EpqNone; + pubType.coopmatNV = false; + pubType.coopmatKHR = false; + pubType.arraySizes = new TArraySizes; + pubType.arraySizes->addInnerSize(dstArrLen, dstLenAsNode); + pubType.typeParameters = nullptr; + } + + if (builtinOp == EOpCompositeConstructCoopMatQCOM) { + + auto& srcType = arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType(); + auto& dstType = arguments->getAsAggregate()->getSequence()[1]->getAsTyped()->getType(); + + glslang::TBasicType srcBasicType = srcType.getBasicType(); + glslang::TBasicType dstBasicType = dstType.getBasicType(); + + if (srcBasicType != EbtUint && srcBasicType != dstBasicType) + error(loc, "source and destination element types are not compatible", "", ""); + + uint32_t scope = spv_Scope_Subgroup; + uint32_t coopMatKHRuse = -1u; + uint32_t coopMatNumRows = -1u, coopMatNumCols = -1u; + TIntermTyped *nodeNumRows = nullptr, *nodeNumCols = nullptr; + const TTypeParameters* dstTypeParameters = dstType.getTypeParameters(); + if (dstTypeParameters->arraySizes == nullptr || dstTypeParameters->arraySizes->getNumDims() != 4) { + error(loc, "destination cooperative matrix has an unsupported type", "", ""); + } else { + auto arraySizes = dstTypeParameters->arraySizes; + scope = arraySizes->getDimSize(0); + coopMatNumRows = arraySizes->getDimSize(1); + nodeNumRows = arraySizes->getDimNode(1); + coopMatNumCols = arraySizes->getDimSize(2); + nodeNumCols = arraySizes->getDimNode(2); + coopMatKHRuse = arraySizes->getDimSize(3); + } + + if (scope != spv_Scope_Subgroup) { + scope = spv_Scope_Subgroup; + error(loc, "cooperative matrix has unsupported scope; gl_SubgroupScope is expected", "", ""); + } + + if (coopMatKHRuse < CM_MatrixUseA || coopMatKHRuse > CM_MatrixUseAccumulator) { + coopMatKHRuse = CM_MatrixUseA; + error(loc, "cooperative matrix use must be one of gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator", + "", ""); + } + + uint32_t dstBasicTypeSize = GetNumBits(dstBasicType) / 8; + + unsigned numRows = coopMatNumRows; + TIntermTyped* specConstRows = nodeNumRows; + unsigned numCols = coopMatNumCols; + TIntermTyped* specConstCols = nodeNumCols; + + // input array type + const TType& type = arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType(); + uint32_t arrayLen = type.getArraySizes()->getDimSize(0); + auto arrayDimNode = type.getArraySizes()->getDimNode(0); + + if (coopMatKHRuse == CM_MatrixUseA || coopMatKHRuse == CM_MatrixUseAccumulator) { + // update numCols + if (arrayDimNode == nullptr && specConstCols == nullptr) + numCols = arrayLen * (sizeof(uint32_t) / dstBasicTypeSize); + } else if (coopMatKHRuse == CM_MatrixUseB) { + // update numRows + if (arrayDimNode == nullptr && specConstRows == nullptr) { + numRows = arrayLen * (sizeof(uint32_t) / dstBasicTypeSize); + } + } + + // construct the type + TArraySizes* arraySizes = new TArraySizes; + + // add Scope + arraySizes->addInnerSize(scope); + + // add the row size + arraySizes->addInnerSize(numRows, specConstRows); // copy from source + // add the column size + arraySizes->addInnerSize(numCols, specConstCols); // copy from source + // add cooperative matrix use + arraySizes->addInnerSize(coopMatKHRuse); + + pubType.basicType = dstBasicType; + pubType.vectorSize = 1u; + pubType.qualifier = srcType.getQualifier(); + pubType.qualifier.precision = EpqNone; + pubType.coopmatNV = dstType.isCoopMatNV(); + pubType.coopmatKHR = dstType.isCoopMatKHR(); + pubType.arraySizes = nullptr; + pubType.typeParameters = const_cast(dstTypeParameters); + } + + if (builtinOp == EOpCompositeExtractCoopMatQCOM) { + auto& srcType = arguments->getAsAggregate()->getSequence()[0]->getAsTyped()->getType(); + auto& dstType = arguments->getAsAggregate()->getSequence()[1]->getAsTyped()->getType(); + + glslang::TBasicType srcBasicType = srcType.getBasicType(); + glslang::TBasicType dstBasicType = dstType.getBasicType(); + + if (dstBasicType != EbtUint && srcBasicType != dstBasicType) + error(loc, "source and destination element types are not compatible", "", ""); + + uint32_t scope = spv_Scope_Subgroup; + unsigned coopMatKHRuse = -1u; + const TTypeParameters* srcTypeParameters = srcType.getTypeParameters(); + if (srcTypeParameters->arraySizes == nullptr || srcTypeParameters->arraySizes->getNumDims() != 4) { + error(loc, "source cooperative matrix has an unsupported type", "", ""); + } else { + auto arraySizes = srcTypeParameters->arraySizes; + scope = arraySizes->getDimSize(0); + coopMatKHRuse = arraySizes->getDimSize(3); + } + + if (scope != spv_Scope_Subgroup) { + scope = spv_Scope_Subgroup; + error(loc, "cooperative matrix has unsupported scope; gl_SubgroupScope is expected", "", ""); + } + + if (coopMatKHRuse < CM_MatrixUseA || coopMatKHRuse > CM_MatrixUseAccumulator) { + coopMatKHRuse = CM_MatrixUseA; + error(loc, "cooperative matrix use must be one of gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator", + "", ""); + } + + auto dstArrLen = dstType.getArraySizes()->getDimSize(0); + auto dstLenAsNode = dstType.getArraySizes()->getDimNode(0); + + if (dstLenAsNode == nullptr) { + bool ok = true; + switch (dstBasicType) { + case EbtUint: + case EbtInt: + case EbtFloat: + ok = (((coopMatKHRuse == CM_MatrixUseA || coopMatKHRuse == CM_MatrixUseB) && dstArrLen == 8) || + (coopMatKHRuse == + CM_MatrixUseAccumulator) /* && (dstArrLen == 64 || dstArrLen == 32 || dstArrLen == 16))*/); + break; + case EbtFloat16: + ok = (((coopMatKHRuse == CM_MatrixUseA || coopMatKHRuse == CM_MatrixUseB) && dstArrLen == 16) || + (coopMatKHRuse == + CM_MatrixUseAccumulator) /* && (dstArrLen == 64 || dstArrLen == 32 || dstArrLen == 16))*/); + break; + case EbtInt8: + case EbtUint8: + ok = (((coopMatKHRuse == CM_MatrixUseA || coopMatKHRuse == CM_MatrixUseB) && dstArrLen == 32) || + (coopMatKHRuse == + CM_MatrixUseAccumulator) /* && (dstArrLen == 64 || dstArrLen == 32 || dstArrLen == 16))*/); + break; + default: + error(loc, "unsupported element type", "", ""); + } + if (!ok) + error(loc, "unsupported destination array length", "", ""); + } + + pubType.basicType = dstBasicType; + pubType.vectorSize = 1u; + pubType.qualifier.precision = EpqNone; + pubType.coopmatNV = false; + pubType.coopmatKHR = false; + + pubType.arraySizes = new TArraySizes; + + { + //int coopMatKHRuse = srcTypeParameters->arraySizes->getDimSize(3); + uint32_t index = -1u; + if (coopMatKHRuse == CM_MatrixUseA) { + index = 2; + } else if (coopMatKHRuse == CM_MatrixUseB) { + index = 1; + } else if (coopMatKHRuse == CM_MatrixUseAccumulator) { + index = 2; + } else { + error(loc, "source cooperative matrix has an unexpected cooperative matrix use", "", ""); + } + int32_t numRowsOrCols = srcTypeParameters->arraySizes->getDimSize(index); + auto dimNode = srcTypeParameters->arraySizes->getDimNode(index); + if (dimNode != nullptr && dstLenAsNode == nullptr) { + numRowsOrCols = dstType.getArraySizes()->getDimSize(0); + dimNode = nullptr; + } + //int32_t dstArrLen = dstType.getArraySizes()->getDimSize(0); + pubType.arraySizes->addInnerSize(dstArrLen, dstLenAsNode); + if (dimNode == nullptr && dstLenAsNode == nullptr) { + const char* msg = nullptr; + if (coopMatKHRuse == CM_MatrixUseA && (numRowsOrCols != dstArrLen && dstArrLen != 8)) { + msg = "the source matrix's column is not compatible with the destination array"; + } else if (coopMatKHRuse == CM_MatrixUseB && (numRowsOrCols != dstArrLen && dstArrLen != 8)) { + msg = "the source matrix's row is not compatible with the destination array"; + } else if (coopMatKHRuse == CM_MatrixUseAccumulator && + (numRowsOrCols != dstArrLen && + (srcBasicType == EbtFloat16 && numRowsOrCols != 2 * dstArrLen))) { + msg = "the source matrix's column is not compatible with the destination array"; + } + if (msg != nullptr) + error(loc, msg, "", ""); + } + } + + pubType.typeParameters = nullptr; + } + + TType resultType(pubType); + if (pubType.typeParameters != nullptr) + resultType.copyTypeParameters(*pubType.typeParameters); + // need to make StorageQualifier temp + resultType.makeTemporary(); + result->setType(resultType); + + // the RHS of an assignment to be formed + auto rhs = result; + + // the LHS of an assignment to be formed; pick the last argument + int lhsIdx = (builtinOp == EOpExtractSubArrayQCOM ? 2 : 1); + auto lhs = arguments->getAsAggregate()->getSequence()[lhsIdx]->getAsTyped(); + // pop the last argument from the arguments sequence + arguments->getAsAggregate()->getSequence().pop_back(); + + // Create OpAssign + { + arrayObjectCheck(loc, lhs->getType(), "array assignment"); + storage16BitAssignmentCheck(loc, lhs->getType(), "="); + lValueErrorCheck(loc, "assign", lhs); + rValueErrorCheck(loc, "assign", rhs); + result = addAssign(loc, EOpAssign, lhs, rhs); + if (result == nullptr) + result = oldResult; + } +} + + TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNode* arguments, const TFunction& function) { @@ -1873,6 +2191,7 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction case EOpDebugPrintf: case EOpCooperativeMatrixPerElementOpNV: case EOpCooperativeMatrixReduceNV: + case EOpConstructSaturated: numArgs = 0; break; default: @@ -1881,6 +2200,8 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction // find the maximum precision from the arguments and parameters for (unsigned int arg = 0; arg < numArgs; ++arg) { operationPrecision = std::max(operationPrecision, sequence[arg]->getAsTyped()->getQualifier().precision); + } + for (int arg = 0; arg < function.getParamCount(); ++arg) { operationPrecision = std::max(operationPrecision, function[arg].type->getQualifier().precision); } // compute the result precision @@ -2077,7 +2398,10 @@ void TParseContext::addInputArgumentConversions(const TFunction& function, TInte TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() : (aggregate ? aggregate->getSequence()[i]->getAsTyped() : arguments->getAsTyped()); if (*function[i].type != arg->getType()) { if (function[i].type->getQualifier().isParamInput() && - !function[i].type->isCoopMat()) { + !function[i].type->isCoopMat() && !function[i].type->isTensorARM() && + // tensor layout/view type declarations don't do conversions, so we can't convert these parameters either + (function.getName() != "createTensorLayoutNV") && + (function.getName() != "createTensorViewNV")) { // In-qualified arguments just need an extra node added above the argument to // convert to the correct type. arg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg); @@ -2204,6 +2528,9 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& const int gl_StorageSemanticsImage = 0x800; const int gl_StorageSemanticsOutput = 0x1000; + const int nonRelaxedMemoryOrder = gl_SemanticsAcquire | + gl_SemanticsRelease | + gl_SemanticsAcquireRelease; unsigned int semantics = 0, storageClassSemantics = 0; unsigned int semantics2 = 0, storageClassSemantics2 = 0; @@ -2270,22 +2597,6 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& break; } - if ((semantics & gl_SemanticsAcquire) && - (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore)) { - error(loc, "gl_SemanticsAcquire must not be used with (image) atomic store", - fnCandidate.getName().c_str(), ""); - } - if ((semantics & gl_SemanticsRelease) && - (callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad)) { - error(loc, "gl_SemanticsRelease must not be used with (image) atomic load", - fnCandidate.getName().c_str(), ""); - } - if ((semantics & gl_SemanticsAcquireRelease) && - (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore || - callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad)) { - error(loc, "gl_SemanticsAcquireRelease must not be used with (image) atomic load/store", - fnCandidate.getName().c_str(), ""); - } if (((semantics | semantics2) & ~(gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease | @@ -2294,6 +2605,7 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& gl_SemanticsVolatile))) { error(loc, "Invalid semantics value", fnCandidate.getName().c_str(), ""); } + if (((storageClassSemantics | storageClassSemantics2) & ~(gl_StorageSemanticsBuffer | gl_StorageSemanticsShared | gl_StorageSemanticsImage | @@ -2301,57 +2613,101 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& error(loc, "Invalid storage class semantics value", fnCandidate.getName().c_str(), ""); } - if (callNode.getOp() == EOpMemoryBarrier) { - if (!IsPow2(semantics & (gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease))) { - error(loc, "Semantics must include exactly one of gl_SemanticsRelease, gl_SemanticsAcquire, or " - "gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); - } - } else { - if (semantics & (gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease)) { - if (!IsPow2(semantics & (gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease))) { - error(loc, "Semantics must not include multiple of gl_SemanticsRelease, gl_SemanticsAcquire, or " - "gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); - } - } - if (semantics2 & (gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease)) { - if (!IsPow2(semantics2 & (gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease))) { - error(loc, "semUnequal must not include multiple of gl_SemanticsRelease, gl_SemanticsAcquire, or " - "gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); - } - } - } - if (callNode.getOp() == EOpMemoryBarrier) { - if (storageClassSemantics == 0) { - error(loc, "Storage class semantics must not be zero", fnCandidate.getName().c_str(), ""); - } - } - if (callNode.getOp() == EOpBarrier && semantics != 0 && storageClassSemantics == 0) { - error(loc, "Storage class semantics must not be zero", fnCandidate.getName().c_str(), ""); - } - if ((callNode.getOp() == EOpAtomicCompSwap || callNode.getOp() == EOpImageAtomicCompSwap) && - (semantics2 & (gl_SemanticsRelease | gl_SemanticsAcquireRelease))) { - error(loc, "semUnequal must not be gl_SemanticsRelease or gl_SemanticsAcquireRelease", + if (((semantics & nonRelaxedMemoryOrder) && !IsPow2(semantics & nonRelaxedMemoryOrder)) || + ((semantics2 & nonRelaxedMemoryOrder) && !IsPow2(semantics2 & nonRelaxedMemoryOrder))) { + error(loc, + "Semantics must not include multiple of gl_SemanticsRelease, gl_SemanticsAcquire, or " + "gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } - if ((semantics & gl_SemanticsMakeAvailable) && - !(semantics & (gl_SemanticsRelease | gl_SemanticsAcquireRelease))) { + + if (((semantics & nonRelaxedMemoryOrder) && !storageClassSemantics) || + ((semantics2 & nonRelaxedMemoryOrder) && !storageClassSemantics2)) { + error(loc, + "Storage class semantics must not be zero when used with gl_SemanticsRelease, " + "gl_SemanticsAcquire, or gl_SemanticsAcquireRelease", + fnCandidate.getName().c_str(), ""); + } + + if ((storageClassSemantics && !(semantics & nonRelaxedMemoryOrder)) || + (storageClassSemantics2 && !(semantics2 & nonRelaxedMemoryOrder))) { + error(loc, + "Semantics must be gl_SemanticsRelease, gl_SemanticsAcquire, or gl_SemanticsAcquireRelease when used " + "with non-zero storage class semantics", + fnCandidate.getName().c_str(), ""); + } + + if (((semantics & gl_SemanticsMakeAvailable) && + !(semantics & (gl_SemanticsRelease | gl_SemanticsAcquireRelease))) || + ((semantics2 & gl_SemanticsMakeAvailable) && + !(semantics2 & (gl_SemanticsRelease | gl_SemanticsAcquireRelease)))) { error(loc, "gl_SemanticsMakeAvailable requires gl_SemanticsRelease or gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } - if ((semantics & gl_SemanticsMakeVisible) && - !(semantics & (gl_SemanticsAcquire | gl_SemanticsAcquireRelease))) { + + if (((semantics & gl_SemanticsMakeVisible) && !(semantics & (gl_SemanticsAcquire | gl_SemanticsAcquireRelease))) || + ((semantics2 & gl_SemanticsMakeVisible) && + !(semantics2 & (gl_SemanticsAcquire | gl_SemanticsAcquireRelease)))) { error(loc, "gl_SemanticsMakeVisible requires gl_SemanticsAcquire or gl_SemanticsAcquireRelease", fnCandidate.getName().c_str(), ""); } - if ((semantics & gl_SemanticsVolatile) && - (callNode.getOp() == EOpMemoryBarrier || callNode.getOp() == EOpBarrier)) { + + if ((callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore) && + (semantics & gl_SemanticsAcquire)) { + error(loc, "gl_SemanticsAcquire must not be used with (image) atomic store", fnCandidate.getName().c_str(), ""); + } + + if ((callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad) && + (semantics & gl_SemanticsRelease)) { + error(loc, "gl_SemanticsRelease must not be used with (image) atomic load", fnCandidate.getName().c_str(), ""); + } + + if ((callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore || + callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad) && + (semantics & gl_SemanticsAcquireRelease)) { + error(loc, "gl_SemanticsAcquireRelease must not be used with (image) atomic load/store", + fnCandidate.getName().c_str(), ""); + } + + if (callNode.getOp() == EOpMemoryBarrier && + !(semantics & (gl_SemanticsAcquire | gl_SemanticsRelease | gl_SemanticsAcquireRelease))) { + error(loc, + "Semantics must include exactly one of gl_SemanticsRelease, gl_SemanticsAcquire, or " + "gl_SemanticsAcquireRelease when used with memoryBarrier", + fnCandidate.getName().c_str(), ""); + } + + if ((callNode.getOp() == EOpMemoryBarrier || callNode.getOp() == EOpBarrier) && + (semantics & gl_SemanticsVolatile)) { error(loc, "gl_SemanticsVolatile must not be used with memoryBarrier or controlBarrier", fnCandidate.getName().c_str(), ""); } - if ((callNode.getOp() == EOpAtomicCompSwap || callNode.getOp() == EOpImageAtomicCompSwap) && - ((semantics ^ semantics2) & gl_SemanticsVolatile)) { - error(loc, "semEqual and semUnequal must either both include gl_SemanticsVolatile or neither", - fnCandidate.getName().c_str(), ""); + + if (callNode.getOp() == EOpAtomicCompSwap || callNode.getOp() == EOpImageAtomicCompSwap) { + if (semantics2 & (gl_SemanticsRelease | gl_SemanticsAcquireRelease)) { + error(loc, "semUnequal must not be gl_SemanticsRelease or gl_SemanticsAcquireRelease", + fnCandidate.getName().c_str(), ""); + } + if ((semantics2 & gl_SemanticsAcquire) && !(semantics & (gl_SemanticsAcquire | gl_SemanticsAcquireRelease))) { + error(loc, + "semUnequal must not be gl_SemanticsAcquire unless semEqual is gl_SemanticsAcquire " + "or gl_SemanticsAcquireRelease", + fnCandidate.getName().c_str(), ""); + } + if ((semantics2 & gl_SemanticsMakeVisible) && !(semantics & gl_SemanticsMakeVisible)) { + error(loc, + "semUnequal must not include gl_SemanticsMakeVisible unless semEqual also includes " + "gl_SemanticsMakeVisible", + fnCandidate.getName().c_str(), ""); + } + if (storageClassSemantics2 & ~(storageClassSemantics)) { + error(loc, "semStorageUnequal must not include any option that is not present in semStorageEqual", + fnCandidate.getName().c_str(), ""); + } + if ((semantics ^ semantics2) & gl_SemanticsVolatile) { + error(loc, "semEqual and semUnequal must either both include gl_SemanticsVolatile or neither", + fnCandidate.getName().c_str(), ""); + } } } @@ -2426,7 +2782,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan if (! fnCandidate[0].type->getSampler().shadow) compArg = 3; // check for constant offsets - if (! (*argp)[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion() + if (! (*argp)[fnCandidate[0].type->getSampler().shadow ? 3 : 2]->getAsConstantUnion() // NV_gpu_shader5 relaxes this limitation and allows for non-constant offsets && !extensionTurnedOn(E_GL_NV_gpu_shader5)) error(loc, "must be a compile-time constant:", feature, "offsets argument"); @@ -3123,6 +3479,30 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan if (!(*argp)[6]->getAsTyped()->getType().getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "matrixInterpretation", ""); break; + + case EOpCooperativeMatrixLoad: + case EOpCooperativeMatrixLoadNV: + case EOpCooperativeMatrixLoadTensorNV: + case EOpCooperativeMatrixStore: + case EOpCooperativeMatrixStoreNV: + case EOpCooperativeMatrixStoreTensorNV: + { + const TIntermTyped *arg1 = (*argp)[1]->getAsTyped(); + const TIntermTyped* base = TIntermediate::traverseLValueBase(arg1, true, true); + const char* errMsg = "Only l-values corresponding to storage block or shared variables can be used with " + "cooperative matrix load/store functions."; + if (base) { + const TType* refType = (base->getType().isReference()) ? base->getType().getReferentType() : nullptr; + const TQualifier& qualifier = + (refType != nullptr) ? refType->getQualifier() : base->getType().getQualifier(); + if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer) + error(loc, errMsg, fnCandidate.getName().c_str(), ""); + } else { + error(loc, errMsg, fnCandidate.getName().c_str(), ""); + } + } + break; + default: break; } @@ -3148,6 +3528,102 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; } + case EOpConstructSaturated: + { + auto &sequence = callNode.getAsAggregate()->getSequence(); + if (sequence.size() != 2) { + error(loc, "requires exactly two parameters", "", ""); + } + auto &op0Type = sequence[0]->getAsTyped()->getType(); + auto &op1Type = sequence[1]->getAsTyped()->getType(); + if (op0Type.getBasicType() != EbtFloatE5M2 && op0Type.getBasicType() != EbtFloatE4M3) { + error(loc, "first parameter must have floate5m2 or floate4m3 basic type", "", ""); + } + if (op1Type.getBasicType() == EbtFloatE5M2 || op1Type.getBasicType() == EbtFloatE4M3) { + error(loc, "second parameter must not have floate5m2 or floate4m3 basic type", "", ""); + } + + if (!(op0Type.isScalar() || op0Type.isVector() || op0Type.isCoopMatKHR())) { + error(loc, "first parameter must be scalar, vector, or cooperative matrix", "", ""); + } + if (!(op1Type.isScalar() || op1Type.isVector() || op1Type.isCoopMatKHR())) { + error(loc, "second parameter must be scalar, vector, or cooperative matrix", "", ""); + } + if (!(op0Type.sameElementShape(op1Type) || op0Type.sameCoopMatShape(op1Type))) { + error(loc, "types must match other than scalar type and coopmat Use", "", ""); + } + break; + } + case EOpTensorReadARM: + case EOpTensorWriteARM: + { + const TType &tensorType = (*argp)[0]->getAsTyped()->getType(); + + // Check that coordinates argument length matches rank of tensor argument. + int tensorRank = tensorType.getTensorRankARM(); + const TArraySizes *coordArgArrayTy = (*argp)[1]->getAsTyped()->getType().getArraySizes(); + assert(coordArgArrayTy->getNumDims() == 1 && "expecting 1D coordinate array"); + if (coordArgArrayTy->getDimSize(0) != tensorRank) { + error(loc, "number of coordinates does not match tensor rank", "coord", ""); + } + + // Check that tensor element type matches data argument. + TBasicType eltTy = tensorType.getBasicType(); + TBasicType argTy = (*argp)[2]->getAsTyped()->getType().getBasicType(); + if (eltTy != argTy) { + error(loc, "", "data", "data argument type (%s) does not match tensor element type (%s)", + TType::getBasicString(argTy), TType::getBasicString(eltTy)); + } + + // Check optional tensor operands. + if (argp->size() > 3) { + const TIntermConstantUnion* opArg = (*argp)[3]->getAsConstantUnion(); + if (!opArg) { + error(loc, "tensor operands argument must be a constant integral expression", "tensorOps", ""); + } + const unsigned int ops = opArg ? opArg->getConstArray()[0].getUConst() : 0; + const int gl_TensorOperandsOutOfBoundsValueARM = 0x2; + if (ops & gl_TensorOperandsOutOfBoundsValueARM) { + // Out-of-bounds values can only be used with reads. + if (callNode.getOp() != EOpTensorReadARM) { + error(loc, "out-of-bounds value is only valid with tensorReadARM", "tensorOps", ""); + } + // Check that an out-of-bounds value is present. + if (argp->size() == 4) { + error(loc, "expecting out-of-bounds value as next argument", "tensorOps", ""); + } else { + // Check constantness of out-of-bounds value. + const TIntermConstantUnion* oobArg = (*argp)[4]->getAsConstantUnion(); + if (!oobArg) { + error(loc, "argument following gl_TensorOperandsOutOfBoundsValueARM must be constant", "vararg", + ""); + } else if (oobArg->getType().getBasicType() != tensorType.getBasicType()) { + // The type of the OOB value does not match the tensor type. + error(loc, "", "vararg", + "out-of-bounds value type (%s) does not match tensor element type (%s)", + TType::getBasicString(oobArg->getBasicType()), TType::getBasicString(eltTy)); + + } + } + } + } + break; + } + + case EOpTensorSizeARM: + { + unsigned int tensorRank = (*argp)[0]->getAsTyped()->getType().getTensorRankARM(); + const TIntermConstantUnion *dimArg = (*argp)[1]->getAsConstantUnion(); + if (dimArg) { + if (dimArg->getConstArray()[0].getUConst() >= tensorRank) { + error(loc, "dimension argument exceeds tensor rank", "dim", ""); + } + } else { + error(loc, "dimension argument must be constant", "dim", ""); + } + break; + } + default: break; } @@ -4268,6 +4744,9 @@ void TParseContext::samplerCheck(const TSourceLoc& loc, const TType& type, const error(loc, "sampler/image types can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); } } + else if (type.isTensorARM() && type.getQualifier().storage != EvqUniform) { + error(loc, "tensorARM types can only be used in uniform variables or function parameters:", "tensorARM", identifier.c_str()); + } } void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) @@ -4424,7 +4903,7 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (! symbolTable.atGlobalLevel()) return; - if (!(publicType.userDef && publicType.userDef->isReference()) && !parsingBuiltins) { + if (!(publicType.userDef && publicType.userDef->isReference()) && !publicType.isTensorARM() && !parsingBuiltins) { if (qualifier.isMemoryQualifierImageAndSSBOOnly() && ! publicType.isImage() && publicType.qualifier.storage != EvqBuffer) { error(loc, "memory qualifiers cannot be used on this type", "", ""); } else if (qualifier.isMemory() && (publicType.basicType != EbtSampler) && !publicType.qualifier.isUniformOrBuffer()) { @@ -4450,11 +4929,6 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali // now, knowing it is a shader in/out, do all the in/out semantic checks - if (publicType.basicType == EbtBool && !parsingBuiltins) { - error(loc, "cannot be bool", GetStorageQualifierString(qualifier.storage), ""); - return; - } - if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble) { profileRequires(loc, EEsProfile, 300, nullptr, "non-float shader input/output"); profileRequires(loc, ~EEsProfile, 130, nullptr, "non-float shader input/output"); @@ -4775,7 +5249,7 @@ TPrecisionQualifier TParseContext::getDefaultPrecision(TPublicType& publicType) return defaultPrecision[publicType.basicType]; } -void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType baseType, TQualifier& qualifier, bool isCoopMatOrVec) +void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType baseType, TQualifier& qualifier, bool hasTypeParameter) { // Built-in symbols are allowed some ambiguous precisions, to be pinned down // later by context. @@ -4785,7 +5259,7 @@ void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType ba if (baseType == EbtAtomicUint && qualifier.precision != EpqNone && qualifier.precision != EpqHigh) error(loc, "atomic counters can only be highp", "atomic_uint", ""); - if (isCoopMatOrVec) + if (hasTypeParameter) return; if (baseType == EbtFloat || baseType == EbtUint || baseType == EbtInt || baseType == EbtSampler || baseType == EbtAtomicUint) { @@ -6943,6 +7417,22 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb break; } } + + // Check that an in/out variable or block doesn't contain a boolean member + // Don't enforce if redeclaring a builtin, which are allowed to contain bool + if (!parsingBuiltins && type.containsBasicType(EbtBool) && !builtInName(symbol.getName())) { + switch(qualifier.storage) { + case EvqVaryingIn: + case EvqVaryingOut: + { + const char *reason = type.getBasicType() == EbtBool ? "cannot be bool" : "cannot contain bool"; + error(loc, reason, GetStorageQualifierString(qualifier.storage), ""); + break; + } + default: + break; + } + } } // "For some blocks declared as arrays, the location can only be applied at the block level: @@ -7214,6 +7704,8 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EbtDouble: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: break; default: error(loc, "cannot be applied to this type", "constant_id", ""); @@ -7498,6 +7990,12 @@ const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunct return symbol->getAsFunction(); } + if (call.getName() == "saturatedConvertEXT") { + TSymbol* symbol = symbolTable.find("saturatedConvertEXT(", &builtIn); + if (symbol) + return symbol->getAsFunction(); + } + bool explicitTypesEnabled = extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int8) || extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16) || @@ -7682,8 +8180,7 @@ const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFu TType toElementType(to, 0); // Load/store tensor functions allow any element type for the pointer if ((op == EOpCooperativeMatrixLoadTensorNV || op == EOpCooperativeMatrixStoreTensorNV) && - param == 1 && - (from.getQualifier().storage == EvqBuffer || from.getQualifier().storage == EvqShared)) { + param == 1) { return true; } if (fromElementType == toElementType) @@ -7695,6 +8192,8 @@ const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFu return from.sameCoopMatBaseType(to); if (from.isCoopVecNV() && to.isCoopVecNV()) return from.sameCoopVecBaseType(to); + if (from.isTensorARM() && to.isTensorARM()) + return from.sameTensorBaseTypeARM(to); return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType()); }; @@ -7757,7 +8256,7 @@ const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFu // "To determine whether the conversion for a single argument in one match // is better than that for another match, the conversion is assigned of the // three ranks ordered from best to worst: -// 1. Exact match: no conversion. +// 1. Exact match: no conversion. // 2. Promotion: integral or floating-point promotion. // 3. Conversion: integral conversion, floating-point conversion, // floating-integral conversion. @@ -7794,8 +8293,7 @@ const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc, TType toElementType(to, 0); // Load/store tensor functions allow any element type for the pointer if ((op == EOpCooperativeMatrixLoadTensorNV || op == EOpCooperativeMatrixStoreTensorNV) && - param == 1 && - (from.getQualifier().storage == EvqBuffer || from.getQualifier().storage == EvqShared)) { + param == 1) { return true; } if (fromElementType == toElementType) @@ -7807,6 +8305,8 @@ const TFunction* TParseContext::findFunctionExplicitTypes(const TSourceLoc& loc, return from.sameCoopMatBaseType(to); if (from.isCoopVecNV() && to.isCoopVecNV()) return from.sameCoopVecBaseType(to); + if (from.isTensorARM() && to.isTensorARM()) + return from.sameTensorBaseTypeARM(to); return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType()); }; @@ -7955,6 +8455,8 @@ void TParseContext::typeParametersCheck(const TSourceLoc& loc, const TPublicType case EbtFloat: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtInt: case EbtInt8: case EbtInt16: @@ -8011,6 +8513,24 @@ void TParseContext::typeParametersCheck(const TSourceLoc& loc, const TPublicType } } } + if (publicType.isTensorARM()) { + if (publicType.typeParameters == nullptr) { + error(loc, "tensor type is missing type parameters", "", ""); + return; + } + if (publicType.typeParameters->arraySizes == nullptr) { + error(loc, "tensor type is missing rank information", "", ""); + return; + } + if (publicType.typeParameters->arraySizes->getNumDims() != 1) { + error(loc, "tensor type requires exactly 1 rank specifier", "", ""); + return; + } + if (publicType.typeParameters->arraySizes->getDimSize(0) < 1) { + error(loc, "tensor rank must be greater than or equal to 1", "", ""); + return; + } + } } bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType& publicType, @@ -8106,12 +8626,15 @@ static void ForEachOpaque(const TType& type, const TString& path, Function callb ++flatIndex) { TString subscriptPath = path; - for (size_t dimIndex = 0; dimIndex < indices.size(); ++dimIndex) + if (path != "") { - int index = indices[dimIndex]; - subscriptPath.append("["); - subscriptPath.append(String(index)); - subscriptPath.append("]"); + for (size_t dimIndex = 0; dimIndex < indices.size(); ++dimIndex) + { + int index = indices[dimIndex]; + subscriptPath.append("["); + subscriptPath.append(String(index)); + subscriptPath.append("]"); + } } recursion(type, subscriptPath, true, recursion); @@ -8133,8 +8656,11 @@ static void ForEachOpaque(const TType& type, const TString& path, Function callb for (const TTypeLoc& typeLoc : types) { TString nextPath = path; - nextPath.append("."); - nextPath.append(typeLoc.type->getFieldName()); + if (path != "") + { + nextPath.append("."); + nextPath.append(typeLoc.type->getFieldName()); + } recursion(*(typeLoc.type), nextPath, false, recursion); } @@ -8192,9 +8718,13 @@ void TParseContext::vkRelaxedRemapFunctionParameter(TFunction* function, TParame if (!param.type->isStruct() || !param.type->containsOpaque()) return; - ForEachOpaque(*param.type, (param.name ? *param.name : param.type->getFieldName()), + TString fieldName = param.name + ? *param.name + : param.type->hasFieldName() ? param.type->getFieldName() : ""; + + ForEachOpaque(*param.type, fieldName, [function, param, newParams](const TType& type, const TString& path) { - TString* memberName = NewPoolTString(path.c_str()); + TString* memberName = path != "" ? NewPoolTString(path.c_str()) : nullptr; TType* memberType = new TType(); memberType->shallowCopy(type); @@ -8433,6 +8963,29 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden } else if (publicType.typeParameters->arraySizes->getDimSize(0) <= 0) { error(loc, "expected positive number of components", identifier.c_str(), ""); } + } else if (type.isTensorARM()) { + intermediate.setUseStorageBuffer(); + + if (!publicType.typeParameters || publicType.typeParameters->arraySizes->getNumDims() != 1) { + error(loc, "expected two type parameters", identifier.c_str(), ""); + } + if (publicType.typeParameters) { + if (publicType.typeParameters->basicType != EbtBool && + publicType.typeParameters->basicType != EbtInt8 && + publicType.typeParameters->basicType != EbtInt16 && + publicType.typeParameters->basicType != EbtInt && + publicType.typeParameters->basicType != EbtInt64 && + publicType.typeParameters->basicType != EbtUint8 && + publicType.typeParameters->basicType != EbtUint16 && + publicType.typeParameters->basicType != EbtUint && + publicType.typeParameters->basicType != EbtUint64 && + publicType.typeParameters->basicType != EbtFloat16 && + publicType.typeParameters->basicType != EbtFloat && + publicType.typeParameters->basicType != EbtDouble) { + error(loc, "expected bool, integer or floating point type parameter", identifier.c_str(), ""); + } + + } } else { if (publicType.typeParameters && publicType.typeParameters->arraySizes->getNumDims() != 0) { error(loc, "unexpected type parameters", identifier.c_str(), ""); @@ -8469,6 +9022,10 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden (type.getQualifier().storage == EvqVaryingIn || type.getQualifier().storage == EvqVaryingOut)) error(loc, "qualifier", "bfloat16 types not allowed as input/output", ""); + if ((type.getBasicType() == EbtFloatE5M2 || type.getBasicType() == EbtFloatE4M3) && + (type.getQualifier().storage == EvqVaryingIn || type.getQualifier().storage == EvqVaryingOut)) + error(loc, "qualifier", "fp8 types not allowed as input/output", ""); + if (type.getQualifier().storage == EvqtaskPayloadSharedEXT) intermediate.addTaskPayloadEXTCount(); if (type.getQualifier().storage == EvqShared && type.containsCoopMat()) @@ -9145,6 +9702,20 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructBFloat16; break; + case EOpConstructFloatE5M2Vec2: + case EOpConstructFloatE5M2Vec3: + case EOpConstructFloatE5M2Vec4: + case EOpConstructFloatE5M2: + basicOp = EOpConstructFloatE5M2; + break; + + case EOpConstructFloatE4M3Vec2: + case EOpConstructFloatE4M3Vec3: + case EOpConstructFloatE4M3Vec4: + case EOpConstructFloatE4M3: + basicOp = EOpConstructFloatE4M3; + break; + case EOpConstructI8Vec2: case EOpConstructI8Vec3: case EOpConstructI8Vec4: @@ -9370,6 +9941,34 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T return intermediate.setAggregateOperator(newNode, op, type, loc); } +void TParseContext::makeVariadic(TFunction *F, const TSourceLoc &loc) { + if (parsingBuiltins) { + F->setVariadic(); + } else { + error(loc, "variadic argument specifier is only available for builtins", "...", ""); + } +} + +TParameter TParseContext::getParamWithDefault(const TPublicType& ty, TString* identifier, TIntermTyped* initializer, + const TSourceLoc& loc) +{ + if (!parsingBuiltins) { + error(loc, "default argument values are only available for builtins", "=", ""); + initializer = nullptr; + } + if (ty.arraySizes) { + error(loc, "array arguments cannot be default-initialized", identifier->c_str(), ""); + initializer = nullptr; + } + if (ty.basicType == EbtVoid) { + error(loc, "illegal use of type 'void'", identifier->c_str(), ""); + initializer = nullptr; + } + reservedErrorCheck(loc, *identifier); + TParameter param = {identifier, new TType(ty), initializer}; + return param; +} + // This function tests for the type of the parameters to the structure or array constructor. Raises // an error message if the expected type does not match the parameter passed to the constructor. // diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h index 47a72999f..2bb82ebc2 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h @@ -407,7 +407,7 @@ public: void setDefaultPrecision(const TSourceLoc&, TPublicType&, TPrecisionQualifier); int computeSamplerTypeIndex(TSampler&); TPrecisionQualifier getDefaultPrecision(TPublicType&); - void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&, bool isCoopMatOrVec); + void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&, bool hasTypeParameter); void parameterTypeCheck(const TSourceLoc&, TStorageQualifier qualifier, const TType& type); bool containsFieldWithBasicType(const TType& type ,TBasicType basicType); TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&); @@ -450,6 +450,9 @@ public: TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&); TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); + void makeVariadic(TFunction *F, const TSourceLoc &loc); + TParameter getParamWithDefault(const TPublicType& ty, TString* identifier, TIntermTyped* initializer, + const TSourceLoc& loc); void inheritMemoryQualifiers(const TQualifier& from, TQualifier& to); void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = nullptr, TArraySizes* arraySizes = nullptr); void blockStorageRemap(const TSourceLoc&, const TString*, TQualifier&); @@ -510,6 +513,7 @@ protected: TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); void finish() override; void handleCoopMat2FunctionCall(const TSourceLoc& loc, const TFunction* fnCandidate, TIntermTyped* result, TIntermNode* arguments); + void handleVector2CoopMatConversionCall(const TSourceLoc& loc, const TFunction* fnCandidate, TIntermTyped* &result, TIntermNode* arguments); virtual const char* getGlobalUniformBlockName() const override; virtual void finalizeGlobalUniformBlockLayout(TVariable&) override; diff --git a/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp b/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp index 4705d9390..28b1fe13b 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp @@ -542,6 +542,16 @@ const std::unordered_map KeywordMap { {"bf16vec3",BF16VEC3}, {"bf16vec4",BF16VEC4}, + {"floate5m2_t",FLOATE5M2_T}, + {"fe5m2vec2",FE5M2VEC2}, + {"fe5m2vec3",FE5M2VEC3}, + {"fe5m2vec4",FE5M2VEC4}, + + {"floate4m3_t",FLOATE4M3_T}, + {"fe4m3vec2",FE4M3VEC2}, + {"fe4m3vec3",FE4M3VEC3}, + {"fe4m3vec4",FE4M3VEC4}, + {"float32_t",FLOAT32_T}, {"f32vec2",F32VEC2}, {"f32vec3",F32VEC3}, @@ -759,6 +769,8 @@ const std::unordered_map KeywordMap { {"hitObjectNV",HITOBJECTNV}, {"hitObjectAttributeNV",HITOBJECTATTRNV}, + {"tensorARM",TENSORARM}, + {"__function",FUNCTION}, {"tensorLayoutNV",TENSORLAYOUTNV}, {"tensorViewNV",TENSORVIEWNV}, @@ -824,12 +836,22 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) loc = ppToken.loc; parserToken->sType.lex.loc = loc; switch (token) { - case ';': afterType = false; afterBuffer = false; return SEMICOLON; - case ',': afterType = false; return COMMA; + case ';': afterType = false; afterBuffer = false; inDeclaratorList = false; afterDeclarator = false; angleBracketDepth = 0; squareBracketDepth = 0; parenDepth = 0; return SEMICOLON; + case ',': + // If we just processed a declarator (identifier after a type), this comma + // indicates that we're in a declarator list. Note that 'afterDeclarator' is + // only set when we are not inside a template parameter list, array expression, + // or function parameter list. + if (afterDeclarator) { + inDeclaratorList = true; + } + afterType = false; + afterDeclarator = false; + return COMMA; case ':': return COLON; - case '=': afterType = false; return EQUAL; - case '(': afterType = false; return LEFT_PAREN; - case ')': afterType = false; return RIGHT_PAREN; + case '=': afterType = false; inDeclaratorList = false; afterDeclarator = false; return EQUAL; + case '(': afterType = false; inDeclaratorList = false; afterDeclarator = false; parenDepth++; return LEFT_PAREN; + case ')': afterType = false; inDeclaratorList = false; afterDeclarator = false; if (parenDepth > 0) parenDepth--; return RIGHT_PAREN; case '.': field = true; return DOT; case '!': return BANG; case '-': return DASH; @@ -838,16 +860,16 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) case '*': return STAR; case '/': return SLASH; case '%': return PERCENT; - case '<': return LEFT_ANGLE; - case '>': return RIGHT_ANGLE; + case '<': angleBracketDepth++; return LEFT_ANGLE; + case '>': if (angleBracketDepth > 0) angleBracketDepth--; return RIGHT_ANGLE; case '|': return VERTICAL_BAR; case '^': return CARET; case '&': return AMPERSAND; case '?': return QUESTION; - case '[': return LEFT_BRACKET; - case ']': return RIGHT_BRACKET; - case '{': afterStruct = false; afterBuffer = false; return LEFT_BRACE; - case '}': return RIGHT_BRACE; + case '[': squareBracketDepth++; return LEFT_BRACKET; + case ']': if (squareBracketDepth > 0) squareBracketDepth--; return RIGHT_BRACKET; + case '{': afterStruct = false; afterBuffer = false; inDeclaratorList = false; afterDeclarator = false; angleBracketDepth = 0; squareBracketDepth = 0; parenDepth = 0; return LEFT_BRACE; + case '}': inDeclaratorList = false; afterDeclarator = false; angleBracketDepth = 0; squareBracketDepth = 0; parenDepth = 0; return RIGHT_BRACE; case '\\': parseContext.error(loc, "illegal use of escape character", "\\", ""); break; @@ -1494,6 +1516,28 @@ int TScanContext::tokenizeIdentifier() return identifierOrType(); + case FLOATE5M2_T: + case FE5M2VEC2: + case FE5M2VEC3: + case FE5M2VEC4: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_float_e5m2)) + return keyword; + + return identifierOrType(); + + case FLOATE4M3_T: + case FE4M3VEC2: + case FE4M3VEC3: + case FE4M3VEC4: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_float_e4m3)) + return keyword; + + return identifierOrType(); + case SAMPLERCUBEARRAY: case SAMPLERCUBEARRAYSHADOW: case ISAMPLERCUBEARRAY: @@ -1824,6 +1868,12 @@ int TScanContext::tokenizeIdentifier() parseContext.extensionTurnedOn(E_GL_NV_integer_cooperative_matrix)) return keyword; return identifierOrType(); + case TENSORARM: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_ARM_tensors)) + return keyword; + return identifierOrType(); case COOPMAT: afterType = true; @@ -1895,14 +1945,29 @@ int TScanContext::identifierOrType() if (field) return IDENTIFIER; + // If we see an identifier right after a type, this might be a declarator. + // But not in template parameters (inside angle brackets), array expressions (inside square brackets), + // or function parameters (inside parentheses) + if (afterType && angleBracketDepth == 0 && squareBracketDepth == 0 && parenDepth == 0) { + afterDeclarator = true; + afterType = false; + return IDENTIFIER; + } + parserToken->sType.lex.symbol = parseContext.symbolTable.find(*parserToken->sType.lex.string); if ((afterType == false && afterStruct == false) && parserToken->sType.lex.symbol != nullptr) { if (const TVariable* variable = parserToken->sType.lex.symbol->getAsVariable()) { if (variable->isUserType() && // treat redeclaration of forward-declared buffer/uniform reference as an identifier !(variable->getType().isReference() && afterBuffer)) { - afterType = true; + // If we're in a declarator list (like "float a, B;"), treat struct names as IDENTIFIER + // to fix GitHub issue #3931 + if (inDeclaratorList) { + return IDENTIFIER; + } + + afterType = true; return TYPE_NAME; } } diff --git a/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h b/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h index 74b2b3c74..ce2145eb9 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h +++ b/3rdparty/glslang/glslang/MachineIndependent/ScanContext.h @@ -53,7 +53,7 @@ public: explicit TScanContext(TParseContextBase& pc) : parseContext(pc), afterType(false), afterStruct(false), - field(false), afterBuffer(false) { } + field(false), afterBuffer(false), inDeclaratorList(false), afterDeclarator(false), angleBracketDepth(0), squareBracketDepth(0), parenDepth(0) { } virtual ~TScanContext() { } static void fillInKeywordMap(); @@ -82,6 +82,11 @@ protected: bool afterStruct; // true if we've recognized the STRUCT keyword, so can only be looking for an identifier bool field; // true if we're on a field, right after a '.' bool afterBuffer; // true if we've recognized the BUFFER keyword + bool inDeclaratorList; // true if we detected we're in a declarator list like "float a, b;" + bool afterDeclarator; // true if we just saw an identifier after a type (potential declarator) + int angleBracketDepth; // track nesting level of < > to detect template parameters + int squareBracketDepth; // track nesting level of [ ] to detect array expressions + int parenDepth; // track nesting level of ( ) to detect function parameters TSourceLoc loc; TParserToken* parserToken; TPpToken* ppToken; diff --git a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp index fcfa5df04..dbcd575ec 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp @@ -55,7 +55,9 @@ namespace glslang { // void TType::buildMangledName(TString& mangledName) const { - if (isMatrix()) + if (isTensorARM()) + mangledName += 'T'; + else if (isMatrix()) mangledName += 'm'; else if (isVector()) mangledName += 'v'; @@ -71,6 +73,8 @@ void TType::buildMangledName(TString& mangledName) const case EbtDouble: mangledName += 'd'; break; case EbtFloat16: mangledName += "f16"; break; case EbtBFloat16: mangledName += "bf16"; break; + case EbtFloatE5M2: mangledName += "fe5m2"; break; + case EbtFloatE4M3: mangledName += "fe4m3"; break; case EbtInt8: mangledName += "i8"; break; case EbtUint8: mangledName += "u8"; break; case EbtInt16: mangledName += "i16"; break; @@ -421,6 +425,7 @@ TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf) defined = copyOf.defined; prototyped = copyOf.prototyped; implicitThis = copyOf.implicitThis; + variadic = copyOf.variadic; illegalImplicitThis = copyOf.illegalImplicitThis; defaultParamCount = copyOf.defaultParamCount; spirvInst = copyOf.spirvInst; diff --git a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h index 6d1a0c8e2..c2f5ccf15 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h +++ b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.h @@ -232,6 +232,13 @@ struct TParameter { name = nullptr; type = param.type->clone(); defaultValue = param.defaultValue; + if (defaultValue) { + // The defaultValue of a builtin is created in a TPoolAllocator that no longer exists + // when parsing the user program, so make a deep copy. + if (const auto *constUnion = defaultValue->getAsConstantUnion()) { + defaultValue = new TIntermConstantUnion(*constUnion->getConstArray().clone(), constUnion->getType()); + } + } return *this; } TBuiltInVariable getDeclaredBuiltIn() const { return type->getQualifier().declaredBuiltIn; } @@ -245,12 +252,12 @@ public: explicit TFunction(TOperator o) : TSymbol(nullptr), op(o), - defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), defaultParamCount(0) { } + defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), variadic(false), defaultParamCount(0) { } TFunction(const TString *name, const TType& retType, TOperator tOp = EOpNull) : TSymbol(name), mangledName(*name + '('), op(tOp), - defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), defaultParamCount(0), + defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), variadic(false), defaultParamCount(0), linkType(ELinkNone) { returnType.shallowCopy(retType); @@ -268,6 +275,7 @@ public: virtual void addParameter(TParameter& p) { assert(writable); + assert(!variadic && "cannot add more parameters if function is marked variadic"); parameters.push_back(p); p.type->appendMangledName(mangledName); @@ -310,6 +318,13 @@ public: virtual bool hasImplicitThis() const { return implicitThis; } virtual void setIllegalImplicitThis() { assert(writable); illegalImplicitThis = true; } virtual bool hasIllegalImplicitThis() const { return illegalImplicitThis; } + virtual void setVariadic() { + assert(writable); + assert(!variadic && "function was already marked variadic"); + variadic = true; + mangledName += 'z'; + } + virtual bool isVariadic() const { return variadic; } // Return total number of parameters virtual int getParamCount() const { return static_cast(parameters.size()); } @@ -352,6 +367,7 @@ protected: // even if it finds member variables in the symbol table. // This is important for a static member function that has member variables in scope, // but is not allowed to use them, or see hidden symbols instead. + bool variadic; int defaultParamCount; TSpirvInstruction spirvInst; // SPIR-V instruction qualifiers diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp index 63ad51a64..59628b742 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp @@ -319,11 +319,13 @@ void TParseVersions::initializeExtensionBehavior() // ARM extensionBehavior[E_GL_ARM_shader_core_builtins] = EBhDisable; + extensionBehavior[E_GL_ARM_tensors] = EBhDisable; // QCOM extensionBehavior[E_GL_QCOM_image_processing] = EBhDisable; extensionBehavior[E_GL_QCOM_image_processing2] = EBhDisable; extensionBehavior[E_GL_QCOM_tile_shading] = EBhDisable; + extensionBehavior[E_GL_QCOM_cooperative_matrix_conversion] = EBhDisable; // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; @@ -381,6 +383,8 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_texture_offset_non_const] = EBhDisable; extensionBehavior[E_GL_EXT_nontemporal_keyword] = EBhDisable; extensionBehavior[E_GL_EXT_bfloat16] = EBhDisable; + extensionBehavior[E_GL_EXT_float_e4m3] = EBhDisable; + extensionBehavior[E_GL_EXT_float_e5m2] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -462,6 +466,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_QCOM_image_processing 1\n" "#define GL_QCOM_image_processing2 1\n" "#define GL_QCOM_tile_shading 1\n" + "#define GL_QCOM_cooperative_matrix_conversion 1\n" ; if (version >= 300) { @@ -593,6 +598,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_QCOM_image_processing 1\n" "#define GL_QCOM_image_processing2 1\n" "#define GL_QCOM_tile_shading 1\n" + "#define GL_QCOM_cooperative_matrix_conversion 1\n" "#define GL_EXT_shader_explicit_arithmetic_types 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n" @@ -619,6 +625,8 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_integer_dot_product 1\n" "#define GL_EXT_bfloat16 1\n" + "#define GL_EXT_float_e5m2 1\n" + "#define GL_EXT_float_e4m3 1\n" ; if (spvVersion.spv == 0) { @@ -1303,6 +1311,26 @@ void TParseVersions::bfloat16ScalarVectorCheck(const TSourceLoc& loc, const char } } +void TParseVersions::floate5m2ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (!builtIn) { + const char* const extensions[] = { + E_GL_EXT_float_e5m2, + }; + requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); + } +} + +void TParseVersions::floate4m3ScalarVectorCheck(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (!builtIn) { + const char* const extensions[] = { + E_GL_EXT_float_e4m3, + }; + requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); + } +} + // Call for any operation needing GLSL float32 data-type support. void TParseVersions::explicitFloat32Check(const TSourceLoc& loc, const char* op, bool builtIn) { @@ -1439,6 +1467,14 @@ void TParseVersions::coopmatCheck(const TSourceLoc& loc, const char* op, bool bu } } +void TParseVersions::coopmatConverisonCheckQCOM(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (!builtIn) { + const char* const extensions[] = {E_GL_KHR_cooperative_matrix}; + requireExtensions(loc, sizeof(extensions) / sizeof(extensions[0]), extensions, op); + } +} + void TParseVersions::tensorLayoutViewCheck(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { @@ -1463,6 +1499,14 @@ void TParseVersions::intattachmentCheck(const TSourceLoc& loc, const char* op, b } } +void TParseVersions::tensorCheckARM(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (!builtIn) { + const char* const extensions[] = {E_GL_ARM_tensors}; + requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); + } +} + // Call for any operation removed because SPIR-V is in use. void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op) { diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.h b/3rdparty/glslang/glslang/MachineIndependent/Versions.h index bf7bfc0e0..8bc4f7132 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.h +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.h @@ -293,6 +293,7 @@ const char* const E_GL_NV_gpu_shader5 = "GL_NV_gpu_sha // ARM const char* const E_GL_ARM_shader_core_builtins = "GL_ARM_shader_core_builtins"; +const char* const E_GL_ARM_tensors = "GL_ARM_tensors"; // Arrays of extensions for the above viewportEXTs duplications @@ -303,6 +304,7 @@ const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]); const char* const E_GL_QCOM_image_processing = "GL_QCOM_image_processing"; const char* const E_GL_QCOM_image_processing2 = "GL_QCOM_image_processing2"; const char* const E_GL_QCOM_tile_shading = "GL_QCOM_tile_shading"; +const char* const E_GL_QCOM_cooperative_matrix_conversion = "GL_QCOM_cooperative_matrix_conversion"; // AEP const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a"; @@ -359,6 +361,8 @@ const char* const E_GL_EXT_texture_shadow_lod = "GL_EXT_texture_shadow_lod"; const char* const E_GL_EXT_integer_dot_product = "GL_EXT_integer_dot_product"; const char* const E_GL_EXT_bfloat16 = "GL_EXT_bfloat16"; +const char* const E_GL_EXT_float_e5m2 = "GL_EXT_float_e5m2"; +const char* const E_GL_EXT_float_e4m3 = "GL_EXT_float_e4m3"; // Arrays of extensions for the above AEP duplications diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang.y b/3rdparty/glslang/glslang/MachineIndependent/glslang.y index 006ca1645..e9b1aac15 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang.y +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang.y @@ -146,7 +146,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY %token ATTRIBUTE VARYING -%token BFLOAT16_T FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T +%token FLOATE5M2_T FLOATE4M3_T BFLOAT16_T FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T %token INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T %token I64VEC2 I64VEC3 I64VEC4 %token U64VEC2 U64VEC3 U64VEC4 @@ -158,6 +158,8 @@ extern int yylex(YYSTYPE*, TParseContext&); %token U8VEC2 U8VEC3 U8VEC4 %token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 %token BF16VEC2 BF16VEC3 BF16VEC4 +%token FE5M2VEC2 FE5M2VEC3 FE5M2VEC4 +%token FE4M3VEC2 FE4M3VEC3 FE4M3VEC4 %token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 %token F32VEC2 F32VEC3 F32VEC4 F32MAT2 F32MAT3 F32MAT4 %token F64VEC2 F64VEC3 F64VEC4 F64MAT2 F64MAT3 F64MAT4 @@ -182,6 +184,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token COOPVECNV %token HITOBJECTNV HITOBJECTATTRNV %token TENSORLAYOUTNV TENSORVIEWNV +%token TENSORARM // combined image/sampler %token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW @@ -925,15 +928,9 @@ declaration parseContext.updateStandaloneQualifierDefaults($1.loc, $1); $$ = 0; } - | type_qualifier IDENTIFIER SEMICOLON { + | type_qualifier identifier_list SEMICOLON { parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); - parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$2.string); - $$ = 0; - } - | type_qualifier IDENTIFIER identifier_list SEMICOLON { - parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); - $3->push_back($2.string); - parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$3); + parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$2); $$ = 0; } ; @@ -950,9 +947,9 @@ block_structure } identifier_list - : COMMA IDENTIFIER { + : IDENTIFIER { $$ = new TIdentifierList; - $$->push_back($2.string); + $$->push_back($1.string); } | identifier_list COMMA IDENTIFIER { $$ = $1; @@ -1037,6 +1034,10 @@ function_header_with_parameters parseContext.vkRelaxedRemapFunctionParameter($1, $3.param); } } + | function_header_with_parameters COMMA DOT DOT DOT { + $$ = $1; + parseContext.makeVariadic($1, $3.loc); + } ; function_header @@ -1097,6 +1098,11 @@ parameter_declarator $$.loc = $2.loc; $$.param = param; } + | type_specifier IDENTIFIER EQUAL initializer { + TParameter param = parseContext.getParamWithDefault($1, $2.string, $4, $3.loc); + $$.loc = $2.loc; + $$.param = param; + } ; parameter_declaration @@ -1107,7 +1113,7 @@ parameter_declaration $$ = $2; if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMatOrVec()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->hasTypeParameter()); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); @@ -1119,7 +1125,7 @@ parameter_declaration parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMatOrVec()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->hasTypeParameter()); } // // Without name @@ -1128,7 +1134,7 @@ parameter_declaration $$ = $2; if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMatOrVec()); + parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->hasTypeParameter()); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); @@ -1139,7 +1145,7 @@ parameter_declaration parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMatOrVec()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->hasTypeParameter()); } ; @@ -1214,7 +1220,7 @@ fully_specified_type parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); } - parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier, $$.isCoopmatOrvec()); + parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier, $$.hasTypeParameter()); } | type_qualifier type_specifier { parseContext.globalQualifierFixCheck($1.loc, $1.qualifier, false, &$2); @@ -1231,7 +1237,7 @@ fully_specified_type parseContext.checkNoShaderLayouts($2.loc, $1.shaderQualifiers); $2.shaderQualifiers.merge($1.shaderQualifiers); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); - parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmatOrvec()); + parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.hasTypeParameter()); $$ = $2; @@ -1943,6 +1949,16 @@ type_specifier_nonarray $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBFloat16; } + | FLOATE5M2_T { + parseContext.floate5m2ScalarVectorCheck($1.loc, "floate5m2_t", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloatE5M2; + } + | FLOATE4M3_T { + parseContext.floate4m3ScalarVectorCheck($1.loc, "floate4m3_t", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloatE4M3; + } | FLOAT16_T { parseContext.float16ScalarVectorCheck($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2040,6 +2056,42 @@ type_specifier_nonarray $$.basicType = EbtBFloat16; $$.setVector(4); } + | FE5M2VEC2 { + parseContext.floate5m2ScalarVectorCheck($1.loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloatE5M2; + $$.setVector(2); + } + | FE5M2VEC3 { + parseContext.floate5m2ScalarVectorCheck($1.loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloatE5M2; + $$.setVector(3); + } + | FE5M2VEC4 { + parseContext.floate5m2ScalarVectorCheck($1.loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloatE5M2; + $$.setVector(4); + } + | FE4M3VEC2 { + parseContext.floate4m3ScalarVectorCheck($1.loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloatE4M3; + $$.setVector(2); + } + | FE4M3VEC3 { + parseContext.floate4m3ScalarVectorCheck($1.loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloatE4M3; + $$.setVector(3); + } + | FE4M3VEC4 { + parseContext.floate4m3ScalarVectorCheck($1.loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloatE4M3; + $$.setVector(4); + } | F16VEC2 { parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -3585,6 +3637,12 @@ type_specifier_nonarray $$.basicType = EbtCoopvecNV; $$.coopvecNV = true; } + | TENSORARM { + parseContext.tensorCheckARM($1.loc, "tensorARM", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.tensorRankARM = 1; // placeholder value + $$.basicType = EbtTensorARM; + } | spirv_type_specifier { parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); $$ = $1; @@ -3686,7 +3744,7 @@ struct_declaration $$ = $2; parseContext.voidErrorCheck($1.loc, (*$2)[0].type->getFieldName(), $1.basicType); - parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier, $1.isCoopmatOrvec()); + parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier, $1.hasTypeParameter()); for (unsigned int i = 0; i < $$->size(); ++i) { TType type($1); @@ -3710,7 +3768,7 @@ struct_declaration parseContext.memberQualifierCheck($1); parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); - parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmatOrvec()); + parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.hasTypeParameter()); for (unsigned int i = 0; i < $$->size(); ++i) { TType type($2); diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp index 9cc9ac985..a08410bc4 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp @@ -184,549 +184,558 @@ enum yysymbol_kind_t YYSYMBOL_UTEXTURE2DARRAY = 60, /* UTEXTURE2DARRAY */ YYSYMBOL_ATTRIBUTE = 61, /* ATTRIBUTE */ YYSYMBOL_VARYING = 62, /* VARYING */ - YYSYMBOL_BFLOAT16_T = 63, /* BFLOAT16_T */ - YYSYMBOL_FLOAT16_T = 64, /* FLOAT16_T */ - YYSYMBOL_FLOAT32_T = 65, /* FLOAT32_T */ - YYSYMBOL_DOUBLE = 66, /* DOUBLE */ - YYSYMBOL_FLOAT64_T = 67, /* FLOAT64_T */ - YYSYMBOL_INT64_T = 68, /* INT64_T */ - YYSYMBOL_UINT64_T = 69, /* UINT64_T */ - YYSYMBOL_INT32_T = 70, /* INT32_T */ - YYSYMBOL_UINT32_T = 71, /* UINT32_T */ - YYSYMBOL_INT16_T = 72, /* INT16_T */ - YYSYMBOL_UINT16_T = 73, /* UINT16_T */ - YYSYMBOL_INT8_T = 74, /* INT8_T */ - YYSYMBOL_UINT8_T = 75, /* UINT8_T */ - YYSYMBOL_I64VEC2 = 76, /* I64VEC2 */ - YYSYMBOL_I64VEC3 = 77, /* I64VEC3 */ - YYSYMBOL_I64VEC4 = 78, /* I64VEC4 */ - YYSYMBOL_U64VEC2 = 79, /* U64VEC2 */ - YYSYMBOL_U64VEC3 = 80, /* U64VEC3 */ - YYSYMBOL_U64VEC4 = 81, /* U64VEC4 */ - YYSYMBOL_I32VEC2 = 82, /* I32VEC2 */ - YYSYMBOL_I32VEC3 = 83, /* I32VEC3 */ - YYSYMBOL_I32VEC4 = 84, /* I32VEC4 */ - YYSYMBOL_U32VEC2 = 85, /* U32VEC2 */ - YYSYMBOL_U32VEC3 = 86, /* U32VEC3 */ - YYSYMBOL_U32VEC4 = 87, /* U32VEC4 */ - YYSYMBOL_I16VEC2 = 88, /* I16VEC2 */ - YYSYMBOL_I16VEC3 = 89, /* I16VEC3 */ - YYSYMBOL_I16VEC4 = 90, /* I16VEC4 */ - YYSYMBOL_U16VEC2 = 91, /* U16VEC2 */ - YYSYMBOL_U16VEC3 = 92, /* U16VEC3 */ - YYSYMBOL_U16VEC4 = 93, /* U16VEC4 */ - YYSYMBOL_I8VEC2 = 94, /* I8VEC2 */ - YYSYMBOL_I8VEC3 = 95, /* I8VEC3 */ - YYSYMBOL_I8VEC4 = 96, /* I8VEC4 */ - YYSYMBOL_U8VEC2 = 97, /* U8VEC2 */ - YYSYMBOL_U8VEC3 = 98, /* U8VEC3 */ - YYSYMBOL_U8VEC4 = 99, /* U8VEC4 */ - YYSYMBOL_DVEC2 = 100, /* DVEC2 */ - YYSYMBOL_DVEC3 = 101, /* DVEC3 */ - YYSYMBOL_DVEC4 = 102, /* DVEC4 */ - YYSYMBOL_DMAT2 = 103, /* DMAT2 */ - YYSYMBOL_DMAT3 = 104, /* DMAT3 */ - YYSYMBOL_DMAT4 = 105, /* DMAT4 */ - YYSYMBOL_BF16VEC2 = 106, /* BF16VEC2 */ - YYSYMBOL_BF16VEC3 = 107, /* BF16VEC3 */ - YYSYMBOL_BF16VEC4 = 108, /* BF16VEC4 */ - YYSYMBOL_F16VEC2 = 109, /* F16VEC2 */ - YYSYMBOL_F16VEC3 = 110, /* F16VEC3 */ - YYSYMBOL_F16VEC4 = 111, /* F16VEC4 */ - YYSYMBOL_F16MAT2 = 112, /* F16MAT2 */ - YYSYMBOL_F16MAT3 = 113, /* F16MAT3 */ - YYSYMBOL_F16MAT4 = 114, /* F16MAT4 */ - YYSYMBOL_F32VEC2 = 115, /* F32VEC2 */ - YYSYMBOL_F32VEC3 = 116, /* F32VEC3 */ - YYSYMBOL_F32VEC4 = 117, /* F32VEC4 */ - YYSYMBOL_F32MAT2 = 118, /* F32MAT2 */ - YYSYMBOL_F32MAT3 = 119, /* F32MAT3 */ - YYSYMBOL_F32MAT4 = 120, /* F32MAT4 */ - YYSYMBOL_F64VEC2 = 121, /* F64VEC2 */ - YYSYMBOL_F64VEC3 = 122, /* F64VEC3 */ - YYSYMBOL_F64VEC4 = 123, /* F64VEC4 */ - YYSYMBOL_F64MAT2 = 124, /* F64MAT2 */ - YYSYMBOL_F64MAT3 = 125, /* F64MAT3 */ - YYSYMBOL_F64MAT4 = 126, /* F64MAT4 */ - YYSYMBOL_DMAT2X2 = 127, /* DMAT2X2 */ - YYSYMBOL_DMAT2X3 = 128, /* DMAT2X3 */ - YYSYMBOL_DMAT2X4 = 129, /* DMAT2X4 */ - YYSYMBOL_DMAT3X2 = 130, /* DMAT3X2 */ - YYSYMBOL_DMAT3X3 = 131, /* DMAT3X3 */ - YYSYMBOL_DMAT3X4 = 132, /* DMAT3X4 */ - YYSYMBOL_DMAT4X2 = 133, /* DMAT4X2 */ - YYSYMBOL_DMAT4X3 = 134, /* DMAT4X3 */ - YYSYMBOL_DMAT4X4 = 135, /* DMAT4X4 */ - YYSYMBOL_F16MAT2X2 = 136, /* F16MAT2X2 */ - YYSYMBOL_F16MAT2X3 = 137, /* F16MAT2X3 */ - YYSYMBOL_F16MAT2X4 = 138, /* F16MAT2X4 */ - YYSYMBOL_F16MAT3X2 = 139, /* F16MAT3X2 */ - YYSYMBOL_F16MAT3X3 = 140, /* F16MAT3X3 */ - YYSYMBOL_F16MAT3X4 = 141, /* F16MAT3X4 */ - YYSYMBOL_F16MAT4X2 = 142, /* F16MAT4X2 */ - YYSYMBOL_F16MAT4X3 = 143, /* F16MAT4X3 */ - YYSYMBOL_F16MAT4X4 = 144, /* F16MAT4X4 */ - YYSYMBOL_F32MAT2X2 = 145, /* F32MAT2X2 */ - YYSYMBOL_F32MAT2X3 = 146, /* F32MAT2X3 */ - YYSYMBOL_F32MAT2X4 = 147, /* F32MAT2X4 */ - YYSYMBOL_F32MAT3X2 = 148, /* F32MAT3X2 */ - YYSYMBOL_F32MAT3X3 = 149, /* F32MAT3X3 */ - YYSYMBOL_F32MAT3X4 = 150, /* F32MAT3X4 */ - YYSYMBOL_F32MAT4X2 = 151, /* F32MAT4X2 */ - YYSYMBOL_F32MAT4X3 = 152, /* F32MAT4X3 */ - YYSYMBOL_F32MAT4X4 = 153, /* F32MAT4X4 */ - YYSYMBOL_F64MAT2X2 = 154, /* F64MAT2X2 */ - YYSYMBOL_F64MAT2X3 = 155, /* F64MAT2X3 */ - YYSYMBOL_F64MAT2X4 = 156, /* F64MAT2X4 */ - YYSYMBOL_F64MAT3X2 = 157, /* F64MAT3X2 */ - YYSYMBOL_F64MAT3X3 = 158, /* F64MAT3X3 */ - YYSYMBOL_F64MAT3X4 = 159, /* F64MAT3X4 */ - YYSYMBOL_F64MAT4X2 = 160, /* F64MAT4X2 */ - YYSYMBOL_F64MAT4X3 = 161, /* F64MAT4X3 */ - YYSYMBOL_F64MAT4X4 = 162, /* F64MAT4X4 */ - YYSYMBOL_ATOMIC_UINT = 163, /* ATOMIC_UINT */ - YYSYMBOL_ACCSTRUCTNV = 164, /* ACCSTRUCTNV */ - YYSYMBOL_ACCSTRUCTEXT = 165, /* ACCSTRUCTEXT */ - YYSYMBOL_RAYQUERYEXT = 166, /* RAYQUERYEXT */ - YYSYMBOL_FCOOPMATNV = 167, /* FCOOPMATNV */ - YYSYMBOL_ICOOPMATNV = 168, /* ICOOPMATNV */ - YYSYMBOL_UCOOPMATNV = 169, /* UCOOPMATNV */ - YYSYMBOL_COOPMAT = 170, /* COOPMAT */ - YYSYMBOL_COOPVECNV = 171, /* COOPVECNV */ - YYSYMBOL_HITOBJECTNV = 172, /* HITOBJECTNV */ - YYSYMBOL_HITOBJECTATTRNV = 173, /* HITOBJECTATTRNV */ - YYSYMBOL_TENSORLAYOUTNV = 174, /* TENSORLAYOUTNV */ - YYSYMBOL_TENSORVIEWNV = 175, /* TENSORVIEWNV */ - YYSYMBOL_SAMPLERCUBEARRAY = 176, /* SAMPLERCUBEARRAY */ - YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 177, /* SAMPLERCUBEARRAYSHADOW */ - YYSYMBOL_ISAMPLERCUBEARRAY = 178, /* ISAMPLERCUBEARRAY */ - YYSYMBOL_USAMPLERCUBEARRAY = 179, /* USAMPLERCUBEARRAY */ - YYSYMBOL_SAMPLER1D = 180, /* SAMPLER1D */ - YYSYMBOL_SAMPLER1DARRAY = 181, /* SAMPLER1DARRAY */ - YYSYMBOL_SAMPLER1DARRAYSHADOW = 182, /* SAMPLER1DARRAYSHADOW */ - YYSYMBOL_ISAMPLER1D = 183, /* ISAMPLER1D */ - YYSYMBOL_SAMPLER1DSHADOW = 184, /* SAMPLER1DSHADOW */ - YYSYMBOL_SAMPLER2DRECT = 185, /* SAMPLER2DRECT */ - YYSYMBOL_SAMPLER2DRECTSHADOW = 186, /* SAMPLER2DRECTSHADOW */ - YYSYMBOL_ISAMPLER2DRECT = 187, /* ISAMPLER2DRECT */ - YYSYMBOL_USAMPLER2DRECT = 188, /* USAMPLER2DRECT */ - YYSYMBOL_SAMPLERBUFFER = 189, /* SAMPLERBUFFER */ - YYSYMBOL_ISAMPLERBUFFER = 190, /* ISAMPLERBUFFER */ - YYSYMBOL_USAMPLERBUFFER = 191, /* USAMPLERBUFFER */ - YYSYMBOL_SAMPLER2DMS = 192, /* SAMPLER2DMS */ - YYSYMBOL_ISAMPLER2DMS = 193, /* ISAMPLER2DMS */ - YYSYMBOL_USAMPLER2DMS = 194, /* USAMPLER2DMS */ - YYSYMBOL_SAMPLER2DMSARRAY = 195, /* SAMPLER2DMSARRAY */ - YYSYMBOL_ISAMPLER2DMSARRAY = 196, /* ISAMPLER2DMSARRAY */ - YYSYMBOL_USAMPLER2DMSARRAY = 197, /* USAMPLER2DMSARRAY */ - YYSYMBOL_SAMPLEREXTERNALOES = 198, /* SAMPLEREXTERNALOES */ - YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 199, /* SAMPLEREXTERNAL2DY2YEXT */ - YYSYMBOL_ISAMPLER1DARRAY = 200, /* ISAMPLER1DARRAY */ - YYSYMBOL_USAMPLER1D = 201, /* USAMPLER1D */ - YYSYMBOL_USAMPLER1DARRAY = 202, /* USAMPLER1DARRAY */ - YYSYMBOL_F16SAMPLER1D = 203, /* F16SAMPLER1D */ - YYSYMBOL_F16SAMPLER2D = 204, /* F16SAMPLER2D */ - YYSYMBOL_F16SAMPLER3D = 205, /* F16SAMPLER3D */ - YYSYMBOL_F16SAMPLER2DRECT = 206, /* F16SAMPLER2DRECT */ - YYSYMBOL_F16SAMPLERCUBE = 207, /* F16SAMPLERCUBE */ - YYSYMBOL_F16SAMPLER1DARRAY = 208, /* F16SAMPLER1DARRAY */ - YYSYMBOL_F16SAMPLER2DARRAY = 209, /* F16SAMPLER2DARRAY */ - YYSYMBOL_F16SAMPLERCUBEARRAY = 210, /* F16SAMPLERCUBEARRAY */ - YYSYMBOL_F16SAMPLERBUFFER = 211, /* F16SAMPLERBUFFER */ - YYSYMBOL_F16SAMPLER2DMS = 212, /* F16SAMPLER2DMS */ - YYSYMBOL_F16SAMPLER2DMSARRAY = 213, /* F16SAMPLER2DMSARRAY */ - YYSYMBOL_F16SAMPLER1DSHADOW = 214, /* F16SAMPLER1DSHADOW */ - YYSYMBOL_F16SAMPLER2DSHADOW = 215, /* F16SAMPLER2DSHADOW */ - YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 216, /* F16SAMPLER1DARRAYSHADOW */ - YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 217, /* F16SAMPLER2DARRAYSHADOW */ - YYSYMBOL_F16SAMPLER2DRECTSHADOW = 218, /* F16SAMPLER2DRECTSHADOW */ - YYSYMBOL_F16SAMPLERCUBESHADOW = 219, /* F16SAMPLERCUBESHADOW */ - YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 220, /* F16SAMPLERCUBEARRAYSHADOW */ - YYSYMBOL_IMAGE1D = 221, /* IMAGE1D */ - YYSYMBOL_IIMAGE1D = 222, /* IIMAGE1D */ - YYSYMBOL_UIMAGE1D = 223, /* UIMAGE1D */ - YYSYMBOL_IMAGE2D = 224, /* IMAGE2D */ - YYSYMBOL_IIMAGE2D = 225, /* IIMAGE2D */ - YYSYMBOL_UIMAGE2D = 226, /* UIMAGE2D */ - YYSYMBOL_IMAGE3D = 227, /* IMAGE3D */ - YYSYMBOL_IIMAGE3D = 228, /* IIMAGE3D */ - YYSYMBOL_UIMAGE3D = 229, /* UIMAGE3D */ - YYSYMBOL_IMAGE2DRECT = 230, /* IMAGE2DRECT */ - YYSYMBOL_IIMAGE2DRECT = 231, /* IIMAGE2DRECT */ - YYSYMBOL_UIMAGE2DRECT = 232, /* UIMAGE2DRECT */ - YYSYMBOL_IMAGECUBE = 233, /* IMAGECUBE */ - YYSYMBOL_IIMAGECUBE = 234, /* IIMAGECUBE */ - YYSYMBOL_UIMAGECUBE = 235, /* UIMAGECUBE */ - YYSYMBOL_IMAGEBUFFER = 236, /* IMAGEBUFFER */ - YYSYMBOL_IIMAGEBUFFER = 237, /* IIMAGEBUFFER */ - YYSYMBOL_UIMAGEBUFFER = 238, /* UIMAGEBUFFER */ - YYSYMBOL_IMAGE1DARRAY = 239, /* IMAGE1DARRAY */ - YYSYMBOL_IIMAGE1DARRAY = 240, /* IIMAGE1DARRAY */ - YYSYMBOL_UIMAGE1DARRAY = 241, /* UIMAGE1DARRAY */ - YYSYMBOL_IMAGE2DARRAY = 242, /* IMAGE2DARRAY */ - YYSYMBOL_IIMAGE2DARRAY = 243, /* IIMAGE2DARRAY */ - YYSYMBOL_UIMAGE2DARRAY = 244, /* UIMAGE2DARRAY */ - YYSYMBOL_IMAGECUBEARRAY = 245, /* IMAGECUBEARRAY */ - YYSYMBOL_IIMAGECUBEARRAY = 246, /* IIMAGECUBEARRAY */ - YYSYMBOL_UIMAGECUBEARRAY = 247, /* UIMAGECUBEARRAY */ - YYSYMBOL_IMAGE2DMS = 248, /* IMAGE2DMS */ - YYSYMBOL_IIMAGE2DMS = 249, /* IIMAGE2DMS */ - YYSYMBOL_UIMAGE2DMS = 250, /* UIMAGE2DMS */ - YYSYMBOL_IMAGE2DMSARRAY = 251, /* IMAGE2DMSARRAY */ - YYSYMBOL_IIMAGE2DMSARRAY = 252, /* IIMAGE2DMSARRAY */ - YYSYMBOL_UIMAGE2DMSARRAY = 253, /* UIMAGE2DMSARRAY */ - YYSYMBOL_F16IMAGE1D = 254, /* F16IMAGE1D */ - YYSYMBOL_F16IMAGE2D = 255, /* F16IMAGE2D */ - YYSYMBOL_F16IMAGE3D = 256, /* F16IMAGE3D */ - YYSYMBOL_F16IMAGE2DRECT = 257, /* F16IMAGE2DRECT */ - YYSYMBOL_F16IMAGECUBE = 258, /* F16IMAGECUBE */ - YYSYMBOL_F16IMAGE1DARRAY = 259, /* F16IMAGE1DARRAY */ - YYSYMBOL_F16IMAGE2DARRAY = 260, /* F16IMAGE2DARRAY */ - YYSYMBOL_F16IMAGECUBEARRAY = 261, /* F16IMAGECUBEARRAY */ - YYSYMBOL_F16IMAGEBUFFER = 262, /* F16IMAGEBUFFER */ - YYSYMBOL_F16IMAGE2DMS = 263, /* F16IMAGE2DMS */ - YYSYMBOL_F16IMAGE2DMSARRAY = 264, /* F16IMAGE2DMSARRAY */ - YYSYMBOL_I64IMAGE1D = 265, /* I64IMAGE1D */ - YYSYMBOL_U64IMAGE1D = 266, /* U64IMAGE1D */ - YYSYMBOL_I64IMAGE2D = 267, /* I64IMAGE2D */ - YYSYMBOL_U64IMAGE2D = 268, /* U64IMAGE2D */ - YYSYMBOL_I64IMAGE3D = 269, /* I64IMAGE3D */ - YYSYMBOL_U64IMAGE3D = 270, /* U64IMAGE3D */ - YYSYMBOL_I64IMAGE2DRECT = 271, /* I64IMAGE2DRECT */ - YYSYMBOL_U64IMAGE2DRECT = 272, /* U64IMAGE2DRECT */ - YYSYMBOL_I64IMAGECUBE = 273, /* I64IMAGECUBE */ - YYSYMBOL_U64IMAGECUBE = 274, /* U64IMAGECUBE */ - YYSYMBOL_I64IMAGEBUFFER = 275, /* I64IMAGEBUFFER */ - YYSYMBOL_U64IMAGEBUFFER = 276, /* U64IMAGEBUFFER */ - YYSYMBOL_I64IMAGE1DARRAY = 277, /* I64IMAGE1DARRAY */ - YYSYMBOL_U64IMAGE1DARRAY = 278, /* U64IMAGE1DARRAY */ - YYSYMBOL_I64IMAGE2DARRAY = 279, /* I64IMAGE2DARRAY */ - YYSYMBOL_U64IMAGE2DARRAY = 280, /* U64IMAGE2DARRAY */ - YYSYMBOL_I64IMAGECUBEARRAY = 281, /* I64IMAGECUBEARRAY */ - YYSYMBOL_U64IMAGECUBEARRAY = 282, /* U64IMAGECUBEARRAY */ - YYSYMBOL_I64IMAGE2DMS = 283, /* I64IMAGE2DMS */ - YYSYMBOL_U64IMAGE2DMS = 284, /* U64IMAGE2DMS */ - YYSYMBOL_I64IMAGE2DMSARRAY = 285, /* I64IMAGE2DMSARRAY */ - YYSYMBOL_U64IMAGE2DMSARRAY = 286, /* U64IMAGE2DMSARRAY */ - YYSYMBOL_TEXTURECUBEARRAY = 287, /* TEXTURECUBEARRAY */ - YYSYMBOL_ITEXTURECUBEARRAY = 288, /* ITEXTURECUBEARRAY */ - YYSYMBOL_UTEXTURECUBEARRAY = 289, /* UTEXTURECUBEARRAY */ - YYSYMBOL_TEXTURE1D = 290, /* TEXTURE1D */ - YYSYMBOL_ITEXTURE1D = 291, /* ITEXTURE1D */ - YYSYMBOL_UTEXTURE1D = 292, /* UTEXTURE1D */ - YYSYMBOL_TEXTURE1DARRAY = 293, /* TEXTURE1DARRAY */ - YYSYMBOL_ITEXTURE1DARRAY = 294, /* ITEXTURE1DARRAY */ - YYSYMBOL_UTEXTURE1DARRAY = 295, /* UTEXTURE1DARRAY */ - YYSYMBOL_TEXTURE2DRECT = 296, /* TEXTURE2DRECT */ - YYSYMBOL_ITEXTURE2DRECT = 297, /* ITEXTURE2DRECT */ - YYSYMBOL_UTEXTURE2DRECT = 298, /* UTEXTURE2DRECT */ - YYSYMBOL_TEXTUREBUFFER = 299, /* TEXTUREBUFFER */ - YYSYMBOL_ITEXTUREBUFFER = 300, /* ITEXTUREBUFFER */ - YYSYMBOL_UTEXTUREBUFFER = 301, /* UTEXTUREBUFFER */ - YYSYMBOL_TEXTURE2DMS = 302, /* TEXTURE2DMS */ - YYSYMBOL_ITEXTURE2DMS = 303, /* ITEXTURE2DMS */ - YYSYMBOL_UTEXTURE2DMS = 304, /* UTEXTURE2DMS */ - YYSYMBOL_TEXTURE2DMSARRAY = 305, /* TEXTURE2DMSARRAY */ - YYSYMBOL_ITEXTURE2DMSARRAY = 306, /* ITEXTURE2DMSARRAY */ - YYSYMBOL_UTEXTURE2DMSARRAY = 307, /* UTEXTURE2DMSARRAY */ - YYSYMBOL_F16TEXTURE1D = 308, /* F16TEXTURE1D */ - YYSYMBOL_F16TEXTURE2D = 309, /* F16TEXTURE2D */ - YYSYMBOL_F16TEXTURE3D = 310, /* F16TEXTURE3D */ - YYSYMBOL_F16TEXTURE2DRECT = 311, /* F16TEXTURE2DRECT */ - YYSYMBOL_F16TEXTURECUBE = 312, /* F16TEXTURECUBE */ - YYSYMBOL_F16TEXTURE1DARRAY = 313, /* F16TEXTURE1DARRAY */ - YYSYMBOL_F16TEXTURE2DARRAY = 314, /* F16TEXTURE2DARRAY */ - YYSYMBOL_F16TEXTURECUBEARRAY = 315, /* F16TEXTURECUBEARRAY */ - YYSYMBOL_F16TEXTUREBUFFER = 316, /* F16TEXTUREBUFFER */ - YYSYMBOL_F16TEXTURE2DMS = 317, /* F16TEXTURE2DMS */ - YYSYMBOL_F16TEXTURE2DMSARRAY = 318, /* F16TEXTURE2DMSARRAY */ - YYSYMBOL_SUBPASSINPUT = 319, /* SUBPASSINPUT */ - YYSYMBOL_SUBPASSINPUTMS = 320, /* SUBPASSINPUTMS */ - YYSYMBOL_ISUBPASSINPUT = 321, /* ISUBPASSINPUT */ - YYSYMBOL_ISUBPASSINPUTMS = 322, /* ISUBPASSINPUTMS */ - YYSYMBOL_USUBPASSINPUT = 323, /* USUBPASSINPUT */ - YYSYMBOL_USUBPASSINPUTMS = 324, /* USUBPASSINPUTMS */ - YYSYMBOL_F16SUBPASSINPUT = 325, /* F16SUBPASSINPUT */ - YYSYMBOL_F16SUBPASSINPUTMS = 326, /* F16SUBPASSINPUTMS */ - YYSYMBOL_SPIRV_INSTRUCTION = 327, /* SPIRV_INSTRUCTION */ - YYSYMBOL_SPIRV_EXECUTION_MODE = 328, /* SPIRV_EXECUTION_MODE */ - YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 329, /* SPIRV_EXECUTION_MODE_ID */ - YYSYMBOL_SPIRV_DECORATE = 330, /* SPIRV_DECORATE */ - YYSYMBOL_SPIRV_DECORATE_ID = 331, /* SPIRV_DECORATE_ID */ - YYSYMBOL_SPIRV_DECORATE_STRING = 332, /* SPIRV_DECORATE_STRING */ - YYSYMBOL_SPIRV_TYPE = 333, /* SPIRV_TYPE */ - YYSYMBOL_SPIRV_STORAGE_CLASS = 334, /* SPIRV_STORAGE_CLASS */ - YYSYMBOL_SPIRV_BY_REFERENCE = 335, /* SPIRV_BY_REFERENCE */ - YYSYMBOL_SPIRV_LITERAL = 336, /* SPIRV_LITERAL */ - YYSYMBOL_ATTACHMENTEXT = 337, /* ATTACHMENTEXT */ - YYSYMBOL_IATTACHMENTEXT = 338, /* IATTACHMENTEXT */ - YYSYMBOL_UATTACHMENTEXT = 339, /* UATTACHMENTEXT */ - YYSYMBOL_LEFT_OP = 340, /* LEFT_OP */ - YYSYMBOL_RIGHT_OP = 341, /* RIGHT_OP */ - YYSYMBOL_INC_OP = 342, /* INC_OP */ - YYSYMBOL_DEC_OP = 343, /* DEC_OP */ - YYSYMBOL_LE_OP = 344, /* LE_OP */ - YYSYMBOL_GE_OP = 345, /* GE_OP */ - YYSYMBOL_EQ_OP = 346, /* EQ_OP */ - YYSYMBOL_NE_OP = 347, /* NE_OP */ - YYSYMBOL_AND_OP = 348, /* AND_OP */ - YYSYMBOL_OR_OP = 349, /* OR_OP */ - YYSYMBOL_XOR_OP = 350, /* XOR_OP */ - YYSYMBOL_MUL_ASSIGN = 351, /* MUL_ASSIGN */ - YYSYMBOL_DIV_ASSIGN = 352, /* DIV_ASSIGN */ - YYSYMBOL_ADD_ASSIGN = 353, /* ADD_ASSIGN */ - YYSYMBOL_MOD_ASSIGN = 354, /* MOD_ASSIGN */ - YYSYMBOL_LEFT_ASSIGN = 355, /* LEFT_ASSIGN */ - YYSYMBOL_RIGHT_ASSIGN = 356, /* RIGHT_ASSIGN */ - YYSYMBOL_AND_ASSIGN = 357, /* AND_ASSIGN */ - YYSYMBOL_XOR_ASSIGN = 358, /* XOR_ASSIGN */ - YYSYMBOL_OR_ASSIGN = 359, /* OR_ASSIGN */ - YYSYMBOL_SUB_ASSIGN = 360, /* SUB_ASSIGN */ - YYSYMBOL_STRING_LITERAL = 361, /* STRING_LITERAL */ - YYSYMBOL_LEFT_PAREN = 362, /* LEFT_PAREN */ - YYSYMBOL_RIGHT_PAREN = 363, /* RIGHT_PAREN */ - YYSYMBOL_LEFT_BRACKET = 364, /* LEFT_BRACKET */ - YYSYMBOL_RIGHT_BRACKET = 365, /* RIGHT_BRACKET */ - YYSYMBOL_LEFT_BRACE = 366, /* LEFT_BRACE */ - YYSYMBOL_RIGHT_BRACE = 367, /* RIGHT_BRACE */ - YYSYMBOL_DOT = 368, /* DOT */ - YYSYMBOL_COMMA = 369, /* COMMA */ - YYSYMBOL_COLON = 370, /* COLON */ - YYSYMBOL_EQUAL = 371, /* EQUAL */ - YYSYMBOL_SEMICOLON = 372, /* SEMICOLON */ - YYSYMBOL_BANG = 373, /* BANG */ - YYSYMBOL_DASH = 374, /* DASH */ - YYSYMBOL_TILDE = 375, /* TILDE */ - YYSYMBOL_PLUS = 376, /* PLUS */ - YYSYMBOL_STAR = 377, /* STAR */ - YYSYMBOL_SLASH = 378, /* SLASH */ - YYSYMBOL_PERCENT = 379, /* PERCENT */ - YYSYMBOL_LEFT_ANGLE = 380, /* LEFT_ANGLE */ - YYSYMBOL_RIGHT_ANGLE = 381, /* RIGHT_ANGLE */ - YYSYMBOL_VERTICAL_BAR = 382, /* VERTICAL_BAR */ - YYSYMBOL_CARET = 383, /* CARET */ - YYSYMBOL_AMPERSAND = 384, /* AMPERSAND */ - YYSYMBOL_QUESTION = 385, /* QUESTION */ - YYSYMBOL_INVARIANT = 386, /* INVARIANT */ - YYSYMBOL_HIGH_PRECISION = 387, /* HIGH_PRECISION */ - YYSYMBOL_MEDIUM_PRECISION = 388, /* MEDIUM_PRECISION */ - YYSYMBOL_LOW_PRECISION = 389, /* LOW_PRECISION */ - YYSYMBOL_PRECISION = 390, /* PRECISION */ - YYSYMBOL_PACKED = 391, /* PACKED */ - YYSYMBOL_RESOURCE = 392, /* RESOURCE */ - YYSYMBOL_SUPERP = 393, /* SUPERP */ - YYSYMBOL_FLOATCONSTANT = 394, /* FLOATCONSTANT */ - YYSYMBOL_INTCONSTANT = 395, /* INTCONSTANT */ - YYSYMBOL_UINTCONSTANT = 396, /* UINTCONSTANT */ - YYSYMBOL_BOOLCONSTANT = 397, /* BOOLCONSTANT */ - YYSYMBOL_IDENTIFIER = 398, /* IDENTIFIER */ - YYSYMBOL_TYPE_NAME = 399, /* TYPE_NAME */ - YYSYMBOL_CENTROID = 400, /* CENTROID */ - YYSYMBOL_IN = 401, /* IN */ - YYSYMBOL_OUT = 402, /* OUT */ - YYSYMBOL_INOUT = 403, /* INOUT */ - YYSYMBOL_STRUCT = 404, /* STRUCT */ - YYSYMBOL_VOID = 405, /* VOID */ - YYSYMBOL_WHILE = 406, /* WHILE */ - YYSYMBOL_BREAK = 407, /* BREAK */ - YYSYMBOL_CONTINUE = 408, /* CONTINUE */ - YYSYMBOL_DO = 409, /* DO */ - YYSYMBOL_ELSE = 410, /* ELSE */ - YYSYMBOL_FOR = 411, /* FOR */ - YYSYMBOL_IF = 412, /* IF */ - YYSYMBOL_DISCARD = 413, /* DISCARD */ - YYSYMBOL_RETURN = 414, /* RETURN */ - YYSYMBOL_SWITCH = 415, /* SWITCH */ - YYSYMBOL_CASE = 416, /* CASE */ - YYSYMBOL_DEFAULT = 417, /* DEFAULT */ - YYSYMBOL_TERMINATE_INVOCATION = 418, /* TERMINATE_INVOCATION */ - YYSYMBOL_TERMINATE_RAY = 419, /* TERMINATE_RAY */ - YYSYMBOL_IGNORE_INTERSECTION = 420, /* IGNORE_INTERSECTION */ - YYSYMBOL_UNIFORM = 421, /* UNIFORM */ - YYSYMBOL_SHARED = 422, /* SHARED */ - YYSYMBOL_BUFFER = 423, /* BUFFER */ - YYSYMBOL_TILEIMAGEEXT = 424, /* TILEIMAGEEXT */ - YYSYMBOL_FLAT = 425, /* FLAT */ - YYSYMBOL_SMOOTH = 426, /* SMOOTH */ - YYSYMBOL_LAYOUT = 427, /* LAYOUT */ - YYSYMBOL_DOUBLECONSTANT = 428, /* DOUBLECONSTANT */ - YYSYMBOL_INT16CONSTANT = 429, /* INT16CONSTANT */ - YYSYMBOL_UINT16CONSTANT = 430, /* UINT16CONSTANT */ - YYSYMBOL_FLOAT16CONSTANT = 431, /* FLOAT16CONSTANT */ - YYSYMBOL_INT32CONSTANT = 432, /* INT32CONSTANT */ - YYSYMBOL_UINT32CONSTANT = 433, /* UINT32CONSTANT */ - YYSYMBOL_INT64CONSTANT = 434, /* INT64CONSTANT */ - YYSYMBOL_UINT64CONSTANT = 435, /* UINT64CONSTANT */ - YYSYMBOL_SUBROUTINE = 436, /* SUBROUTINE */ - YYSYMBOL_DEMOTE = 437, /* DEMOTE */ - YYSYMBOL_FUNCTION = 438, /* FUNCTION */ - YYSYMBOL_PAYLOADNV = 439, /* PAYLOADNV */ - YYSYMBOL_PAYLOADINNV = 440, /* PAYLOADINNV */ - YYSYMBOL_HITATTRNV = 441, /* HITATTRNV */ - YYSYMBOL_CALLDATANV = 442, /* CALLDATANV */ - YYSYMBOL_CALLDATAINNV = 443, /* CALLDATAINNV */ - YYSYMBOL_PAYLOADEXT = 444, /* PAYLOADEXT */ - YYSYMBOL_PAYLOADINEXT = 445, /* PAYLOADINEXT */ - YYSYMBOL_HITATTREXT = 446, /* HITATTREXT */ - YYSYMBOL_CALLDATAEXT = 447, /* CALLDATAEXT */ - YYSYMBOL_CALLDATAINEXT = 448, /* CALLDATAINEXT */ - YYSYMBOL_PATCH = 449, /* PATCH */ - YYSYMBOL_SAMPLE = 450, /* SAMPLE */ - YYSYMBOL_NONUNIFORM = 451, /* NONUNIFORM */ - YYSYMBOL_COHERENT = 452, /* COHERENT */ - YYSYMBOL_VOLATILE = 453, /* VOLATILE */ - YYSYMBOL_RESTRICT = 454, /* RESTRICT */ - YYSYMBOL_READONLY = 455, /* READONLY */ - YYSYMBOL_WRITEONLY = 456, /* WRITEONLY */ - YYSYMBOL_NONTEMPORAL = 457, /* NONTEMPORAL */ - YYSYMBOL_DEVICECOHERENT = 458, /* DEVICECOHERENT */ - YYSYMBOL_QUEUEFAMILYCOHERENT = 459, /* QUEUEFAMILYCOHERENT */ - YYSYMBOL_WORKGROUPCOHERENT = 460, /* WORKGROUPCOHERENT */ - YYSYMBOL_SUBGROUPCOHERENT = 461, /* SUBGROUPCOHERENT */ - YYSYMBOL_NONPRIVATE = 462, /* NONPRIVATE */ - YYSYMBOL_SHADERCALLCOHERENT = 463, /* SHADERCALLCOHERENT */ - YYSYMBOL_NOPERSPECTIVE = 464, /* NOPERSPECTIVE */ - YYSYMBOL_EXPLICITINTERPAMD = 465, /* EXPLICITINTERPAMD */ - YYSYMBOL_PERVERTEXEXT = 466, /* PERVERTEXEXT */ - YYSYMBOL_PERVERTEXNV = 467, /* PERVERTEXNV */ - YYSYMBOL_PERPRIMITIVENV = 468, /* PERPRIMITIVENV */ - YYSYMBOL_PERVIEWNV = 469, /* PERVIEWNV */ - YYSYMBOL_PERTASKNV = 470, /* PERTASKNV */ - YYSYMBOL_PERPRIMITIVEEXT = 471, /* PERPRIMITIVEEXT */ - YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 472, /* TASKPAYLOADWORKGROUPEXT */ - YYSYMBOL_PRECISE = 473, /* PRECISE */ - YYSYMBOL_YYACCEPT = 474, /* $accept */ - YYSYMBOL_variable_identifier = 475, /* variable_identifier */ - YYSYMBOL_primary_expression = 476, /* primary_expression */ - YYSYMBOL_postfix_expression = 477, /* postfix_expression */ - YYSYMBOL_integer_expression = 478, /* integer_expression */ - YYSYMBOL_function_call = 479, /* function_call */ - YYSYMBOL_function_call_or_method = 480, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 481, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 482, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 483, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 484, /* function_call_header */ - YYSYMBOL_function_identifier = 485, /* function_identifier */ - YYSYMBOL_unary_expression = 486, /* unary_expression */ - YYSYMBOL_unary_operator = 487, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 488, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 489, /* additive_expression */ - YYSYMBOL_shift_expression = 490, /* shift_expression */ - YYSYMBOL_relational_expression = 491, /* relational_expression */ - YYSYMBOL_equality_expression = 492, /* equality_expression */ - YYSYMBOL_and_expression = 493, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 494, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 495, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 496, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 497, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 498, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 499, /* conditional_expression */ - YYSYMBOL_500_1 = 500, /* $@1 */ - YYSYMBOL_assignment_expression = 501, /* assignment_expression */ - YYSYMBOL_assignment_operator = 502, /* assignment_operator */ - YYSYMBOL_expression = 503, /* expression */ - YYSYMBOL_constant_expression = 504, /* constant_expression */ - YYSYMBOL_declaration = 505, /* declaration */ - YYSYMBOL_block_structure = 506, /* block_structure */ - YYSYMBOL_507_2 = 507, /* $@2 */ - YYSYMBOL_identifier_list = 508, /* identifier_list */ - YYSYMBOL_function_prototype = 509, /* function_prototype */ - YYSYMBOL_function_declarator = 510, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 511, /* function_header_with_parameters */ - YYSYMBOL_function_header = 512, /* function_header */ - YYSYMBOL_parameter_declarator = 513, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 514, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 515, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 516, /* init_declarator_list */ - YYSYMBOL_single_declaration = 517, /* single_declaration */ - YYSYMBOL_fully_specified_type = 518, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 519, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 520, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 521, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 522, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 523, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 524, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 525, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 526, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 527, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 528, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 529, /* type_name_list */ - YYSYMBOL_type_specifier = 530, /* type_specifier */ - YYSYMBOL_array_specifier = 531, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 532, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 533, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 534, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 535, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 536, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 537, /* struct_specifier */ - YYSYMBOL_538_3 = 538, /* $@3 */ - YYSYMBOL_539_4 = 539, /* $@4 */ - YYSYMBOL_struct_declaration_list = 540, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 541, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 542, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 543, /* struct_declarator */ - YYSYMBOL_initializer = 544, /* initializer */ - YYSYMBOL_initializer_list = 545, /* initializer_list */ - YYSYMBOL_declaration_statement = 546, /* declaration_statement */ - YYSYMBOL_statement = 547, /* statement */ - YYSYMBOL_simple_statement = 548, /* simple_statement */ - YYSYMBOL_demote_statement = 549, /* demote_statement */ - YYSYMBOL_compound_statement = 550, /* compound_statement */ - YYSYMBOL_551_5 = 551, /* $@5 */ - YYSYMBOL_552_6 = 552, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 553, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 554, /* statement_scoped */ - YYSYMBOL_555_7 = 555, /* $@7 */ - YYSYMBOL_556_8 = 556, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 557, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 558, /* statement_list */ - YYSYMBOL_expression_statement = 559, /* expression_statement */ - YYSYMBOL_selection_statement = 560, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 561, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 562, /* selection_rest_statement */ - YYSYMBOL_condition = 563, /* condition */ - YYSYMBOL_switch_statement = 564, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 565, /* switch_statement_nonattributed */ - YYSYMBOL_566_9 = 566, /* $@9 */ - YYSYMBOL_switch_statement_list = 567, /* switch_statement_list */ - YYSYMBOL_case_label = 568, /* case_label */ - YYSYMBOL_iteration_statement = 569, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 570, /* iteration_statement_nonattributed */ - YYSYMBOL_571_10 = 571, /* $@10 */ - YYSYMBOL_572_11 = 572, /* $@11 */ - YYSYMBOL_573_12 = 573, /* $@12 */ - YYSYMBOL_for_init_statement = 574, /* for_init_statement */ - YYSYMBOL_conditionopt = 575, /* conditionopt */ - YYSYMBOL_for_rest_statement = 576, /* for_rest_statement */ - YYSYMBOL_jump_statement = 577, /* jump_statement */ - YYSYMBOL_translation_unit = 578, /* translation_unit */ - YYSYMBOL_external_declaration = 579, /* external_declaration */ - YYSYMBOL_function_definition = 580, /* function_definition */ - YYSYMBOL_581_13 = 581, /* $@13 */ - YYSYMBOL_attribute = 582, /* attribute */ - YYSYMBOL_attribute_list = 583, /* attribute_list */ - YYSYMBOL_single_attribute = 584, /* single_attribute */ - YYSYMBOL_spirv_requirements_list = 585, /* spirv_requirements_list */ - YYSYMBOL_spirv_requirements_parameter = 586, /* spirv_requirements_parameter */ - YYSYMBOL_spirv_extension_list = 587, /* spirv_extension_list */ - YYSYMBOL_spirv_capability_list = 588, /* spirv_capability_list */ - YYSYMBOL_spirv_execution_mode_qualifier = 589, /* spirv_execution_mode_qualifier */ - YYSYMBOL_spirv_execution_mode_parameter_list = 590, /* spirv_execution_mode_parameter_list */ - YYSYMBOL_spirv_execution_mode_parameter = 591, /* spirv_execution_mode_parameter */ - YYSYMBOL_spirv_execution_mode_id_parameter_list = 592, /* spirv_execution_mode_id_parameter_list */ - YYSYMBOL_spirv_storage_class_qualifier = 593, /* spirv_storage_class_qualifier */ - YYSYMBOL_spirv_decorate_qualifier = 594, /* spirv_decorate_qualifier */ - YYSYMBOL_spirv_decorate_parameter_list = 595, /* spirv_decorate_parameter_list */ - YYSYMBOL_spirv_decorate_parameter = 596, /* spirv_decorate_parameter */ - YYSYMBOL_spirv_decorate_id_parameter_list = 597, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_id_parameter = 598, /* spirv_decorate_id_parameter */ - YYSYMBOL_spirv_decorate_string_parameter_list = 599, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 600, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 601, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 602, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 603, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 604, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 605 /* spirv_instruction_qualifier_id */ + YYSYMBOL_FLOATE5M2_T = 63, /* FLOATE5M2_T */ + YYSYMBOL_FLOATE4M3_T = 64, /* FLOATE4M3_T */ + YYSYMBOL_BFLOAT16_T = 65, /* BFLOAT16_T */ + YYSYMBOL_FLOAT16_T = 66, /* FLOAT16_T */ + YYSYMBOL_FLOAT32_T = 67, /* FLOAT32_T */ + YYSYMBOL_DOUBLE = 68, /* DOUBLE */ + YYSYMBOL_FLOAT64_T = 69, /* FLOAT64_T */ + YYSYMBOL_INT64_T = 70, /* INT64_T */ + YYSYMBOL_UINT64_T = 71, /* UINT64_T */ + YYSYMBOL_INT32_T = 72, /* INT32_T */ + YYSYMBOL_UINT32_T = 73, /* UINT32_T */ + YYSYMBOL_INT16_T = 74, /* INT16_T */ + YYSYMBOL_UINT16_T = 75, /* UINT16_T */ + YYSYMBOL_INT8_T = 76, /* INT8_T */ + YYSYMBOL_UINT8_T = 77, /* UINT8_T */ + YYSYMBOL_I64VEC2 = 78, /* I64VEC2 */ + YYSYMBOL_I64VEC3 = 79, /* I64VEC3 */ + YYSYMBOL_I64VEC4 = 80, /* I64VEC4 */ + YYSYMBOL_U64VEC2 = 81, /* U64VEC2 */ + YYSYMBOL_U64VEC3 = 82, /* U64VEC3 */ + YYSYMBOL_U64VEC4 = 83, /* U64VEC4 */ + YYSYMBOL_I32VEC2 = 84, /* I32VEC2 */ + YYSYMBOL_I32VEC3 = 85, /* I32VEC3 */ + YYSYMBOL_I32VEC4 = 86, /* I32VEC4 */ + YYSYMBOL_U32VEC2 = 87, /* U32VEC2 */ + YYSYMBOL_U32VEC3 = 88, /* U32VEC3 */ + YYSYMBOL_U32VEC4 = 89, /* U32VEC4 */ + YYSYMBOL_I16VEC2 = 90, /* I16VEC2 */ + YYSYMBOL_I16VEC3 = 91, /* I16VEC3 */ + YYSYMBOL_I16VEC4 = 92, /* I16VEC4 */ + YYSYMBOL_U16VEC2 = 93, /* U16VEC2 */ + YYSYMBOL_U16VEC3 = 94, /* U16VEC3 */ + YYSYMBOL_U16VEC4 = 95, /* U16VEC4 */ + YYSYMBOL_I8VEC2 = 96, /* I8VEC2 */ + YYSYMBOL_I8VEC3 = 97, /* I8VEC3 */ + YYSYMBOL_I8VEC4 = 98, /* I8VEC4 */ + YYSYMBOL_U8VEC2 = 99, /* U8VEC2 */ + YYSYMBOL_U8VEC3 = 100, /* U8VEC3 */ + YYSYMBOL_U8VEC4 = 101, /* U8VEC4 */ + YYSYMBOL_DVEC2 = 102, /* DVEC2 */ + YYSYMBOL_DVEC3 = 103, /* DVEC3 */ + YYSYMBOL_DVEC4 = 104, /* DVEC4 */ + YYSYMBOL_DMAT2 = 105, /* DMAT2 */ + YYSYMBOL_DMAT3 = 106, /* DMAT3 */ + YYSYMBOL_DMAT4 = 107, /* DMAT4 */ + YYSYMBOL_BF16VEC2 = 108, /* BF16VEC2 */ + YYSYMBOL_BF16VEC3 = 109, /* BF16VEC3 */ + YYSYMBOL_BF16VEC4 = 110, /* BF16VEC4 */ + YYSYMBOL_FE5M2VEC2 = 111, /* FE5M2VEC2 */ + YYSYMBOL_FE5M2VEC3 = 112, /* FE5M2VEC3 */ + YYSYMBOL_FE5M2VEC4 = 113, /* FE5M2VEC4 */ + YYSYMBOL_FE4M3VEC2 = 114, /* FE4M3VEC2 */ + YYSYMBOL_FE4M3VEC3 = 115, /* FE4M3VEC3 */ + YYSYMBOL_FE4M3VEC4 = 116, /* FE4M3VEC4 */ + YYSYMBOL_F16VEC2 = 117, /* F16VEC2 */ + YYSYMBOL_F16VEC3 = 118, /* F16VEC3 */ + YYSYMBOL_F16VEC4 = 119, /* F16VEC4 */ + YYSYMBOL_F16MAT2 = 120, /* F16MAT2 */ + YYSYMBOL_F16MAT3 = 121, /* F16MAT3 */ + YYSYMBOL_F16MAT4 = 122, /* F16MAT4 */ + YYSYMBOL_F32VEC2 = 123, /* F32VEC2 */ + YYSYMBOL_F32VEC3 = 124, /* F32VEC3 */ + YYSYMBOL_F32VEC4 = 125, /* F32VEC4 */ + YYSYMBOL_F32MAT2 = 126, /* F32MAT2 */ + YYSYMBOL_F32MAT3 = 127, /* F32MAT3 */ + YYSYMBOL_F32MAT4 = 128, /* F32MAT4 */ + YYSYMBOL_F64VEC2 = 129, /* F64VEC2 */ + YYSYMBOL_F64VEC3 = 130, /* F64VEC3 */ + YYSYMBOL_F64VEC4 = 131, /* F64VEC4 */ + YYSYMBOL_F64MAT2 = 132, /* F64MAT2 */ + YYSYMBOL_F64MAT3 = 133, /* F64MAT3 */ + YYSYMBOL_F64MAT4 = 134, /* F64MAT4 */ + YYSYMBOL_DMAT2X2 = 135, /* DMAT2X2 */ + YYSYMBOL_DMAT2X3 = 136, /* DMAT2X3 */ + YYSYMBOL_DMAT2X4 = 137, /* DMAT2X4 */ + YYSYMBOL_DMAT3X2 = 138, /* DMAT3X2 */ + YYSYMBOL_DMAT3X3 = 139, /* DMAT3X3 */ + YYSYMBOL_DMAT3X4 = 140, /* DMAT3X4 */ + YYSYMBOL_DMAT4X2 = 141, /* DMAT4X2 */ + YYSYMBOL_DMAT4X3 = 142, /* DMAT4X3 */ + YYSYMBOL_DMAT4X4 = 143, /* DMAT4X4 */ + YYSYMBOL_F16MAT2X2 = 144, /* F16MAT2X2 */ + YYSYMBOL_F16MAT2X3 = 145, /* F16MAT2X3 */ + YYSYMBOL_F16MAT2X4 = 146, /* F16MAT2X4 */ + YYSYMBOL_F16MAT3X2 = 147, /* F16MAT3X2 */ + YYSYMBOL_F16MAT3X3 = 148, /* F16MAT3X3 */ + YYSYMBOL_F16MAT3X4 = 149, /* F16MAT3X4 */ + YYSYMBOL_F16MAT4X2 = 150, /* F16MAT4X2 */ + YYSYMBOL_F16MAT4X3 = 151, /* F16MAT4X3 */ + YYSYMBOL_F16MAT4X4 = 152, /* F16MAT4X4 */ + YYSYMBOL_F32MAT2X2 = 153, /* F32MAT2X2 */ + YYSYMBOL_F32MAT2X3 = 154, /* F32MAT2X3 */ + YYSYMBOL_F32MAT2X4 = 155, /* F32MAT2X4 */ + YYSYMBOL_F32MAT3X2 = 156, /* F32MAT3X2 */ + YYSYMBOL_F32MAT3X3 = 157, /* F32MAT3X3 */ + YYSYMBOL_F32MAT3X4 = 158, /* F32MAT3X4 */ + YYSYMBOL_F32MAT4X2 = 159, /* F32MAT4X2 */ + YYSYMBOL_F32MAT4X3 = 160, /* F32MAT4X3 */ + YYSYMBOL_F32MAT4X4 = 161, /* F32MAT4X4 */ + YYSYMBOL_F64MAT2X2 = 162, /* F64MAT2X2 */ + YYSYMBOL_F64MAT2X3 = 163, /* F64MAT2X3 */ + YYSYMBOL_F64MAT2X4 = 164, /* F64MAT2X4 */ + YYSYMBOL_F64MAT3X2 = 165, /* F64MAT3X2 */ + YYSYMBOL_F64MAT3X3 = 166, /* F64MAT3X3 */ + YYSYMBOL_F64MAT3X4 = 167, /* F64MAT3X4 */ + YYSYMBOL_F64MAT4X2 = 168, /* F64MAT4X2 */ + YYSYMBOL_F64MAT4X3 = 169, /* F64MAT4X3 */ + YYSYMBOL_F64MAT4X4 = 170, /* F64MAT4X4 */ + YYSYMBOL_ATOMIC_UINT = 171, /* ATOMIC_UINT */ + YYSYMBOL_ACCSTRUCTNV = 172, /* ACCSTRUCTNV */ + YYSYMBOL_ACCSTRUCTEXT = 173, /* ACCSTRUCTEXT */ + YYSYMBOL_RAYQUERYEXT = 174, /* RAYQUERYEXT */ + YYSYMBOL_FCOOPMATNV = 175, /* FCOOPMATNV */ + YYSYMBOL_ICOOPMATNV = 176, /* ICOOPMATNV */ + YYSYMBOL_UCOOPMATNV = 177, /* UCOOPMATNV */ + YYSYMBOL_COOPMAT = 178, /* COOPMAT */ + YYSYMBOL_COOPVECNV = 179, /* COOPVECNV */ + YYSYMBOL_HITOBJECTNV = 180, /* HITOBJECTNV */ + YYSYMBOL_HITOBJECTATTRNV = 181, /* HITOBJECTATTRNV */ + YYSYMBOL_TENSORLAYOUTNV = 182, /* TENSORLAYOUTNV */ + YYSYMBOL_TENSORVIEWNV = 183, /* TENSORVIEWNV */ + YYSYMBOL_TENSORARM = 184, /* TENSORARM */ + YYSYMBOL_SAMPLERCUBEARRAY = 185, /* SAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 186, /* SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_ISAMPLERCUBEARRAY = 187, /* ISAMPLERCUBEARRAY */ + YYSYMBOL_USAMPLERCUBEARRAY = 188, /* USAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLER1D = 189, /* SAMPLER1D */ + YYSYMBOL_SAMPLER1DARRAY = 190, /* SAMPLER1DARRAY */ + YYSYMBOL_SAMPLER1DARRAYSHADOW = 191, /* SAMPLER1DARRAYSHADOW */ + YYSYMBOL_ISAMPLER1D = 192, /* ISAMPLER1D */ + YYSYMBOL_SAMPLER1DSHADOW = 193, /* SAMPLER1DSHADOW */ + YYSYMBOL_SAMPLER2DRECT = 194, /* SAMPLER2DRECT */ + YYSYMBOL_SAMPLER2DRECTSHADOW = 195, /* SAMPLER2DRECTSHADOW */ + YYSYMBOL_ISAMPLER2DRECT = 196, /* ISAMPLER2DRECT */ + YYSYMBOL_USAMPLER2DRECT = 197, /* USAMPLER2DRECT */ + YYSYMBOL_SAMPLERBUFFER = 198, /* SAMPLERBUFFER */ + YYSYMBOL_ISAMPLERBUFFER = 199, /* ISAMPLERBUFFER */ + YYSYMBOL_USAMPLERBUFFER = 200, /* USAMPLERBUFFER */ + YYSYMBOL_SAMPLER2DMS = 201, /* SAMPLER2DMS */ + YYSYMBOL_ISAMPLER2DMS = 202, /* ISAMPLER2DMS */ + YYSYMBOL_USAMPLER2DMS = 203, /* USAMPLER2DMS */ + YYSYMBOL_SAMPLER2DMSARRAY = 204, /* SAMPLER2DMSARRAY */ + YYSYMBOL_ISAMPLER2DMSARRAY = 205, /* ISAMPLER2DMSARRAY */ + YYSYMBOL_USAMPLER2DMSARRAY = 206, /* USAMPLER2DMSARRAY */ + YYSYMBOL_SAMPLEREXTERNALOES = 207, /* SAMPLEREXTERNALOES */ + YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 208, /* SAMPLEREXTERNAL2DY2YEXT */ + YYSYMBOL_ISAMPLER1DARRAY = 209, /* ISAMPLER1DARRAY */ + YYSYMBOL_USAMPLER1D = 210, /* USAMPLER1D */ + YYSYMBOL_USAMPLER1DARRAY = 211, /* USAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER1D = 212, /* F16SAMPLER1D */ + YYSYMBOL_F16SAMPLER2D = 213, /* F16SAMPLER2D */ + YYSYMBOL_F16SAMPLER3D = 214, /* F16SAMPLER3D */ + YYSYMBOL_F16SAMPLER2DRECT = 215, /* F16SAMPLER2DRECT */ + YYSYMBOL_F16SAMPLERCUBE = 216, /* F16SAMPLERCUBE */ + YYSYMBOL_F16SAMPLER1DARRAY = 217, /* F16SAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER2DARRAY = 218, /* F16SAMPLER2DARRAY */ + YYSYMBOL_F16SAMPLERCUBEARRAY = 219, /* F16SAMPLERCUBEARRAY */ + YYSYMBOL_F16SAMPLERBUFFER = 220, /* F16SAMPLERBUFFER */ + YYSYMBOL_F16SAMPLER2DMS = 221, /* F16SAMPLER2DMS */ + YYSYMBOL_F16SAMPLER2DMSARRAY = 222, /* F16SAMPLER2DMSARRAY */ + YYSYMBOL_F16SAMPLER1DSHADOW = 223, /* F16SAMPLER1DSHADOW */ + YYSYMBOL_F16SAMPLER2DSHADOW = 224, /* F16SAMPLER2DSHADOW */ + YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 225, /* F16SAMPLER1DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 226, /* F16SAMPLER2DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DRECTSHADOW = 227, /* F16SAMPLER2DRECTSHADOW */ + YYSYMBOL_F16SAMPLERCUBESHADOW = 228, /* F16SAMPLERCUBESHADOW */ + YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 229, /* F16SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_IMAGE1D = 230, /* IMAGE1D */ + YYSYMBOL_IIMAGE1D = 231, /* IIMAGE1D */ + YYSYMBOL_UIMAGE1D = 232, /* UIMAGE1D */ + YYSYMBOL_IMAGE2D = 233, /* IMAGE2D */ + YYSYMBOL_IIMAGE2D = 234, /* IIMAGE2D */ + YYSYMBOL_UIMAGE2D = 235, /* UIMAGE2D */ + YYSYMBOL_IMAGE3D = 236, /* IMAGE3D */ + YYSYMBOL_IIMAGE3D = 237, /* IIMAGE3D */ + YYSYMBOL_UIMAGE3D = 238, /* UIMAGE3D */ + YYSYMBOL_IMAGE2DRECT = 239, /* IMAGE2DRECT */ + YYSYMBOL_IIMAGE2DRECT = 240, /* IIMAGE2DRECT */ + YYSYMBOL_UIMAGE2DRECT = 241, /* UIMAGE2DRECT */ + YYSYMBOL_IMAGECUBE = 242, /* IMAGECUBE */ + YYSYMBOL_IIMAGECUBE = 243, /* IIMAGECUBE */ + YYSYMBOL_UIMAGECUBE = 244, /* UIMAGECUBE */ + YYSYMBOL_IMAGEBUFFER = 245, /* IMAGEBUFFER */ + YYSYMBOL_IIMAGEBUFFER = 246, /* IIMAGEBUFFER */ + YYSYMBOL_UIMAGEBUFFER = 247, /* UIMAGEBUFFER */ + YYSYMBOL_IMAGE1DARRAY = 248, /* IMAGE1DARRAY */ + YYSYMBOL_IIMAGE1DARRAY = 249, /* IIMAGE1DARRAY */ + YYSYMBOL_UIMAGE1DARRAY = 250, /* UIMAGE1DARRAY */ + YYSYMBOL_IMAGE2DARRAY = 251, /* IMAGE2DARRAY */ + YYSYMBOL_IIMAGE2DARRAY = 252, /* IIMAGE2DARRAY */ + YYSYMBOL_UIMAGE2DARRAY = 253, /* UIMAGE2DARRAY */ + YYSYMBOL_IMAGECUBEARRAY = 254, /* IMAGECUBEARRAY */ + YYSYMBOL_IIMAGECUBEARRAY = 255, /* IIMAGECUBEARRAY */ + YYSYMBOL_UIMAGECUBEARRAY = 256, /* UIMAGECUBEARRAY */ + YYSYMBOL_IMAGE2DMS = 257, /* IMAGE2DMS */ + YYSYMBOL_IIMAGE2DMS = 258, /* IIMAGE2DMS */ + YYSYMBOL_UIMAGE2DMS = 259, /* UIMAGE2DMS */ + YYSYMBOL_IMAGE2DMSARRAY = 260, /* IMAGE2DMSARRAY */ + YYSYMBOL_IIMAGE2DMSARRAY = 261, /* IIMAGE2DMSARRAY */ + YYSYMBOL_UIMAGE2DMSARRAY = 262, /* UIMAGE2DMSARRAY */ + YYSYMBOL_F16IMAGE1D = 263, /* F16IMAGE1D */ + YYSYMBOL_F16IMAGE2D = 264, /* F16IMAGE2D */ + YYSYMBOL_F16IMAGE3D = 265, /* F16IMAGE3D */ + YYSYMBOL_F16IMAGE2DRECT = 266, /* F16IMAGE2DRECT */ + YYSYMBOL_F16IMAGECUBE = 267, /* F16IMAGECUBE */ + YYSYMBOL_F16IMAGE1DARRAY = 268, /* F16IMAGE1DARRAY */ + YYSYMBOL_F16IMAGE2DARRAY = 269, /* F16IMAGE2DARRAY */ + YYSYMBOL_F16IMAGECUBEARRAY = 270, /* F16IMAGECUBEARRAY */ + YYSYMBOL_F16IMAGEBUFFER = 271, /* F16IMAGEBUFFER */ + YYSYMBOL_F16IMAGE2DMS = 272, /* F16IMAGE2DMS */ + YYSYMBOL_F16IMAGE2DMSARRAY = 273, /* F16IMAGE2DMSARRAY */ + YYSYMBOL_I64IMAGE1D = 274, /* I64IMAGE1D */ + YYSYMBOL_U64IMAGE1D = 275, /* U64IMAGE1D */ + YYSYMBOL_I64IMAGE2D = 276, /* I64IMAGE2D */ + YYSYMBOL_U64IMAGE2D = 277, /* U64IMAGE2D */ + YYSYMBOL_I64IMAGE3D = 278, /* I64IMAGE3D */ + YYSYMBOL_U64IMAGE3D = 279, /* U64IMAGE3D */ + YYSYMBOL_I64IMAGE2DRECT = 280, /* I64IMAGE2DRECT */ + YYSYMBOL_U64IMAGE2DRECT = 281, /* U64IMAGE2DRECT */ + YYSYMBOL_I64IMAGECUBE = 282, /* I64IMAGECUBE */ + YYSYMBOL_U64IMAGECUBE = 283, /* U64IMAGECUBE */ + YYSYMBOL_I64IMAGEBUFFER = 284, /* I64IMAGEBUFFER */ + YYSYMBOL_U64IMAGEBUFFER = 285, /* U64IMAGEBUFFER */ + YYSYMBOL_I64IMAGE1DARRAY = 286, /* I64IMAGE1DARRAY */ + YYSYMBOL_U64IMAGE1DARRAY = 287, /* U64IMAGE1DARRAY */ + YYSYMBOL_I64IMAGE2DARRAY = 288, /* I64IMAGE2DARRAY */ + YYSYMBOL_U64IMAGE2DARRAY = 289, /* U64IMAGE2DARRAY */ + YYSYMBOL_I64IMAGECUBEARRAY = 290, /* I64IMAGECUBEARRAY */ + YYSYMBOL_U64IMAGECUBEARRAY = 291, /* U64IMAGECUBEARRAY */ + YYSYMBOL_I64IMAGE2DMS = 292, /* I64IMAGE2DMS */ + YYSYMBOL_U64IMAGE2DMS = 293, /* U64IMAGE2DMS */ + YYSYMBOL_I64IMAGE2DMSARRAY = 294, /* I64IMAGE2DMSARRAY */ + YYSYMBOL_U64IMAGE2DMSARRAY = 295, /* U64IMAGE2DMSARRAY */ + YYSYMBOL_TEXTURECUBEARRAY = 296, /* TEXTURECUBEARRAY */ + YYSYMBOL_ITEXTURECUBEARRAY = 297, /* ITEXTURECUBEARRAY */ + YYSYMBOL_UTEXTURECUBEARRAY = 298, /* UTEXTURECUBEARRAY */ + YYSYMBOL_TEXTURE1D = 299, /* TEXTURE1D */ + YYSYMBOL_ITEXTURE1D = 300, /* ITEXTURE1D */ + YYSYMBOL_UTEXTURE1D = 301, /* UTEXTURE1D */ + YYSYMBOL_TEXTURE1DARRAY = 302, /* TEXTURE1DARRAY */ + YYSYMBOL_ITEXTURE1DARRAY = 303, /* ITEXTURE1DARRAY */ + YYSYMBOL_UTEXTURE1DARRAY = 304, /* UTEXTURE1DARRAY */ + YYSYMBOL_TEXTURE2DRECT = 305, /* TEXTURE2DRECT */ + YYSYMBOL_ITEXTURE2DRECT = 306, /* ITEXTURE2DRECT */ + YYSYMBOL_UTEXTURE2DRECT = 307, /* UTEXTURE2DRECT */ + YYSYMBOL_TEXTUREBUFFER = 308, /* TEXTUREBUFFER */ + YYSYMBOL_ITEXTUREBUFFER = 309, /* ITEXTUREBUFFER */ + YYSYMBOL_UTEXTUREBUFFER = 310, /* UTEXTUREBUFFER */ + YYSYMBOL_TEXTURE2DMS = 311, /* TEXTURE2DMS */ + YYSYMBOL_ITEXTURE2DMS = 312, /* ITEXTURE2DMS */ + YYSYMBOL_UTEXTURE2DMS = 313, /* UTEXTURE2DMS */ + YYSYMBOL_TEXTURE2DMSARRAY = 314, /* TEXTURE2DMSARRAY */ + YYSYMBOL_ITEXTURE2DMSARRAY = 315, /* ITEXTURE2DMSARRAY */ + YYSYMBOL_UTEXTURE2DMSARRAY = 316, /* UTEXTURE2DMSARRAY */ + YYSYMBOL_F16TEXTURE1D = 317, /* F16TEXTURE1D */ + YYSYMBOL_F16TEXTURE2D = 318, /* F16TEXTURE2D */ + YYSYMBOL_F16TEXTURE3D = 319, /* F16TEXTURE3D */ + YYSYMBOL_F16TEXTURE2DRECT = 320, /* F16TEXTURE2DRECT */ + YYSYMBOL_F16TEXTURECUBE = 321, /* F16TEXTURECUBE */ + YYSYMBOL_F16TEXTURE1DARRAY = 322, /* F16TEXTURE1DARRAY */ + YYSYMBOL_F16TEXTURE2DARRAY = 323, /* F16TEXTURE2DARRAY */ + YYSYMBOL_F16TEXTURECUBEARRAY = 324, /* F16TEXTURECUBEARRAY */ + YYSYMBOL_F16TEXTUREBUFFER = 325, /* F16TEXTUREBUFFER */ + YYSYMBOL_F16TEXTURE2DMS = 326, /* F16TEXTURE2DMS */ + YYSYMBOL_F16TEXTURE2DMSARRAY = 327, /* F16TEXTURE2DMSARRAY */ + YYSYMBOL_SUBPASSINPUT = 328, /* SUBPASSINPUT */ + YYSYMBOL_SUBPASSINPUTMS = 329, /* SUBPASSINPUTMS */ + YYSYMBOL_ISUBPASSINPUT = 330, /* ISUBPASSINPUT */ + YYSYMBOL_ISUBPASSINPUTMS = 331, /* ISUBPASSINPUTMS */ + YYSYMBOL_USUBPASSINPUT = 332, /* USUBPASSINPUT */ + YYSYMBOL_USUBPASSINPUTMS = 333, /* USUBPASSINPUTMS */ + YYSYMBOL_F16SUBPASSINPUT = 334, /* F16SUBPASSINPUT */ + YYSYMBOL_F16SUBPASSINPUTMS = 335, /* F16SUBPASSINPUTMS */ + YYSYMBOL_SPIRV_INSTRUCTION = 336, /* SPIRV_INSTRUCTION */ + YYSYMBOL_SPIRV_EXECUTION_MODE = 337, /* SPIRV_EXECUTION_MODE */ + YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 338, /* SPIRV_EXECUTION_MODE_ID */ + YYSYMBOL_SPIRV_DECORATE = 339, /* SPIRV_DECORATE */ + YYSYMBOL_SPIRV_DECORATE_ID = 340, /* SPIRV_DECORATE_ID */ + YYSYMBOL_SPIRV_DECORATE_STRING = 341, /* SPIRV_DECORATE_STRING */ + YYSYMBOL_SPIRV_TYPE = 342, /* SPIRV_TYPE */ + YYSYMBOL_SPIRV_STORAGE_CLASS = 343, /* SPIRV_STORAGE_CLASS */ + YYSYMBOL_SPIRV_BY_REFERENCE = 344, /* SPIRV_BY_REFERENCE */ + YYSYMBOL_SPIRV_LITERAL = 345, /* SPIRV_LITERAL */ + YYSYMBOL_ATTACHMENTEXT = 346, /* ATTACHMENTEXT */ + YYSYMBOL_IATTACHMENTEXT = 347, /* IATTACHMENTEXT */ + YYSYMBOL_UATTACHMENTEXT = 348, /* UATTACHMENTEXT */ + YYSYMBOL_LEFT_OP = 349, /* LEFT_OP */ + YYSYMBOL_RIGHT_OP = 350, /* RIGHT_OP */ + YYSYMBOL_INC_OP = 351, /* INC_OP */ + YYSYMBOL_DEC_OP = 352, /* DEC_OP */ + YYSYMBOL_LE_OP = 353, /* LE_OP */ + YYSYMBOL_GE_OP = 354, /* GE_OP */ + YYSYMBOL_EQ_OP = 355, /* EQ_OP */ + YYSYMBOL_NE_OP = 356, /* NE_OP */ + YYSYMBOL_AND_OP = 357, /* AND_OP */ + YYSYMBOL_OR_OP = 358, /* OR_OP */ + YYSYMBOL_XOR_OP = 359, /* XOR_OP */ + YYSYMBOL_MUL_ASSIGN = 360, /* MUL_ASSIGN */ + YYSYMBOL_DIV_ASSIGN = 361, /* DIV_ASSIGN */ + YYSYMBOL_ADD_ASSIGN = 362, /* ADD_ASSIGN */ + YYSYMBOL_MOD_ASSIGN = 363, /* MOD_ASSIGN */ + YYSYMBOL_LEFT_ASSIGN = 364, /* LEFT_ASSIGN */ + YYSYMBOL_RIGHT_ASSIGN = 365, /* RIGHT_ASSIGN */ + YYSYMBOL_AND_ASSIGN = 366, /* AND_ASSIGN */ + YYSYMBOL_XOR_ASSIGN = 367, /* XOR_ASSIGN */ + YYSYMBOL_OR_ASSIGN = 368, /* OR_ASSIGN */ + YYSYMBOL_SUB_ASSIGN = 369, /* SUB_ASSIGN */ + YYSYMBOL_STRING_LITERAL = 370, /* STRING_LITERAL */ + YYSYMBOL_LEFT_PAREN = 371, /* LEFT_PAREN */ + YYSYMBOL_RIGHT_PAREN = 372, /* RIGHT_PAREN */ + YYSYMBOL_LEFT_BRACKET = 373, /* LEFT_BRACKET */ + YYSYMBOL_RIGHT_BRACKET = 374, /* RIGHT_BRACKET */ + YYSYMBOL_LEFT_BRACE = 375, /* LEFT_BRACE */ + YYSYMBOL_RIGHT_BRACE = 376, /* RIGHT_BRACE */ + YYSYMBOL_DOT = 377, /* DOT */ + YYSYMBOL_COMMA = 378, /* COMMA */ + YYSYMBOL_COLON = 379, /* COLON */ + YYSYMBOL_EQUAL = 380, /* EQUAL */ + YYSYMBOL_SEMICOLON = 381, /* SEMICOLON */ + YYSYMBOL_BANG = 382, /* BANG */ + YYSYMBOL_DASH = 383, /* DASH */ + YYSYMBOL_TILDE = 384, /* TILDE */ + YYSYMBOL_PLUS = 385, /* PLUS */ + YYSYMBOL_STAR = 386, /* STAR */ + YYSYMBOL_SLASH = 387, /* SLASH */ + YYSYMBOL_PERCENT = 388, /* PERCENT */ + YYSYMBOL_LEFT_ANGLE = 389, /* LEFT_ANGLE */ + YYSYMBOL_RIGHT_ANGLE = 390, /* RIGHT_ANGLE */ + YYSYMBOL_VERTICAL_BAR = 391, /* VERTICAL_BAR */ + YYSYMBOL_CARET = 392, /* CARET */ + YYSYMBOL_AMPERSAND = 393, /* AMPERSAND */ + YYSYMBOL_QUESTION = 394, /* QUESTION */ + YYSYMBOL_INVARIANT = 395, /* INVARIANT */ + YYSYMBOL_HIGH_PRECISION = 396, /* HIGH_PRECISION */ + YYSYMBOL_MEDIUM_PRECISION = 397, /* MEDIUM_PRECISION */ + YYSYMBOL_LOW_PRECISION = 398, /* LOW_PRECISION */ + YYSYMBOL_PRECISION = 399, /* PRECISION */ + YYSYMBOL_PACKED = 400, /* PACKED */ + YYSYMBOL_RESOURCE = 401, /* RESOURCE */ + YYSYMBOL_SUPERP = 402, /* SUPERP */ + YYSYMBOL_FLOATCONSTANT = 403, /* FLOATCONSTANT */ + YYSYMBOL_INTCONSTANT = 404, /* INTCONSTANT */ + YYSYMBOL_UINTCONSTANT = 405, /* UINTCONSTANT */ + YYSYMBOL_BOOLCONSTANT = 406, /* BOOLCONSTANT */ + YYSYMBOL_IDENTIFIER = 407, /* IDENTIFIER */ + YYSYMBOL_TYPE_NAME = 408, /* TYPE_NAME */ + YYSYMBOL_CENTROID = 409, /* CENTROID */ + YYSYMBOL_IN = 410, /* IN */ + YYSYMBOL_OUT = 411, /* OUT */ + YYSYMBOL_INOUT = 412, /* INOUT */ + YYSYMBOL_STRUCT = 413, /* STRUCT */ + YYSYMBOL_VOID = 414, /* VOID */ + YYSYMBOL_WHILE = 415, /* WHILE */ + YYSYMBOL_BREAK = 416, /* BREAK */ + YYSYMBOL_CONTINUE = 417, /* CONTINUE */ + YYSYMBOL_DO = 418, /* DO */ + YYSYMBOL_ELSE = 419, /* ELSE */ + YYSYMBOL_FOR = 420, /* FOR */ + YYSYMBOL_IF = 421, /* IF */ + YYSYMBOL_DISCARD = 422, /* DISCARD */ + YYSYMBOL_RETURN = 423, /* RETURN */ + YYSYMBOL_SWITCH = 424, /* SWITCH */ + YYSYMBOL_CASE = 425, /* CASE */ + YYSYMBOL_DEFAULT = 426, /* DEFAULT */ + YYSYMBOL_TERMINATE_INVOCATION = 427, /* TERMINATE_INVOCATION */ + YYSYMBOL_TERMINATE_RAY = 428, /* TERMINATE_RAY */ + YYSYMBOL_IGNORE_INTERSECTION = 429, /* IGNORE_INTERSECTION */ + YYSYMBOL_UNIFORM = 430, /* UNIFORM */ + YYSYMBOL_SHARED = 431, /* SHARED */ + YYSYMBOL_BUFFER = 432, /* BUFFER */ + YYSYMBOL_TILEIMAGEEXT = 433, /* TILEIMAGEEXT */ + YYSYMBOL_FLAT = 434, /* FLAT */ + YYSYMBOL_SMOOTH = 435, /* SMOOTH */ + YYSYMBOL_LAYOUT = 436, /* LAYOUT */ + YYSYMBOL_DOUBLECONSTANT = 437, /* DOUBLECONSTANT */ + YYSYMBOL_INT16CONSTANT = 438, /* INT16CONSTANT */ + YYSYMBOL_UINT16CONSTANT = 439, /* UINT16CONSTANT */ + YYSYMBOL_FLOAT16CONSTANT = 440, /* FLOAT16CONSTANT */ + YYSYMBOL_INT32CONSTANT = 441, /* INT32CONSTANT */ + YYSYMBOL_UINT32CONSTANT = 442, /* UINT32CONSTANT */ + YYSYMBOL_INT64CONSTANT = 443, /* INT64CONSTANT */ + YYSYMBOL_UINT64CONSTANT = 444, /* UINT64CONSTANT */ + YYSYMBOL_SUBROUTINE = 445, /* SUBROUTINE */ + YYSYMBOL_DEMOTE = 446, /* DEMOTE */ + YYSYMBOL_FUNCTION = 447, /* FUNCTION */ + YYSYMBOL_PAYLOADNV = 448, /* PAYLOADNV */ + YYSYMBOL_PAYLOADINNV = 449, /* PAYLOADINNV */ + YYSYMBOL_HITATTRNV = 450, /* HITATTRNV */ + YYSYMBOL_CALLDATANV = 451, /* CALLDATANV */ + YYSYMBOL_CALLDATAINNV = 452, /* CALLDATAINNV */ + YYSYMBOL_PAYLOADEXT = 453, /* PAYLOADEXT */ + YYSYMBOL_PAYLOADINEXT = 454, /* PAYLOADINEXT */ + YYSYMBOL_HITATTREXT = 455, /* HITATTREXT */ + YYSYMBOL_CALLDATAEXT = 456, /* CALLDATAEXT */ + YYSYMBOL_CALLDATAINEXT = 457, /* CALLDATAINEXT */ + YYSYMBOL_PATCH = 458, /* PATCH */ + YYSYMBOL_SAMPLE = 459, /* SAMPLE */ + YYSYMBOL_NONUNIFORM = 460, /* NONUNIFORM */ + YYSYMBOL_COHERENT = 461, /* COHERENT */ + YYSYMBOL_VOLATILE = 462, /* VOLATILE */ + YYSYMBOL_RESTRICT = 463, /* RESTRICT */ + YYSYMBOL_READONLY = 464, /* READONLY */ + YYSYMBOL_WRITEONLY = 465, /* WRITEONLY */ + YYSYMBOL_NONTEMPORAL = 466, /* NONTEMPORAL */ + YYSYMBOL_DEVICECOHERENT = 467, /* DEVICECOHERENT */ + YYSYMBOL_QUEUEFAMILYCOHERENT = 468, /* QUEUEFAMILYCOHERENT */ + YYSYMBOL_WORKGROUPCOHERENT = 469, /* WORKGROUPCOHERENT */ + YYSYMBOL_SUBGROUPCOHERENT = 470, /* SUBGROUPCOHERENT */ + YYSYMBOL_NONPRIVATE = 471, /* NONPRIVATE */ + YYSYMBOL_SHADERCALLCOHERENT = 472, /* SHADERCALLCOHERENT */ + YYSYMBOL_NOPERSPECTIVE = 473, /* NOPERSPECTIVE */ + YYSYMBOL_EXPLICITINTERPAMD = 474, /* EXPLICITINTERPAMD */ + YYSYMBOL_PERVERTEXEXT = 475, /* PERVERTEXEXT */ + YYSYMBOL_PERVERTEXNV = 476, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 477, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 478, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 479, /* PERTASKNV */ + YYSYMBOL_PERPRIMITIVEEXT = 480, /* PERPRIMITIVEEXT */ + YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 481, /* TASKPAYLOADWORKGROUPEXT */ + YYSYMBOL_PRECISE = 482, /* PRECISE */ + YYSYMBOL_YYACCEPT = 483, /* $accept */ + YYSYMBOL_variable_identifier = 484, /* variable_identifier */ + YYSYMBOL_primary_expression = 485, /* primary_expression */ + YYSYMBOL_postfix_expression = 486, /* postfix_expression */ + YYSYMBOL_integer_expression = 487, /* integer_expression */ + YYSYMBOL_function_call = 488, /* function_call */ + YYSYMBOL_function_call_or_method = 489, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 490, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 491, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 492, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 493, /* function_call_header */ + YYSYMBOL_function_identifier = 494, /* function_identifier */ + YYSYMBOL_unary_expression = 495, /* unary_expression */ + YYSYMBOL_unary_operator = 496, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 497, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 498, /* additive_expression */ + YYSYMBOL_shift_expression = 499, /* shift_expression */ + YYSYMBOL_relational_expression = 500, /* relational_expression */ + YYSYMBOL_equality_expression = 501, /* equality_expression */ + YYSYMBOL_and_expression = 502, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 503, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 504, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 505, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 506, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 507, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 508, /* conditional_expression */ + YYSYMBOL_509_1 = 509, /* $@1 */ + YYSYMBOL_assignment_expression = 510, /* assignment_expression */ + YYSYMBOL_assignment_operator = 511, /* assignment_operator */ + YYSYMBOL_expression = 512, /* expression */ + YYSYMBOL_constant_expression = 513, /* constant_expression */ + YYSYMBOL_declaration = 514, /* declaration */ + YYSYMBOL_block_structure = 515, /* block_structure */ + YYSYMBOL_516_2 = 516, /* $@2 */ + YYSYMBOL_identifier_list = 517, /* identifier_list */ + YYSYMBOL_function_prototype = 518, /* function_prototype */ + YYSYMBOL_function_declarator = 519, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 520, /* function_header_with_parameters */ + YYSYMBOL_function_header = 521, /* function_header */ + YYSYMBOL_parameter_declarator = 522, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 523, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 524, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 525, /* init_declarator_list */ + YYSYMBOL_single_declaration = 526, /* single_declaration */ + YYSYMBOL_fully_specified_type = 527, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 528, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 529, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 530, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 531, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 532, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 533, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 534, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 535, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 536, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 537, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 538, /* type_name_list */ + YYSYMBOL_type_specifier = 539, /* type_specifier */ + YYSYMBOL_array_specifier = 540, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 541, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 542, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 543, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 544, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 545, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 546, /* struct_specifier */ + YYSYMBOL_547_3 = 547, /* $@3 */ + YYSYMBOL_548_4 = 548, /* $@4 */ + YYSYMBOL_struct_declaration_list = 549, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 550, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 551, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 552, /* struct_declarator */ + YYSYMBOL_initializer = 553, /* initializer */ + YYSYMBOL_initializer_list = 554, /* initializer_list */ + YYSYMBOL_declaration_statement = 555, /* declaration_statement */ + YYSYMBOL_statement = 556, /* statement */ + YYSYMBOL_simple_statement = 557, /* simple_statement */ + YYSYMBOL_demote_statement = 558, /* demote_statement */ + YYSYMBOL_compound_statement = 559, /* compound_statement */ + YYSYMBOL_560_5 = 560, /* $@5 */ + YYSYMBOL_561_6 = 561, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 562, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 563, /* statement_scoped */ + YYSYMBOL_564_7 = 564, /* $@7 */ + YYSYMBOL_565_8 = 565, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 566, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 567, /* statement_list */ + YYSYMBOL_expression_statement = 568, /* expression_statement */ + YYSYMBOL_selection_statement = 569, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 570, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 571, /* selection_rest_statement */ + YYSYMBOL_condition = 572, /* condition */ + YYSYMBOL_switch_statement = 573, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 574, /* switch_statement_nonattributed */ + YYSYMBOL_575_9 = 575, /* $@9 */ + YYSYMBOL_switch_statement_list = 576, /* switch_statement_list */ + YYSYMBOL_case_label = 577, /* case_label */ + YYSYMBOL_iteration_statement = 578, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 579, /* iteration_statement_nonattributed */ + YYSYMBOL_580_10 = 580, /* $@10 */ + YYSYMBOL_581_11 = 581, /* $@11 */ + YYSYMBOL_582_12 = 582, /* $@12 */ + YYSYMBOL_for_init_statement = 583, /* for_init_statement */ + YYSYMBOL_conditionopt = 584, /* conditionopt */ + YYSYMBOL_for_rest_statement = 585, /* for_rest_statement */ + YYSYMBOL_jump_statement = 586, /* jump_statement */ + YYSYMBOL_translation_unit = 587, /* translation_unit */ + YYSYMBOL_external_declaration = 588, /* external_declaration */ + YYSYMBOL_function_definition = 589, /* function_definition */ + YYSYMBOL_590_13 = 590, /* $@13 */ + YYSYMBOL_attribute = 591, /* attribute */ + YYSYMBOL_attribute_list = 592, /* attribute_list */ + YYSYMBOL_single_attribute = 593, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 594, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 595, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 596, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 597, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 598, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 599, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 600, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 601, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 602, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 603, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 604, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 605, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 606, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_id_parameter = 607, /* spirv_decorate_id_parameter */ + YYSYMBOL_spirv_decorate_string_parameter_list = 608, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 609, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 610, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 611, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 612, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 613, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 614 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -741,7 +750,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 745 "MachineIndependent/glslang_tab.cpp" +#line 754 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1063,21 +1072,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 461 +#define YYFINAL 471 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12966 +#define YYLAST 13688 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 474 +#define YYNTOKENS 483 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 132 /* YYNRULES -- Number of rules. */ -#define YYNRULES 709 +#define YYNRULES 719 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 955 +#define YYNSTATES 966 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 728 +#define YYMAXUTOK 737 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1163,84 +1172,86 @@ static const yytype_int16 yytranslate[] = 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473 + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 358, 358, 364, 367, 372, 375, 378, 382, 385, - 388, 392, 396, 400, 404, 408, 412, 418, 425, 428, - 431, 434, 437, 442, 450, 457, 464, 470, 474, 481, - 484, 490, 508, 533, 541, 546, 573, 581, 587, 591, - 595, 615, 616, 617, 618, 624, 625, 630, 635, 644, - 645, 650, 658, 659, 665, 674, 675, 680, 685, 690, - 698, 699, 708, 720, 721, 730, 731, 740, 741, 750, - 751, 759, 760, 768, 769, 777, 778, 778, 796, 797, - 813, 817, 821, 825, 830, 834, 838, 842, 846, 850, - 854, 861, 864, 875, 882, 887, 894, 899, 904, 911, - 915, 919, 923, 928, 933, 942, 942, 953, 957, 964, - 969, 977, 985, 997, 1000, 1007, 1020, 1043, 1066, 1081, - 1106, 1117, 1127, 1137, 1147, 1156, 1159, 1163, 1167, 1172, - 1180, 1185, 1190, 1195, 1200, 1209, 1219, 1246, 1255, 1262, - 1269, 1276, 1283, 1291, 1299, 1309, 1319, 1326, 1336, 1342, - 1345, 1352, 1356, 1360, 1368, 1377, 1380, 1391, 1394, 1397, - 1401, 1405, 1409, 1413, 1416, 1421, 1425, 1430, 1438, 1442, - 1447, 1453, 1459, 1466, 1471, 1476, 1484, 1489, 1501, 1515, - 1521, 1526, 1534, 1542, 1550, 1558, 1566, 1574, 1582, 1590, - 1598, 1605, 1612, 1616, 1621, 1626, 1631, 1636, 1641, 1646, - 1650, 1654, 1658, 1662, 1666, 1672, 1678, 1688, 1695, 1698, - 1706, 1713, 1724, 1729, 1737, 1741, 1751, 1754, 1760, 1766, - 1772, 1780, 1790, 1794, 1798, 1802, 1807, 1811, 1816, 1821, - 1826, 1831, 1836, 1841, 1846, 1851, 1856, 1862, 1868, 1874, - 1879, 1884, 1889, 1894, 1899, 1904, 1909, 1914, 1919, 1924, - 1929, 1934, 1941, 1946, 1951, 1956, 1961, 1966, 1971, 1976, - 1981, 1986, 1991, 1996, 2001, 2009, 2017, 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, - 2223, 2229, 2235, 2241, 2249, 2257, 2265, 2273, 2281, 2289, - 2297, 2305, 2313, 2321, 2329, 2337, 2343, 2349, 2355, 2361, - 2367, 2373, 2379, 2385, 2391, 2397, 2403, 2409, 2415, 2421, - 2427, 2433, 2439, 2445, 2451, 2457, 2463, 2469, 2475, 2481, - 2487, 2493, 2499, 2505, 2511, 2517, 2523, 2529, 2535, 2541, - 2547, 2553, 2557, 2561, 2565, 2570, 2575, 2580, 2585, 2590, - 2595, 2600, 2605, 2610, 2615, 2620, 2625, 2630, 2635, 2641, - 2647, 2653, 2659, 2665, 2671, 2677, 2683, 2689, 2695, 2701, - 2707, 2713, 2718, 2723, 2728, 2733, 2738, 2743, 2748, 2753, - 2758, 2763, 2768, 2773, 2778, 2783, 2788, 2793, 2798, 2803, - 2808, 2813, 2818, 2823, 2828, 2833, 2838, 2843, 2848, 2853, - 2858, 2863, 2868, 2873, 2878, 2884, 2890, 2895, 2900, 2905, - 2911, 2916, 2921, 2926, 2932, 2937, 2942, 2947, 2953, 2958, - 2963, 2968, 2974, 2980, 2986, 2992, 2997, 3003, 3009, 3015, - 3020, 3025, 3030, 3035, 3040, 3046, 3051, 3056, 3061, 3067, - 3072, 3077, 3082, 3088, 3093, 3098, 3103, 3109, 3114, 3119, - 3124, 3130, 3135, 3140, 3145, 3151, 3156, 3161, 3166, 3172, - 3177, 3182, 3187, 3193, 3198, 3203, 3208, 3214, 3219, 3224, - 3229, 3235, 3240, 3245, 3250, 3256, 3261, 3266, 3271, 3277, - 3282, 3287, 3292, 3298, 3303, 3308, 3313, 3319, 3324, 3329, - 3334, 3340, 3345, 3350, 3355, 3360, 3365, 3370, 3375, 3380, - 3385, 3390, 3395, 3400, 3405, 3410, 3415, 3420, 3425, 3430, - 3435, 3440, 3445, 3450, 3455, 3460, 3466, 3472, 3478, 3484, - 3490, 3496, 3502, 3509, 3516, 3522, 3528, 3534, 3540, 3547, - 3554, 3561, 3568, 3573, 3578, 3582, 3588, 3592, 3596, 3601, - 3617, 3622, 3627, 3635, 3635, 3652, 3652, 3662, 3665, 3678, - 3700, 3727, 3731, 3737, 3742, 3753, 3756, 3762, 3768, 3777, - 3780, 3786, 3790, 3791, 3797, 3798, 3799, 3800, 3801, 3802, - 3803, 3804, 3808, 3816, 3817, 3821, 3817, 3835, 3836, 3840, - 3840, 3847, 3847, 3861, 3864, 3874, 3882, 3893, 3894, 3898, - 3901, 3908, 3915, 3919, 3927, 3931, 3944, 3947, 3954, 3954, - 3974, 3977, 3983, 3995, 4007, 4010, 4018, 4018, 4033, 4033, - 4051, 4051, 4072, 4075, 4081, 4084, 4090, 4094, 4101, 4106, - 4111, 4118, 4121, 4125, 4129, 4133, 4142, 4146, 4155, 4158, - 4161, 4169, 4169, 4211, 4216, 4219, 4224, 4227, 4232, 4235, - 4240, 4243, 4248, 4251, 4256, 4259, 4264, 4268, 4273, 4277, - 4282, 4286, 4293, 4296, 4301, 4304, 4307, 4310, 4313, 4318, - 4327, 4338, 4343, 4351, 4355, 4360, 4364, 4369, 4373, 4378, - 4382, 4389, 4392, 4397, 4400, 4403, 4406, 4411, 4414, 4419, - 4425, 4428, 4431, 4434, 4439, 4443, 4448, 4452, 4457, 4461, - 4468, 4471, 4476, 4479, 4484, 4487, 4493, 4496, 4501, 4504 + 0, 361, 361, 367, 370, 375, 378, 381, 385, 388, + 391, 395, 399, 403, 407, 411, 415, 421, 428, 431, + 434, 437, 440, 445, 453, 460, 467, 473, 477, 484, + 487, 493, 511, 536, 544, 549, 576, 584, 590, 594, + 598, 618, 619, 620, 621, 627, 628, 633, 638, 647, + 648, 653, 661, 662, 668, 677, 678, 683, 688, 693, + 701, 702, 711, 723, 724, 733, 734, 743, 744, 753, + 754, 762, 763, 771, 772, 780, 781, 781, 799, 800, + 816, 820, 824, 828, 833, 837, 841, 845, 849, 853, + 857, 864, 867, 878, 885, 890, 897, 902, 907, 914, + 918, 922, 926, 931, 939, 939, 950, 954, 961, 966, + 974, 982, 994, 997, 1004, 1017, 1037, 1044, 1067, 1082, + 1101, 1112, 1123, 1133, 1143, 1153, 1162, 1165, 1169, 1173, + 1178, 1186, 1191, 1196, 1201, 1206, 1215, 1225, 1252, 1261, + 1268, 1275, 1282, 1289, 1297, 1305, 1315, 1325, 1332, 1342, + 1348, 1351, 1358, 1362, 1366, 1374, 1383, 1386, 1397, 1400, + 1403, 1407, 1411, 1415, 1419, 1422, 1427, 1431, 1436, 1444, + 1448, 1453, 1459, 1465, 1472, 1477, 1482, 1490, 1495, 1507, + 1521, 1527, 1532, 1540, 1548, 1556, 1564, 1572, 1580, 1588, + 1596, 1604, 1611, 1618, 1622, 1627, 1632, 1637, 1642, 1647, + 1652, 1656, 1660, 1664, 1668, 1672, 1678, 1684, 1694, 1701, + 1704, 1712, 1719, 1730, 1735, 1743, 1747, 1757, 1760, 1766, + 1772, 1778, 1786, 1796, 1800, 1804, 1808, 1813, 1817, 1822, + 1827, 1832, 1837, 1842, 1847, 1852, 1857, 1862, 1868, 1874, + 1880, 1885, 1890, 1895, 1900, 1905, 1910, 1915, 1920, 1925, + 1930, 1935, 1940, 1947, 1952, 1957, 1962, 1967, 1972, 1977, + 1982, 1987, 1992, 1997, 2002, 2007, 2012, 2017, 2025, 2033, + 2041, 2047, 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, + 2101, 2107, 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, + 2161, 2167, 2173, 2179, 2185, 2191, 2197, 2203, 2209, 2215, + 2221, 2227, 2233, 2239, 2245, 2251, 2257, 2263, 2269, 2275, + 2281, 2287, 2293, 2301, 2309, 2317, 2325, 2333, 2341, 2349, + 2357, 2365, 2373, 2381, 2389, 2395, 2401, 2407, 2413, 2419, + 2425, 2431, 2437, 2443, 2449, 2455, 2461, 2467, 2473, 2479, + 2485, 2491, 2497, 2503, 2509, 2515, 2521, 2527, 2533, 2539, + 2545, 2551, 2557, 2563, 2569, 2575, 2581, 2587, 2593, 2599, + 2605, 2609, 2613, 2617, 2622, 2627, 2632, 2637, 2642, 2647, + 2652, 2657, 2662, 2667, 2672, 2677, 2682, 2687, 2693, 2699, + 2705, 2711, 2717, 2723, 2729, 2735, 2741, 2747, 2753, 2759, + 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, + 2815, 2820, 2825, 2830, 2835, 2840, 2845, 2850, 2855, 2860, + 2865, 2870, 2875, 2880, 2885, 2890, 2895, 2900, 2905, 2910, + 2915, 2920, 2925, 2930, 2936, 2942, 2947, 2952, 2957, 2963, + 2968, 2973, 2978, 2984, 2989, 2994, 2999, 3005, 3010, 3015, + 3020, 3026, 3032, 3038, 3044, 3049, 3055, 3061, 3067, 3072, + 3077, 3082, 3087, 3092, 3098, 3103, 3108, 3113, 3119, 3124, + 3129, 3134, 3140, 3145, 3150, 3155, 3161, 3166, 3171, 3176, + 3182, 3187, 3192, 3197, 3203, 3208, 3213, 3218, 3224, 3229, + 3234, 3239, 3245, 3250, 3255, 3260, 3266, 3271, 3276, 3281, + 3287, 3292, 3297, 3302, 3308, 3313, 3318, 3323, 3329, 3334, + 3339, 3344, 3350, 3355, 3360, 3365, 3371, 3376, 3381, 3386, + 3392, 3397, 3402, 3407, 3412, 3417, 3422, 3427, 3432, 3437, + 3442, 3447, 3452, 3457, 3462, 3467, 3472, 3477, 3482, 3487, + 3492, 3497, 3502, 3507, 3512, 3518, 3524, 3530, 3536, 3542, + 3548, 3554, 3561, 3568, 3574, 3580, 3586, 3592, 3599, 3606, + 3613, 3620, 3625, 3630, 3634, 3640, 3646, 3650, 3654, 3659, + 3675, 3680, 3685, 3693, 3693, 3710, 3710, 3720, 3723, 3736, + 3758, 3785, 3789, 3795, 3800, 3811, 3814, 3820, 3826, 3835, + 3838, 3844, 3848, 3849, 3855, 3856, 3857, 3858, 3859, 3860, + 3861, 3862, 3866, 3874, 3875, 3879, 3875, 3893, 3894, 3898, + 3898, 3905, 3905, 3919, 3922, 3932, 3940, 3951, 3952, 3956, + 3959, 3966, 3973, 3977, 3985, 3989, 4002, 4005, 4012, 4012, + 4032, 4035, 4041, 4053, 4065, 4068, 4076, 4076, 4091, 4091, + 4109, 4109, 4130, 4133, 4139, 4142, 4148, 4152, 4159, 4164, + 4169, 4176, 4179, 4183, 4187, 4191, 4200, 4204, 4213, 4216, + 4219, 4227, 4227, 4269, 4274, 4277, 4282, 4285, 4290, 4293, + 4298, 4301, 4306, 4309, 4314, 4317, 4322, 4326, 4331, 4335, + 4340, 4344, 4351, 4354, 4359, 4362, 4365, 4368, 4371, 4376, + 4385, 4396, 4401, 4409, 4413, 4418, 4422, 4427, 4431, 4436, + 4440, 4447, 4450, 4455, 4458, 4461, 4464, 4469, 4472, 4477, + 4483, 4486, 4489, 4492, 4497, 4501, 4506, 4510, 4515, 4519, + 4526, 4529, 4534, 4537, 4542, 4545, 4551, 4554, 4559, 4562 }; #endif @@ -1267,36 +1278,38 @@ static const char *const yytname[] = "USAMPLER2DARRAY", "SAMPLER", "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", - "UTEXTURECUBE", "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "BFLOAT16_T", - "FLOAT16_T", "FLOAT32_T", "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", - "INT32_T", "UINT32_T", "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", - "I64VEC2", "I64VEC3", "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", - "I32VEC2", "I32VEC3", "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", - "I16VEC2", "I16VEC3", "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", - "I8VEC2", "I8VEC3", "I8VEC4", "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", - "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4", "BF16VEC2", "BF16VEC3", - "BF16VEC4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", - "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", - "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", - "F64MAT4", "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", "ACCSTRUCTEXT", "RAYQUERYEXT", - "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "COOPMAT", "COOPVECNV", - "HITOBJECTNV", "HITOBJECTATTRNV", "TENSORLAYOUTNV", "TENSORVIEWNV", - "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", - "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", - "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", - "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", - "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", - "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", - "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", - "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", - "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", + "UTEXTURECUBE", "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOATE5M2_T", + "FLOATE4M3_T", "BFLOAT16_T", "FLOAT16_T", "FLOAT32_T", "DOUBLE", + "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", "INT16_T", + "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3", "I64VEC4", + "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", "I32VEC4", + "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", "I16VEC4", + "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", "U8VEC2", + "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4", + "BF16VEC2", "BF16VEC3", "BF16VEC4", "FE5M2VEC2", "FE5M2VEC3", + "FE5M2VEC4", "FE4M3VEC2", "FE4M3VEC3", "FE4M3VEC4", "F16VEC2", "F16VEC3", + "F16VEC4", "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", + "F32VEC4", "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", + "F64VEC4", "F64MAT2", "F64MAT3", "F64MAT4", "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", + "ACCSTRUCTEXT", "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", + "COOPMAT", "COOPVECNV", "HITOBJECTNV", "HITOBJECTATTRNV", + "TENSORLAYOUTNV", "TENSORVIEWNV", "TENSORARM", "SAMPLERCUBEARRAY", + "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", + "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", + "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", + "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", + "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", + "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", + "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY", + "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D", + "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", @@ -1419,12 +1432,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-878) +#define YYPACT_NINF (-893) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-704) +#define YYTABLE_NINF (-714) #define yytable_value_is_error(Yyn) \ 0 @@ -1433,102 +1446,103 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 4729, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -305, -273, -212, -207, -194, - -121, -113, -108, -878, -878, -878, -878, -878, -320, -878, - -878, -878, -878, -878, -196, -878, -878, -878, -878, -878, - -333, -878, -878, -878, -878, -878, -878, -878, -99, -91, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -337, -240, -67, - -64, 8026, -278, -878, -71, -878, -878, -878, -878, 5671, - -878, -878, -878, -878, -47, -878, -878, 961, -878, -878, - 8026, -29, -878, -878, -878, 6142, -53, -134, -133, -128, - -126, -118, -53, -117, -49, 12528, -878, -16, -360, -46, - -878, -316, -878, -13, -10, 8026, -878, -878, -878, 8026, - -43, -42, -878, -313, -878, -258, -878, -878, 11184, -7, - -878, -878, -878, -5, -39, 8026, -878, -12, -9, -8, - -878, -264, -878, -253, -6, -3, -2, -1, -251, 1, - 3, 4, 6, 7, 8, -233, 11, 10, 16, -310, - -878, 13, 8026, -878, 15, -878, -230, -878, -878, -226, - 9392, -878, -274, 1432, -878, -878, -878, -878, -878, -7, - -311, -878, 9840, -271, -878, -35, -878, -238, 11184, 11184, - -878, 11184, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -261, -878, -878, -878, 17, -225, 11632, 19, -878, - 11184, -878, 21, -284, 20, -10, 25, -878, -325, -53, - -878, -34, -878, -321, 24, -116, 11184, -112, -878, -151, - -111, -168, -107, 28, -100, -53, -878, 12080, -878, -98, - 11184, 29, -49, -878, 8026, -27, 6613, -878, 8026, 11184, - -878, -360, -878, 14, -878, -878, -146, -153, -101, -314, - -163, -15, 23, 18, 42, 45, -307, 31, -878, 10288, - -878, 30, -878, -878, 36, 27, 38, -878, 40, 41, - 39, 10736, 52, 11184, 46, 43, 56, 59, 61, -231, - -878, -878, -68, -878, -240, 72, 21, -878, -878, -878, - -878, -878, 1903, -878, -878, -878, -878, -878, -878, -878, - -878, -878, 5200, 20, 9840, -262, 8496, -878, -878, 9840, - 8026, -878, 44, -878, -878, -878, -221, -878, -878, 11184, - 49, -878, -878, 11184, 55, -878, -878, -878, 11184, -878, - -878, -878, -324, -878, -878, -218, 65, -878, -878, -878, - -878, -878, -878, -216, -878, -209, -878, -878, -200, 70, - -878, -878, -878, -878, -199, -878, -198, -878, -878, -878, - -878, -878, -197, -878, 71, -878, -190, 74, -188, 65, - -878, -317, -161, -878, 78, 81, -878, -878, -27, -7, - -66, -878, -878, -878, 7084, -878, -878, -878, 11184, 11184, - 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, - 11184, 11184, 11184, 11184, 11184, 11184, 11184, -878, -878, -878, - 83, -878, 2374, -878, -878, -878, 2374, -878, 11184, -878, - -878, -41, 11184, -80, -878, -878, -878, -878, -878, -878, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - 11184, 11184, -878, -878, -878, -878, -878, -878, -878, 9840, - -878, -878, -119, -878, 7555, -878, -878, 85, 84, -878, - -878, -878, -878, -878, -252, -131, -878, -318, -878, -321, - -878, -321, -878, 11184, 11184, -878, -151, -878, -151, -878, - -168, -168, -878, 91, 28, -878, 12080, -878, 11184, -878, - -878, -37, 20, -27, -878, -878, -878, -878, -878, -146, - -146, -153, -153, -101, -101, -101, -101, -314, -314, -163, - -15, 23, 18, 42, 45, 11184, -878, 2374, 4258, 48, - 3787, -159, -878, -157, -878, -878, -878, -878, -878, 8944, - -878, -878, -878, 94, -878, 64, -878, -156, -878, -154, - -878, -152, -878, -149, -878, -147, -145, -878, -878, -878, - -33, 89, 84, 62, 99, 101, -878, -878, 4258, 98, - -878, -878, -878, -878, -878, -878, -878, -878, -878, -878, - -878, 11184, -878, 95, 2845, 11184, -878, 97, 104, 60, - 105, 3316, -878, 106, -878, 9840, -878, -878, -878, -144, - 11184, 2845, 98, -878, -878, 2374, -878, 102, 84, -878, - -878, 2374, 108, -878, -878 + 4809, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -330, -285, -276, -250, -225, -198, + -107, -96, -893, -893, -893, -893, -893, -64, -893, -893, + -893, -893, -893, -93, -893, -893, -893, -893, -893, -329, + -893, -893, -893, -893, -893, -893, -893, -41, -31, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -327, -40, -30, -143, + 8649, -244, -893, -62, -893, -893, -893, -893, 5769, -893, + -893, -893, -893, -46, -893, -893, 969, -893, -893, 8649, + -34, -893, -893, -893, 6249, -59, -251, -153, -152, -148, + -147, -59, -146, -58, 13241, -893, -25, -370, -56, -893, + -326, -893, -23, -20, 6729, -893, -893, -893, 8649, -53, + -52, -893, -279, -893, -19, -134, -893, -893, 11870, -16, + -893, -893, -893, -14, -48, 8649, -893, -21, -18, -17, + -893, -231, -893, -230, -15, -12, -11, -10, -228, -9, + -8, -7, -5, -4, -2, -227, 6, -1, 8, -293, + -893, 1, 8649, -893, 3, -893, -218, -893, -893, -200, + 10042, -893, -322, 1449, -893, -893, -13, -893, -893, -893, + -291, -256, -893, 10499, -255, -893, -44, -893, 11870, 11870, + -893, 11870, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -294, -893, -893, -893, 12, -196, 12327, 14, -893, + 11870, -893, 15, -334, 7, -20, 16, -893, -337, -59, + -893, -6, -893, -341, 17, -142, 11870, -138, -893, -306, + -137, -174, -136, 18, -128, -59, -893, 12784, -893, -127, + 11870, 19, -58, -893, 8649, -3, 7209, -893, 8649, 11870, + -893, -370, -893, 10, -893, -893, -80, -95, -297, -315, + -55, 13, 11, 21, 32, 33, -324, 20, -893, 10956, + -893, 22, -893, -893, 24, 27, 35, -893, 28, 29, + 39, 11413, 31, 11870, 26, 40, 41, 43, 44, -257, + -893, -893, -92, -893, -40, 42, 15, -893, -893, -893, + -893, -893, 1929, -893, -893, -893, -893, -893, -893, -893, + -893, -893, 5289, 37, 10499, 7, 10499, -241, 9128, -893, + -893, 10499, 8649, -893, -893, -893, -195, -893, -893, 11870, + 34, -893, -893, 11870, 61, -893, -893, -893, 11870, -893, + -893, -893, -338, -893, -893, -192, 60, -893, -893, -893, + -893, -893, -893, -188, -893, -187, -893, -893, -184, 64, + -893, -893, -893, -893, -180, -893, -179, -893, -893, -893, + -893, -893, -177, -893, 67, -893, -176, 68, -175, 60, + -893, -259, -172, -893, 76, 77, -893, -893, -3, -16, + -84, -893, -893, -893, 7689, -893, -893, -893, 11870, 11870, + 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, + 11870, 11870, 11870, 11870, 11870, 11870, 11870, -893, -893, -893, + 78, -893, 2409, -893, -893, -893, 2409, -893, 11870, -893, + -893, -83, 11870, -264, -893, -893, -893, -893, -893, -893, + -893, -893, -893, -893, -893, -893, -893, -893, -893, -893, + 11870, 11870, -893, -893, -893, -893, -893, -893, -893, -893, + -893, 10499, -893, -893, -130, -893, 8169, -893, 82, 72, + -893, -893, -893, -893, -893, -150, -140, -893, -328, -893, + -341, -893, -341, -893, 11870, 11870, -893, -306, -893, -306, + -893, -174, -174, -893, 81, 18, -893, 12784, -893, 11870, + -893, -893, -82, 7, -3, -893, -893, -893, -893, -893, + -80, -80, -95, -95, -297, -297, -297, -297, -315, -315, + -55, 13, 11, 21, 32, 33, 11870, -893, 2409, 4329, + -24, 3849, -168, -893, -167, -893, -893, -893, -893, -893, + 9585, -893, -893, -893, 87, -893, 55, -893, -163, -893, + -160, -893, -159, -893, -158, -893, -156, -155, -893, -893, + -893, -45, 84, 72, 54, 90, 93, -893, -893, 4329, + 91, -893, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, 11870, -893, 85, 2889, 11870, -893, 88, 99, + 53, 98, 3369, -893, 101, -893, 10499, -893, -893, -893, + -151, 11870, 2889, 91, -893, -893, 2409, -893, 96, 72, + -893, -893, 2409, 102, -893, -893 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1536,140 +1550,141 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 168, 226, 224, 225, 223, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 227, 228, 229, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 356, 357, 358, 359, 360, 361, 362, 382, 383, 384, - 385, 386, 387, 388, 397, 410, 411, 398, 399, 401, - 400, 402, 403, 404, 405, 406, 407, 408, 409, 177, - 178, 252, 253, 254, 251, 255, 262, 263, 260, 261, - 258, 259, 256, 257, 288, 289, 290, 300, 301, 302, - 285, 286, 287, 297, 298, 299, 282, 283, 284, 294, - 295, 296, 279, 280, 281, 291, 292, 293, 264, 265, - 266, 303, 304, 305, 267, 268, 269, 270, 271, 272, - 315, 316, 317, 273, 274, 275, 327, 328, 329, 276, - 277, 278, 339, 340, 341, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 354, 351, 352, 353, 538, 539, 540, 541, 545, - 547, 182, 542, 543, 366, 367, 390, 393, 355, 364, - 365, 381, 363, 412, 413, 416, 417, 418, 420, 421, - 422, 424, 425, 426, 428, 429, 525, 526, 389, 391, - 392, 368, 369, 370, 414, 371, 375, 376, 379, 419, - 423, 427, 372, 373, 377, 378, 415, 374, 380, 459, - 461, 462, 463, 465, 466, 467, 469, 470, 471, 473, - 474, 475, 477, 478, 479, 481, 482, 483, 485, 486, - 487, 489, 490, 491, 493, 494, 495, 497, 498, 499, - 501, 502, 460, 464, 468, 472, 476, 484, 488, 492, - 480, 496, 500, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, - 520, 521, 522, 523, 524, 394, 395, 396, 430, 439, - 441, 435, 440, 442, 443, 445, 446, 447, 449, 450, - 451, 453, 454, 455, 457, 458, 431, 432, 433, 444, - 434, 436, 437, 438, 448, 452, 456, 530, 531, 534, - 535, 536, 537, 532, 533, 0, 0, 0, 0, 0, - 0, 0, 0, 166, 167, 527, 528, 529, 0, 640, - 137, 550, 551, 552, 0, 549, 172, 170, 171, 169, - 0, 222, 173, 175, 176, 174, 139, 138, 0, 204, - 544, 184, 186, 181, 188, 190, 185, 187, 183, 189, - 191, 179, 180, 207, 192, 199, 200, 201, 202, 203, - 193, 194, 195, 196, 197, 198, 140, 141, 143, 142, - 144, 146, 147, 145, 206, 154, 639, 0, 641, 0, - 114, 113, 0, 125, 130, 161, 160, 158, 162, 0, - 155, 157, 163, 135, 217, 159, 548, 0, 636, 638, - 0, 0, 164, 165, 546, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 555, 0, 0, 0, - 99, 0, 94, 0, 109, 0, 121, 115, 123, 0, - 124, 0, 97, 131, 102, 0, 156, 136, 0, 210, - 216, 1, 637, 0, 0, 0, 96, 0, 0, 0, - 648, 0, 706, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, - 644, 0, 0, 553, 151, 153, 0, 149, 208, 0, - 0, 100, 0, 0, 642, 110, 116, 120, 122, 118, - 126, 117, 0, 132, 105, 0, 103, 0, 0, 0, + 0, 169, 227, 225, 226, 224, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 228, 229, 230, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 365, 366, 367, 368, 369, 370, 371, 391, 392, 393, + 394, 395, 396, 397, 406, 419, 420, 407, 408, 410, + 409, 411, 412, 413, 414, 415, 416, 417, 418, 178, + 179, 254, 255, 253, 256, 257, 252, 258, 265, 266, + 263, 264, 261, 262, 259, 260, 297, 298, 299, 309, + 310, 311, 294, 295, 296, 306, 307, 308, 291, 292, + 293, 303, 304, 305, 288, 289, 290, 300, 301, 302, + 267, 268, 269, 312, 313, 314, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 324, 325, + 326, 282, 283, 284, 336, 337, 338, 285, 286, 287, + 348, 349, 350, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 363, + 360, 361, 362, 547, 548, 549, 550, 554, 557, 183, + 551, 552, 555, 375, 376, 399, 402, 364, 373, 374, + 390, 372, 421, 422, 425, 426, 427, 429, 430, 431, + 433, 434, 435, 437, 438, 534, 535, 398, 400, 401, + 377, 378, 379, 423, 380, 384, 385, 388, 428, 432, + 436, 381, 382, 386, 387, 424, 383, 389, 468, 470, + 471, 472, 474, 475, 476, 478, 479, 480, 482, 483, + 484, 486, 487, 488, 490, 491, 492, 494, 495, 496, + 498, 499, 500, 502, 503, 504, 506, 507, 508, 510, + 511, 469, 473, 477, 481, 485, 493, 497, 501, 489, + 505, 509, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 403, 404, 405, 439, 448, 450, + 444, 449, 451, 452, 454, 455, 456, 458, 459, 460, + 462, 463, 464, 466, 467, 440, 441, 442, 453, 443, + 445, 446, 447, 457, 461, 465, 539, 540, 543, 544, + 545, 546, 541, 542, 0, 0, 0, 0, 0, 0, + 0, 0, 167, 168, 536, 537, 538, 0, 650, 138, + 560, 561, 562, 0, 559, 173, 171, 172, 170, 0, + 223, 174, 176, 177, 175, 140, 139, 0, 205, 553, + 185, 187, 182, 189, 191, 186, 188, 184, 190, 192, + 180, 181, 208, 193, 200, 201, 202, 203, 204, 194, + 195, 196, 197, 198, 199, 141, 142, 144, 143, 145, + 147, 148, 146, 207, 155, 649, 0, 651, 0, 113, + 112, 0, 126, 131, 162, 161, 159, 163, 0, 156, + 158, 164, 136, 218, 160, 558, 0, 646, 648, 0, + 0, 165, 166, 556, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 565, 0, 0, 0, 99, + 0, 94, 0, 108, 0, 122, 114, 124, 0, 125, + 0, 97, 132, 102, 106, 0, 157, 137, 0, 211, + 217, 1, 647, 0, 0, 0, 96, 0, 0, 0, + 658, 0, 716, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 656, 0, + 654, 0, 0, 563, 152, 154, 0, 150, 209, 0, + 0, 100, 0, 0, 652, 109, 0, 115, 121, 123, + 118, 127, 117, 0, 133, 104, 0, 103, 0, 0, 9, 0, 43, 42, 44, 41, 5, 6, 7, 8, 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, - 18, 37, 20, 25, 26, 0, 0, 30, 0, 220, - 0, 36, 219, 0, 211, 111, 0, 95, 0, 0, - 704, 0, 656, 0, 0, 0, 0, 0, 673, 0, - 0, 0, 0, 0, 0, 0, 698, 0, 671, 0, - 0, 0, 0, 98, 0, 0, 0, 557, 0, 0, - 148, 0, 205, 0, 212, 45, 49, 52, 55, 60, + 18, 37, 20, 25, 26, 0, 0, 30, 0, 221, + 0, 36, 220, 0, 212, 110, 0, 95, 0, 0, + 714, 0, 666, 0, 0, 0, 0, 0, 683, 0, + 0, 0, 0, 0, 0, 0, 708, 0, 681, 0, + 0, 0, 0, 98, 0, 0, 0, 567, 0, 0, + 149, 0, 206, 0, 213, 45, 49, 52, 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, 34, 0, - 101, 584, 593, 597, 0, 0, 0, 618, 0, 0, + 101, 594, 603, 607, 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, - 78, 91, 0, 571, 0, 163, 135, 574, 595, 573, - 581, 572, 0, 575, 576, 599, 577, 606, 578, 579, - 614, 580, 0, 119, 0, 127, 0, 565, 134, 0, - 0, 107, 0, 104, 38, 39, 0, 22, 23, 0, - 0, 28, 27, 0, 222, 31, 33, 40, 0, 218, - 112, 708, 0, 709, 649, 0, 0, 707, 668, 664, - 665, 666, 667, 0, 662, 0, 93, 669, 0, 0, - 683, 684, 685, 686, 0, 681, 0, 690, 691, 692, - 693, 689, 0, 687, 0, 694, 0, 0, 0, 2, - 702, 217, 0, 700, 0, 0, 643, 645, 0, 563, - 0, 561, 556, 558, 0, 152, 150, 209, 0, 0, + 78, 91, 0, 581, 0, 164, 136, 584, 605, 583, + 591, 582, 0, 585, 586, 609, 587, 616, 588, 589, + 624, 590, 0, 0, 0, 119, 0, 128, 0, 575, + 135, 0, 0, 107, 38, 39, 0, 22, 23, 0, + 0, 28, 27, 0, 223, 31, 33, 40, 0, 219, + 111, 718, 0, 719, 659, 0, 0, 717, 678, 674, + 675, 676, 677, 0, 672, 0, 93, 679, 0, 0, + 693, 694, 695, 696, 0, 691, 0, 700, 701, 702, + 703, 699, 0, 697, 0, 704, 0, 0, 0, 2, + 712, 218, 0, 710, 0, 0, 653, 655, 0, 573, + 0, 571, 566, 568, 0, 153, 151, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 76, 213, 214, - 0, 583, 0, 616, 629, 628, 0, 620, 0, 632, - 630, 0, 0, 0, 613, 633, 634, 635, 582, 81, + 0, 0, 0, 0, 0, 0, 0, 76, 214, 215, + 0, 593, 0, 626, 639, 638, 0, 630, 0, 642, + 640, 0, 0, 0, 623, 643, 644, 645, 592, 81, 82, 84, 83, 86, 87, 88, 89, 90, 85, 80, - 0, 0, 598, 594, 596, 600, 607, 615, 129, 0, - 568, 569, 0, 133, 0, 108, 4, 0, 24, 21, - 32, 221, 652, 654, 0, 0, 705, 0, 658, 0, - 657, 0, 660, 0, 0, 675, 0, 674, 0, 677, - 0, 0, 679, 0, 0, 699, 0, 696, 0, 672, - 647, 0, 564, 0, 559, 554, 46, 47, 48, 51, - 50, 53, 54, 58, 59, 56, 57, 61, 62, 64, - 66, 68, 70, 72, 74, 0, 215, 585, 0, 0, - 0, 0, 631, 0, 612, 79, 92, 128, 566, 0, - 106, 19, 650, 0, 651, 0, 663, 0, 670, 0, - 682, 0, 688, 0, 695, 0, 0, 701, 560, 562, - 0, 0, 604, 0, 0, 0, 623, 622, 625, 591, - 608, 567, 570, 653, 655, 659, 661, 676, 678, 680, - 697, 0, 586, 0, 0, 0, 624, 0, 0, 603, - 0, 0, 601, 0, 77, 0, 588, 617, 587, 0, - 626, 0, 591, 590, 592, 610, 605, 0, 627, 621, - 602, 611, 0, 619, 609 + 0, 0, 608, 604, 606, 610, 617, 625, 116, 120, + 130, 0, 578, 579, 0, 134, 0, 4, 0, 24, + 21, 32, 222, 662, 664, 0, 0, 715, 0, 668, + 0, 667, 0, 670, 0, 0, 685, 0, 684, 0, + 687, 0, 0, 689, 0, 0, 709, 0, 706, 0, + 682, 657, 0, 574, 0, 569, 564, 46, 47, 48, + 51, 50, 53, 54, 58, 59, 56, 57, 61, 62, + 64, 66, 68, 70, 72, 74, 0, 216, 595, 0, + 0, 0, 0, 641, 0, 622, 79, 92, 129, 576, + 0, 105, 19, 660, 0, 661, 0, 673, 0, 680, + 0, 692, 0, 698, 0, 705, 0, 0, 711, 570, + 572, 0, 0, 614, 0, 0, 0, 633, 632, 635, + 601, 618, 577, 580, 663, 665, 669, 671, 686, 688, + 690, 707, 0, 596, 0, 0, 0, 634, 0, 0, + 613, 0, 0, 611, 0, 77, 0, 598, 627, 597, + 0, 636, 0, 601, 600, 602, 620, 615, 0, 637, + 631, 612, 621, 0, 629, 619 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -878, -557, -878, -878, -878, -878, -878, -878, -878, -878, - -878, -878, -431, -878, -403, -397, -489, -409, -275, -279, - -272, -276, -270, -277, -878, -494, -878, -497, -878, -517, - -548, 9, -878, -878, -878, 5, -399, -878, -878, 33, - 35, 34, -878, -878, -417, -878, -878, -878, -878, -105, - -878, -400, -381, -878, 12, -878, 0, -430, -878, -878, - -878, -570, 140, -878, -878, -878, -564, -567, -241, -355, - -643, -878, -380, -625, -877, -878, -441, -878, -878, -448, - -447, -878, -878, 51, -740, -374, -878, -155, -878, -410, - -878, -150, -878, -878, -878, -878, -143, -878, -878, -878, - -878, -878, -878, -878, -878, 82, -878, -878, 2, -878, - -82, -232, -385, -878, -878, -878, -315, -312, -323, -878, - -878, -309, -308, -326, -319, -322, -878, -306, -328, -878, - -398, -551 + -893, -569, -893, -893, -893, -893, -893, -893, -893, -893, + -893, -893, -438, -893, -526, -417, -516, -421, -287, -283, + -282, -284, -280, -278, -893, -503, -893, -509, -893, -504, + -550, 4, -893, -893, -893, 5, -413, -893, -893, 25, + 36, 38, -893, -893, -426, -893, -893, -893, -893, -119, + -893, -409, -387, -893, 9, -893, 0, -452, -893, -893, + -893, -566, 133, -893, -893, -893, -570, -573, -249, -367, + -653, -893, -390, -633, -892, -893, -447, -893, -893, -460, + -458, -893, -893, 45, -748, -383, -893, -162, -893, -420, + -893, -161, -893, -893, -893, -893, -157, -893, -893, -893, + -893, -893, -893, -893, -893, 80, -893, -893, 2, -893, + -89, -272, -449, -893, -893, -893, -325, -321, -331, -893, + -893, -323, -320, -319, -333, -318, -893, -335, -317, -893, + -406, -565 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 539, 540, 541, 807, 542, 543, 544, 545, 546, - 547, 548, 629, 550, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 630, 865, 631, 790, 632, - 720, 633, 397, 660, 517, 634, 399, 400, 401, 446, - 447, 448, 402, 403, 404, 405, 406, 407, 496, 497, - 408, 409, 410, 411, 551, 499, 608, 502, 459, 460, - 553, 414, 415, 416, 588, 492, 586, 587, 730, 731, - 658, 802, 637, 638, 639, 640, 641, 762, 901, 937, - 929, 930, 931, 938, 642, 643, 644, 645, 932, 904, - 646, 647, 933, 952, 648, 649, 650, 868, 766, 870, - 908, 927, 928, 651, 417, 418, 419, 443, 652, 489, - 490, 469, 470, 814, 815, 421, 693, 694, 698, 422, - 423, 704, 705, 712, 713, 716, 424, 722, 723, 425, - 471, 472 + 0, 549, 550, 551, 818, 552, 553, 554, 555, 556, + 557, 558, 639, 560, 606, 607, 608, 609, 610, 611, + 612, 613, 614, 615, 616, 640, 876, 641, 800, 642, + 730, 643, 406, 672, 465, 644, 408, 409, 410, 455, + 456, 457, 411, 412, 413, 414, 415, 416, 506, 507, + 417, 418, 419, 420, 561, 509, 618, 512, 469, 470, + 563, 423, 424, 425, 598, 502, 596, 597, 740, 741, + 670, 814, 647, 648, 649, 650, 651, 772, 912, 948, + 940, 941, 942, 949, 652, 653, 654, 655, 943, 915, + 656, 657, 944, 963, 658, 659, 660, 879, 776, 881, + 919, 938, 939, 661, 426, 427, 428, 452, 662, 499, + 500, 479, 480, 825, 826, 430, 703, 704, 708, 431, + 432, 714, 715, 722, 723, 726, 433, 732, 733, 434, + 481, 482 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1677,1404 +1692,104 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 413, 449, 420, 464, 666, 398, 607, 721, 464, 396, - 687, 798, 412, 801, 711, 657, 803, 794, 697, 733, - 465, 463, 867, 513, 734, 465, 687, 549, 456, 554, - 745, 746, 725, 436, 485, 440, 681, 812, 494, 682, - 688, 735, 756, 681, 434, 449, -703, 936, 500, 511, - 675, 500, -703, 500, 944, 581, 501, 426, 512, 582, - 654, 441, 495, 458, 936, 437, 747, 748, 456, 595, - 683, 813, 696, 689, 690, 691, 692, 683, 757, 653, - 655, 667, 668, 696, 456, 678, 696, 664, 665, 427, - 609, 451, 584, 609, 452, 696, 804, 679, 610, 560, - 659, -35, 609, 669, 771, 561, 773, 670, 514, 799, - 562, 515, 568, 882, 516, 760, 563, 883, 569, 677, - 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, - 576, 662, 442, 590, 663, 595, 577, 592, 672, 591, - 789, 869, 806, 593, 673, 816, 595, 818, 791, 595, - 428, 561, 808, 819, 820, 429, 877, 657, 595, 657, - 821, 685, 657, 822, 825, 827, 829, 733, 430, 823, - 826, 828, 830, 832, 684, 835, 810, 718, 595, 833, - 684, 836, 684, 749, 750, 684, 584, 684, 584, 684, - 684, 341, 342, 343, 684, 475, 477, 479, 481, 483, - 484, 487, 837, 456, 909, 951, 910, 915, 838, 916, - 791, 917, 791, 819, 918, 823, 919, 826, 920, 947, - 830, 741, 833, 742, 838, 791, 707, 708, 709, 710, - 530, 738, 739, 740, 884, 464, 912, 733, 885, 743, - 744, 431, 794, 700, 701, 702, 703, 811, 878, 432, - 879, 871, 465, 463, 433, 873, 853, 854, 855, 856, - 584, 473, 476, 438, 474, 474, 721, 478, 721, 480, - 474, 439, 474, 711, 711, 888, 697, 482, 486, 695, - 474, 474, 474, 699, 706, 687, 474, 474, 714, 791, - 874, 474, 946, 875, 876, 717, 444, 724, 474, 842, - 474, 791, 657, 843, 792, 445, 844, 846, 847, 848, - 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 794, 453, 791, 696, - 696, 872, 843, 458, 584, 898, 791, 921, 849, 850, - 857, 858, 696, 466, 696, 468, 851, 852, 900, 488, - 493, 902, 498, 503, 338, 509, 510, 500, 555, 556, - 557, 559, 558, 661, 686, 564, 565, 566, 567, 751, - 570, 729, 571, 572, 578, 573, 574, 575, 580, 579, - 671, 676, 657, -34, 609, 583, 589, 511, 682, 715, - 754, 902, 595, 595, 726, 755, 758, 761, 763, 764, - 753, 450, 767, 768, 584, 595, 752, 595, 939, 457, - 765, 769, 737, 412, 772, 775, 774, 413, -29, 420, - 413, 412, 398, 948, 934, 413, 396, 420, 776, 412, - 467, 777, 412, 778, -36, 491, 817, 412, 657, 824, - 831, 839, 805, 834, 840, 450, 505, 809, 866, 450, - 881, 903, 894, 791, 905, 913, 922, 412, 552, 914, - 923, 412, 924, 925, -589, 457, 935, 941, 465, 940, - 942, 611, 945, 860, 953, 954, 859, 412, 862, 864, - 506, 861, 507, 508, 435, 863, 736, 841, 899, 943, - 906, 903, 585, 949, 504, 950, 907, 795, 926, 462, - 727, 889, 796, 636, 412, 893, 887, 886, 465, 797, - 897, 892, 895, 0, 0, 635, 0, 0, 890, 891, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 680, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 728, 0, 585, 0, 585, 0, - 0, 0, 0, 0, 0, 0, 412, 0, 412, 0, - 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 413, 0, 635, 0, 0, 0, 0, 0, - 585, 0, 0, 0, 412, 0, 0, 0, 0, 0, - 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 585, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 636, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 0, 635, 0, 0, 0, 635, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 585, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 636, 636, 0, - 636, 0, 420, 0, 0, 0, 0, 0, 0, 635, - 635, 0, 635, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 635, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 636, 0, 0, 0, 0, 635, 0, 0, 0, - 0, 636, 0, 635, 0, 636, 0, 0, 0, 0, - 0, 636, 0, 635, 0, 0, 0, 635, 0, 0, - 0, 461, 0, 635, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 338, 0, 0, 0, 0, - 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 340, 341, 342, - 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 351, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 0, 0, 0, 0, 0, 0, 0, 359, 0, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 0, 0, 518, 519, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 520, 521, 0, 338, 0, 611, 612, - 0, 0, 0, 0, 613, 522, 523, 524, 525, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 340, 341, - 342, 343, 344, 0, 0, 0, 526, 527, 528, 529, - 530, 345, 346, 347, 348, 349, 350, 351, 614, 615, - 616, 617, 0, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 352, 353, 354, 355, 356, 357, 358, - 531, 532, 533, 534, 535, 536, 537, 538, 359, 628, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 0, 0, 518, 519, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 520, 521, 0, 338, 0, 611, - 793, 0, 0, 0, 0, 613, 522, 523, 524, 525, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 340, - 341, 342, 343, 344, 0, 0, 0, 526, 527, 528, - 529, 530, 345, 346, 347, 348, 349, 350, 351, 614, - 615, 616, 617, 0, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627, 352, 353, 354, 355, 356, 357, - 358, 531, 532, 533, 534, 535, 536, 537, 538, 359, - 628, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 0, 0, 518, 519, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 520, 521, 0, 338, 0, - 611, 0, 0, 0, 0, 0, 613, 522, 523, 524, - 525, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 340, 341, 342, 343, 344, 0, 0, 0, 526, 527, - 528, 529, 530, 345, 346, 347, 348, 349, 350, 351, - 614, 615, 616, 617, 0, 618, 619, 620, 621, 622, - 623, 624, 625, 626, 627, 352, 353, 354, 355, 356, - 357, 358, 531, 532, 533, 534, 535, 536, 537, 538, - 359, 628, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 0, 0, 518, 519, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 520, 521, 0, 338, - 0, 503, 0, 0, 0, 0, 0, 613, 522, 523, - 524, 525, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 340, 341, 342, 343, 344, 0, 0, 0, 526, - 527, 528, 529, 530, 345, 346, 347, 348, 349, 350, - 351, 614, 615, 616, 617, 0, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 352, 353, 354, 355, - 356, 357, 358, 531, 532, 533, 534, 535, 536, 537, - 538, 359, 628, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 0, 0, 518, 519, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 520, 521, 0, - 338, 0, 0, 0, 0, 0, 0, 0, 613, 522, - 523, 524, 525, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 340, 341, 342, 343, 344, 0, 0, 0, - 526, 527, 528, 529, 530, 345, 346, 347, 348, 349, - 350, 351, 614, 615, 616, 617, 0, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 352, 353, 354, - 355, 356, 357, 358, 531, 532, 533, 534, 535, 536, - 537, 538, 359, 628, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 0, 0, 518, - 519, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 520, 521, - 0, 338, 0, 0, 0, 0, 0, 0, 0, 613, - 522, 523, 524, 525, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 340, 341, 342, 343, 344, 0, 0, - 0, 526, 527, 528, 529, 530, 345, 346, 347, 348, - 349, 350, 351, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 353, - 354, 355, 356, 357, 358, 531, 532, 533, 534, 535, - 536, 537, 538, 359, 0, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 0, 0, 0, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 0, 0, - 518, 519, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, - 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 522, 523, 524, 525, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 340, 341, 342, 343, 0, 0, - 0, 0, 526, 527, 528, 529, 530, 345, 346, 347, - 348, 349, 350, 351, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, - 353, 354, 355, 356, 357, 358, 531, 532, 533, 534, - 535, 536, 537, 538, 359, 0, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 338, 0, 0, 0, 0, 0, 0, - 0, 339, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 340, 341, 342, 343, 344, - 0, 0, 0, 0, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 351, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 352, 353, 354, 355, 356, 357, 358, 0, 0, 0, - 0, 0, 0, 0, 0, 359, 0, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 340, 341, 342, 343, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 345, - 346, 347, 348, 349, 350, 351, 614, 0, 0, 617, - 0, 618, 619, 0, 0, 622, 0, 0, 0, 0, - 0, 352, 353, 354, 355, 356, 357, 358, 0, 0, - 0, 0, 0, 0, 0, 0, 359, 0, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, - 0, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 454, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 340, 341, 342, - 343, 0, 0, 0, 0, 0, 0, 0, 0, 455, - 345, 346, 347, 348, 349, 350, 351, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 353, 354, 355, 356, 357, 358, 0, - 0, 0, 0, 0, 0, 0, 0, 359, 0, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 0, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 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, 340, 341, - 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 345, 346, 347, 348, 349, 350, 351, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 352, 353, 354, 355, 356, 357, 358, - 0, 0, 0, 0, 0, 0, 0, 0, 359, 0, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 0, 0, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 340, - 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 351, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 352, 353, 354, 355, 356, 357, - 358, 0, 0, 0, 0, 0, 0, 0, 0, 359, - 0, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 0, 0, 0, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 845, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 345, 346, 347, 348, 349, 350, 351, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 352, 353, 354, 355, 356, - 357, 358, 0, 0, 0, 0, 0, 0, 0, 0, - 359, 0, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 0, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 340, 341, 342, 343, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 353, 354, 355, - 356, 357, 358, 0, 0, 0, 0, 0, 0, 0, - 0, 359, 0, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 0, 0, 0, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 340, 341, 342, 343, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 346, 347, 348, 349, - 350, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 352, 353, 354, - 355, 356, 357, 358, 0, 0, 0, 0, 0, 0, - 0, 0, 359, 0, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 0, 0, 0, 0, 0, 0, 331, - 0, 0, 0, 335, 336, 337, 0, 0, 518, 519, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 520, 521, 0, - 0, 0, 656, 800, 0, 0, 0, 0, 0, 522, - 523, 524, 525, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 526, 527, 528, 529, 530, 345, 0, 0, 0, 0, - 350, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 531, 532, 533, 534, 535, 536, - 537, 538, 0, 0, 360, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 373, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 0, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 0, 0, 0, 0, 0, 0, 331, 0, 0, - 0, 335, 336, 337, 0, 0, 518, 519, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 520, 521, 0, 0, 0, - 656, 911, 0, 0, 0, 0, 0, 522, 523, 524, - 525, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 526, 527, - 528, 529, 530, 345, 0, 0, 0, 0, 350, 351, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 531, 532, 533, 534, 535, 536, 537, 538, - 0, 0, 360, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 373, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 0, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 0, 0, 0, 0, 331, 0, 0, 0, 335, - 336, 337, 0, 0, 518, 519, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 520, 521, 0, 0, 594, 0, 0, - 0, 0, 0, 0, 0, 522, 523, 524, 525, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 526, 527, 528, 529, - 530, 345, 0, 0, 0, 0, 350, 351, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 531, 532, 533, 534, 535, 536, 537, 538, 0, 0, - 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 373, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 0, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, - 0, 0, 0, 331, 0, 0, 0, 335, 336, 337, - 0, 0, 518, 519, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 520, 521, 0, 0, 0, 656, 0, 0, 0, - 0, 0, 0, 522, 523, 524, 525, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 526, 527, 528, 529, 530, 345, - 0, 0, 0, 0, 350, 351, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 531, 532, - 533, 534, 535, 536, 537, 538, 0, 0, 360, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 373, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 0, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, - 0, 331, 0, 0, 0, 335, 336, 337, 0, 0, - 518, 519, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, - 521, 0, 0, 759, 0, 0, 0, 0, 0, 0, - 0, 522, 523, 524, 525, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 526, 527, 528, 529, 530, 345, 0, 0, - 0, 0, 350, 351, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 531, 532, 533, 534, - 535, 536, 537, 538, 0, 0, 360, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 373, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 0, 0, 0, 0, 0, 0, 331, - 0, 0, 0, 335, 336, 337, 0, 0, 518, 519, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 520, 521, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 770, 522, - 523, 524, 525, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 526, 527, 528, 529, 530, 345, 0, 0, 0, 0, - 350, 351, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 531, 532, 533, 534, 535, 536, - 537, 538, 0, 0, 360, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 373, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 0, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 0, 0, 0, 0, 0, 0, 331, 0, 0, - 0, 335, 336, 337, 0, 0, 518, 519, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 520, 521, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 522, 523, 524, - 525, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 526, 527, - 528, 529, 530, 345, 0, 0, 0, 0, 350, 351, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 531, 532, 533, 534, 535, 536, 537, 538, - 0, 0, 360, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 373, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 0, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 0, 0, 0, 0, 331, 0, 0, 0, 335, - 336, 337, 0, 0, 518, 519, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 520, 521, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 522, 523, 524, 525, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 526, 527, 528, 529, - 530, 345, 0, 0, 0, 0, 350, 674, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 531, 532, 533, 534, 535, 536, 537, 538, 0, 0, - 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 373, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 0, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, - 0, 0, 0, 331, 0, 0, 0, 335, 336, 337, - 0, 0, 518, 519, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 520, 521, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 522, 523, 524, 525, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 526, 527, 528, 529, 719, 345, - 0, 0, 0, 0, 350, 351, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 531, 532, - 533, 534, 535, 536, 537, 538, 0, 0, 360, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 373, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 0, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, - 0, 331, 0, 0, 0, 335, 336, 337, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 345, 0, 0, - 0, 0, 350, 351, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 360 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 401, 0, 420, 521, 0, 500, 577, 425, 0, - 561, 654, 0, 656, 571, 512, 659, 642, 566, 586, - 420, 420, 762, 453, 588, 425, 577, 458, 409, 459, - 344, 345, 580, 366, 432, 372, 361, 361, 398, 364, - 361, 589, 349, 361, 364, 445, 363, 924, 364, 362, - 547, 364, 369, 364, 931, 365, 372, 362, 371, 369, - 371, 398, 422, 380, 941, 398, 380, 381, 449, 500, - 395, 395, 566, 394, 395, 396, 397, 395, 385, 509, - 510, 342, 343, 577, 465, 369, 580, 518, 519, 362, - 364, 369, 492, 364, 372, 589, 660, 381, 372, 363, - 371, 362, 364, 364, 621, 369, 623, 368, 366, 371, - 363, 369, 363, 365, 372, 609, 369, 369, 369, 550, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 363, 369, 372, 363, 372, 566, 369, 363, 363, 369, - 371, 766, 363, 369, 369, 363, 577, 363, 369, 580, - 362, 369, 669, 369, 363, 362, 799, 654, 589, 656, - 369, 559, 659, 363, 363, 363, 363, 734, 362, 369, - 369, 369, 369, 363, 559, 363, 673, 575, 609, 369, - 565, 369, 567, 346, 347, 570, 586, 572, 588, 574, - 575, 387, 388, 389, 579, 427, 428, 429, 430, 431, - 432, 433, 363, 584, 363, 945, 363, 363, 369, 363, - 369, 363, 369, 369, 363, 369, 363, 369, 363, 363, - 369, 374, 369, 376, 369, 369, 394, 395, 396, 397, - 398, 377, 378, 379, 365, 652, 879, 804, 369, 340, - 341, 362, 867, 394, 395, 396, 397, 678, 367, 362, - 369, 768, 652, 652, 362, 772, 745, 746, 747, 748, - 660, 395, 395, 362, 398, 398, 836, 395, 838, 395, - 398, 362, 398, 830, 831, 823, 824, 395, 395, 395, - 398, 398, 398, 395, 395, 836, 398, 398, 395, 369, - 370, 398, 935, 790, 791, 395, 363, 395, 398, 729, - 398, 369, 799, 369, 372, 369, 372, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 951, 398, 369, 823, - 824, 372, 369, 380, 734, 372, 369, 370, 741, 742, - 749, 750, 836, 372, 838, 398, 743, 744, 865, 398, - 366, 868, 398, 366, 364, 398, 398, 364, 363, 398, - 372, 369, 371, 398, 398, 371, 369, 369, 369, 384, - 369, 398, 369, 369, 363, 369, 369, 369, 362, 369, - 363, 362, 879, 362, 364, 372, 371, 362, 364, 361, - 348, 908, 823, 824, 365, 350, 365, 367, 362, 372, - 382, 401, 362, 362, 804, 836, 383, 838, 925, 409, - 372, 372, 398, 401, 362, 372, 370, 417, 363, 417, - 420, 409, 417, 940, 921, 425, 417, 425, 372, 417, - 425, 372, 420, 372, 362, 435, 371, 425, 935, 369, - 369, 363, 398, 369, 363, 445, 444, 398, 365, 449, - 365, 868, 361, 369, 406, 361, 367, 445, 458, 395, - 398, 449, 363, 362, 366, 465, 371, 363, 868, 372, - 410, 366, 366, 752, 372, 367, 751, 465, 754, 756, - 445, 753, 449, 449, 344, 755, 591, 728, 843, 930, - 870, 908, 492, 941, 443, 942, 870, 652, 908, 417, - 582, 824, 652, 503, 492, 831, 821, 819, 908, 652, - 838, 830, 834, -1, -1, 503, -1, -1, 826, 828, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 836, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 555, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 584, -1, 586, -1, 588, -1, - -1, -1, -1, -1, -1, -1, 584, -1, 586, -1, - 588, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 642, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 652, -1, 642, -1, -1, -1, -1, -1, - 660, -1, -1, -1, 652, -1, -1, -1, -1, -1, - -1, -1, 660, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 734, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 734, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 762, -1, -1, -1, 766, -1, -1, -1, - -1, -1, -1, -1, 762, -1, -1, -1, 766, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 804, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 804, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 867, 868, -1, - 870, -1, 870, -1, -1, -1, -1, -1, -1, 867, - 868, -1, 870, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 908, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 908, -1, -1, -1, 924, -1, -1, -1, -1, -1, - -1, 931, -1, -1, -1, -1, 924, -1, -1, -1, - -1, 941, -1, 931, -1, 945, -1, -1, -1, -1, - -1, 951, -1, 941, -1, -1, -1, 945, -1, -1, - -1, 0, -1, 951, 3, 4, 5, 6, 7, 8, + 422, 458, 429, 474, 405, 407, 697, 617, 474, 421, + 524, 809, 721, 810, 669, 813, 473, 564, 815, 804, + 475, 731, 697, 743, 878, 475, 707, 676, 744, 698, + 559, 466, 823, 691, 766, 495, 692, 504, 755, 756, + 735, 435, 691, 947, 688, 458, 445, 510, 685, 745, + 955, 619, 753, 754, 449, 511, 689, 677, 678, 620, + 947, 505, 699, 700, 701, 702, 824, 693, 665, 667, + 767, 466, 605, 706, 757, 758, 693, -35, 446, 679, + 450, 591, 510, 680, 706, 592, 436, 706, 466, 664, + 674, 675, 522, 594, 510, 437, 706, 710, 711, 712, + 713, 523, 816, 789, 790, 791, 792, 793, 794, 795, + 796, 797, 798, -713, 801, 885, 770, 510, 619, -713, + 694, 438, 687, 799, 666, 671, 694, 781, 694, 783, + 468, 694, 619, 694, 460, 694, 694, 461, 605, 811, + 694, 570, 572, 880, 578, 586, 439, 571, 573, 605, + 579, 587, 605, 483, 600, 669, 484, 669, 888, 669, + 601, 605, 669, 695, 485, 487, 489, 491, 493, 494, + 497, 743, 602, 440, 821, 819, 682, 817, 603, 728, + 827, 605, 683, 801, 829, 831, 571, 594, 833, 594, + 830, 832, 836, 838, 834, 840, 843, 846, 837, 839, + 848, 841, 844, 847, 920, 921, 849, 466, 962, 926, + 801, 801, 927, 928, 929, 830, 930, 931, 834, 837, + 841, 958, 844, 849, 893, 860, 861, 801, 894, 717, + 718, 719, 720, 540, 895, 454, 474, 923, 896, 864, + 865, 866, 867, 743, 526, 804, 889, 527, 890, 473, + 822, 486, 488, 475, 484, 484, 490, 492, 496, 484, + 484, 484, 705, 594, 441, 484, 709, 716, 724, 484, + 484, 484, 721, 721, 882, 442, 727, 734, 884, 484, + 484, 731, 697, 731, 899, 707, 801, 853, 751, 802, + 752, 886, 887, 957, 854, 801, 854, 855, 883, 909, + 759, 760, 669, 350, 351, 352, 748, 749, 750, 443, + 857, 858, 859, 605, 605, 605, 605, 605, 605, 605, + 605, 605, 605, 605, 605, 605, 605, 605, 605, 804, + 447, 706, 706, 801, 932, 594, 862, 863, 868, 869, + 448, 451, 453, 468, 706, 462, 706, 476, 478, 498, + 503, 508, 513, 347, 520, 521, 525, 510, 565, 566, + 567, 569, 568, 673, 663, 574, 575, 576, 577, 580, + 581, 582, 911, 583, 584, 913, 585, 589, 588, 590, + 619, 669, 593, 599, 681, 686, -34, 522, 725, 764, + 692, 916, 765, 736, 768, 773, 605, 605, 771, 777, + 778, 696, 782, 762, 739, 784, 761, 594, 774, 605, + 459, 605, 763, -36, 808, 913, 775, 747, 467, 421, + 779, 785, 786, 945, 787, 788, 422, 421, 429, 422, + 405, 407, 950, -29, 422, 421, 429, 669, 421, 477, + 828, 820, 835, 421, 501, 842, 845, 959, 850, 851, + 801, 905, 877, 914, 459, 515, 892, 924, 459, 925, + 933, 934, 935, 421, 936, 946, -599, 421, 562, 951, + 475, 952, 953, 621, 870, 467, 956, 964, 965, 871, + 873, 872, 746, 518, 421, 874, 444, 910, 875, 852, + 517, 917, 960, 914, 954, 961, 519, 514, 918, 937, + 805, 806, 595, 737, 900, 807, 472, 898, 903, 897, + 475, 421, 907, 646, 0, 0, 902, 901, 0, 0, + 0, 0, 645, 904, 0, 0, 0, 906, 0, 0, + 0, 0, 908, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 690, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 738, 0, 595, 0, 595, 0, + 0, 0, 0, 421, 0, 421, 0, 421, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 645, 422, 0, 0, 0, 0, 0, 0, 0, + 0, 421, 595, 0, 0, 0, 0, 0, 0, 0, + 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 595, 0, 0, 0, 0, 0, + 0, 0, 0, 421, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 646, 0, 0, 0, 646, 0, 0, 0, + 0, 645, 0, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 595, 0, 0, 0, + 0, 0, 0, 0, 0, 421, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 646, 646, + 0, 646, 0, 429, 0, 0, 0, 645, 645, 0, + 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, + 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, + 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 646, 0, 645, 0, 0, 0, 0, 0, + 0, 645, 646, 0, 0, 0, 646, 0, 0, 0, + 0, 645, 646, 0, 0, 645, 0, 0, 0, 471, + 0, 645, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, @@ -3108,261 +1823,840 @@ static const yytype_int16 yycheck[] = 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 364, -1, -1, -1, -1, - -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, - 389, 390, -1, -1, -1, -1, -1, -1, -1, -1, - 399, 400, 401, 402, 403, 404, 405, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 421, 422, 423, 424, 425, 426, 427, -1, - -1, -1, -1, -1, -1, -1, -1, 436, -1, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, -1, -1, 342, 343, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 361, 362, -1, 364, -1, 366, 367, - -1, -1, -1, -1, 372, 373, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 390, -1, -1, -1, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, -1, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, -1, -1, 342, 343, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 361, 362, -1, 364, -1, 366, - 367, -1, -1, -1, -1, 372, 373, 374, 375, 376, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, - 387, 388, 389, 390, -1, -1, -1, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, -1, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, -1, -1, 342, 343, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 361, 362, -1, 364, -1, - 366, -1, -1, -1, -1, -1, 372, 373, 374, 375, - 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 386, 387, 388, 389, 390, -1, -1, -1, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, -1, -1, 342, 343, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 361, 362, -1, 364, - -1, 366, -1, -1, -1, -1, -1, 372, 373, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, 390, -1, -1, -1, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, -1, -1, 342, 343, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 361, 362, -1, - 364, -1, -1, -1, -1, -1, -1, -1, 372, 373, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 386, 387, 388, 389, 390, -1, -1, -1, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 531, 0, 347, 0, 621, 622, 0, 0, 0, 0, + 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, + 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, + 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, + 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, + 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, + 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 531, 0, 347, 0, 621, 803, 0, 0, 0, 0, + 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, + 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, + 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, + 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, + 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, + 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 531, 0, 347, 0, 621, 0, 0, 0, 0, 0, + 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, + 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, + 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, + 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, + 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, + 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 531, 0, 347, 0, 513, 0, 0, 0, 0, 0, + 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, + 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, + 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, + 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, + 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, + 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 531, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, + 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, + 357, 358, 359, 360, 624, 625, 626, 627, 0, 628, + 629, 630, 631, 632, 633, 634, 635, 636, 637, 361, + 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, + 545, 546, 547, 548, 368, 638, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 531, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 623, 532, 533, 534, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, + 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, + 545, 546, 547, 548, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 536, 537, 538, 539, 540, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 541, 542, 543, 544, + 545, 546, 547, 548, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 624, 0, 0, 627, 0, 628, + 629, 0, 0, 632, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 0, 0, 0, 0, 464, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 516, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 742, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 891, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 349, 350, 351, 352, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 354, 355, 356, + 357, 358, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 361, + 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 0, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, + 340, 0, 0, 0, 344, 345, 346, 0, 0, 528, + 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 530, 531, + 0, 0, 0, 668, 812, 0, 0, 0, 0, 0, + 532, 533, 534, 535, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 536, 537, 538, 539, 540, 354, 0, 0, 0, + 0, 359, 360, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 541, 542, 543, 544, 545, + 546, 547, 548, 0, 0, 369, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, @@ -3374,7 +2668,7 @@ static const yytype_int16 yycheck[] = 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 173, 174, 175, 176, 177, 178, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, @@ -3390,26 +2684,116 @@ static const yytype_int16 yycheck[] = 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, -1, -1, 342, - 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 361, 362, - -1, 364, -1, -1, -1, -1, -1, -1, -1, 372, - 373, 374, 375, 376, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 390, -1, -1, - -1, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, -1, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 333, 0, 0, 0, 0, 0, 0, 340, 0, 0, + 0, 344, 345, 346, 0, 0, 528, 529, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 530, 531, 0, 0, 0, + 668, 922, 0, 0, 0, 0, 0, 532, 533, 534, + 535, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 536, 537, + 538, 539, 540, 354, 0, 0, 0, 0, 359, 360, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 541, 542, 543, 544, 545, 546, 547, 548, + 0, 0, 369, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 382, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 0, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 0, 0, + 0, 0, 0, 0, 340, 0, 0, 0, 344, 345, + 346, 0, 0, 528, 529, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 530, 531, 0, 0, 604, 0, 0, 0, + 0, 0, 0, 0, 532, 533, 534, 535, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 536, 537, 538, 539, 540, + 354, 0, 0, 0, 0, 359, 360, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 541, + 542, 543, 544, 545, 546, 547, 548, 0, 0, 369, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 382, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, + 0, 340, 0, 0, 0, 344, 345, 346, 0, 0, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 531, 0, 0, 0, 668, 0, 0, 0, 0, 0, + 0, 532, 533, 534, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 536, 537, 538, 539, 540, 354, 0, 0, + 0, 0, 359, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 541, 542, 543, 544, + 545, 546, 547, 548, 0, 0, 369, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, @@ -3421,7 +2805,7 @@ static const yytype_int16 yycheck[] = 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 172, 173, 174, 175, 176, 177, 178, 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, @@ -3436,22 +2820,349 @@ static const yytype_int16 yycheck[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, -1, -1, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, -1, -1, - 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 361, - 362, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 373, 374, 375, 376, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 386, 387, 388, 389, -1, -1, - -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, -1, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 3, 4, 5, 6, 7, 8, 9, 10, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 0, 0, 0, 0, 0, 0, 340, 0, + 0, 0, 344, 345, 346, 0, 0, 528, 529, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 530, 531, 0, 0, + 769, 0, 0, 0, 0, 0, 0, 0, 532, 533, + 534, 535, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, + 537, 538, 539, 540, 354, 0, 0, 0, 0, 359, + 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 541, 542, 543, 544, 545, 546, 547, + 548, 0, 0, 369, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 382, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, + 0, 0, 0, 0, 0, 340, 0, 0, 0, 344, + 345, 346, 0, 0, 528, 529, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 530, 531, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 780, 532, 533, 534, 535, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 536, 537, 538, 539, + 540, 354, 0, 0, 0, 0, 359, 360, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 541, 542, 543, 544, 545, 546, 547, 548, 0, 0, + 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 382, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 0, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, + 0, 0, 340, 0, 0, 0, 344, 345, 346, 0, + 0, 528, 529, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 532, 533, 534, 535, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 536, 537, 538, 539, 540, 354, 0, + 0, 0, 0, 359, 360, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 541, 542, 543, + 544, 545, 546, 547, 548, 0, 0, 369, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 382, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 0, 0, 0, 0, 0, 0, 340, + 0, 0, 0, 344, 345, 346, 0, 0, 528, 529, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 530, 531, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 532, + 533, 534, 535, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 536, 537, 538, 539, 540, 354, 0, 0, 0, 0, + 359, 684, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 541, 542, 543, 544, 545, 546, + 547, 548, 0, 0, 369, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 382, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 0, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, + 344, 345, 346, 0, 0, 528, 529, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 530, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 532, 533, 534, 535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 536, 537, 538, + 539, 729, 354, 0, 0, 0, 0, 359, 360, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 541, 542, 543, 544, 545, 546, 547, 548, 0, + 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 382, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 0, 0, 0, + 0, 0, 0, 340, 0, 0, 0, 344, 345, 346, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, + 0, 0, 0, 0, 359, 360, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 369 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 410, 0, 429, 0, 0, 571, 510, 434, 0, + 462, 664, 581, 666, 523, 668, 429, 469, 671, 652, + 429, 587, 587, 596, 772, 434, 576, 531, 598, 370, + 468, 418, 370, 370, 358, 441, 373, 407, 353, 354, + 590, 371, 370, 935, 378, 454, 375, 373, 557, 599, + 942, 373, 349, 350, 381, 381, 390, 351, 352, 381, + 952, 431, 403, 404, 405, 406, 404, 404, 520, 521, + 394, 458, 510, 576, 389, 390, 404, 371, 407, 373, + 407, 374, 373, 377, 587, 378, 371, 590, 475, 380, + 528, 529, 371, 502, 373, 371, 599, 403, 404, 405, + 406, 380, 672, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 372, 378, 379, 619, 373, 373, 378, + 569, 371, 560, 380, 380, 380, 575, 631, 577, 633, + 389, 580, 373, 582, 378, 584, 585, 381, 576, 380, + 589, 372, 372, 776, 372, 372, 371, 378, 378, 587, + 378, 378, 590, 404, 372, 664, 407, 666, 811, 668, + 378, 599, 671, 569, 436, 437, 438, 439, 440, 441, + 442, 744, 372, 371, 683, 679, 372, 372, 378, 585, + 372, 619, 378, 378, 372, 372, 378, 596, 372, 598, + 378, 378, 372, 372, 378, 372, 372, 372, 378, 378, + 372, 378, 378, 378, 372, 372, 378, 594, 956, 372, + 378, 378, 372, 372, 372, 378, 372, 372, 378, 378, + 378, 372, 378, 378, 374, 751, 752, 378, 378, 403, + 404, 405, 406, 407, 374, 378, 662, 890, 378, 755, + 756, 757, 758, 816, 378, 878, 376, 381, 378, 662, + 688, 404, 404, 662, 407, 407, 404, 404, 404, 407, + 407, 407, 404, 672, 371, 407, 404, 404, 404, 407, + 407, 407, 841, 842, 778, 371, 404, 404, 782, 407, + 407, 847, 847, 849, 834, 835, 378, 739, 383, 381, + 385, 800, 801, 946, 378, 378, 378, 381, 381, 381, + 355, 356, 811, 396, 397, 398, 386, 387, 388, 373, + 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, + 758, 759, 760, 761, 762, 763, 764, 765, 766, 962, + 371, 834, 835, 378, 379, 744, 753, 754, 759, 760, + 371, 381, 372, 389, 847, 407, 849, 381, 407, 407, + 375, 407, 375, 373, 407, 407, 375, 373, 372, 407, + 381, 378, 380, 407, 377, 380, 378, 378, 378, 378, + 378, 378, 876, 378, 378, 879, 378, 378, 372, 371, + 373, 890, 381, 380, 372, 371, 371, 371, 370, 357, + 373, 415, 359, 374, 374, 371, 834, 835, 376, 371, + 371, 407, 371, 392, 407, 379, 393, 816, 381, 847, + 410, 849, 391, 371, 377, 919, 381, 407, 418, 410, + 381, 381, 381, 932, 381, 381, 426, 418, 426, 429, + 426, 426, 936, 372, 434, 426, 434, 946, 429, 434, + 380, 407, 378, 434, 444, 378, 378, 951, 372, 372, + 378, 370, 374, 879, 454, 453, 374, 370, 458, 404, + 376, 407, 372, 454, 371, 380, 375, 458, 468, 381, + 879, 372, 419, 375, 761, 475, 375, 381, 376, 762, + 764, 763, 601, 458, 475, 765, 353, 854, 766, 738, + 454, 881, 952, 919, 941, 953, 458, 452, 881, 919, + 662, 662, 502, 592, 835, 662, 426, 832, 841, 830, + 919, 502, 847, 513, -1, -1, 839, 837, -1, -1, + -1, -1, 513, 842, -1, -1, -1, 845, -1, -1, + -1, -1, 849, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 565, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 594, -1, 596, -1, 598, -1, + -1, -1, -1, 594, -1, 596, -1, 598, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 652, -1, -1, -1, -1, -1, -1, -1, + -1, 652, 662, -1, -1, -1, -1, -1, -1, -1, + -1, 662, 672, -1, -1, -1, -1, -1, -1, -1, + -1, 672, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 744, -1, -1, -1, -1, -1, + -1, -1, -1, 744, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 772, -1, -1, -1, 776, -1, -1, -1, + -1, 772, -1, -1, -1, 776, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 816, -1, -1, -1, + -1, -1, -1, -1, -1, 816, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 878, 879, + -1, 881, -1, 881, -1, -1, -1, 878, 879, -1, + 881, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 919, + -1, -1, -1, -1, -1, -1, -1, -1, 919, -1, + -1, -1, -1, -1, -1, 935, -1, -1, -1, -1, + -1, -1, 942, -1, 935, -1, -1, -1, -1, -1, + -1, 942, 952, -1, -1, -1, 956, -1, -1, -1, + -1, 952, 962, -1, -1, 956, -1, -1, -1, 0, + -1, 962, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, @@ -3484,262 +3195,841 @@ static const yytype_int16 yycheck[] = 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, -1, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 364, -1, -1, -1, -1, -1, -1, - -1, 372, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, - -1, -1, -1, -1, -1, -1, -1, -1, 399, 400, - 401, 402, 403, 404, 405, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 421, 422, 423, 424, 425, 426, 427, -1, -1, -1, - -1, -1, -1, -1, -1, 436, -1, 438, 439, 440, + -1, -1, 373, -1, -1, -1, -1, -1, -1, -1, + 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, + 371, -1, 373, -1, 375, 376, -1, -1, -1, -1, + 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, + -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, + 371, -1, 373, -1, 375, 376, -1, -1, -1, -1, + 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, + -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, + 371, -1, 373, -1, 375, -1, -1, -1, -1, -1, + 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, + -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, + 371, -1, 373, -1, 375, -1, -1, -1, -1, -1, + 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, + -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, + 371, -1, 373, -1, -1, -1, -1, -1, -1, -1, + 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, + -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, -1, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, + 371, -1, 373, -1, -1, -1, -1, -1, -1, -1, + 381, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, + -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, + 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 373, -1, -1, -1, -1, -1, -1, -1, + 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 399, - 400, 401, 402, 403, 404, 405, 406, -1, -1, 409, - -1, 411, 412, -1, -1, 415, -1, -1, -1, -1, - -1, 421, 422, 423, 424, 425, 426, 427, -1, -1, - -1, -1, -1, -1, -1, -1, 436, -1, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, - -1, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, 415, -1, -1, 418, -1, 420, + 421, -1, -1, 424, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, - 389, -1, -1, -1, -1, -1, -1, -1, -1, 398, - 399, 400, 401, 402, 403, 404, 405, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 421, 422, 423, 424, 425, 426, 427, -1, - -1, -1, -1, -1, -1, -1, -1, 436, -1, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - -1, -1, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 364, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 399, 400, 401, 402, 403, 404, 405, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 421, 422, 423, 424, 425, 426, 427, - -1, -1, -1, -1, -1, -1, -1, -1, 436, -1, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, -1, -1, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, -1, -1, -1, -1, -1, -1, -1, + 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, -1, -1, -1, -1, 407, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 367, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, - 387, 388, 389, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 399, 400, 401, 402, 403, 404, 405, -1, + -1, -1, 373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, - 427, -1, -1, -1, -1, -1, -1, -1, -1, 436, - -1, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, -1, -1, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 367, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 386, 387, 388, 389, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 399, 400, 401, 402, 403, 404, 405, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 421, 422, 423, 424, 425, - 426, 427, -1, -1, -1, -1, -1, -1, -1, -1, - 436, -1, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 3, 4, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 376, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 376, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 376, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 432, 433, 434, 435, 436, -1, -1, -1, -1, + -1, -1, -1, -1, 445, -1, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, -1, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, -1, -1, -1, -1, -1, -1, + 342, -1, -1, -1, 346, 347, 348, -1, -1, 351, + 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, + -1, -1, -1, 375, 376, -1, -1, -1, -1, -1, + 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 403, 404, 405, 406, 407, 408, -1, -1, -1, + -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 437, 438, 439, 440, 441, + 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -3751,7 +4041,7 @@ static const yytype_int16 yycheck[] = 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, @@ -3766,27 +4056,117 @@ 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, -1, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, -1, -1, -1, -1, -1, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, -1, -1, -1, -1, -1, -1, 342, -1, -1, + -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 370, 371, -1, -1, -1, + 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, + 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 403, 404, + 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 367, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 437, 438, 439, 440, 441, 442, 443, 444, + -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, -1, -1, + -1, -1, -1, -1, 342, -1, -1, -1, 346, 347, + 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 399, 400, 401, 402, 403, 404, - 405, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 421, 422, 423, 424, - 425, 426, 427, -1, -1, -1, -1, -1, -1, -1, - -1, 436, -1, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 3, + -1, -1, 370, 371, -1, -1, 374, -1, -1, -1, + -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 403, 404, 405, 406, 407, + 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 437, + 438, 439, 440, 441, 442, 443, 444, -1, -1, 447, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, -1, -1, -1, -1, + -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, + 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 370, + 371, -1, -1, -1, 375, -1, -1, -1, -1, -1, + -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 403, 404, 405, 406, 407, 408, -1, -1, + -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 437, 438, 439, 440, + 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, @@ -3798,7 +4178,7 @@ static const yytype_int16 yycheck[] = 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 174, 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, @@ -3813,156 +4193,66 @@ static const yytype_int16 yycheck[] = 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, -1, -1, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, -1, -1, -1, -1, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, -1, -1, -1, -1, -1, -1, 342, -1, + -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 370, 371, -1, -1, + 374, -1, -1, -1, -1, -1, -1, -1, 382, 383, + 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 403, + 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, + 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 437, 438, 439, 440, 441, 442, 443, + 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, + -1, -1, -1, -1, -1, 342, -1, -1, -1, 346, + 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 370, 371, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 381, 382, 383, 384, 385, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 403, 404, 405, 406, + 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 386, 387, 388, 389, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 399, 400, 401, 402, 403, - 404, 405, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 421, 422, 423, - 424, 425, 426, 427, -1, -1, -1, -1, -1, -1, - -1, -1, 436, -1, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, -1, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, -1, -1, -1, -1, -1, 333, - -1, -1, -1, 337, 338, 339, -1, -1, 342, 343, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 361, 362, -1, - -1, -1, 366, 367, -1, -1, -1, -1, -1, 373, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 394, 395, 396, 397, 398, 399, -1, -1, -1, -1, - 404, 405, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 428, 429, 430, 431, 432, 433, - 434, 435, -1, -1, 438, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 451, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, -1, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, -1, -1, -1, -1, -1, 333, -1, -1, - -1, 337, 338, 339, -1, -1, 342, 343, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 361, 362, -1, -1, -1, - 366, 367, -1, -1, -1, -1, -1, 373, 374, 375, - 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 394, 395, - 396, 397, 398, 399, -1, -1, -1, -1, 404, 405, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 428, 429, 430, 431, 432, 433, 434, 435, - -1, -1, 438, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 451, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, -1, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - -1, -1, -1, -1, -1, 333, -1, -1, -1, 337, - 338, 339, -1, -1, 342, 343, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 361, 362, -1, -1, 365, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 394, 395, 396, 397, - 398, 399, -1, -1, -1, -1, 404, 405, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 428, 429, 430, 431, 432, 433, 434, 435, -1, -1, - 438, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 451, 4, 5, 6, 7, 8, 9, + 437, 438, 439, 440, 441, 442, 443, 444, -1, -1, + 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -3979,8 +4269,8 @@ static const yytype_int16 yycheck[] = 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, -1, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, @@ -3994,109 +4284,66 @@ 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, -1, -1, - -1, -1, -1, 333, -1, -1, -1, 337, 338, 339, - -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, -1, -1, -1, -1, + -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, + -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 361, 362, -1, -1, -1, 366, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + 370, 371, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 382, 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 394, 395, 396, 397, 398, 399, - -1, -1, -1, -1, 404, 405, -1, -1, -1, -1, + -1, -1, -1, 403, 404, 405, 406, 407, 408, -1, + -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 428, 429, - 430, 431, 432, 433, 434, 435, -1, -1, 438, -1, + -1, -1, -1, -1, -1, -1, -1, 437, 438, 439, + 440, 441, 442, 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 451, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, -1, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, - -1, 333, -1, -1, -1, 337, 338, 339, -1, -1, - 342, 343, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 361, - 362, -1, -1, 365, -1, -1, -1, -1, -1, -1, - -1, 373, 374, 375, 376, -1, -1, -1, -1, -1, + 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, -1, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, -1, -1, -1, -1, -1, -1, 342, + -1, -1, -1, 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 394, 395, 396, 397, 398, 399, -1, -1, - -1, -1, 404, 405, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 370, 371, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 382, + 383, 384, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 428, 429, 430, 431, - 432, 433, 434, 435, -1, -1, 438, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 451, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, -1, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, -1, -1, -1, -1, -1, 333, - -1, -1, -1, 337, 338, 339, -1, -1, 342, 343, + 403, 404, 405, 406, 407, 408, -1, -1, -1, -1, + 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 361, 362, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 372, 373, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 394, 395, 396, 397, 398, 399, -1, -1, -1, -1, - 404, 405, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 428, 429, 430, 431, 432, 433, - 434, 435, -1, -1, 438, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 451, 4, 5, + -1, -1, -1, -1, 437, 438, 439, 440, 441, 442, + 443, 444, -1, -1, 447, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -4113,8 +4360,8 @@ static const yytype_int16 yycheck[] = 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, -1, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, @@ -4129,152 +4376,64 @@ static const yytype_int16 yycheck[] = 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, -1, -1, -1, -1, -1, 333, -1, -1, - -1, 337, 338, 339, -1, -1, 342, 343, -1, -1, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, + -1, -1, -1, -1, -1, -1, 342, -1, -1, -1, + 346, 347, 348, -1, -1, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 361, 362, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, - 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 394, 395, - 396, 397, 398, 399, -1, -1, -1, -1, 404, 405, + -1, -1, -1, -1, 370, 371, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 382, 383, 384, 385, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 403, 404, 405, + 406, 407, 408, -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 428, 429, 430, 431, 432, 433, 434, 435, - -1, -1, 438, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 451, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, -1, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - -1, -1, -1, -1, -1, 333, -1, -1, -1, 337, - 338, 339, -1, -1, 342, 343, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 361, 362, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 394, 395, 396, 397, - 398, 399, -1, -1, -1, -1, 404, 405, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 428, 429, 430, 431, 432, 433, 434, 435, -1, -1, - 438, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 451, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, -1, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, - -1, -1, -1, 333, -1, -1, -1, 337, 338, 339, - -1, -1, 342, 343, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 361, 362, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 394, 395, 396, 397, 398, 399, - -1, -1, -1, -1, 404, 405, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 428, 429, - 430, 431, 432, 433, 434, 435, -1, -1, 438, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 451, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, -1, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, - -1, 333, -1, -1, -1, 337, 338, 339, -1, -1, + -1, 437, 438, 439, 440, 441, 442, 443, 444, -1, + -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 460, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, -1, -1, -1, + -1, -1, -1, 342, -1, -1, -1, 346, 347, 348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 399, -1, -1, - -1, -1, 404, 405, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, + -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 438 + -1, -1, -1, -1, -1, -1, -1, -1, 447 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -4314,145 +4473,147 @@ static const yytype_int16 yystos[] = 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, 364, 372, - 386, 387, 388, 389, 390, 399, 400, 401, 402, 403, - 404, 405, 421, 422, 423, 424, 425, 426, 427, 436, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 373, 381, 395, + 396, 397, 398, 399, 408, 409, 410, 411, 412, 413, + 414, 430, 431, 432, 433, 434, 435, 436, 445, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 505, 506, 509, 510, - 511, 512, 516, 517, 518, 519, 520, 521, 524, 525, - 526, 527, 528, 530, 535, 536, 537, 578, 579, 580, - 582, 589, 593, 594, 600, 603, 362, 362, 362, 362, - 362, 362, 362, 362, 364, 536, 366, 398, 362, 362, - 372, 398, 372, 581, 363, 369, 513, 514, 515, 525, - 530, 369, 372, 398, 372, 398, 526, 530, 380, 532, - 533, 0, 579, 510, 518, 525, 372, 509, 398, 585, - 586, 604, 605, 395, 398, 585, 395, 585, 395, 585, - 395, 585, 395, 585, 585, 604, 395, 585, 398, 583, - 584, 530, 539, 366, 398, 422, 522, 523, 398, 529, - 364, 372, 531, 366, 557, 582, 514, 513, 515, 398, - 398, 362, 371, 531, 366, 369, 372, 508, 342, 343, - 361, 362, 373, 374, 375, 376, 394, 395, 396, 397, - 398, 428, 429, 430, 431, 432, 433, 434, 435, 475, - 476, 477, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 528, 530, 534, 531, 363, 398, 372, 371, 369, - 363, 369, 363, 369, 371, 369, 369, 369, 363, 369, - 369, 369, 369, 369, 369, 369, 363, 369, 363, 369, - 362, 365, 369, 372, 525, 530, 540, 541, 538, 371, - 363, 369, 363, 369, 365, 486, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 498, 499, 530, 364, - 372, 366, 367, 372, 406, 407, 408, 409, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 437, 486, - 499, 501, 503, 505, 509, 528, 530, 546, 547, 548, - 549, 550, 558, 559, 560, 561, 564, 565, 568, 569, - 570, 577, 582, 531, 371, 531, 366, 501, 544, 371, - 507, 398, 369, 372, 486, 486, 503, 342, 343, 364, - 368, 363, 363, 369, 405, 501, 362, 486, 369, 381, - 582, 361, 364, 395, 586, 604, 398, 605, 361, 394, - 395, 396, 397, 590, 591, 395, 499, 504, 592, 395, - 394, 395, 396, 397, 595, 596, 395, 394, 395, 396, - 397, 475, 597, 598, 395, 361, 599, 395, 604, 398, - 504, 535, 601, 602, 395, 504, 365, 584, 530, 398, - 542, 543, 367, 541, 540, 504, 523, 398, 377, 378, - 379, 374, 376, 340, 341, 344, 345, 380, 381, 346, - 347, 384, 383, 382, 348, 350, 349, 385, 365, 365, - 499, 367, 551, 362, 372, 372, 572, 362, 362, 372, - 372, 503, 362, 503, 370, 372, 372, 372, 372, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 371, - 502, 369, 372, 367, 547, 561, 565, 570, 544, 371, - 367, 544, 545, 544, 540, 398, 363, 478, 503, 398, - 501, 486, 361, 395, 587, 588, 363, 371, 363, 369, - 363, 369, 363, 369, 369, 363, 369, 363, 369, 363, - 369, 369, 363, 369, 369, 363, 369, 363, 369, 363, - 363, 542, 531, 369, 372, 367, 486, 486, 486, 488, - 488, 489, 489, 490, 490, 490, 490, 491, 491, 492, - 493, 494, 495, 496, 497, 500, 365, 558, 571, 547, - 573, 503, 372, 503, 370, 501, 501, 544, 367, 369, - 367, 365, 365, 369, 365, 369, 591, 590, 504, 592, - 596, 595, 598, 597, 361, 599, 601, 602, 372, 543, - 503, 552, 503, 518, 563, 406, 546, 559, 574, 363, - 363, 367, 544, 361, 395, 363, 363, 363, 363, 363, - 363, 370, 367, 398, 363, 362, 563, 575, 576, 554, - 555, 556, 562, 566, 501, 371, 548, 553, 557, 503, - 372, 363, 410, 550, 548, 366, 544, 363, 503, 553, - 554, 558, 567, 372, 367 + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 514, 515, 518, 519, 520, + 521, 525, 526, 527, 528, 529, 530, 533, 534, 535, + 536, 537, 539, 544, 545, 546, 587, 588, 589, 591, + 598, 602, 603, 609, 612, 371, 371, 371, 371, 371, + 371, 371, 371, 373, 545, 375, 407, 371, 371, 381, + 407, 381, 590, 372, 378, 522, 523, 524, 534, 539, + 378, 381, 407, 381, 407, 517, 535, 539, 389, 541, + 542, 0, 588, 519, 527, 534, 381, 518, 407, 594, + 595, 613, 614, 404, 407, 594, 404, 594, 404, 594, + 404, 594, 404, 594, 594, 613, 404, 594, 407, 592, + 593, 539, 548, 375, 407, 431, 531, 532, 407, 538, + 373, 381, 540, 375, 566, 591, 377, 523, 522, 524, + 407, 407, 371, 380, 540, 375, 378, 381, 351, 352, + 370, 371, 382, 383, 384, 385, 403, 404, 405, 406, + 407, 437, 438, 439, 440, 441, 442, 443, 444, 484, + 485, 486, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 537, 539, 543, 540, 372, 407, 381, 380, 378, + 372, 378, 372, 378, 380, 378, 378, 378, 372, 378, + 378, 378, 378, 378, 378, 378, 372, 378, 372, 378, + 371, 374, 378, 381, 534, 539, 549, 550, 547, 380, + 372, 378, 372, 378, 374, 495, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 508, 539, 373, + 381, 375, 376, 381, 415, 416, 417, 418, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 446, 495, + 508, 510, 512, 514, 518, 537, 539, 555, 556, 557, + 558, 559, 567, 568, 569, 570, 573, 574, 577, 578, + 579, 586, 591, 377, 380, 540, 380, 540, 375, 510, + 553, 380, 516, 407, 495, 495, 512, 351, 352, 373, + 377, 372, 372, 378, 414, 510, 371, 495, 378, 390, + 591, 370, 373, 404, 595, 613, 407, 614, 370, 403, + 404, 405, 406, 599, 600, 404, 508, 513, 601, 404, + 403, 404, 405, 406, 604, 605, 404, 403, 404, 405, + 406, 484, 606, 607, 404, 370, 608, 404, 613, 407, + 513, 544, 610, 611, 404, 513, 374, 593, 539, 407, + 551, 552, 376, 550, 549, 513, 532, 407, 386, 387, + 388, 383, 385, 349, 350, 353, 354, 389, 390, 355, + 356, 393, 392, 391, 357, 359, 358, 394, 374, 374, + 508, 376, 560, 371, 381, 381, 581, 371, 371, 381, + 381, 512, 371, 512, 379, 381, 381, 381, 381, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 380, + 511, 378, 381, 376, 556, 570, 574, 579, 377, 553, + 553, 380, 376, 553, 554, 553, 549, 372, 487, 512, + 407, 510, 495, 370, 404, 596, 597, 372, 380, 372, + 378, 372, 378, 372, 378, 378, 372, 378, 372, 378, + 372, 378, 378, 372, 378, 378, 372, 378, 372, 378, + 372, 372, 551, 540, 378, 381, 376, 495, 495, 495, + 497, 497, 498, 498, 499, 499, 499, 499, 500, 500, + 501, 502, 503, 504, 505, 506, 509, 374, 567, 580, + 556, 582, 512, 381, 512, 379, 510, 510, 553, 376, + 378, 376, 374, 374, 378, 374, 378, 600, 599, 513, + 601, 605, 604, 607, 606, 370, 608, 610, 611, 381, + 552, 512, 561, 512, 527, 572, 415, 555, 568, 583, + 372, 372, 376, 553, 370, 404, 372, 372, 372, 372, + 372, 372, 379, 376, 407, 372, 371, 572, 584, 585, + 563, 564, 565, 571, 575, 510, 380, 557, 562, 566, + 512, 381, 372, 419, 559, 557, 375, 553, 372, 512, + 562, 563, 567, 576, 381, 376 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 474, 475, 476, 476, 476, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 477, 477, - 477, 477, 477, 477, 478, 479, 480, 481, 481, 482, - 482, 483, 483, 484, 485, 485, 485, 486, 486, 486, - 486, 487, 487, 487, 487, 488, 488, 488, 488, 489, - 489, 489, 490, 490, 490, 491, 491, 491, 491, 491, - 492, 492, 492, 493, 493, 494, 494, 495, 495, 496, - 496, 497, 497, 498, 498, 499, 500, 499, 501, 501, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 503, 503, 504, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 507, 506, 508, 508, 509, - 509, 509, 509, 510, 510, 511, 511, 512, 513, 513, - 514, 514, 514, 514, 515, 516, 516, 516, 516, 516, - 517, 517, 517, 517, 517, 518, 518, 519, 520, 520, - 520, 520, 520, 520, 520, 520, 520, 520, 521, 522, - 522, 523, 523, 523, 524, 525, 525, 526, 526, 526, - 526, 526, 526, 526, 526, 526, 526, 526, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, - 527, 527, 527, 527, 527, 527, 527, 528, 529, 529, - 530, 530, 531, 531, 531, 531, 532, 532, 533, 534, - 534, 534, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 536, 536, 536, 538, 537, 539, 537, 540, 540, 541, - 541, 542, 542, 543, 543, 544, 544, 544, 544, 545, - 545, 546, 547, 547, 548, 548, 548, 548, 548, 548, - 548, 548, 549, 550, 551, 552, 550, 553, 553, 555, - 554, 556, 554, 557, 557, 558, 558, 559, 559, 560, - 560, 561, 562, 562, 563, 563, 564, 564, 566, 565, - 567, 567, 568, 568, 569, 569, 571, 570, 572, 570, - 573, 570, 574, 574, 575, 575, 576, 576, 577, 577, - 577, 577, 577, 577, 577, 577, 578, 578, 579, 579, - 579, 581, 580, 582, 583, 583, 584, 584, 585, 585, - 586, 586, 587, 587, 588, 588, 589, 589, 589, 589, - 589, 589, 590, 590, 591, 591, 591, 591, 591, 592, - 592, 593, 593, 594, 594, 594, 594, 594, 594, 594, - 594, 595, 595, 596, 596, 596, 596, 597, 597, 598, - 598, 598, 598, 598, 599, 599, 600, 600, 600, 600, - 601, 601, 602, 602, 603, 603, 604, 604, 605, 605 + 0, 483, 484, 485, 485, 485, 485, 485, 485, 485, + 485, 485, 485, 485, 485, 485, 485, 485, 486, 486, + 486, 486, 486, 486, 487, 488, 489, 490, 490, 491, + 491, 492, 492, 493, 494, 494, 494, 495, 495, 495, + 495, 496, 496, 496, 496, 497, 497, 497, 497, 498, + 498, 498, 499, 499, 499, 500, 500, 500, 500, 500, + 501, 501, 501, 502, 502, 503, 503, 504, 504, 505, + 505, 506, 506, 507, 507, 508, 509, 508, 510, 510, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 512, 512, 513, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 516, 515, 517, 517, 518, 518, + 518, 518, 519, 519, 520, 520, 520, 521, 522, 522, + 522, 523, 523, 523, 523, 524, 525, 525, 525, 525, + 525, 526, 526, 526, 526, 526, 527, 527, 528, 529, + 529, 529, 529, 529, 529, 529, 529, 529, 529, 530, + 531, 531, 532, 532, 532, 533, 534, 534, 535, 535, + 535, 535, 535, 535, 535, 535, 535, 535, 535, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 537, 538, + 538, 539, 539, 540, 540, 540, 540, 541, 541, 542, + 543, 543, 543, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 545, 545, 545, 547, 546, 548, 546, 549, 549, 550, + 550, 551, 551, 552, 552, 553, 553, 553, 553, 554, + 554, 555, 556, 556, 557, 557, 557, 557, 557, 557, + 557, 557, 558, 559, 560, 561, 559, 562, 562, 564, + 563, 565, 563, 566, 566, 567, 567, 568, 568, 569, + 569, 570, 571, 571, 572, 572, 573, 573, 575, 574, + 576, 576, 577, 577, 578, 578, 580, 579, 581, 579, + 582, 579, 583, 583, 584, 584, 585, 585, 586, 586, + 586, 586, 586, 586, 586, 586, 587, 587, 588, 588, + 588, 590, 589, 591, 592, 592, 593, 593, 594, 594, + 595, 595, 596, 596, 597, 597, 598, 598, 598, 598, + 598, 598, 599, 599, 600, 600, 600, 600, 600, 601, + 601, 602, 602, 603, 603, 603, 603, 603, 603, 603, + 603, 604, 604, 605, 605, 605, 605, 606, 606, 607, + 607, 607, 607, 607, 608, 608, 609, 609, 609, 609, + 610, 610, 611, 611, 612, 612, 613, 613, 614, 614 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -4468,19 +4629,20 @@ static const yytype_int8 yyr2[] = 3, 1, 3, 1, 3, 1, 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, 2, 2, 4, 2, - 3, 4, 2, 3, 4, 0, 6, 2, 3, 2, - 3, 3, 4, 1, 1, 2, 3, 3, 2, 3, - 2, 1, 2, 1, 1, 1, 3, 4, 6, 5, - 1, 2, 3, 5, 4, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, - 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, + 3, 4, 2, 3, 0, 6, 1, 3, 2, 3, + 3, 4, 1, 1, 2, 3, 5, 3, 2, 3, + 4, 2, 1, 2, 1, 1, 1, 3, 4, 6, + 5, 1, 2, 3, 5, 4, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, + 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, - 2, 3, 2, 3, 3, 4, 1, 0, 3, 1, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, + 3, 2, 3, 2, 3, 3, 4, 1, 0, 3, + 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -5270,260 +5432,260 @@ yyreduce: switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ -#line 358 "MachineIndependent/glslang.y" +#line 361 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5278 "MachineIndependent/glslang_tab.cpp" +#line 5440 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ -#line 364 "MachineIndependent/glslang.y" +#line 367 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5286 "MachineIndependent/glslang_tab.cpp" +#line 5448 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ -#line 367 "MachineIndependent/glslang.y" +#line 370 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5296 "MachineIndependent/glslang_tab.cpp" +#line 5458 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ -#line 372 "MachineIndependent/glslang.y" +#line 375 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5304 "MachineIndependent/glslang_tab.cpp" +#line 5466 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ -#line 375 "MachineIndependent/glslang.y" +#line 378 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5312 "MachineIndependent/glslang_tab.cpp" +#line 5474 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ -#line 378 "MachineIndependent/glslang.y" +#line 381 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5321 "MachineIndependent/glslang_tab.cpp" +#line 5483 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ -#line 382 "MachineIndependent/glslang.y" +#line 385 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5329 "MachineIndependent/glslang_tab.cpp" +#line 5491 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ -#line 385 "MachineIndependent/glslang.y" +#line 388 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5337 "MachineIndependent/glslang_tab.cpp" +#line 5499 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ -#line 388 "MachineIndependent/glslang.y" +#line 391 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5346 "MachineIndependent/glslang_tab.cpp" +#line 5508 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ -#line 392 "MachineIndependent/glslang.y" +#line 395 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5355 "MachineIndependent/glslang_tab.cpp" +#line 5517 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ -#line 396 "MachineIndependent/glslang.y" +#line 399 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5364 "MachineIndependent/glslang_tab.cpp" +#line 5526 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ -#line 400 "MachineIndependent/glslang.y" +#line 403 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5373 "MachineIndependent/glslang_tab.cpp" +#line 5535 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ -#line 404 "MachineIndependent/glslang.y" +#line 407 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5382 "MachineIndependent/glslang_tab.cpp" +#line 5544 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ -#line 408 "MachineIndependent/glslang.y" +#line 411 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5391 "MachineIndependent/glslang_tab.cpp" +#line 5553 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ -#line 412 "MachineIndependent/glslang.y" +#line 415 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5402 "MachineIndependent/glslang_tab.cpp" +#line 5564 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ -#line 418 "MachineIndependent/glslang.y" +#line 421 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5411 "MachineIndependent/glslang_tab.cpp" +#line 5573 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ -#line 425 "MachineIndependent/glslang.y" +#line 428 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5419 "MachineIndependent/glslang_tab.cpp" +#line 5581 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ -#line 428 "MachineIndependent/glslang.y" +#line 431 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5427 "MachineIndependent/glslang_tab.cpp" +#line 5589 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ -#line 431 "MachineIndependent/glslang.y" +#line 434 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5435 "MachineIndependent/glslang_tab.cpp" +#line 5597 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ -#line 434 "MachineIndependent/glslang.y" +#line 437 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5443 "MachineIndependent/glslang_tab.cpp" +#line 5605 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ -#line 437 "MachineIndependent/glslang.y" +#line 440 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5453 "MachineIndependent/glslang_tab.cpp" +#line 5615 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ -#line 442 "MachineIndependent/glslang.y" +#line 445 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5463 "MachineIndependent/glslang_tab.cpp" +#line 5625 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ -#line 450 "MachineIndependent/glslang.y" +#line 453 "MachineIndependent/glslang.y" { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5472 "MachineIndependent/glslang_tab.cpp" +#line 5634 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ -#line 457 "MachineIndependent/glslang.y" +#line 460 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5481 "MachineIndependent/glslang_tab.cpp" +#line 5643 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ -#line 464 "MachineIndependent/glslang.y" +#line 467 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5489 "MachineIndependent/glslang_tab.cpp" +#line 5651 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ -#line 470 "MachineIndependent/glslang.y" +#line 473 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5498 "MachineIndependent/glslang_tab.cpp" +#line 5660 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ -#line 474 "MachineIndependent/glslang.y" +#line 477 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5507 "MachineIndependent/glslang_tab.cpp" +#line 5669 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ -#line 481 "MachineIndependent/glslang.y" +#line 484 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5515 "MachineIndependent/glslang_tab.cpp" +#line 5677 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ -#line 484 "MachineIndependent/glslang.y" +#line 487 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5523 "MachineIndependent/glslang_tab.cpp" +#line 5685 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ -#line 490 "MachineIndependent/glslang.y" +#line 493 "MachineIndependent/glslang.y" { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed @@ -5542,11 +5704,11 @@ yyreduce: (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } } -#line 5546 "MachineIndependent/glslang_tab.cpp" +#line 5708 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 508 "MachineIndependent/glslang.y" +#line 511 "MachineIndependent/glslang.y" { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed @@ -5569,29 +5731,29 @@ yyreduce: (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } } -#line 5573 "MachineIndependent/glslang_tab.cpp" +#line 5735 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 533 "MachineIndependent/glslang.y" +#line 536 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5581 "MachineIndependent/glslang_tab.cpp" +#line 5743 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 541 "MachineIndependent/glslang.y" +#line 544 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5591 "MachineIndependent/glslang_tab.cpp" +#line 5753 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 546 "MachineIndependent/glslang.y" +#line 549 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -5619,50 +5781,50 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5623 "MachineIndependent/glslang_tab.cpp" +#line 5785 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 573 "MachineIndependent/glslang.y" +#line 576 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5633 "MachineIndependent/glslang_tab.cpp" +#line 5795 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 581 "MachineIndependent/glslang.y" +#line 584 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5644 "MachineIndependent/glslang_tab.cpp" +#line 5806 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 587 "MachineIndependent/glslang.y" +#line 590 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5653 "MachineIndependent/glslang_tab.cpp" +#line 5815 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 591 "MachineIndependent/glslang.y" +#line 594 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5662 "MachineIndependent/glslang_tab.cpp" +#line 5824 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 595 "MachineIndependent/glslang.y" +#line 598 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5679,179 +5841,179 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5683 "MachineIndependent/glslang_tab.cpp" +#line 5845 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 615 "MachineIndependent/glslang.y" +#line 618 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5689 "MachineIndependent/glslang_tab.cpp" +#line 5851 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 616 "MachineIndependent/glslang.y" +#line 619 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5695 "MachineIndependent/glslang_tab.cpp" +#line 5857 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 617 "MachineIndependent/glslang.y" +#line 620 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5701 "MachineIndependent/glslang_tab.cpp" +#line 5863 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 618 "MachineIndependent/glslang.y" +#line 621 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5708 "MachineIndependent/glslang_tab.cpp" +#line 5870 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 624 "MachineIndependent/glslang.y" +#line 627 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5714 "MachineIndependent/glslang_tab.cpp" +#line 5876 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 625 "MachineIndependent/glslang.y" +#line 628 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5724 "MachineIndependent/glslang_tab.cpp" +#line 5886 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 630 "MachineIndependent/glslang.y" +#line 633 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5734 "MachineIndependent/glslang_tab.cpp" +#line 5896 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 635 "MachineIndependent/glslang.y" +#line 638 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5745 "MachineIndependent/glslang_tab.cpp" +#line 5907 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 644 "MachineIndependent/glslang.y" +#line 647 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5751 "MachineIndependent/glslang_tab.cpp" +#line 5913 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 645 "MachineIndependent/glslang.y" +#line 648 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5761 "MachineIndependent/glslang_tab.cpp" +#line 5923 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 650 "MachineIndependent/glslang.y" +#line 653 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5771 "MachineIndependent/glslang_tab.cpp" +#line 5933 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ -#line 658 "MachineIndependent/glslang.y" +#line 661 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5777 "MachineIndependent/glslang_tab.cpp" +#line 5939 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 659 "MachineIndependent/glslang.y" +#line 662 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5788 "MachineIndependent/glslang_tab.cpp" +#line 5950 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 665 "MachineIndependent/glslang.y" +#line 668 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5799 "MachineIndependent/glslang_tab.cpp" +#line 5961 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 674 "MachineIndependent/glslang.y" +#line 677 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5805 "MachineIndependent/glslang_tab.cpp" +#line 5967 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 675 "MachineIndependent/glslang.y" +#line 678 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5815 "MachineIndependent/glslang_tab.cpp" +#line 5977 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 680 "MachineIndependent/glslang.y" +#line 683 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5825 "MachineIndependent/glslang_tab.cpp" +#line 5987 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 685 "MachineIndependent/glslang.y" +#line 688 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5835 "MachineIndependent/glslang_tab.cpp" +#line 5997 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 690 "MachineIndependent/glslang.y" +#line 693 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5845 "MachineIndependent/glslang_tab.cpp" +#line 6007 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 698 "MachineIndependent/glslang.y" +#line 701 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5851 "MachineIndependent/glslang_tab.cpp" +#line 6013 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 699 "MachineIndependent/glslang.y" +#line 702 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -5861,11 +6023,11 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5865 "MachineIndependent/glslang_tab.cpp" +#line 6027 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 708 "MachineIndependent/glslang.y" +#line 711 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -5875,124 +6037,124 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5879 "MachineIndependent/glslang_tab.cpp" +#line 6041 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 720 "MachineIndependent/glslang.y" +#line 723 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5885 "MachineIndependent/glslang_tab.cpp" +#line 6047 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 721 "MachineIndependent/glslang.y" +#line 724 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5896 "MachineIndependent/glslang_tab.cpp" +#line 6058 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 730 "MachineIndependent/glslang.y" +#line 733 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5902 "MachineIndependent/glslang_tab.cpp" +#line 6064 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 731 "MachineIndependent/glslang.y" +#line 734 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5913 "MachineIndependent/glslang_tab.cpp" +#line 6075 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 740 "MachineIndependent/glslang.y" +#line 743 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5919 "MachineIndependent/glslang_tab.cpp" +#line 6081 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 741 "MachineIndependent/glslang.y" +#line 744 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5930 "MachineIndependent/glslang_tab.cpp" +#line 6092 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 750 "MachineIndependent/glslang.y" +#line 753 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5936 "MachineIndependent/glslang_tab.cpp" +#line 6098 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 751 "MachineIndependent/glslang.y" +#line 754 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5946 "MachineIndependent/glslang_tab.cpp" +#line 6108 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 759 "MachineIndependent/glslang.y" +#line 762 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5952 "MachineIndependent/glslang_tab.cpp" +#line 6114 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 760 "MachineIndependent/glslang.y" +#line 763 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5962 "MachineIndependent/glslang_tab.cpp" +#line 6124 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 768 "MachineIndependent/glslang.y" +#line 771 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5968 "MachineIndependent/glslang_tab.cpp" +#line 6130 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 769 "MachineIndependent/glslang.y" +#line 772 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5978 "MachineIndependent/glslang_tab.cpp" +#line 6140 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 777 "MachineIndependent/glslang.y" +#line 780 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5984 "MachineIndependent/glslang_tab.cpp" +#line 6146 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 778 "MachineIndependent/glslang.y" +#line 781 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 5992 "MachineIndependent/glslang_tab.cpp" +#line 6154 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 781 "MachineIndependent/glslang.y" +#line 784 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -6005,17 +6167,17 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6009 "MachineIndependent/glslang_tab.cpp" +#line 6171 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 796 "MachineIndependent/glslang.y" +#line 799 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6015 "MachineIndependent/glslang_tab.cpp" +#line 6177 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 797 "MachineIndependent/glslang.y" +#line 800 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -6029,119 +6191,119 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 6033 "MachineIndependent/glslang_tab.cpp" +#line 6195 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 813 "MachineIndependent/glslang.y" +#line 816 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 6042 "MachineIndependent/glslang_tab.cpp" +#line 6204 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 817 "MachineIndependent/glslang.y" +#line 820 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 6051 "MachineIndependent/glslang_tab.cpp" +#line 6213 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 821 "MachineIndependent/glslang.y" +#line 824 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 6060 "MachineIndependent/glslang_tab.cpp" +#line 6222 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 825 "MachineIndependent/glslang.y" +#line 828 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 6070 "MachineIndependent/glslang_tab.cpp" +#line 6232 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 830 "MachineIndependent/glslang.y" +#line 833 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 6079 "MachineIndependent/glslang_tab.cpp" +#line 6241 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 834 "MachineIndependent/glslang.y" +#line 837 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 6088 "MachineIndependent/glslang_tab.cpp" +#line 6250 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 838 "MachineIndependent/glslang.y" +#line 841 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6097 "MachineIndependent/glslang_tab.cpp" +#line 6259 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 842 "MachineIndependent/glslang.y" +#line 845 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6106 "MachineIndependent/glslang_tab.cpp" +#line 6268 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 846 "MachineIndependent/glslang.y" +#line 849 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6115 "MachineIndependent/glslang_tab.cpp" +#line 6277 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 850 "MachineIndependent/glslang.y" +#line 853 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6124 "MachineIndependent/glslang_tab.cpp" +#line 6286 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 854 "MachineIndependent/glslang.y" +#line 857 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6133 "MachineIndependent/glslang_tab.cpp" +#line 6295 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 861 "MachineIndependent/glslang.y" +#line 864 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6141 "MachineIndependent/glslang_tab.cpp" +#line 6303 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 864 "MachineIndependent/glslang.y" +#line 867 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -6150,30 +6312,30 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6154 "MachineIndependent/glslang_tab.cpp" +#line 6316 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 875 "MachineIndependent/glslang.y" +#line 878 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6163 "MachineIndependent/glslang_tab.cpp" +#line 6325 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 882 "MachineIndependent/glslang.y" +#line 885 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6173 "MachineIndependent/glslang_tab.cpp" +#line 6335 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 887 "MachineIndependent/glslang.y" +#line 890 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier @@ -6181,31 +6343,31 @@ yyreduce: (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6185 "MachineIndependent/glslang_tab.cpp" +#line 6347 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 894 "MachineIndependent/glslang.y" +#line 897 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6195 "MachineIndependent/glslang_tab.cpp" +#line 6357 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 899 "MachineIndependent/glslang.y" +#line 902 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6205 "MachineIndependent/glslang_tab.cpp" +#line 6367 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 904 "MachineIndependent/glslang.y" +#line 907 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -6213,75 +6375,64 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6217 "MachineIndependent/glslang_tab.cpp" +#line 6379 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ -#line 911 "MachineIndependent/glslang.y" +#line 914 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6226 "MachineIndependent/glslang_tab.cpp" +#line 6388 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 915 "MachineIndependent/glslang.y" +#line 918 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6235 "MachineIndependent/glslang_tab.cpp" +#line 6397 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 919 "MachineIndependent/glslang.y" +#line 922 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6244 "MachineIndependent/glslang_tab.cpp" +#line 6406 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 923 "MachineIndependent/glslang.y" +#line 926 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6254 "MachineIndependent/glslang_tab.cpp" +#line 6416 "MachineIndependent/glslang_tab.cpp" break; - case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 928 "MachineIndependent/glslang.y" - { + case 103: /* declaration: type_qualifier identifier_list SEMICOLON */ +#line 931 "MachineIndependent/glslang.y" + { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); - parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); + parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6264 "MachineIndependent/glslang_tab.cpp" +#line 6426 "MachineIndependent/glslang_tab.cpp" break; - case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 933 "MachineIndependent/glslang.y" - { - 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 6275 "MachineIndependent/glslang_tab.cpp" - break; - - case 105: /* $@2: %empty */ -#line 942 "MachineIndependent/glslang.y" + case 104: /* $@2: %empty */ +#line 939 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6281 "MachineIndependent/glslang_tab.cpp" +#line 6432 "MachineIndependent/glslang_tab.cpp" break; - case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 942 "MachineIndependent/glslang.y" + case 105: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ +#line 939 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6291,39 +6442,39 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6295 "MachineIndependent/glslang_tab.cpp" +#line 6446 "MachineIndependent/glslang_tab.cpp" break; - case 107: /* identifier_list: COMMA IDENTIFIER */ -#line 953 "MachineIndependent/glslang.y" - { + case 106: /* identifier_list: IDENTIFIER */ +#line 950 "MachineIndependent/glslang.y" + { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6304 "MachineIndependent/glslang_tab.cpp" +#line 6455 "MachineIndependent/glslang_tab.cpp" break; - case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 957 "MachineIndependent/glslang.y" + case 107: /* identifier_list: identifier_list COMMA IDENTIFIER */ +#line 954 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6313 "MachineIndependent/glslang_tab.cpp" +#line 6464 "MachineIndependent/glslang_tab.cpp" break; - case 109: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 964 "MachineIndependent/glslang.y" + case 108: /* function_prototype: function_declarator RIGHT_PAREN */ +#line 961 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6323 "MachineIndependent/glslang_tab.cpp" +#line 6474 "MachineIndependent/glslang_tab.cpp" break; - case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 969 "MachineIndependent/glslang.y" + case 109: /* function_prototype: function_declarator RIGHT_PAREN attribute */ +#line 966 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6332,11 +6483,11 @@ yyreduce: parseContext.requireExtensions((yyvsp[-1].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6336 "MachineIndependent/glslang_tab.cpp" +#line 6487 "MachineIndependent/glslang_tab.cpp" break; - case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 977 "MachineIndependent/glslang.y" + case 110: /* function_prototype: attribute function_declarator RIGHT_PAREN */ +#line 974 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6345,11 +6496,11 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6349 "MachineIndependent/glslang_tab.cpp" +#line 6500 "MachineIndependent/glslang_tab.cpp" break; - case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 985 "MachineIndependent/glslang.y" + case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ +#line 982 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6359,27 +6510,27 @@ yyreduce: parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6363 "MachineIndependent/glslang_tab.cpp" +#line 6514 "MachineIndependent/glslang_tab.cpp" break; - case 113: /* function_declarator: function_header */ -#line 997 "MachineIndependent/glslang.y" + case 112: /* function_declarator: function_header */ +#line 994 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6371 "MachineIndependent/glslang_tab.cpp" +#line 6522 "MachineIndependent/glslang_tab.cpp" break; - case 114: /* function_declarator: function_header_with_parameters */ -#line 1000 "MachineIndependent/glslang.y" + case 113: /* function_declarator: function_header_with_parameters */ +#line 997 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6379 "MachineIndependent/glslang_tab.cpp" +#line 6530 "MachineIndependent/glslang_tab.cpp" break; - case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 1007 "MachineIndependent/glslang.y" + case 114: /* function_header_with_parameters: function_header parameter_declaration */ +#line 1004 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6393,11 +6544,11 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 6397 "MachineIndependent/glslang_tab.cpp" +#line 6548 "MachineIndependent/glslang_tab.cpp" break; - case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1020 "MachineIndependent/glslang.y" + case 115: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ +#line 1017 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6418,11 +6569,20 @@ yyreduce: parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-2].interm.function), (yyvsp[0].interm).param); } } -#line 6422 "MachineIndependent/glslang_tab.cpp" +#line 6573 "MachineIndependent/glslang_tab.cpp" + break; + + case 116: /* function_header_with_parameters: function_header_with_parameters COMMA DOT DOT DOT */ +#line 1037 "MachineIndependent/glslang.y" + { + (yyval.interm.function) = (yyvsp[-4].interm.function); + parseContext.makeVariadic((yyvsp[-4].interm.function), (yyvsp[-2].lex).loc); + } +#line 6582 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1043 "MachineIndependent/glslang.y" +#line 1044 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6442,11 +6602,11 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6446 "MachineIndependent/glslang_tab.cpp" +#line 6606 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1066 "MachineIndependent/glslang.y" +#line 1067 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6462,11 +6622,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6466 "MachineIndependent/glslang_tab.cpp" +#line 6626 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1081 "MachineIndependent/glslang.y" +#line 1082 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6486,173 +6646,183 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6490 "MachineIndependent/glslang_tab.cpp" +#line 6650 "MachineIndependent/glslang_tab.cpp" break; - case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1106 "MachineIndependent/glslang.y" + case 120: /* parameter_declarator: type_specifier IDENTIFIER EQUAL initializer */ +#line 1101 "MachineIndependent/glslang.y" + { + TParameter param = parseContext.getParamWithDefault((yyvsp[-3].interm.type), (yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); + (yyval.interm).loc = (yyvsp[-2].lex).loc; + (yyval.interm).param = param; + } +#line 6660 "MachineIndependent/glslang_tab.cpp" + break; + + case 121: /* parameter_declaration: type_qualifier parameter_declarator */ +#line 1112 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMatOrVec()); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->hasTypeParameter()); parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); 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 6506 "MachineIndependent/glslang_tab.cpp" +#line 6676 "MachineIndependent/glslang_tab.cpp" break; - case 121: /* parameter_declaration: parameter_declarator */ -#line 1117 "MachineIndependent/glslang.y" + case 122: /* parameter_declaration: parameter_declarator */ +#line 1123 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMatOrVec()); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->hasTypeParameter()); } -#line 6518 "MachineIndependent/glslang_tab.cpp" +#line 6688 "MachineIndependent/glslang_tab.cpp" break; - case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1127 "MachineIndependent/glslang.y" + case 123: /* parameter_declaration: type_qualifier parameter_type_specifier */ +#line 1133 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; - parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMatOrVec()); + parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->hasTypeParameter()); parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); 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 6533 "MachineIndependent/glslang_tab.cpp" +#line 6703 "MachineIndependent/glslang_tab.cpp" break; - case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1137 "MachineIndependent/glslang.y" + case 124: /* parameter_declaration: parameter_type_specifier */ +#line 1143 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMatOrVec()); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->hasTypeParameter()); } -#line 6545 "MachineIndependent/glslang_tab.cpp" +#line 6715 "MachineIndependent/glslang_tab.cpp" break; - case 124: /* parameter_type_specifier: type_specifier */ -#line 1147 "MachineIndependent/glslang.y" + case 125: /* parameter_type_specifier: type_specifier */ +#line 1153 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)), {} }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6556 "MachineIndependent/glslang_tab.cpp" +#line 6726 "MachineIndependent/glslang_tab.cpp" break; - case 125: /* init_declarator_list: single_declaration */ -#line 1156 "MachineIndependent/glslang.y" + case 126: /* init_declarator_list: single_declaration */ +#line 1162 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6564 "MachineIndependent/glslang_tab.cpp" +#line 6734 "MachineIndependent/glslang_tab.cpp" break; - case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1159 "MachineIndependent/glslang.y" + case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ +#line 1165 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6573 "MachineIndependent/glslang_tab.cpp" +#line 6743 "MachineIndependent/glslang_tab.cpp" break; - case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1163 "MachineIndependent/glslang.y" + case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ +#line 1169 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6582 "MachineIndependent/glslang_tab.cpp" +#line 6752 "MachineIndependent/glslang_tab.cpp" break; - case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1167 "MachineIndependent/glslang.y" + case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ +#line 1173 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6592 "MachineIndependent/glslang_tab.cpp" +#line 6762 "MachineIndependent/glslang_tab.cpp" break; - case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1172 "MachineIndependent/glslang.y" + case 130: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ +#line 1178 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6602 "MachineIndependent/glslang_tab.cpp" +#line 6772 "MachineIndependent/glslang_tab.cpp" break; - case 130: /* single_declaration: fully_specified_type */ -#line 1180 "MachineIndependent/glslang.y" + case 131: /* single_declaration: fully_specified_type */ +#line 1186 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6612 "MachineIndependent/glslang_tab.cpp" +#line 6782 "MachineIndependent/glslang_tab.cpp" break; - case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1185 "MachineIndependent/glslang.y" + case 132: /* single_declaration: fully_specified_type IDENTIFIER */ +#line 1191 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6622 "MachineIndependent/glslang_tab.cpp" +#line 6792 "MachineIndependent/glslang_tab.cpp" break; - case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1190 "MachineIndependent/glslang.y" + case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ +#line 1196 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6632 "MachineIndependent/glslang_tab.cpp" +#line 6802 "MachineIndependent/glslang_tab.cpp" break; - case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1195 "MachineIndependent/glslang.y" + case 134: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ +#line 1201 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6642 "MachineIndependent/glslang_tab.cpp" +#line 6812 "MachineIndependent/glslang_tab.cpp" break; - case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1200 "MachineIndependent/glslang.y" + case 135: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 1206 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6652 "MachineIndependent/glslang_tab.cpp" +#line 6822 "MachineIndependent/glslang_tab.cpp" break; - case 135: /* fully_specified_type: type_specifier */ -#line 1209 "MachineIndependent/glslang.y" + case 136: /* fully_specified_type: type_specifier */ +#line 1215 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6661,13 +6831,13 @@ yyreduce: parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } - parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmatOrvec()); + parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).hasTypeParameter()); } -#line 6667 "MachineIndependent/glslang_tab.cpp" +#line 6837 "MachineIndependent/glslang_tab.cpp" break; - case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1219 "MachineIndependent/glslang.y" + case 137: /* fully_specified_type: type_qualifier type_specifier */ +#line 1225 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6683,7 +6853,7 @@ yyreduce: parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true); - parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier, (yyvsp[0].interm.type).isCoopmatOrvec()); + parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier, (yyvsp[0].interm.type).hasTypeParameter()); (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6692,22 +6862,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6696 "MachineIndependent/glslang_tab.cpp" +#line 6866 "MachineIndependent/glslang_tab.cpp" break; - case 137: /* invariant_qualifier: INVARIANT */ -#line 1246 "MachineIndependent/glslang.y" + case 138: /* invariant_qualifier: INVARIANT */ +#line 1252 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6707 "MachineIndependent/glslang_tab.cpp" +#line 6877 "MachineIndependent/glslang_tab.cpp" break; - case 138: /* interpolation_qualifier: SMOOTH */ -#line 1255 "MachineIndependent/glslang.y" + case 139: /* interpolation_qualifier: SMOOTH */ +#line 1261 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6715,11 +6885,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6719 "MachineIndependent/glslang_tab.cpp" +#line 6889 "MachineIndependent/glslang_tab.cpp" break; - case 139: /* interpolation_qualifier: FLAT */ -#line 1262 "MachineIndependent/glslang.y" + case 140: /* interpolation_qualifier: FLAT */ +#line 1268 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6727,11 +6897,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6731 "MachineIndependent/glslang_tab.cpp" +#line 6901 "MachineIndependent/glslang_tab.cpp" break; - case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1269 "MachineIndependent/glslang.y" + case 141: /* interpolation_qualifier: NOPERSPECTIVE */ +#line 1275 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6739,11 +6909,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6743 "MachineIndependent/glslang_tab.cpp" +#line 6913 "MachineIndependent/glslang_tab.cpp" break; - case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1276 "MachineIndependent/glslang.y" + case 142: /* interpolation_qualifier: EXPLICITINTERPAMD */ +#line 1282 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6751,11 +6921,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6755 "MachineIndependent/glslang_tab.cpp" +#line 6925 "MachineIndependent/glslang_tab.cpp" break; - case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1283 "MachineIndependent/glslang.y" + case 143: /* interpolation_qualifier: PERVERTEXNV */ +#line 1289 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6764,11 +6934,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6768 "MachineIndependent/glslang_tab.cpp" +#line 6938 "MachineIndependent/glslang_tab.cpp" break; - case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1291 "MachineIndependent/glslang.y" + case 144: /* interpolation_qualifier: PERVERTEXEXT */ +#line 1297 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6777,11 +6947,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6781 "MachineIndependent/glslang_tab.cpp" +#line 6951 "MachineIndependent/glslang_tab.cpp" break; - case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1299 "MachineIndependent/glslang.y" + case 145: /* interpolation_qualifier: PERPRIMITIVENV */ +#line 1305 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6792,11 +6962,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6796 "MachineIndependent/glslang_tab.cpp" +#line 6966 "MachineIndependent/glslang_tab.cpp" break; - case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1309 "MachineIndependent/glslang.y" + case 146: /* interpolation_qualifier: PERPRIMITIVEEXT */ +#line 1315 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6807,11 +6977,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6811 "MachineIndependent/glslang_tab.cpp" +#line 6981 "MachineIndependent/glslang_tab.cpp" break; - case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1319 "MachineIndependent/glslang.y" + case 147: /* interpolation_qualifier: PERVIEWNV */ +#line 1325 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6819,11 +6989,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6823 "MachineIndependent/glslang_tab.cpp" +#line 6993 "MachineIndependent/glslang_tab.cpp" break; - case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1326 "MachineIndependent/glslang.y" + case 148: /* interpolation_qualifier: PERTASKNV */ +#line 1332 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6831,84 +7001,84 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6835 "MachineIndependent/glslang_tab.cpp" +#line 7005 "MachineIndependent/glslang_tab.cpp" break; - case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1336 "MachineIndependent/glslang.y" + case 149: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ +#line 1342 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6843 "MachineIndependent/glslang_tab.cpp" +#line 7013 "MachineIndependent/glslang_tab.cpp" break; - case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1342 "MachineIndependent/glslang.y" + case 150: /* layout_qualifier_id_list: layout_qualifier_id */ +#line 1348 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6851 "MachineIndependent/glslang_tab.cpp" +#line 7021 "MachineIndependent/glslang_tab.cpp" break; - case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1345 "MachineIndependent/glslang.y" + case 151: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ +#line 1351 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6861 "MachineIndependent/glslang_tab.cpp" +#line 7031 "MachineIndependent/glslang_tab.cpp" break; - case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1352 "MachineIndependent/glslang.y" + case 152: /* layout_qualifier_id: IDENTIFIER */ +#line 1358 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6870 "MachineIndependent/glslang_tab.cpp" +#line 7040 "MachineIndependent/glslang_tab.cpp" break; - case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1356 "MachineIndependent/glslang.y" + case 153: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ +#line 1362 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6879 "MachineIndependent/glslang_tab.cpp" +#line 7049 "MachineIndependent/glslang_tab.cpp" break; - case 153: /* layout_qualifier_id: SHARED */ -#line 1360 "MachineIndependent/glslang.y" + case 154: /* layout_qualifier_id: SHARED */ +#line 1366 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6889 "MachineIndependent/glslang_tab.cpp" +#line 7059 "MachineIndependent/glslang_tab.cpp" break; - case 154: /* precise_qualifier: PRECISE */ -#line 1368 "MachineIndependent/glslang.y" + case 155: /* precise_qualifier: PRECISE */ +#line 1374 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6900 "MachineIndependent/glslang_tab.cpp" +#line 7070 "MachineIndependent/glslang_tab.cpp" break; - case 155: /* type_qualifier: single_type_qualifier */ -#line 1377 "MachineIndependent/glslang.y" + case 156: /* type_qualifier: single_type_qualifier */ +#line 1383 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6908 "MachineIndependent/glslang_tab.cpp" +#line 7078 "MachineIndependent/glslang_tab.cpp" break; - case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1380 "MachineIndependent/glslang.y" + case 157: /* type_qualifier: type_qualifier single_type_qualifier */ +#line 1386 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6917,151 +7087,151 @@ yyreduce: (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6921 "MachineIndependent/glslang_tab.cpp" +#line 7091 "MachineIndependent/glslang_tab.cpp" break; - case 157: /* single_type_qualifier: storage_qualifier */ -#line 1391 "MachineIndependent/glslang.y" + case 158: /* single_type_qualifier: storage_qualifier */ +#line 1397 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6929 "MachineIndependent/glslang_tab.cpp" +#line 7099 "MachineIndependent/glslang_tab.cpp" break; - case 158: /* single_type_qualifier: layout_qualifier */ -#line 1394 "MachineIndependent/glslang.y" + case 159: /* single_type_qualifier: layout_qualifier */ +#line 1400 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6937 "MachineIndependent/glslang_tab.cpp" +#line 7107 "MachineIndependent/glslang_tab.cpp" break; - case 159: /* single_type_qualifier: precision_qualifier */ -#line 1397 "MachineIndependent/glslang.y" + case 160: /* single_type_qualifier: precision_qualifier */ +#line 1403 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6946 "MachineIndependent/glslang_tab.cpp" +#line 7116 "MachineIndependent/glslang_tab.cpp" break; - case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1401 "MachineIndependent/glslang.y" + case 161: /* single_type_qualifier: interpolation_qualifier */ +#line 1407 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6955 "MachineIndependent/glslang_tab.cpp" +#line 7125 "MachineIndependent/glslang_tab.cpp" break; - case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1405 "MachineIndependent/glslang.y" + case 162: /* single_type_qualifier: invariant_qualifier */ +#line 1411 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6964 "MachineIndependent/glslang_tab.cpp" +#line 7134 "MachineIndependent/glslang_tab.cpp" break; - case 162: /* single_type_qualifier: precise_qualifier */ -#line 1409 "MachineIndependent/glslang.y" + case 163: /* single_type_qualifier: precise_qualifier */ +#line 1415 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6973 "MachineIndependent/glslang_tab.cpp" +#line 7143 "MachineIndependent/glslang_tab.cpp" break; - case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1413 "MachineIndependent/glslang.y" + case 164: /* single_type_qualifier: non_uniform_qualifier */ +#line 1419 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6981 "MachineIndependent/glslang_tab.cpp" +#line 7151 "MachineIndependent/glslang_tab.cpp" break; - case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1416 "MachineIndependent/glslang.y" + case 165: /* single_type_qualifier: spirv_storage_class_qualifier */ +#line 1422 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6991 "MachineIndependent/glslang_tab.cpp" +#line 7161 "MachineIndependent/glslang_tab.cpp" break; - case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1421 "MachineIndependent/glslang.y" + case 166: /* single_type_qualifier: spirv_decorate_qualifier */ +#line 1427 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 7000 "MachineIndependent/glslang_tab.cpp" +#line 7170 "MachineIndependent/glslang_tab.cpp" break; - case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1425 "MachineIndependent/glslang.y" + case 167: /* single_type_qualifier: SPIRV_BY_REFERENCE */ +#line 1431 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 7010 "MachineIndependent/glslang_tab.cpp" +#line 7180 "MachineIndependent/glslang_tab.cpp" break; - case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1430 "MachineIndependent/glslang.y" + case 168: /* single_type_qualifier: SPIRV_LITERAL */ +#line 1436 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 7020 "MachineIndependent/glslang_tab.cpp" +#line 7190 "MachineIndependent/glslang_tab.cpp" break; - case 168: /* storage_qualifier: CONST */ -#line 1438 "MachineIndependent/glslang.y" + case 169: /* storage_qualifier: CONST */ +#line 1444 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 7029 "MachineIndependent/glslang_tab.cpp" +#line 7199 "MachineIndependent/glslang_tab.cpp" break; - case 169: /* storage_qualifier: INOUT */ -#line 1442 "MachineIndependent/glslang.y" + case 170: /* storage_qualifier: INOUT */ +#line 1448 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 7039 "MachineIndependent/glslang_tab.cpp" +#line 7209 "MachineIndependent/glslang_tab.cpp" break; - case 170: /* storage_qualifier: IN */ -#line 1447 "MachineIndependent/glslang.y" + case 171: /* storage_qualifier: IN */ +#line 1453 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 7050 "MachineIndependent/glslang_tab.cpp" +#line 7220 "MachineIndependent/glslang_tab.cpp" break; - case 171: /* storage_qualifier: OUT */ -#line 1453 "MachineIndependent/glslang.y" + case 172: /* storage_qualifier: OUT */ +#line 1459 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 7061 "MachineIndependent/glslang_tab.cpp" +#line 7231 "MachineIndependent/glslang_tab.cpp" break; - case 172: /* storage_qualifier: CENTROID */ -#line 1459 "MachineIndependent/glslang.y" + case 173: /* storage_qualifier: CENTROID */ +#line 1465 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -7069,31 +7239,31 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 7073 "MachineIndependent/glslang_tab.cpp" +#line 7243 "MachineIndependent/glslang_tab.cpp" break; - case 173: /* storage_qualifier: UNIFORM */ -#line 1466 "MachineIndependent/glslang.y" + case 174: /* storage_qualifier: UNIFORM */ +#line 1472 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 7083 "MachineIndependent/glslang_tab.cpp" +#line 7253 "MachineIndependent/glslang_tab.cpp" break; - case 174: /* storage_qualifier: TILEIMAGEEXT */ -#line 1471 "MachineIndependent/glslang.y" + case 175: /* storage_qualifier: TILEIMAGEEXT */ +#line 1477 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 7093 "MachineIndependent/glslang_tab.cpp" +#line 7263 "MachineIndependent/glslang_tab.cpp" break; - case 175: /* storage_qualifier: SHARED */ -#line 1476 "MachineIndependent/glslang.y" + case 176: /* storage_qualifier: SHARED */ +#line 1482 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -7102,21 +7272,21 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7106 "MachineIndependent/glslang_tab.cpp" +#line 7276 "MachineIndependent/glslang_tab.cpp" break; - case 176: /* storage_qualifier: BUFFER */ -#line 1484 "MachineIndependent/glslang.y" + case 177: /* storage_qualifier: BUFFER */ +#line 1490 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7116 "MachineIndependent/glslang_tab.cpp" +#line 7286 "MachineIndependent/glslang_tab.cpp" break; - case 177: /* storage_qualifier: ATTRIBUTE */ -#line 1489 "MachineIndependent/glslang.y" + case 178: /* storage_qualifier: ATTRIBUTE */ +#line 1495 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7129,11 +7299,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7133 "MachineIndependent/glslang_tab.cpp" +#line 7303 "MachineIndependent/glslang_tab.cpp" break; - case 178: /* storage_qualifier: VARYING */ -#line 1501 "MachineIndependent/glslang.y" + case 179: /* storage_qualifier: VARYING */ +#line 1507 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7148,32 +7318,32 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7152 "MachineIndependent/glslang_tab.cpp" +#line 7322 "MachineIndependent/glslang_tab.cpp" break; - case 179: /* storage_qualifier: PATCH */ -#line 1515 "MachineIndependent/glslang.y" + case 180: /* storage_qualifier: PATCH */ +#line 1521 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7163 "MachineIndependent/glslang_tab.cpp" +#line 7333 "MachineIndependent/glslang_tab.cpp" break; - case 180: /* storage_qualifier: SAMPLE */ -#line 1521 "MachineIndependent/glslang.y" + case 181: /* storage_qualifier: SAMPLE */ +#line 1527 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7173 "MachineIndependent/glslang_tab.cpp" +#line 7343 "MachineIndependent/glslang_tab.cpp" break; - case 181: /* storage_qualifier: HITATTRNV */ -#line 1526 "MachineIndependent/glslang.y" + case 182: /* storage_qualifier: HITATTRNV */ +#line 1532 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7182,11 +7352,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7186 "MachineIndependent/glslang_tab.cpp" +#line 7356 "MachineIndependent/glslang_tab.cpp" break; - case 182: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1534 "MachineIndependent/glslang.y" + case 183: /* storage_qualifier: HITOBJECTATTRNV */ +#line 1540 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask @@ -7195,11 +7365,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7199 "MachineIndependent/glslang_tab.cpp" +#line 7369 "MachineIndependent/glslang_tab.cpp" break; - case 183: /* storage_qualifier: HITATTREXT */ -#line 1542 "MachineIndependent/glslang.y" + case 184: /* storage_qualifier: HITATTREXT */ +#line 1548 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7208,11 +7378,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7212 "MachineIndependent/glslang_tab.cpp" +#line 7382 "MachineIndependent/glslang_tab.cpp" break; - case 184: /* storage_qualifier: PAYLOADNV */ -#line 1550 "MachineIndependent/glslang.y" + case 185: /* storage_qualifier: PAYLOADNV */ +#line 1556 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7221,11 +7391,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7225 "MachineIndependent/glslang_tab.cpp" +#line 7395 "MachineIndependent/glslang_tab.cpp" break; - case 185: /* storage_qualifier: PAYLOADEXT */ -#line 1558 "MachineIndependent/glslang.y" + case 186: /* storage_qualifier: PAYLOADEXT */ +#line 1564 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7234,11 +7404,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7238 "MachineIndependent/glslang_tab.cpp" +#line 7408 "MachineIndependent/glslang_tab.cpp" break; - case 186: /* storage_qualifier: PAYLOADINNV */ -#line 1566 "MachineIndependent/glslang.y" + case 187: /* storage_qualifier: PAYLOADINNV */ +#line 1572 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7247,11 +7417,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7251 "MachineIndependent/glslang_tab.cpp" +#line 7421 "MachineIndependent/glslang_tab.cpp" break; - case 187: /* storage_qualifier: PAYLOADINEXT */ -#line 1574 "MachineIndependent/glslang.y" + case 188: /* storage_qualifier: PAYLOADINEXT */ +#line 1580 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7260,11 +7430,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7264 "MachineIndependent/glslang_tab.cpp" +#line 7434 "MachineIndependent/glslang_tab.cpp" break; - case 188: /* storage_qualifier: CALLDATANV */ -#line 1582 "MachineIndependent/glslang.y" + case 189: /* storage_qualifier: CALLDATANV */ +#line 1588 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7273,11 +7443,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7277 "MachineIndependent/glslang_tab.cpp" +#line 7447 "MachineIndependent/glslang_tab.cpp" break; - case 189: /* storage_qualifier: CALLDATAEXT */ -#line 1590 "MachineIndependent/glslang.y" + case 190: /* storage_qualifier: CALLDATAEXT */ +#line 1596 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7286,11 +7456,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7290 "MachineIndependent/glslang_tab.cpp" +#line 7460 "MachineIndependent/glslang_tab.cpp" break; - case 190: /* storage_qualifier: CALLDATAINNV */ -#line 1598 "MachineIndependent/glslang.y" + case 191: /* storage_qualifier: CALLDATAINNV */ +#line 1604 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7298,11 +7468,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7302 "MachineIndependent/glslang_tab.cpp" +#line 7472 "MachineIndependent/glslang_tab.cpp" break; - case 191: /* storage_qualifier: CALLDATAINEXT */ -#line 1605 "MachineIndependent/glslang.y" + case 192: /* storage_qualifier: CALLDATAINEXT */ +#line 1611 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7310,147 +7480,147 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7314 "MachineIndependent/glslang_tab.cpp" +#line 7484 "MachineIndependent/glslang_tab.cpp" break; - case 192: /* storage_qualifier: COHERENT */ -#line 1612 "MachineIndependent/glslang.y" + case 193: /* storage_qualifier: COHERENT */ +#line 1618 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7323 "MachineIndependent/glslang_tab.cpp" +#line 7493 "MachineIndependent/glslang_tab.cpp" break; - case 193: /* storage_qualifier: DEVICECOHERENT */ -#line 1616 "MachineIndependent/glslang.y" + case 194: /* storage_qualifier: DEVICECOHERENT */ +#line 1622 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7333 "MachineIndependent/glslang_tab.cpp" +#line 7503 "MachineIndependent/glslang_tab.cpp" break; - case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1621 "MachineIndependent/glslang.y" + case 195: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1627 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7343 "MachineIndependent/glslang_tab.cpp" +#line 7513 "MachineIndependent/glslang_tab.cpp" break; - case 195: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1626 "MachineIndependent/glslang.y" + case 196: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1632 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7353 "MachineIndependent/glslang_tab.cpp" +#line 7523 "MachineIndependent/glslang_tab.cpp" break; - case 196: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1631 "MachineIndependent/glslang.y" + case 197: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1637 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7363 "MachineIndependent/glslang_tab.cpp" +#line 7533 "MachineIndependent/glslang_tab.cpp" break; - case 197: /* storage_qualifier: NONPRIVATE */ -#line 1636 "MachineIndependent/glslang.y" + case 198: /* storage_qualifier: NONPRIVATE */ +#line 1642 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7373 "MachineIndependent/glslang_tab.cpp" +#line 7543 "MachineIndependent/glslang_tab.cpp" break; - case 198: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1641 "MachineIndependent/glslang.y" + case 199: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1647 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7383 "MachineIndependent/glslang_tab.cpp" +#line 7553 "MachineIndependent/glslang_tab.cpp" break; - case 199: /* storage_qualifier: VOLATILE */ -#line 1646 "MachineIndependent/glslang.y" + case 200: /* storage_qualifier: VOLATILE */ +#line 1652 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7392 "MachineIndependent/glslang_tab.cpp" +#line 7562 "MachineIndependent/glslang_tab.cpp" break; - case 200: /* storage_qualifier: RESTRICT */ -#line 1650 "MachineIndependent/glslang.y" + case 201: /* storage_qualifier: RESTRICT */ +#line 1656 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7401 "MachineIndependent/glslang_tab.cpp" +#line 7571 "MachineIndependent/glslang_tab.cpp" break; - case 201: /* storage_qualifier: READONLY */ -#line 1654 "MachineIndependent/glslang.y" + case 202: /* storage_qualifier: READONLY */ +#line 1660 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7410 "MachineIndependent/glslang_tab.cpp" +#line 7580 "MachineIndependent/glslang_tab.cpp" break; - case 202: /* storage_qualifier: WRITEONLY */ -#line 1658 "MachineIndependent/glslang.y" + case 203: /* storage_qualifier: WRITEONLY */ +#line 1664 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7419 "MachineIndependent/glslang_tab.cpp" +#line 7589 "MachineIndependent/glslang_tab.cpp" break; - case 203: /* storage_qualifier: NONTEMPORAL */ -#line 1662 "MachineIndependent/glslang.y" + case 204: /* storage_qualifier: NONTEMPORAL */ +#line 1668 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nontemporal = true; } -#line 7428 "MachineIndependent/glslang_tab.cpp" +#line 7598 "MachineIndependent/glslang_tab.cpp" break; - case 204: /* storage_qualifier: SUBROUTINE */ -#line 1666 "MachineIndependent/glslang.y" + case 205: /* storage_qualifier: SUBROUTINE */ +#line 1672 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7439 "MachineIndependent/glslang_tab.cpp" +#line 7609 "MachineIndependent/glslang_tab.cpp" break; - case 205: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1672 "MachineIndependent/glslang.y" + case 206: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1678 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7450 "MachineIndependent/glslang_tab.cpp" +#line 7620 "MachineIndependent/glslang_tab.cpp" break; - case 206: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1678 "MachineIndependent/glslang.y" + case 207: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ +#line 1684 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7458,38 +7628,38 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7462 "MachineIndependent/glslang_tab.cpp" +#line 7632 "MachineIndependent/glslang_tab.cpp" break; - case 207: /* non_uniform_qualifier: NONUNIFORM */ -#line 1688 "MachineIndependent/glslang.y" + case 208: /* non_uniform_qualifier: NONUNIFORM */ +#line 1694 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7471 "MachineIndependent/glslang_tab.cpp" +#line 7641 "MachineIndependent/glslang_tab.cpp" break; - case 208: /* type_name_list: IDENTIFIER */ -#line 1695 "MachineIndependent/glslang.y" + case 209: /* type_name_list: IDENTIFIER */ +#line 1701 "MachineIndependent/glslang.y" { // TODO } -#line 7479 "MachineIndependent/glslang_tab.cpp" +#line 7649 "MachineIndependent/glslang_tab.cpp" break; - case 209: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1698 "MachineIndependent/glslang.y" + case 210: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1704 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7489 "MachineIndependent/glslang_tab.cpp" +#line 7659 "MachineIndependent/glslang_tab.cpp" break; - case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1706 "MachineIndependent/glslang.y" + case 211: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1712 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); @@ -7497,11 +7667,11 @@ yyreduce: parseContext.typeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); } -#line 7501 "MachineIndependent/glslang_tab.cpp" +#line 7671 "MachineIndependent/glslang_tab.cpp" break; - case 211: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1713 "MachineIndependent/glslang.y" + case 212: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1719 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7510,21 +7680,21 @@ yyreduce: (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; parseContext.typeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } -#line 7514 "MachineIndependent/glslang_tab.cpp" +#line 7684 "MachineIndependent/glslang_tab.cpp" break; - case 212: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1724 "MachineIndependent/glslang.y" + case 213: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1730 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7524 "MachineIndependent/glslang_tab.cpp" +#line 7694 "MachineIndependent/glslang_tab.cpp" break; - case 213: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1729 "MachineIndependent/glslang.y" + case 214: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1735 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7533,20 +7703,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7537 "MachineIndependent/glslang_tab.cpp" +#line 7707 "MachineIndependent/glslang_tab.cpp" break; - case 214: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1737 "MachineIndependent/glslang.y" + case 215: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1743 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7546 "MachineIndependent/glslang_tab.cpp" +#line 7716 "MachineIndependent/glslang_tab.cpp" break; - case 215: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1741 "MachineIndependent/glslang.y" + case 216: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1747 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7554,46 +7724,46 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7558 "MachineIndependent/glslang_tab.cpp" +#line 7728 "MachineIndependent/glslang_tab.cpp" break; - case 216: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1751 "MachineIndependent/glslang.y" + case 217: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1757 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7566 "MachineIndependent/glslang_tab.cpp" +#line 7736 "MachineIndependent/glslang_tab.cpp" break; - case 217: /* type_parameter_specifier_opt: %empty */ -#line 1754 "MachineIndependent/glslang.y" + case 218: /* type_parameter_specifier_opt: %empty */ +#line 1760 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7574 "MachineIndependent/glslang_tab.cpp" +#line 7744 "MachineIndependent/glslang_tab.cpp" break; - case 218: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1760 "MachineIndependent/glslang.y" + case 219: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1766 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7582 "MachineIndependent/glslang_tab.cpp" +#line 7752 "MachineIndependent/glslang_tab.cpp" break; - case 219: /* type_parameter_specifier_list: type_specifier */ -#line 1766 "MachineIndependent/glslang.y" + case 220: /* type_parameter_specifier_list: type_specifier */ +#line 1772 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; (yyval.interm.typeParameters)->spirvType = (yyvsp[0].interm.type).spirvType; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } -#line 7593 "MachineIndependent/glslang_tab.cpp" +#line 7763 "MachineIndependent/glslang_tab.cpp" break; - case 220: /* type_parameter_specifier_list: unary_expression */ -#line 1772 "MachineIndependent/glslang.y" + case 221: /* type_parameter_specifier_list: unary_expression */ +#line 1778 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; @@ -7602,11 +7772,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7606 "MachineIndependent/glslang_tab.cpp" +#line 7776 "MachineIndependent/glslang_tab.cpp" break; - case 221: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1780 "MachineIndependent/glslang.y" + case 222: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1786 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7614,300 +7784,300 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7618 "MachineIndependent/glslang_tab.cpp" +#line 7788 "MachineIndependent/glslang_tab.cpp" break; - case 222: /* type_specifier_nonarray: VOID */ -#line 1790 "MachineIndependent/glslang.y" + case 223: /* type_specifier_nonarray: VOID */ +#line 1796 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7627 "MachineIndependent/glslang_tab.cpp" +#line 7797 "MachineIndependent/glslang_tab.cpp" break; - case 223: /* type_specifier_nonarray: FLOAT */ -#line 1794 "MachineIndependent/glslang.y" + case 224: /* type_specifier_nonarray: FLOAT */ +#line 1800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7636 "MachineIndependent/glslang_tab.cpp" +#line 7806 "MachineIndependent/glslang_tab.cpp" break; - case 224: /* type_specifier_nonarray: INT */ -#line 1798 "MachineIndependent/glslang.y" + case 225: /* type_specifier_nonarray: INT */ +#line 1804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7645 "MachineIndependent/glslang_tab.cpp" +#line 7815 "MachineIndependent/glslang_tab.cpp" break; - case 225: /* type_specifier_nonarray: UINT */ -#line 1802 "MachineIndependent/glslang.y" + case 226: /* type_specifier_nonarray: UINT */ +#line 1808 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7655 "MachineIndependent/glslang_tab.cpp" +#line 7825 "MachineIndependent/glslang_tab.cpp" break; - case 226: /* type_specifier_nonarray: BOOL */ -#line 1807 "MachineIndependent/glslang.y" + case 227: /* type_specifier_nonarray: BOOL */ +#line 1813 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7664 "MachineIndependent/glslang_tab.cpp" +#line 7834 "MachineIndependent/glslang_tab.cpp" break; - case 227: /* type_specifier_nonarray: VEC2 */ -#line 1811 "MachineIndependent/glslang.y" + case 228: /* type_specifier_nonarray: VEC2 */ +#line 1817 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7674 "MachineIndependent/glslang_tab.cpp" +#line 7844 "MachineIndependent/glslang_tab.cpp" break; - case 228: /* type_specifier_nonarray: VEC3 */ -#line 1816 "MachineIndependent/glslang.y" + case 229: /* type_specifier_nonarray: VEC3 */ +#line 1822 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7684 "MachineIndependent/glslang_tab.cpp" +#line 7854 "MachineIndependent/glslang_tab.cpp" break; - case 229: /* type_specifier_nonarray: VEC4 */ -#line 1821 "MachineIndependent/glslang.y" + case 230: /* type_specifier_nonarray: VEC4 */ +#line 1827 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7694 "MachineIndependent/glslang_tab.cpp" +#line 7864 "MachineIndependent/glslang_tab.cpp" break; - case 230: /* type_specifier_nonarray: BVEC2 */ -#line 1826 "MachineIndependent/glslang.y" + case 231: /* type_specifier_nonarray: BVEC2 */ +#line 1832 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7704 "MachineIndependent/glslang_tab.cpp" +#line 7874 "MachineIndependent/glslang_tab.cpp" break; - case 231: /* type_specifier_nonarray: BVEC3 */ -#line 1831 "MachineIndependent/glslang.y" + case 232: /* type_specifier_nonarray: BVEC3 */ +#line 1837 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7714 "MachineIndependent/glslang_tab.cpp" +#line 7884 "MachineIndependent/glslang_tab.cpp" break; - case 232: /* type_specifier_nonarray: BVEC4 */ -#line 1836 "MachineIndependent/glslang.y" + case 233: /* type_specifier_nonarray: BVEC4 */ +#line 1842 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7724 "MachineIndependent/glslang_tab.cpp" +#line 7894 "MachineIndependent/glslang_tab.cpp" break; - case 233: /* type_specifier_nonarray: IVEC2 */ -#line 1841 "MachineIndependent/glslang.y" + case 234: /* type_specifier_nonarray: IVEC2 */ +#line 1847 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7734 "MachineIndependent/glslang_tab.cpp" +#line 7904 "MachineIndependent/glslang_tab.cpp" break; - case 234: /* type_specifier_nonarray: IVEC3 */ -#line 1846 "MachineIndependent/glslang.y" + case 235: /* type_specifier_nonarray: IVEC3 */ +#line 1852 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7744 "MachineIndependent/glslang_tab.cpp" +#line 7914 "MachineIndependent/glslang_tab.cpp" break; - case 235: /* type_specifier_nonarray: IVEC4 */ -#line 1851 "MachineIndependent/glslang.y" + case 236: /* type_specifier_nonarray: IVEC4 */ +#line 1857 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7754 "MachineIndependent/glslang_tab.cpp" +#line 7924 "MachineIndependent/glslang_tab.cpp" break; - case 236: /* type_specifier_nonarray: UVEC2 */ -#line 1856 "MachineIndependent/glslang.y" - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(2); - } -#line 7765 "MachineIndependent/glslang_tab.cpp" - break; - - case 237: /* type_specifier_nonarray: UVEC3 */ + case 237: /* type_specifier_nonarray: UVEC2 */ #line 1862 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setVector(2); } -#line 7776 "MachineIndependent/glslang_tab.cpp" +#line 7935 "MachineIndependent/glslang_tab.cpp" break; - case 238: /* type_specifier_nonarray: UVEC4 */ + case 238: /* type_specifier_nonarray: UVEC3 */ #line 1868 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); + } +#line 7946 "MachineIndependent/glslang_tab.cpp" + break; + + case 239: /* type_specifier_nonarray: UVEC4 */ +#line 1874 "MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7787 "MachineIndependent/glslang_tab.cpp" +#line 7957 "MachineIndependent/glslang_tab.cpp" break; - case 239: /* type_specifier_nonarray: MAT2 */ -#line 1874 "MachineIndependent/glslang.y" + case 240: /* type_specifier_nonarray: MAT2 */ +#line 1880 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7797 "MachineIndependent/glslang_tab.cpp" +#line 7967 "MachineIndependent/glslang_tab.cpp" break; - case 240: /* type_specifier_nonarray: MAT3 */ -#line 1879 "MachineIndependent/glslang.y" + case 241: /* type_specifier_nonarray: MAT3 */ +#line 1885 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7807 "MachineIndependent/glslang_tab.cpp" +#line 7977 "MachineIndependent/glslang_tab.cpp" break; - case 241: /* type_specifier_nonarray: MAT4 */ -#line 1884 "MachineIndependent/glslang.y" + case 242: /* type_specifier_nonarray: MAT4 */ +#line 1890 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7817 "MachineIndependent/glslang_tab.cpp" +#line 7987 "MachineIndependent/glslang_tab.cpp" break; - case 242: /* type_specifier_nonarray: MAT2X2 */ -#line 1889 "MachineIndependent/glslang.y" + case 243: /* type_specifier_nonarray: MAT2X2 */ +#line 1895 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7827 "MachineIndependent/glslang_tab.cpp" +#line 7997 "MachineIndependent/glslang_tab.cpp" break; - case 243: /* type_specifier_nonarray: MAT2X3 */ -#line 1894 "MachineIndependent/glslang.y" + case 244: /* type_specifier_nonarray: MAT2X3 */ +#line 1900 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7837 "MachineIndependent/glslang_tab.cpp" +#line 8007 "MachineIndependent/glslang_tab.cpp" break; - case 244: /* type_specifier_nonarray: MAT2X4 */ -#line 1899 "MachineIndependent/glslang.y" + case 245: /* type_specifier_nonarray: MAT2X4 */ +#line 1905 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7847 "MachineIndependent/glslang_tab.cpp" +#line 8017 "MachineIndependent/glslang_tab.cpp" break; - case 245: /* type_specifier_nonarray: MAT3X2 */ -#line 1904 "MachineIndependent/glslang.y" + case 246: /* type_specifier_nonarray: MAT3X2 */ +#line 1910 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7857 "MachineIndependent/glslang_tab.cpp" +#line 8027 "MachineIndependent/glslang_tab.cpp" break; - case 246: /* type_specifier_nonarray: MAT3X3 */ -#line 1909 "MachineIndependent/glslang.y" + case 247: /* type_specifier_nonarray: MAT3X3 */ +#line 1915 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7867 "MachineIndependent/glslang_tab.cpp" +#line 8037 "MachineIndependent/glslang_tab.cpp" break; - case 247: /* type_specifier_nonarray: MAT3X4 */ -#line 1914 "MachineIndependent/glslang.y" + case 248: /* type_specifier_nonarray: MAT3X4 */ +#line 1920 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7877 "MachineIndependent/glslang_tab.cpp" +#line 8047 "MachineIndependent/glslang_tab.cpp" break; - case 248: /* type_specifier_nonarray: MAT4X2 */ -#line 1919 "MachineIndependent/glslang.y" + case 249: /* type_specifier_nonarray: MAT4X2 */ +#line 1925 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7887 "MachineIndependent/glslang_tab.cpp" +#line 8057 "MachineIndependent/glslang_tab.cpp" break; - case 249: /* type_specifier_nonarray: MAT4X3 */ -#line 1924 "MachineIndependent/glslang.y" + case 250: /* type_specifier_nonarray: MAT4X3 */ +#line 1930 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7897 "MachineIndependent/glslang_tab.cpp" +#line 8067 "MachineIndependent/glslang_tab.cpp" break; - case 250: /* type_specifier_nonarray: MAT4X4 */ -#line 1929 "MachineIndependent/glslang.y" + case 251: /* type_specifier_nonarray: MAT4X4 */ +#line 1935 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7907 "MachineIndependent/glslang_tab.cpp" +#line 8077 "MachineIndependent/glslang_tab.cpp" break; - case 251: /* type_specifier_nonarray: DOUBLE */ -#line 1934 "MachineIndependent/glslang.y" + case 252: /* type_specifier_nonarray: DOUBLE */ +#line 1940 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7915,156 +8085,150 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7919 "MachineIndependent/glslang_tab.cpp" +#line 8089 "MachineIndependent/glslang_tab.cpp" break; - case 252: /* type_specifier_nonarray: BFLOAT16_T */ -#line 1941 "MachineIndependent/glslang.y" + case 253: /* type_specifier_nonarray: BFLOAT16_T */ +#line 1947 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "bfloat16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; } -#line 7929 "MachineIndependent/glslang_tab.cpp" +#line 8099 "MachineIndependent/glslang_tab.cpp" break; - case 253: /* type_specifier_nonarray: FLOAT16_T */ -#line 1946 "MachineIndependent/glslang.y" + case 254: /* type_specifier_nonarray: FLOATE5M2_T */ +#line 1952 "MachineIndependent/glslang.y" + { + parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "floate5m2_t", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloatE5M2; + } +#line 8109 "MachineIndependent/glslang_tab.cpp" + break; + + case 255: /* type_specifier_nonarray: FLOATE4M3_T */ +#line 1957 "MachineIndependent/glslang.y" + { + parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "floate4m3_t", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloatE4M3; + } +#line 8119 "MachineIndependent/glslang_tab.cpp" + break; + + case 256: /* type_specifier_nonarray: FLOAT16_T */ +#line 1962 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7939 "MachineIndependent/glslang_tab.cpp" +#line 8129 "MachineIndependent/glslang_tab.cpp" break; - case 254: /* type_specifier_nonarray: FLOAT32_T */ -#line 1951 "MachineIndependent/glslang.y" + case 257: /* type_specifier_nonarray: FLOAT32_T */ +#line 1967 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7949 "MachineIndependent/glslang_tab.cpp" +#line 8139 "MachineIndependent/glslang_tab.cpp" break; - case 255: /* type_specifier_nonarray: FLOAT64_T */ -#line 1956 "MachineIndependent/glslang.y" + case 258: /* type_specifier_nonarray: FLOAT64_T */ +#line 1972 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7959 "MachineIndependent/glslang_tab.cpp" +#line 8149 "MachineIndependent/glslang_tab.cpp" break; - case 256: /* type_specifier_nonarray: INT8_T */ -#line 1961 "MachineIndependent/glslang.y" + case 259: /* type_specifier_nonarray: INT8_T */ +#line 1977 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7969 "MachineIndependent/glslang_tab.cpp" +#line 8159 "MachineIndependent/glslang_tab.cpp" break; - case 257: /* type_specifier_nonarray: UINT8_T */ -#line 1966 "MachineIndependent/glslang.y" + case 260: /* type_specifier_nonarray: UINT8_T */ +#line 1982 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7979 "MachineIndependent/glslang_tab.cpp" +#line 8169 "MachineIndependent/glslang_tab.cpp" break; - case 258: /* type_specifier_nonarray: INT16_T */ -#line 1971 "MachineIndependent/glslang.y" + case 261: /* type_specifier_nonarray: INT16_T */ +#line 1987 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7989 "MachineIndependent/glslang_tab.cpp" +#line 8179 "MachineIndependent/glslang_tab.cpp" break; - case 259: /* type_specifier_nonarray: UINT16_T */ -#line 1976 "MachineIndependent/glslang.y" + case 262: /* type_specifier_nonarray: UINT16_T */ +#line 1992 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7999 "MachineIndependent/glslang_tab.cpp" +#line 8189 "MachineIndependent/glslang_tab.cpp" break; - case 260: /* type_specifier_nonarray: INT32_T */ -#line 1981 "MachineIndependent/glslang.y" + case 263: /* type_specifier_nonarray: INT32_T */ +#line 1997 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 8009 "MachineIndependent/glslang_tab.cpp" +#line 8199 "MachineIndependent/glslang_tab.cpp" break; - case 261: /* type_specifier_nonarray: UINT32_T */ -#line 1986 "MachineIndependent/glslang.y" + case 264: /* type_specifier_nonarray: UINT32_T */ +#line 2002 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 8019 "MachineIndependent/glslang_tab.cpp" +#line 8209 "MachineIndependent/glslang_tab.cpp" break; - case 262: /* type_specifier_nonarray: INT64_T */ -#line 1991 "MachineIndependent/glslang.y" + case 265: /* type_specifier_nonarray: INT64_T */ +#line 2007 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 8029 "MachineIndependent/glslang_tab.cpp" +#line 8219 "MachineIndependent/glslang_tab.cpp" break; - case 263: /* type_specifier_nonarray: UINT64_T */ -#line 1996 "MachineIndependent/glslang.y" + case 266: /* type_specifier_nonarray: UINT64_T */ +#line 2012 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 8039 "MachineIndependent/glslang_tab.cpp" +#line 8229 "MachineIndependent/glslang_tab.cpp" break; - case 264: /* type_specifier_nonarray: DVEC2 */ -#line 2001 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); - if (! 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(2); - } -#line 8052 "MachineIndependent/glslang_tab.cpp" - break; - - case 265: /* type_specifier_nonarray: DVEC3 */ -#line 2009 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); - if (! 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(3); - } -#line 8065 "MachineIndependent/glslang_tab.cpp" - break; - - case 266: /* type_specifier_nonarray: DVEC4 */ + case 267: /* type_specifier_nonarray: DVEC2 */ #line 2017 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); @@ -8072,501 +8236,515 @@ yyreduce: 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); + (yyval.interm.type).setVector(2); } -#line 8078 "MachineIndependent/glslang_tab.cpp" +#line 8242 "MachineIndependent/glslang_tab.cpp" break; - case 267: /* type_specifier_nonarray: BF16VEC2 */ + case 268: /* type_specifier_nonarray: DVEC3 */ #line 2025 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); + if (! 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(3); + } +#line 8255 "MachineIndependent/glslang_tab.cpp" + break; + + case 269: /* type_specifier_nonarray: DVEC4 */ +#line 2033 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); + if (! 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 8268 "MachineIndependent/glslang_tab.cpp" + break; + + case 270: /* type_specifier_nonarray: BF16VEC2 */ +#line 2041 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; (yyval.interm.type).setVector(2); } -#line 8089 "MachineIndependent/glslang_tab.cpp" +#line 8279 "MachineIndependent/glslang_tab.cpp" break; - case 268: /* type_specifier_nonarray: BF16VEC3 */ -#line 2031 "MachineIndependent/glslang.y" + case 271: /* type_specifier_nonarray: BF16VEC3 */ +#line 2047 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; (yyval.interm.type).setVector(3); } -#line 8100 "MachineIndependent/glslang_tab.cpp" +#line 8290 "MachineIndependent/glslang_tab.cpp" break; - case 269: /* type_specifier_nonarray: BF16VEC4 */ -#line 2037 "MachineIndependent/glslang.y" + case 272: /* type_specifier_nonarray: BF16VEC4 */ +#line 2053 "MachineIndependent/glslang.y" { parseContext.bfloat16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBFloat16; (yyval.interm.type).setVector(4); } -#line 8111 "MachineIndependent/glslang_tab.cpp" +#line 8301 "MachineIndependent/glslang_tab.cpp" break; - case 270: /* type_specifier_nonarray: F16VEC2 */ -#line 2043 "MachineIndependent/glslang.y" + case 273: /* type_specifier_nonarray: FE5M2VEC2 */ +#line 2059 "MachineIndependent/glslang.y" + { + parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloatE5M2; + (yyval.interm.type).setVector(2); + } +#line 8312 "MachineIndependent/glslang_tab.cpp" + break; + + case 274: /* type_specifier_nonarray: FE5M2VEC3 */ +#line 2065 "MachineIndependent/glslang.y" + { + parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloatE5M2; + (yyval.interm.type).setVector(3); + } +#line 8323 "MachineIndependent/glslang_tab.cpp" + break; + + case 275: /* type_specifier_nonarray: FE5M2VEC4 */ +#line 2071 "MachineIndependent/glslang.y" + { + parseContext.floate5m2ScalarVectorCheck((yyvsp[0].lex).loc, "fe5m2 vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloatE5M2; + (yyval.interm.type).setVector(4); + } +#line 8334 "MachineIndependent/glslang_tab.cpp" + break; + + case 276: /* type_specifier_nonarray: FE4M3VEC2 */ +#line 2077 "MachineIndependent/glslang.y" + { + parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloatE4M3; + (yyval.interm.type).setVector(2); + } +#line 8345 "MachineIndependent/glslang_tab.cpp" + break; + + case 277: /* type_specifier_nonarray: FE4M3VEC3 */ +#line 2083 "MachineIndependent/glslang.y" + { + parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloatE4M3; + (yyval.interm.type).setVector(3); + } +#line 8356 "MachineIndependent/glslang_tab.cpp" + break; + + case 278: /* type_specifier_nonarray: FE4M3VEC4 */ +#line 2089 "MachineIndependent/glslang.y" + { + parseContext.floate4m3ScalarVectorCheck((yyvsp[0].lex).loc, "fe4m3 vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloatE4M3; + (yyval.interm.type).setVector(4); + } +#line 8367 "MachineIndependent/glslang_tab.cpp" + break; + + case 279: /* type_specifier_nonarray: F16VEC2 */ +#line 2095 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 8122 "MachineIndependent/glslang_tab.cpp" +#line 8378 "MachineIndependent/glslang_tab.cpp" break; - case 271: /* type_specifier_nonarray: F16VEC3 */ -#line 2049 "MachineIndependent/glslang.y" + case 280: /* type_specifier_nonarray: F16VEC3 */ +#line 2101 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 8133 "MachineIndependent/glslang_tab.cpp" +#line 8389 "MachineIndependent/glslang_tab.cpp" break; - case 272: /* type_specifier_nonarray: F16VEC4 */ -#line 2055 "MachineIndependent/glslang.y" + case 281: /* type_specifier_nonarray: F16VEC4 */ +#line 2107 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 8144 "MachineIndependent/glslang_tab.cpp" +#line 8400 "MachineIndependent/glslang_tab.cpp" break; - case 273: /* type_specifier_nonarray: F32VEC2 */ -#line 2061 "MachineIndependent/glslang.y" + case 282: /* type_specifier_nonarray: F32VEC2 */ +#line 2113 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8155 "MachineIndependent/glslang_tab.cpp" +#line 8411 "MachineIndependent/glslang_tab.cpp" break; - case 274: /* type_specifier_nonarray: F32VEC3 */ -#line 2067 "MachineIndependent/glslang.y" + case 283: /* type_specifier_nonarray: F32VEC3 */ +#line 2119 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8166 "MachineIndependent/glslang_tab.cpp" +#line 8422 "MachineIndependent/glslang_tab.cpp" break; - case 275: /* type_specifier_nonarray: F32VEC4 */ -#line 2073 "MachineIndependent/glslang.y" + case 284: /* type_specifier_nonarray: F32VEC4 */ +#line 2125 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8177 "MachineIndependent/glslang_tab.cpp" +#line 8433 "MachineIndependent/glslang_tab.cpp" break; - case 276: /* type_specifier_nonarray: F64VEC2 */ -#line 2079 "MachineIndependent/glslang.y" + case 285: /* type_specifier_nonarray: F64VEC2 */ +#line 2131 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8188 "MachineIndependent/glslang_tab.cpp" +#line 8444 "MachineIndependent/glslang_tab.cpp" break; - case 277: /* type_specifier_nonarray: F64VEC3 */ -#line 2085 "MachineIndependent/glslang.y" + case 286: /* type_specifier_nonarray: F64VEC3 */ +#line 2137 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8199 "MachineIndependent/glslang_tab.cpp" +#line 8455 "MachineIndependent/glslang_tab.cpp" break; - case 278: /* type_specifier_nonarray: F64VEC4 */ -#line 2091 "MachineIndependent/glslang.y" + case 287: /* type_specifier_nonarray: F64VEC4 */ +#line 2143 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8210 "MachineIndependent/glslang_tab.cpp" +#line 8466 "MachineIndependent/glslang_tab.cpp" break; - case 279: /* type_specifier_nonarray: I8VEC2 */ -#line 2097 "MachineIndependent/glslang.y" + case 288: /* type_specifier_nonarray: I8VEC2 */ +#line 2149 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8221 "MachineIndependent/glslang_tab.cpp" +#line 8477 "MachineIndependent/glslang_tab.cpp" break; - case 280: /* type_specifier_nonarray: I8VEC3 */ -#line 2103 "MachineIndependent/glslang.y" + case 289: /* type_specifier_nonarray: I8VEC3 */ +#line 2155 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8232 "MachineIndependent/glslang_tab.cpp" +#line 8488 "MachineIndependent/glslang_tab.cpp" break; - case 281: /* type_specifier_nonarray: I8VEC4 */ -#line 2109 "MachineIndependent/glslang.y" + case 290: /* type_specifier_nonarray: I8VEC4 */ +#line 2161 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8243 "MachineIndependent/glslang_tab.cpp" +#line 8499 "MachineIndependent/glslang_tab.cpp" break; - case 282: /* type_specifier_nonarray: I16VEC2 */ -#line 2115 "MachineIndependent/glslang.y" + case 291: /* type_specifier_nonarray: I16VEC2 */ +#line 2167 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8254 "MachineIndependent/glslang_tab.cpp" +#line 8510 "MachineIndependent/glslang_tab.cpp" break; - case 283: /* type_specifier_nonarray: I16VEC3 */ -#line 2121 "MachineIndependent/glslang.y" + case 292: /* type_specifier_nonarray: I16VEC3 */ +#line 2173 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8265 "MachineIndependent/glslang_tab.cpp" +#line 8521 "MachineIndependent/glslang_tab.cpp" break; - case 284: /* type_specifier_nonarray: I16VEC4 */ -#line 2127 "MachineIndependent/glslang.y" + case 293: /* type_specifier_nonarray: I16VEC4 */ +#line 2179 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8276 "MachineIndependent/glslang_tab.cpp" +#line 8532 "MachineIndependent/glslang_tab.cpp" break; - case 285: /* type_specifier_nonarray: I32VEC2 */ -#line 2133 "MachineIndependent/glslang.y" + case 294: /* type_specifier_nonarray: I32VEC2 */ +#line 2185 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8287 "MachineIndependent/glslang_tab.cpp" +#line 8543 "MachineIndependent/glslang_tab.cpp" break; - case 286: /* type_specifier_nonarray: I32VEC3 */ -#line 2139 "MachineIndependent/glslang.y" + case 295: /* type_specifier_nonarray: I32VEC3 */ +#line 2191 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8298 "MachineIndependent/glslang_tab.cpp" +#line 8554 "MachineIndependent/glslang_tab.cpp" break; - case 287: /* type_specifier_nonarray: I32VEC4 */ -#line 2145 "MachineIndependent/glslang.y" + case 296: /* type_specifier_nonarray: I32VEC4 */ +#line 2197 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8309 "MachineIndependent/glslang_tab.cpp" - break; - - case 288: /* type_specifier_nonarray: I64VEC2 */ -#line 2151 "MachineIndependent/glslang.y" - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(2); - } -#line 8320 "MachineIndependent/glslang_tab.cpp" - break; - - case 289: /* type_specifier_nonarray: I64VEC3 */ -#line 2157 "MachineIndependent/glslang.y" - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(3); - } -#line 8331 "MachineIndependent/glslang_tab.cpp" - break; - - case 290: /* type_specifier_nonarray: I64VEC4 */ -#line 2163 "MachineIndependent/glslang.y" - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(4); - } -#line 8342 "MachineIndependent/glslang_tab.cpp" - break; - - case 291: /* type_specifier_nonarray: U8VEC2 */ -#line 2169 "MachineIndependent/glslang.y" - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(2); - } -#line 8353 "MachineIndependent/glslang_tab.cpp" - break; - - case 292: /* type_specifier_nonarray: U8VEC3 */ -#line 2175 "MachineIndependent/glslang.y" - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(3); - } -#line 8364 "MachineIndependent/glslang_tab.cpp" - break; - - case 293: /* type_specifier_nonarray: U8VEC4 */ -#line 2181 "MachineIndependent/glslang.y" - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(4); - } -#line 8375 "MachineIndependent/glslang_tab.cpp" - break; - - case 294: /* type_specifier_nonarray: U16VEC2 */ -#line 2187 "MachineIndependent/glslang.y" - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(2); - } -#line 8386 "MachineIndependent/glslang_tab.cpp" - break; - - case 295: /* type_specifier_nonarray: U16VEC3 */ -#line 2193 "MachineIndependent/glslang.y" - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(3); - } -#line 8397 "MachineIndependent/glslang_tab.cpp" - break; - - case 296: /* type_specifier_nonarray: U16VEC4 */ -#line 2199 "MachineIndependent/glslang.y" - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(4); - } -#line 8408 "MachineIndependent/glslang_tab.cpp" - break; - - case 297: /* type_specifier_nonarray: U32VEC2 */ -#line 2205 "MachineIndependent/glslang.y" - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(2); - } -#line 8419 "MachineIndependent/glslang_tab.cpp" - break; - - case 298: /* type_specifier_nonarray: U32VEC3 */ -#line 2211 "MachineIndependent/glslang.y" - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(3); - } -#line 8430 "MachineIndependent/glslang_tab.cpp" - break; - - case 299: /* type_specifier_nonarray: U32VEC4 */ -#line 2217 "MachineIndependent/glslang.y" - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(4); - } -#line 8441 "MachineIndependent/glslang_tab.cpp" - break; - - case 300: /* type_specifier_nonarray: U64VEC2 */ -#line 2223 "MachineIndependent/glslang.y" - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(2); - } -#line 8452 "MachineIndependent/glslang_tab.cpp" - break; - - case 301: /* type_specifier_nonarray: U64VEC3 */ -#line 2229 "MachineIndependent/glslang.y" - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(3); - } -#line 8463 "MachineIndependent/glslang_tab.cpp" - break; - - case 302: /* type_specifier_nonarray: U64VEC4 */ -#line 2235 "MachineIndependent/glslang.y" - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(4); - } -#line 8474 "MachineIndependent/glslang_tab.cpp" - break; - - case 303: /* type_specifier_nonarray: DMAT2 */ -#line 2241 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8487 "MachineIndependent/glslang_tab.cpp" - break; - - case 304: /* type_specifier_nonarray: DMAT3 */ -#line 2249 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8500 "MachineIndependent/glslang_tab.cpp" - break; - - case 305: /* type_specifier_nonarray: DMAT4 */ -#line 2257 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8513 "MachineIndependent/glslang_tab.cpp" - break; - - case 306: /* type_specifier_nonarray: DMAT2X2 */ -#line 2265 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8526 "MachineIndependent/glslang_tab.cpp" - break; - - case 307: /* type_specifier_nonarray: DMAT2X3 */ -#line 2273 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8539 "MachineIndependent/glslang_tab.cpp" - break; - - case 308: /* type_specifier_nonarray: DMAT2X4 */ -#line 2281 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8552 "MachineIndependent/glslang_tab.cpp" - break; - - case 309: /* type_specifier_nonarray: DMAT3X2 */ -#line 2289 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8565 "MachineIndependent/glslang_tab.cpp" break; - case 310: /* type_specifier_nonarray: DMAT3X3 */ -#line 2297 "MachineIndependent/glslang.y" + case 297: /* type_specifier_nonarray: I64VEC2 */ +#line 2203 "MachineIndependent/glslang.y" { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(2); + } +#line 8576 "MachineIndependent/glslang_tab.cpp" + break; + + case 298: /* type_specifier_nonarray: I64VEC3 */ +#line 2209 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(3); + } +#line 8587 "MachineIndependent/glslang_tab.cpp" + break; + + case 299: /* type_specifier_nonarray: I64VEC4 */ +#line 2215 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(4); + } +#line 8598 "MachineIndependent/glslang_tab.cpp" + break; + + case 300: /* type_specifier_nonarray: U8VEC2 */ +#line 2221 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(2); + } +#line 8609 "MachineIndependent/glslang_tab.cpp" + break; + + case 301: /* type_specifier_nonarray: U8VEC3 */ +#line 2227 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(3); + } +#line 8620 "MachineIndependent/glslang_tab.cpp" + break; + + case 302: /* type_specifier_nonarray: U8VEC4 */ +#line 2233 "MachineIndependent/glslang.y" + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(4); + } +#line 8631 "MachineIndependent/glslang_tab.cpp" + break; + + case 303: /* type_specifier_nonarray: U16VEC2 */ +#line 2239 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(2); + } +#line 8642 "MachineIndependent/glslang_tab.cpp" + break; + + case 304: /* type_specifier_nonarray: U16VEC3 */ +#line 2245 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(3); + } +#line 8653 "MachineIndependent/glslang_tab.cpp" + break; + + case 305: /* type_specifier_nonarray: U16VEC4 */ +#line 2251 "MachineIndependent/glslang.y" + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(4); + } +#line 8664 "MachineIndependent/glslang_tab.cpp" + break; + + case 306: /* type_specifier_nonarray: U32VEC2 */ +#line 2257 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); + } +#line 8675 "MachineIndependent/glslang_tab.cpp" + break; + + case 307: /* type_specifier_nonarray: U32VEC3 */ +#line 2263 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); + } +#line 8686 "MachineIndependent/glslang_tab.cpp" + break; + + case 308: /* type_specifier_nonarray: U32VEC4 */ +#line 2269 "MachineIndependent/glslang.y" + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); + } +#line 8697 "MachineIndependent/glslang_tab.cpp" + break; + + case 309: /* type_specifier_nonarray: U64VEC2 */ +#line 2275 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(2); + } +#line 8708 "MachineIndependent/glslang_tab.cpp" + break; + + case 310: /* type_specifier_nonarray: U64VEC3 */ +#line 2281 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(3); + } +#line 8719 "MachineIndependent/glslang_tab.cpp" + break; + + case 311: /* type_specifier_nonarray: U64VEC4 */ +#line 2287 "MachineIndependent/glslang.y" + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(4); + } +#line 8730 "MachineIndependent/glslang_tab.cpp" + break; + + case 312: /* type_specifier_nonarray: DMAT2 */ +#line 2293 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + 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 8743 "MachineIndependent/glslang_tab.cpp" + break; + + case 313: /* type_specifier_nonarray: DMAT3 */ +#line 2301 "MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -8574,51 +8752,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8578 "MachineIndependent/glslang_tab.cpp" +#line 8756 "MachineIndependent/glslang_tab.cpp" break; - case 311: /* type_specifier_nonarray: DMAT3X4 */ -#line 2305 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8591 "MachineIndependent/glslang_tab.cpp" - break; - - case 312: /* type_specifier_nonarray: DMAT4X2 */ -#line 2313 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8604 "MachineIndependent/glslang_tab.cpp" - break; - - case 313: /* type_specifier_nonarray: DMAT4X3 */ -#line 2321 "MachineIndependent/glslang.y" - { - parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - 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 8617 "MachineIndependent/glslang_tab.cpp" - break; - - case 314: /* type_specifier_nonarray: DMAT4X4 */ -#line 2329 "MachineIndependent/glslang.y" - { + case 314: /* type_specifier_nonarray: DMAT4 */ +#line 2309 "MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -8626,2261 +8765,2378 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8630 "MachineIndependent/glslang_tab.cpp" +#line 8769 "MachineIndependent/glslang_tab.cpp" break; - case 315: /* type_specifier_nonarray: F16MAT2 */ -#line 2337 "MachineIndependent/glslang.y" + case 315: /* type_specifier_nonarray: DMAT2X2 */ +#line 2317 "MachineIndependent/glslang.y" { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8641 "MachineIndependent/glslang_tab.cpp" +#line 8782 "MachineIndependent/glslang_tab.cpp" break; - case 316: /* type_specifier_nonarray: F16MAT3 */ -#line 2343 "MachineIndependent/glslang.y" + case 316: /* type_specifier_nonarray: DMAT2X3 */ +#line 2325 "MachineIndependent/glslang.y" { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); - } -#line 8652 "MachineIndependent/glslang_tab.cpp" - break; - - case 317: /* type_specifier_nonarray: F16MAT4 */ -#line 2349 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 4); - } -#line 8663 "MachineIndependent/glslang_tab.cpp" - break; - - case 318: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2355 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); - } -#line 8674 "MachineIndependent/glslang_tab.cpp" - break; - - case 319: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2361 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8685 "MachineIndependent/glslang_tab.cpp" - break; - - case 320: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2367 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 4); - } -#line 8696 "MachineIndependent/glslang_tab.cpp" - break; - - case 321: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2373 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 2); - } -#line 8707 "MachineIndependent/glslang_tab.cpp" - break; - - case 322: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2379 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); - } -#line 8718 "MachineIndependent/glslang_tab.cpp" - break; - - case 323: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2385 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 4); - } -#line 8729 "MachineIndependent/glslang_tab.cpp" - break; - - case 324: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2391 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 2); - } -#line 8740 "MachineIndependent/glslang_tab.cpp" - break; - - case 325: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2397 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 3); - } -#line 8751 "MachineIndependent/glslang_tab.cpp" - break; - - case 326: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2403 "MachineIndependent/glslang.y" - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 4); - } -#line 8762 "MachineIndependent/glslang_tab.cpp" - break; - - case 327: /* type_specifier_nonarray: F32MAT2 */ -#line 2409 "MachineIndependent/glslang.y" - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 8773 "MachineIndependent/glslang_tab.cpp" - break; - - case 328: /* type_specifier_nonarray: F32MAT3 */ -#line 2415 "MachineIndependent/glslang.y" - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 8784 "MachineIndependent/glslang_tab.cpp" - break; - - case 329: /* type_specifier_nonarray: F32MAT4 */ -#line 2421 "MachineIndependent/glslang.y" - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); - } #line 8795 "MachineIndependent/glslang_tab.cpp" break; - case 330: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2427 "MachineIndependent/glslang.y" + case 317: /* type_specifier_nonarray: DMAT2X4 */ +#line 2333 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + 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 8808 "MachineIndependent/glslang_tab.cpp" + break; + + case 318: /* type_specifier_nonarray: DMAT3X2 */ +#line 2341 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + 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 8821 "MachineIndependent/glslang_tab.cpp" + break; + + case 319: /* type_specifier_nonarray: DMAT3X3 */ +#line 2349 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + 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 8834 "MachineIndependent/glslang_tab.cpp" + break; + + case 320: /* type_specifier_nonarray: DMAT3X4 */ +#line 2357 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + 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 8847 "MachineIndependent/glslang_tab.cpp" + break; + + case 321: /* type_specifier_nonarray: DMAT4X2 */ +#line 2365 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + 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 8860 "MachineIndependent/glslang_tab.cpp" + break; + + case 322: /* type_specifier_nonarray: DMAT4X3 */ +#line 2373 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + 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 8873 "MachineIndependent/glslang_tab.cpp" + break; + + case 323: /* type_specifier_nonarray: DMAT4X4 */ +#line 2381 "MachineIndependent/glslang.y" + { + parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); + if (! parseContext.symbolTable.atBuiltInLevel()) + 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 8886 "MachineIndependent/glslang_tab.cpp" + break; + + case 324: /* type_specifier_nonarray: F16MAT2 */ +#line 2389 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 2); + } +#line 8897 "MachineIndependent/glslang_tab.cpp" + break; + + case 325: /* type_specifier_nonarray: F16MAT3 */ +#line 2395 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); + } +#line 8908 "MachineIndependent/glslang_tab.cpp" + break; + + case 326: /* type_specifier_nonarray: F16MAT4 */ +#line 2401 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 4); + } +#line 8919 "MachineIndependent/glslang_tab.cpp" + break; + + case 327: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2407 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 2); + } +#line 8930 "MachineIndependent/glslang_tab.cpp" + break; + + case 328: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2413 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 3); + } +#line 8941 "MachineIndependent/glslang_tab.cpp" + break; + + case 329: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2419 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 4); + } +#line 8952 "MachineIndependent/glslang_tab.cpp" + break; + + case 330: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2425 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 2); + } +#line 8963 "MachineIndependent/glslang_tab.cpp" + break; + + case 331: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2431 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); + } +#line 8974 "MachineIndependent/glslang_tab.cpp" + break; + + case 332: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2437 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 4); + } +#line 8985 "MachineIndependent/glslang_tab.cpp" + break; + + case 333: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2443 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 2); + } +#line 8996 "MachineIndependent/glslang_tab.cpp" + break; + + case 334: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2449 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 3); + } +#line 9007 "MachineIndependent/glslang_tab.cpp" + break; + + case 335: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2455 "MachineIndependent/glslang.y" + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 4); + } +#line 9018 "MachineIndependent/glslang_tab.cpp" + break; + + case 336: /* type_specifier_nonarray: F32MAT2 */ +#line 2461 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 9029 "MachineIndependent/glslang_tab.cpp" + break; + + case 337: /* type_specifier_nonarray: F32MAT3 */ +#line 2467 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } +#line 9040 "MachineIndependent/glslang_tab.cpp" + break; + + case 338: /* type_specifier_nonarray: F32MAT4 */ +#line 2473 "MachineIndependent/glslang.y" + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } +#line 9051 "MachineIndependent/glslang_tab.cpp" + break; + + case 339: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2479 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8806 "MachineIndependent/glslang_tab.cpp" +#line 9062 "MachineIndependent/glslang_tab.cpp" break; - case 331: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2433 "MachineIndependent/glslang.y" + case 340: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2485 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8817 "MachineIndependent/glslang_tab.cpp" +#line 9073 "MachineIndependent/glslang_tab.cpp" break; - case 332: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2439 "MachineIndependent/glslang.y" + case 341: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2491 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8828 "MachineIndependent/glslang_tab.cpp" +#line 9084 "MachineIndependent/glslang_tab.cpp" break; - case 333: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2445 "MachineIndependent/glslang.y" + case 342: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2497 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8839 "MachineIndependent/glslang_tab.cpp" +#line 9095 "MachineIndependent/glslang_tab.cpp" break; - case 334: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2451 "MachineIndependent/glslang.y" + case 343: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2503 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8850 "MachineIndependent/glslang_tab.cpp" +#line 9106 "MachineIndependent/glslang_tab.cpp" break; - case 335: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2457 "MachineIndependent/glslang.y" + case 344: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2509 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8861 "MachineIndependent/glslang_tab.cpp" +#line 9117 "MachineIndependent/glslang_tab.cpp" break; - case 336: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2463 "MachineIndependent/glslang.y" + case 345: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2515 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8872 "MachineIndependent/glslang_tab.cpp" +#line 9128 "MachineIndependent/glslang_tab.cpp" break; - case 337: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2469 "MachineIndependent/glslang.y" + case 346: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2521 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8883 "MachineIndependent/glslang_tab.cpp" +#line 9139 "MachineIndependent/glslang_tab.cpp" break; - case 338: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2475 "MachineIndependent/glslang.y" + case 347: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2527 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8894 "MachineIndependent/glslang_tab.cpp" +#line 9150 "MachineIndependent/glslang_tab.cpp" break; - case 339: /* type_specifier_nonarray: F64MAT2 */ -#line 2481 "MachineIndependent/glslang.y" + case 348: /* type_specifier_nonarray: F64MAT2 */ +#line 2533 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8905 "MachineIndependent/glslang_tab.cpp" +#line 9161 "MachineIndependent/glslang_tab.cpp" break; - case 340: /* type_specifier_nonarray: F64MAT3 */ -#line 2487 "MachineIndependent/glslang.y" + case 349: /* type_specifier_nonarray: F64MAT3 */ +#line 2539 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8916 "MachineIndependent/glslang_tab.cpp" +#line 9172 "MachineIndependent/glslang_tab.cpp" break; - case 341: /* type_specifier_nonarray: F64MAT4 */ -#line 2493 "MachineIndependent/glslang.y" + case 350: /* type_specifier_nonarray: F64MAT4 */ +#line 2545 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8927 "MachineIndependent/glslang_tab.cpp" +#line 9183 "MachineIndependent/glslang_tab.cpp" break; - case 342: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2499 "MachineIndependent/glslang.y" + case 351: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2551 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8938 "MachineIndependent/glslang_tab.cpp" +#line 9194 "MachineIndependent/glslang_tab.cpp" break; - case 343: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2505 "MachineIndependent/glslang.y" + case 352: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2557 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8949 "MachineIndependent/glslang_tab.cpp" +#line 9205 "MachineIndependent/glslang_tab.cpp" break; - case 344: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2511 "MachineIndependent/glslang.y" + case 353: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2563 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8960 "MachineIndependent/glslang_tab.cpp" +#line 9216 "MachineIndependent/glslang_tab.cpp" break; - case 345: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2517 "MachineIndependent/glslang.y" + case 354: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2569 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8971 "MachineIndependent/glslang_tab.cpp" +#line 9227 "MachineIndependent/glslang_tab.cpp" break; - case 346: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2523 "MachineIndependent/glslang.y" + case 355: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2575 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8982 "MachineIndependent/glslang_tab.cpp" +#line 9238 "MachineIndependent/glslang_tab.cpp" break; - case 347: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2529 "MachineIndependent/glslang.y" + case 356: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2581 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8993 "MachineIndependent/glslang_tab.cpp" +#line 9249 "MachineIndependent/glslang_tab.cpp" break; - case 348: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2535 "MachineIndependent/glslang.y" + case 357: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2587 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 9004 "MachineIndependent/glslang_tab.cpp" +#line 9260 "MachineIndependent/glslang_tab.cpp" break; - case 349: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2541 "MachineIndependent/glslang.y" + case 358: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2593 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 9015 "MachineIndependent/glslang_tab.cpp" +#line 9271 "MachineIndependent/glslang_tab.cpp" break; - case 350: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2547 "MachineIndependent/glslang.y" + case 359: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2599 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 9026 "MachineIndependent/glslang_tab.cpp" +#line 9282 "MachineIndependent/glslang_tab.cpp" break; - case 351: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2553 "MachineIndependent/glslang.y" + case 360: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2605 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 9035 "MachineIndependent/glslang_tab.cpp" +#line 9291 "MachineIndependent/glslang_tab.cpp" break; - case 352: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2557 "MachineIndependent/glslang.y" + case 361: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2609 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 9044 "MachineIndependent/glslang_tab.cpp" +#line 9300 "MachineIndependent/glslang_tab.cpp" break; - case 353: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2561 "MachineIndependent/glslang.y" + case 362: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2613 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 9053 "MachineIndependent/glslang_tab.cpp" +#line 9309 "MachineIndependent/glslang_tab.cpp" break; - case 354: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2565 "MachineIndependent/glslang.y" + case 363: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2617 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 9063 "MachineIndependent/glslang_tab.cpp" +#line 9319 "MachineIndependent/glslang_tab.cpp" break; - case 355: /* type_specifier_nonarray: SAMPLER1D */ -#line 2570 "MachineIndependent/glslang.y" + case 364: /* type_specifier_nonarray: SAMPLER1D */ +#line 2622 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 9073 "MachineIndependent/glslang_tab.cpp" +#line 9329 "MachineIndependent/glslang_tab.cpp" break; - case 356: /* type_specifier_nonarray: SAMPLER2D */ -#line 2575 "MachineIndependent/glslang.y" + case 365: /* type_specifier_nonarray: SAMPLER2D */ +#line 2627 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 9083 "MachineIndependent/glslang_tab.cpp" +#line 9339 "MachineIndependent/glslang_tab.cpp" break; - case 357: /* type_specifier_nonarray: SAMPLER3D */ -#line 2580 "MachineIndependent/glslang.y" + case 366: /* type_specifier_nonarray: SAMPLER3D */ +#line 2632 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 9093 "MachineIndependent/glslang_tab.cpp" +#line 9349 "MachineIndependent/glslang_tab.cpp" break; - case 358: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2585 "MachineIndependent/glslang.y" + case 367: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2637 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 9103 "MachineIndependent/glslang_tab.cpp" +#line 9359 "MachineIndependent/glslang_tab.cpp" break; - case 359: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2590 "MachineIndependent/glslang.y" + case 368: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2642 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 9113 "MachineIndependent/glslang_tab.cpp" +#line 9369 "MachineIndependent/glslang_tab.cpp" break; - case 360: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2595 "MachineIndependent/glslang.y" + case 369: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2647 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 9123 "MachineIndependent/glslang_tab.cpp" +#line 9379 "MachineIndependent/glslang_tab.cpp" break; - case 361: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2600 "MachineIndependent/glslang.y" + case 370: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2652 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 9133 "MachineIndependent/glslang_tab.cpp" +#line 9389 "MachineIndependent/glslang_tab.cpp" break; - case 362: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2605 "MachineIndependent/glslang.y" + case 371: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2657 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 9143 "MachineIndependent/glslang_tab.cpp" +#line 9399 "MachineIndependent/glslang_tab.cpp" break; - case 363: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2610 "MachineIndependent/glslang.y" + case 372: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2662 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9153 "MachineIndependent/glslang_tab.cpp" +#line 9409 "MachineIndependent/glslang_tab.cpp" break; - case 364: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2615 "MachineIndependent/glslang.y" + case 373: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2667 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9163 "MachineIndependent/glslang_tab.cpp" +#line 9419 "MachineIndependent/glslang_tab.cpp" break; - case 365: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2620 "MachineIndependent/glslang.y" + case 374: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2672 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9173 "MachineIndependent/glslang_tab.cpp" +#line 9429 "MachineIndependent/glslang_tab.cpp" break; - case 366: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2625 "MachineIndependent/glslang.y" + case 375: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2677 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9183 "MachineIndependent/glslang_tab.cpp" +#line 9439 "MachineIndependent/glslang_tab.cpp" break; - case 367: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2630 "MachineIndependent/glslang.y" + case 376: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2682 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9193 "MachineIndependent/glslang_tab.cpp" +#line 9449 "MachineIndependent/glslang_tab.cpp" break; - case 368: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2635 "MachineIndependent/glslang.y" + case 377: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2687 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9204 "MachineIndependent/glslang_tab.cpp" +#line 9460 "MachineIndependent/glslang_tab.cpp" break; - case 369: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2641 "MachineIndependent/glslang.y" + case 378: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2693 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9215 "MachineIndependent/glslang_tab.cpp" +#line 9471 "MachineIndependent/glslang_tab.cpp" break; - case 370: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2647 "MachineIndependent/glslang.y" + case 379: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2699 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9226 "MachineIndependent/glslang_tab.cpp" +#line 9482 "MachineIndependent/glslang_tab.cpp" break; - case 371: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2653 "MachineIndependent/glslang.y" + case 380: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2705 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9237 "MachineIndependent/glslang_tab.cpp" +#line 9493 "MachineIndependent/glslang_tab.cpp" break; - case 372: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2659 "MachineIndependent/glslang.y" + case 381: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2711 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9248 "MachineIndependent/glslang_tab.cpp" +#line 9504 "MachineIndependent/glslang_tab.cpp" break; - case 373: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2665 "MachineIndependent/glslang.y" + case 382: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2717 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9259 "MachineIndependent/glslang_tab.cpp" +#line 9515 "MachineIndependent/glslang_tab.cpp" break; - case 374: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2671 "MachineIndependent/glslang.y" + case 383: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2723 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9270 "MachineIndependent/glslang_tab.cpp" +#line 9526 "MachineIndependent/glslang_tab.cpp" break; - case 375: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2677 "MachineIndependent/glslang.y" + case 384: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2729 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9281 "MachineIndependent/glslang_tab.cpp" +#line 9537 "MachineIndependent/glslang_tab.cpp" break; - case 376: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2683 "MachineIndependent/glslang.y" + case 385: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2735 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9292 "MachineIndependent/glslang_tab.cpp" +#line 9548 "MachineIndependent/glslang_tab.cpp" break; - case 377: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2689 "MachineIndependent/glslang.y" + case 386: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2741 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9303 "MachineIndependent/glslang_tab.cpp" +#line 9559 "MachineIndependent/glslang_tab.cpp" break; - case 378: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2695 "MachineIndependent/glslang.y" + case 387: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2747 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9314 "MachineIndependent/glslang_tab.cpp" +#line 9570 "MachineIndependent/glslang_tab.cpp" break; - case 379: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2701 "MachineIndependent/glslang.y" + case 388: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2753 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9325 "MachineIndependent/glslang_tab.cpp" +#line 9581 "MachineIndependent/glslang_tab.cpp" break; - case 380: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2707 "MachineIndependent/glslang.y" + case 389: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2759 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9336 "MachineIndependent/glslang_tab.cpp" +#line 9592 "MachineIndependent/glslang_tab.cpp" break; - case 381: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2713 "MachineIndependent/glslang.y" + case 390: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2765 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9346 "MachineIndependent/glslang_tab.cpp" +#line 9602 "MachineIndependent/glslang_tab.cpp" break; - case 382: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2718 "MachineIndependent/glslang.y" + case 391: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2770 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9356 "MachineIndependent/glslang_tab.cpp" +#line 9612 "MachineIndependent/glslang_tab.cpp" break; - case 383: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2723 "MachineIndependent/glslang.y" + case 392: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2775 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9366 "MachineIndependent/glslang_tab.cpp" +#line 9622 "MachineIndependent/glslang_tab.cpp" break; - case 384: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2728 "MachineIndependent/glslang.y" + case 393: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9376 "MachineIndependent/glslang_tab.cpp" +#line 9632 "MachineIndependent/glslang_tab.cpp" break; - case 385: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2733 "MachineIndependent/glslang.y" + case 394: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2785 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9386 "MachineIndependent/glslang_tab.cpp" +#line 9642 "MachineIndependent/glslang_tab.cpp" break; - case 386: /* type_specifier_nonarray: USAMPLER2D */ -#line 2738 "MachineIndependent/glslang.y" + case 395: /* type_specifier_nonarray: USAMPLER2D */ +#line 2790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9396 "MachineIndependent/glslang_tab.cpp" +#line 9652 "MachineIndependent/glslang_tab.cpp" break; - case 387: /* type_specifier_nonarray: USAMPLER3D */ -#line 2743 "MachineIndependent/glslang.y" + case 396: /* type_specifier_nonarray: USAMPLER3D */ +#line 2795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9406 "MachineIndependent/glslang_tab.cpp" +#line 9662 "MachineIndependent/glslang_tab.cpp" break; - case 388: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2748 "MachineIndependent/glslang.y" + case 397: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9416 "MachineIndependent/glslang_tab.cpp" +#line 9672 "MachineIndependent/glslang_tab.cpp" break; - case 389: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2753 "MachineIndependent/glslang.y" + case 398: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9426 "MachineIndependent/glslang_tab.cpp" +#line 9682 "MachineIndependent/glslang_tab.cpp" break; - case 390: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2758 "MachineIndependent/glslang.y" + case 399: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9436 "MachineIndependent/glslang_tab.cpp" +#line 9692 "MachineIndependent/glslang_tab.cpp" break; - case 391: /* type_specifier_nonarray: USAMPLER1D */ -#line 2763 "MachineIndependent/glslang.y" + case 400: /* type_specifier_nonarray: USAMPLER1D */ +#line 2815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9446 "MachineIndependent/glslang_tab.cpp" +#line 9702 "MachineIndependent/glslang_tab.cpp" break; - case 392: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2768 "MachineIndependent/glslang.y" + case 401: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9456 "MachineIndependent/glslang_tab.cpp" +#line 9712 "MachineIndependent/glslang_tab.cpp" break; - case 393: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2773 "MachineIndependent/glslang.y" + case 402: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9466 "MachineIndependent/glslang_tab.cpp" +#line 9722 "MachineIndependent/glslang_tab.cpp" break; - case 394: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2778 "MachineIndependent/glslang.y" + case 403: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9476 "MachineIndependent/glslang_tab.cpp" +#line 9732 "MachineIndependent/glslang_tab.cpp" break; - case 395: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2783 "MachineIndependent/glslang.y" + case 404: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9486 "MachineIndependent/glslang_tab.cpp" +#line 9742 "MachineIndependent/glslang_tab.cpp" break; - case 396: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2788 "MachineIndependent/glslang.y" + case 405: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2840 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9496 "MachineIndependent/glslang_tab.cpp" +#line 9752 "MachineIndependent/glslang_tab.cpp" break; - case 397: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2793 "MachineIndependent/glslang.y" + case 406: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2845 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9506 "MachineIndependent/glslang_tab.cpp" +#line 9762 "MachineIndependent/glslang_tab.cpp" break; - case 398: /* type_specifier_nonarray: TEXTURE2D */ -#line 2798 "MachineIndependent/glslang.y" + case 407: /* type_specifier_nonarray: TEXTURE2D */ +#line 2850 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9516 "MachineIndependent/glslang_tab.cpp" +#line 9772 "MachineIndependent/glslang_tab.cpp" break; - case 399: /* type_specifier_nonarray: TEXTURE3D */ -#line 2803 "MachineIndependent/glslang.y" + case 408: /* type_specifier_nonarray: TEXTURE3D */ +#line 2855 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9526 "MachineIndependent/glslang_tab.cpp" +#line 9782 "MachineIndependent/glslang_tab.cpp" break; - case 400: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2808 "MachineIndependent/glslang.y" + case 409: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2860 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9536 "MachineIndependent/glslang_tab.cpp" +#line 9792 "MachineIndependent/glslang_tab.cpp" break; - case 401: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2813 "MachineIndependent/glslang.y" + case 410: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2865 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9546 "MachineIndependent/glslang_tab.cpp" +#line 9802 "MachineIndependent/glslang_tab.cpp" break; - case 402: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2818 "MachineIndependent/glslang.y" + case 411: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2870 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9556 "MachineIndependent/glslang_tab.cpp" +#line 9812 "MachineIndependent/glslang_tab.cpp" break; - case 403: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2823 "MachineIndependent/glslang.y" + case 412: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2875 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9566 "MachineIndependent/glslang_tab.cpp" +#line 9822 "MachineIndependent/glslang_tab.cpp" break; - case 404: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2828 "MachineIndependent/glslang.y" + case 413: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2880 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9576 "MachineIndependent/glslang_tab.cpp" +#line 9832 "MachineIndependent/glslang_tab.cpp" break; - case 405: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2833 "MachineIndependent/glslang.y" + case 414: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2885 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9586 "MachineIndependent/glslang_tab.cpp" +#line 9842 "MachineIndependent/glslang_tab.cpp" break; - case 406: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2838 "MachineIndependent/glslang.y" + case 415: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2890 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9596 "MachineIndependent/glslang_tab.cpp" +#line 9852 "MachineIndependent/glslang_tab.cpp" break; - case 407: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2843 "MachineIndependent/glslang.y" + case 416: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2895 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9606 "MachineIndependent/glslang_tab.cpp" +#line 9862 "MachineIndependent/glslang_tab.cpp" break; - case 408: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2848 "MachineIndependent/glslang.y" + case 417: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2900 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9616 "MachineIndependent/glslang_tab.cpp" +#line 9872 "MachineIndependent/glslang_tab.cpp" break; - case 409: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2853 "MachineIndependent/glslang.y" + case 418: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2905 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9626 "MachineIndependent/glslang_tab.cpp" +#line 9882 "MachineIndependent/glslang_tab.cpp" break; - case 410: /* type_specifier_nonarray: SAMPLER */ -#line 2858 "MachineIndependent/glslang.y" + case 419: /* type_specifier_nonarray: SAMPLER */ +#line 2910 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9636 "MachineIndependent/glslang_tab.cpp" +#line 9892 "MachineIndependent/glslang_tab.cpp" break; - case 411: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2863 "MachineIndependent/glslang.y" + case 420: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2915 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9646 "MachineIndependent/glslang_tab.cpp" +#line 9902 "MachineIndependent/glslang_tab.cpp" break; - case 412: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2868 "MachineIndependent/glslang.y" + case 421: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2920 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9656 "MachineIndependent/glslang_tab.cpp" +#line 9912 "MachineIndependent/glslang_tab.cpp" break; - case 413: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2873 "MachineIndependent/glslang.y" + case 422: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2925 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9666 "MachineIndependent/glslang_tab.cpp" +#line 9922 "MachineIndependent/glslang_tab.cpp" break; - case 414: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2878 "MachineIndependent/glslang.y" + case 423: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2930 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9677 "MachineIndependent/glslang_tab.cpp" +#line 9933 "MachineIndependent/glslang_tab.cpp" break; - case 415: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2884 "MachineIndependent/glslang.y" + case 424: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2936 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9688 "MachineIndependent/glslang_tab.cpp" +#line 9944 "MachineIndependent/glslang_tab.cpp" break; - case 416: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2890 "MachineIndependent/glslang.y" + case 425: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2942 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9698 "MachineIndependent/glslang_tab.cpp" +#line 9954 "MachineIndependent/glslang_tab.cpp" break; - case 417: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2895 "MachineIndependent/glslang.y" + case 426: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2947 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9708 "MachineIndependent/glslang_tab.cpp" +#line 9964 "MachineIndependent/glslang_tab.cpp" break; - case 418: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2900 "MachineIndependent/glslang.y" + case 427: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2952 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9718 "MachineIndependent/glslang_tab.cpp" +#line 9974 "MachineIndependent/glslang_tab.cpp" break; - case 419: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2905 "MachineIndependent/glslang.y" + case 428: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2957 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9729 "MachineIndependent/glslang_tab.cpp" +#line 9985 "MachineIndependent/glslang_tab.cpp" break; - case 420: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2911 "MachineIndependent/glslang.y" + case 429: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2963 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9739 "MachineIndependent/glslang_tab.cpp" +#line 9995 "MachineIndependent/glslang_tab.cpp" break; - case 421: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2916 "MachineIndependent/glslang.y" + case 430: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2968 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9749 "MachineIndependent/glslang_tab.cpp" +#line 10005 "MachineIndependent/glslang_tab.cpp" break; - case 422: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2921 "MachineIndependent/glslang.y" + case 431: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2973 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9759 "MachineIndependent/glslang_tab.cpp" +#line 10015 "MachineIndependent/glslang_tab.cpp" break; - case 423: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2926 "MachineIndependent/glslang.y" + case 432: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2978 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9770 "MachineIndependent/glslang_tab.cpp" +#line 10026 "MachineIndependent/glslang_tab.cpp" break; - case 424: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2932 "MachineIndependent/glslang.y" + case 433: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2984 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9780 "MachineIndependent/glslang_tab.cpp" +#line 10036 "MachineIndependent/glslang_tab.cpp" break; - case 425: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2937 "MachineIndependent/glslang.y" + case 434: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2989 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9790 "MachineIndependent/glslang_tab.cpp" +#line 10046 "MachineIndependent/glslang_tab.cpp" break; - case 426: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2942 "MachineIndependent/glslang.y" + case 435: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2994 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9800 "MachineIndependent/glslang_tab.cpp" +#line 10056 "MachineIndependent/glslang_tab.cpp" break; - case 427: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2947 "MachineIndependent/glslang.y" + case 436: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2999 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9811 "MachineIndependent/glslang_tab.cpp" +#line 10067 "MachineIndependent/glslang_tab.cpp" break; - case 428: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2953 "MachineIndependent/glslang.y" + case 437: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 3005 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9821 "MachineIndependent/glslang_tab.cpp" +#line 10077 "MachineIndependent/glslang_tab.cpp" break; - case 429: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2958 "MachineIndependent/glslang.y" + case 438: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 3010 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9831 "MachineIndependent/glslang_tab.cpp" +#line 10087 "MachineIndependent/glslang_tab.cpp" break; - case 430: /* type_specifier_nonarray: TEXTURE1D */ -#line 2963 "MachineIndependent/glslang.y" + case 439: /* type_specifier_nonarray: TEXTURE1D */ +#line 3015 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9841 "MachineIndependent/glslang_tab.cpp" +#line 10097 "MachineIndependent/glslang_tab.cpp" break; - case 431: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2968 "MachineIndependent/glslang.y" + case 440: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 3020 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9852 "MachineIndependent/glslang_tab.cpp" +#line 10108 "MachineIndependent/glslang_tab.cpp" break; - case 432: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2974 "MachineIndependent/glslang.y" + case 441: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 3026 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9863 "MachineIndependent/glslang_tab.cpp" +#line 10119 "MachineIndependent/glslang_tab.cpp" break; - case 433: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2980 "MachineIndependent/glslang.y" + case 442: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 3032 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9874 "MachineIndependent/glslang_tab.cpp" +#line 10130 "MachineIndependent/glslang_tab.cpp" break; - case 434: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2986 "MachineIndependent/glslang.y" + case 443: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 3038 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9885 "MachineIndependent/glslang_tab.cpp" +#line 10141 "MachineIndependent/glslang_tab.cpp" break; - case 435: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2992 "MachineIndependent/glslang.y" + case 444: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 3044 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9895 "MachineIndependent/glslang_tab.cpp" +#line 10151 "MachineIndependent/glslang_tab.cpp" break; - case 436: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2997 "MachineIndependent/glslang.y" + case 445: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 3049 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9906 "MachineIndependent/glslang_tab.cpp" +#line 10162 "MachineIndependent/glslang_tab.cpp" break; - case 437: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 3003 "MachineIndependent/glslang.y" + case 446: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 3055 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9917 "MachineIndependent/glslang_tab.cpp" +#line 10173 "MachineIndependent/glslang_tab.cpp" break; - case 438: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 3009 "MachineIndependent/glslang.y" + case 447: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 3061 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9928 "MachineIndependent/glslang_tab.cpp" +#line 10184 "MachineIndependent/glslang_tab.cpp" break; - case 439: /* type_specifier_nonarray: ITEXTURE1D */ -#line 3015 "MachineIndependent/glslang.y" + case 448: /* type_specifier_nonarray: ITEXTURE1D */ +#line 3067 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9938 "MachineIndependent/glslang_tab.cpp" +#line 10194 "MachineIndependent/glslang_tab.cpp" break; - case 440: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 3020 "MachineIndependent/glslang.y" + case 449: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 3072 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9948 "MachineIndependent/glslang_tab.cpp" +#line 10204 "MachineIndependent/glslang_tab.cpp" break; - case 441: /* type_specifier_nonarray: UTEXTURE1D */ -#line 3025 "MachineIndependent/glslang.y" + case 450: /* type_specifier_nonarray: UTEXTURE1D */ +#line 3077 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9958 "MachineIndependent/glslang_tab.cpp" +#line 10214 "MachineIndependent/glslang_tab.cpp" break; - case 442: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 3030 "MachineIndependent/glslang.y" + case 451: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 3082 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9968 "MachineIndependent/glslang_tab.cpp" +#line 10224 "MachineIndependent/glslang_tab.cpp" break; - case 443: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3035 "MachineIndependent/glslang.y" + case 452: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 3087 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9978 "MachineIndependent/glslang_tab.cpp" +#line 10234 "MachineIndependent/glslang_tab.cpp" break; - case 444: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3040 "MachineIndependent/glslang.y" + case 453: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 3092 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9989 "MachineIndependent/glslang_tab.cpp" +#line 10245 "MachineIndependent/glslang_tab.cpp" break; - case 445: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3046 "MachineIndependent/glslang.y" + case 454: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 3098 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9999 "MachineIndependent/glslang_tab.cpp" +#line 10255 "MachineIndependent/glslang_tab.cpp" break; - case 446: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3051 "MachineIndependent/glslang.y" + case 455: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 3103 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 10009 "MachineIndependent/glslang_tab.cpp" +#line 10265 "MachineIndependent/glslang_tab.cpp" break; - case 447: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3056 "MachineIndependent/glslang.y" + case 456: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 3108 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 10019 "MachineIndependent/glslang_tab.cpp" +#line 10275 "MachineIndependent/glslang_tab.cpp" break; - case 448: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3061 "MachineIndependent/glslang.y" + case 457: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 3113 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 10030 "MachineIndependent/glslang_tab.cpp" +#line 10286 "MachineIndependent/glslang_tab.cpp" break; - case 449: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3067 "MachineIndependent/glslang.y" + case 458: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3119 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 10040 "MachineIndependent/glslang_tab.cpp" +#line 10296 "MachineIndependent/glslang_tab.cpp" break; - case 450: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3072 "MachineIndependent/glslang.y" + case 459: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3124 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 10050 "MachineIndependent/glslang_tab.cpp" +#line 10306 "MachineIndependent/glslang_tab.cpp" break; - case 451: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3077 "MachineIndependent/glslang.y" + case 460: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3129 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 10060 "MachineIndependent/glslang_tab.cpp" +#line 10316 "MachineIndependent/glslang_tab.cpp" break; - case 452: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3082 "MachineIndependent/glslang.y" + case 461: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3134 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 10071 "MachineIndependent/glslang_tab.cpp" +#line 10327 "MachineIndependent/glslang_tab.cpp" break; - case 453: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3088 "MachineIndependent/glslang.y" + case 462: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3140 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 10081 "MachineIndependent/glslang_tab.cpp" +#line 10337 "MachineIndependent/glslang_tab.cpp" break; - case 454: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3093 "MachineIndependent/glslang.y" + case 463: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3145 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 10091 "MachineIndependent/glslang_tab.cpp" +#line 10347 "MachineIndependent/glslang_tab.cpp" break; - case 455: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3098 "MachineIndependent/glslang.y" + case 464: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3150 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 10101 "MachineIndependent/glslang_tab.cpp" +#line 10357 "MachineIndependent/glslang_tab.cpp" break; - case 456: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3103 "MachineIndependent/glslang.y" + case 465: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3155 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 10112 "MachineIndependent/glslang_tab.cpp" +#line 10368 "MachineIndependent/glslang_tab.cpp" break; - case 457: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3109 "MachineIndependent/glslang.y" + case 466: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3161 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 10122 "MachineIndependent/glslang_tab.cpp" +#line 10378 "MachineIndependent/glslang_tab.cpp" break; - case 458: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3114 "MachineIndependent/glslang.y" + case 467: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3166 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 10132 "MachineIndependent/glslang_tab.cpp" +#line 10388 "MachineIndependent/glslang_tab.cpp" break; - case 459: /* type_specifier_nonarray: IMAGE1D */ -#line 3119 "MachineIndependent/glslang.y" + case 468: /* type_specifier_nonarray: IMAGE1D */ +#line 3171 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 10142 "MachineIndependent/glslang_tab.cpp" +#line 10398 "MachineIndependent/glslang_tab.cpp" break; - case 460: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3124 "MachineIndependent/glslang.y" + case 469: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3176 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10153 "MachineIndependent/glslang_tab.cpp" +#line 10409 "MachineIndependent/glslang_tab.cpp" break; - case 461: /* type_specifier_nonarray: IIMAGE1D */ -#line 3130 "MachineIndependent/glslang.y" + case 470: /* type_specifier_nonarray: IIMAGE1D */ +#line 3182 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10163 "MachineIndependent/glslang_tab.cpp" +#line 10419 "MachineIndependent/glslang_tab.cpp" break; - case 462: /* type_specifier_nonarray: UIMAGE1D */ -#line 3135 "MachineIndependent/glslang.y" + case 471: /* type_specifier_nonarray: UIMAGE1D */ +#line 3187 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10173 "MachineIndependent/glslang_tab.cpp" +#line 10429 "MachineIndependent/glslang_tab.cpp" break; - case 463: /* type_specifier_nonarray: IMAGE2D */ -#line 3140 "MachineIndependent/glslang.y" + case 472: /* type_specifier_nonarray: IMAGE2D */ +#line 3192 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10183 "MachineIndependent/glslang_tab.cpp" +#line 10439 "MachineIndependent/glslang_tab.cpp" break; - case 464: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3145 "MachineIndependent/glslang.y" + case 473: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3197 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10194 "MachineIndependent/glslang_tab.cpp" +#line 10450 "MachineIndependent/glslang_tab.cpp" break; - case 465: /* type_specifier_nonarray: IIMAGE2D */ -#line 3151 "MachineIndependent/glslang.y" + case 474: /* type_specifier_nonarray: IIMAGE2D */ +#line 3203 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10204 "MachineIndependent/glslang_tab.cpp" +#line 10460 "MachineIndependent/glslang_tab.cpp" break; - case 466: /* type_specifier_nonarray: UIMAGE2D */ -#line 3156 "MachineIndependent/glslang.y" + case 475: /* type_specifier_nonarray: UIMAGE2D */ +#line 3208 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10214 "MachineIndependent/glslang_tab.cpp" +#line 10470 "MachineIndependent/glslang_tab.cpp" break; - case 467: /* type_specifier_nonarray: IMAGE3D */ -#line 3161 "MachineIndependent/glslang.y" + case 476: /* type_specifier_nonarray: IMAGE3D */ +#line 3213 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10224 "MachineIndependent/glslang_tab.cpp" +#line 10480 "MachineIndependent/glslang_tab.cpp" break; - case 468: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3166 "MachineIndependent/glslang.y" + case 477: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3218 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10235 "MachineIndependent/glslang_tab.cpp" +#line 10491 "MachineIndependent/glslang_tab.cpp" break; - case 469: /* type_specifier_nonarray: IIMAGE3D */ -#line 3172 "MachineIndependent/glslang.y" + case 478: /* type_specifier_nonarray: IIMAGE3D */ +#line 3224 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10245 "MachineIndependent/glslang_tab.cpp" +#line 10501 "MachineIndependent/glslang_tab.cpp" break; - case 470: /* type_specifier_nonarray: UIMAGE3D */ -#line 3177 "MachineIndependent/glslang.y" + case 479: /* type_specifier_nonarray: UIMAGE3D */ +#line 3229 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10255 "MachineIndependent/glslang_tab.cpp" +#line 10511 "MachineIndependent/glslang_tab.cpp" break; - case 471: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3182 "MachineIndependent/glslang.y" + case 480: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3234 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10265 "MachineIndependent/glslang_tab.cpp" +#line 10521 "MachineIndependent/glslang_tab.cpp" break; - case 472: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3187 "MachineIndependent/glslang.y" + case 481: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3239 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10276 "MachineIndependent/glslang_tab.cpp" +#line 10532 "MachineIndependent/glslang_tab.cpp" break; - case 473: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3193 "MachineIndependent/glslang.y" + case 482: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3245 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10286 "MachineIndependent/glslang_tab.cpp" +#line 10542 "MachineIndependent/glslang_tab.cpp" break; - case 474: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3198 "MachineIndependent/glslang.y" + case 483: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3250 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10296 "MachineIndependent/glslang_tab.cpp" +#line 10552 "MachineIndependent/glslang_tab.cpp" break; - case 475: /* type_specifier_nonarray: IMAGECUBE */ -#line 3203 "MachineIndependent/glslang.y" + case 484: /* type_specifier_nonarray: IMAGECUBE */ +#line 3255 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10306 "MachineIndependent/glslang_tab.cpp" +#line 10562 "MachineIndependent/glslang_tab.cpp" break; - case 476: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3208 "MachineIndependent/glslang.y" + case 485: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3260 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10317 "MachineIndependent/glslang_tab.cpp" +#line 10573 "MachineIndependent/glslang_tab.cpp" break; - case 477: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3214 "MachineIndependent/glslang.y" + case 486: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3266 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10327 "MachineIndependent/glslang_tab.cpp" +#line 10583 "MachineIndependent/glslang_tab.cpp" break; - case 478: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3219 "MachineIndependent/glslang.y" + case 487: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3271 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10337 "MachineIndependent/glslang_tab.cpp" +#line 10593 "MachineIndependent/glslang_tab.cpp" break; - case 479: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3224 "MachineIndependent/glslang.y" + case 488: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3276 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10347 "MachineIndependent/glslang_tab.cpp" +#line 10603 "MachineIndependent/glslang_tab.cpp" break; - case 480: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3229 "MachineIndependent/glslang.y" + case 489: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3281 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10358 "MachineIndependent/glslang_tab.cpp" +#line 10614 "MachineIndependent/glslang_tab.cpp" break; - case 481: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3235 "MachineIndependent/glslang.y" + case 490: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3287 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10368 "MachineIndependent/glslang_tab.cpp" +#line 10624 "MachineIndependent/glslang_tab.cpp" break; - case 482: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3240 "MachineIndependent/glslang.y" + case 491: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3292 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10378 "MachineIndependent/glslang_tab.cpp" +#line 10634 "MachineIndependent/glslang_tab.cpp" break; - case 483: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3245 "MachineIndependent/glslang.y" + case 492: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3297 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10388 "MachineIndependent/glslang_tab.cpp" +#line 10644 "MachineIndependent/glslang_tab.cpp" break; - case 484: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3250 "MachineIndependent/glslang.y" + case 493: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3302 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10399 "MachineIndependent/glslang_tab.cpp" +#line 10655 "MachineIndependent/glslang_tab.cpp" break; - case 485: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3256 "MachineIndependent/glslang.y" + case 494: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3308 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10409 "MachineIndependent/glslang_tab.cpp" +#line 10665 "MachineIndependent/glslang_tab.cpp" break; - case 486: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3261 "MachineIndependent/glslang.y" + case 495: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3313 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10419 "MachineIndependent/glslang_tab.cpp" +#line 10675 "MachineIndependent/glslang_tab.cpp" break; - case 487: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3266 "MachineIndependent/glslang.y" + case 496: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3318 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10429 "MachineIndependent/glslang_tab.cpp" +#line 10685 "MachineIndependent/glslang_tab.cpp" break; - case 488: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3271 "MachineIndependent/glslang.y" + case 497: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3323 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10440 "MachineIndependent/glslang_tab.cpp" +#line 10696 "MachineIndependent/glslang_tab.cpp" break; - case 489: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3277 "MachineIndependent/glslang.y" + case 498: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3329 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10450 "MachineIndependent/glslang_tab.cpp" +#line 10706 "MachineIndependent/glslang_tab.cpp" break; - case 490: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3282 "MachineIndependent/glslang.y" + case 499: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3334 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10460 "MachineIndependent/glslang_tab.cpp" +#line 10716 "MachineIndependent/glslang_tab.cpp" break; - case 491: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3287 "MachineIndependent/glslang.y" + case 500: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3339 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10470 "MachineIndependent/glslang_tab.cpp" +#line 10726 "MachineIndependent/glslang_tab.cpp" break; - case 492: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3292 "MachineIndependent/glslang.y" + case 501: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3344 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10481 "MachineIndependent/glslang_tab.cpp" +#line 10737 "MachineIndependent/glslang_tab.cpp" break; - case 493: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3298 "MachineIndependent/glslang.y" + case 502: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3350 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10491 "MachineIndependent/glslang_tab.cpp" +#line 10747 "MachineIndependent/glslang_tab.cpp" break; - case 494: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3303 "MachineIndependent/glslang.y" + case 503: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3355 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10501 "MachineIndependent/glslang_tab.cpp" +#line 10757 "MachineIndependent/glslang_tab.cpp" break; - case 495: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3308 "MachineIndependent/glslang.y" + case 504: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3360 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10511 "MachineIndependent/glslang_tab.cpp" +#line 10767 "MachineIndependent/glslang_tab.cpp" break; - case 496: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3313 "MachineIndependent/glslang.y" + case 505: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3365 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10522 "MachineIndependent/glslang_tab.cpp" +#line 10778 "MachineIndependent/glslang_tab.cpp" break; - case 497: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3319 "MachineIndependent/glslang.y" + case 506: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3371 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10532 "MachineIndependent/glslang_tab.cpp" +#line 10788 "MachineIndependent/glslang_tab.cpp" break; - case 498: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3324 "MachineIndependent/glslang.y" + case 507: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3376 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10542 "MachineIndependent/glslang_tab.cpp" +#line 10798 "MachineIndependent/glslang_tab.cpp" break; - case 499: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3329 "MachineIndependent/glslang.y" + case 508: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3381 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10552 "MachineIndependent/glslang_tab.cpp" +#line 10808 "MachineIndependent/glslang_tab.cpp" break; - case 500: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3334 "MachineIndependent/glslang.y" + case 509: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3386 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10563 "MachineIndependent/glslang_tab.cpp" +#line 10819 "MachineIndependent/glslang_tab.cpp" break; - case 501: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3340 "MachineIndependent/glslang.y" + case 510: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3392 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10573 "MachineIndependent/glslang_tab.cpp" +#line 10829 "MachineIndependent/glslang_tab.cpp" break; - case 502: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3345 "MachineIndependent/glslang.y" + case 511: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3397 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10583 "MachineIndependent/glslang_tab.cpp" +#line 10839 "MachineIndependent/glslang_tab.cpp" break; - case 503: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3350 "MachineIndependent/glslang.y" + case 512: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3402 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10593 "MachineIndependent/glslang_tab.cpp" +#line 10849 "MachineIndependent/glslang_tab.cpp" break; - case 504: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3355 "MachineIndependent/glslang.y" + case 513: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3407 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10603 "MachineIndependent/glslang_tab.cpp" +#line 10859 "MachineIndependent/glslang_tab.cpp" break; - case 505: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3360 "MachineIndependent/glslang.y" + case 514: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3412 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10613 "MachineIndependent/glslang_tab.cpp" +#line 10869 "MachineIndependent/glslang_tab.cpp" break; - case 506: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3365 "MachineIndependent/glslang.y" + case 515: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3417 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10623 "MachineIndependent/glslang_tab.cpp" +#line 10879 "MachineIndependent/glslang_tab.cpp" break; - case 507: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3370 "MachineIndependent/glslang.y" + case 516: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3422 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10633 "MachineIndependent/glslang_tab.cpp" +#line 10889 "MachineIndependent/glslang_tab.cpp" break; - case 508: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3375 "MachineIndependent/glslang.y" + case 517: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3427 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10643 "MachineIndependent/glslang_tab.cpp" +#line 10899 "MachineIndependent/glslang_tab.cpp" break; - case 509: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3380 "MachineIndependent/glslang.y" + case 518: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3432 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10653 "MachineIndependent/glslang_tab.cpp" +#line 10909 "MachineIndependent/glslang_tab.cpp" break; - case 510: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3385 "MachineIndependent/glslang.y" + case 519: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3437 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10663 "MachineIndependent/glslang_tab.cpp" +#line 10919 "MachineIndependent/glslang_tab.cpp" break; - case 511: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3390 "MachineIndependent/glslang.y" + case 520: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3442 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10673 "MachineIndependent/glslang_tab.cpp" +#line 10929 "MachineIndependent/glslang_tab.cpp" break; - case 512: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3395 "MachineIndependent/glslang.y" + case 521: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3447 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10683 "MachineIndependent/glslang_tab.cpp" +#line 10939 "MachineIndependent/glslang_tab.cpp" break; - case 513: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3400 "MachineIndependent/glslang.y" + case 522: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3452 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10693 "MachineIndependent/glslang_tab.cpp" +#line 10949 "MachineIndependent/glslang_tab.cpp" break; - case 514: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3405 "MachineIndependent/glslang.y" + case 523: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3457 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10703 "MachineIndependent/glslang_tab.cpp" +#line 10959 "MachineIndependent/glslang_tab.cpp" break; - case 515: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3410 "MachineIndependent/glslang.y" + case 524: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3462 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10713 "MachineIndependent/glslang_tab.cpp" +#line 10969 "MachineIndependent/glslang_tab.cpp" break; - case 516: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3415 "MachineIndependent/glslang.y" + case 525: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3467 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10723 "MachineIndependent/glslang_tab.cpp" +#line 10979 "MachineIndependent/glslang_tab.cpp" break; - case 517: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3420 "MachineIndependent/glslang.y" + case 526: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3472 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10733 "MachineIndependent/glslang_tab.cpp" +#line 10989 "MachineIndependent/glslang_tab.cpp" break; - case 518: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3425 "MachineIndependent/glslang.y" + case 527: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3477 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10743 "MachineIndependent/glslang_tab.cpp" +#line 10999 "MachineIndependent/glslang_tab.cpp" break; - case 519: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3430 "MachineIndependent/glslang.y" + case 528: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3482 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10753 "MachineIndependent/glslang_tab.cpp" +#line 11009 "MachineIndependent/glslang_tab.cpp" break; - case 520: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3435 "MachineIndependent/glslang.y" + case 529: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3487 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10763 "MachineIndependent/glslang_tab.cpp" +#line 11019 "MachineIndependent/glslang_tab.cpp" break; - case 521: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3440 "MachineIndependent/glslang.y" + case 530: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3492 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10773 "MachineIndependent/glslang_tab.cpp" +#line 11029 "MachineIndependent/glslang_tab.cpp" break; - case 522: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3445 "MachineIndependent/glslang.y" + case 531: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3497 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10783 "MachineIndependent/glslang_tab.cpp" +#line 11039 "MachineIndependent/glslang_tab.cpp" break; - case 523: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3450 "MachineIndependent/glslang.y" + case 532: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3502 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10793 "MachineIndependent/glslang_tab.cpp" +#line 11049 "MachineIndependent/glslang_tab.cpp" break; - case 524: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3455 "MachineIndependent/glslang.y" + case 533: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3507 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10803 "MachineIndependent/glslang_tab.cpp" +#line 11059 "MachineIndependent/glslang_tab.cpp" break; - case 525: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3460 "MachineIndependent/glslang.y" + case 534: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3512 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10814 "MachineIndependent/glslang_tab.cpp" +#line 11070 "MachineIndependent/glslang_tab.cpp" break; - case 526: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3466 "MachineIndependent/glslang.y" + case 535: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3518 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10825 "MachineIndependent/glslang_tab.cpp" +#line 11081 "MachineIndependent/glslang_tab.cpp" break; - case 527: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3472 "MachineIndependent/glslang.y" + case 536: /* type_specifier_nonarray: ATTACHMENTEXT */ +#line 3524 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10836 "MachineIndependent/glslang_tab.cpp" +#line 11092 "MachineIndependent/glslang_tab.cpp" break; - case 528: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3478 "MachineIndependent/glslang.y" + case 537: /* type_specifier_nonarray: IATTACHMENTEXT */ +#line 3530 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10847 "MachineIndependent/glslang_tab.cpp" +#line 11103 "MachineIndependent/glslang_tab.cpp" break; - case 529: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3484 "MachineIndependent/glslang.y" + case 538: /* type_specifier_nonarray: UATTACHMENTEXT */ +#line 3536 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10858 "MachineIndependent/glslang_tab.cpp" +#line 11114 "MachineIndependent/glslang_tab.cpp" break; - case 530: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3490 "MachineIndependent/glslang.y" + case 539: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3542 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10869 "MachineIndependent/glslang_tab.cpp" +#line 11125 "MachineIndependent/glslang_tab.cpp" break; - case 531: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3496 "MachineIndependent/glslang.y" + case 540: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3548 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10880 "MachineIndependent/glslang_tab.cpp" +#line 11136 "MachineIndependent/glslang_tab.cpp" break; - case 532: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3502 "MachineIndependent/glslang.y" + case 541: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3554 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10888,11 +11144,11 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10892 "MachineIndependent/glslang_tab.cpp" +#line 11148 "MachineIndependent/glslang_tab.cpp" break; - case 533: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3509 "MachineIndependent/glslang.y" + case 542: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3561 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10900,55 +11156,55 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10904 "MachineIndependent/glslang_tab.cpp" +#line 11160 "MachineIndependent/glslang_tab.cpp" break; - case 534: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3516 "MachineIndependent/glslang.y" + case 543: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3568 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10915 "MachineIndependent/glslang_tab.cpp" +#line 11171 "MachineIndependent/glslang_tab.cpp" break; - case 535: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3522 "MachineIndependent/glslang.y" + case 544: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3574 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10926 "MachineIndependent/glslang_tab.cpp" +#line 11182 "MachineIndependent/glslang_tab.cpp" break; - case 536: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3528 "MachineIndependent/glslang.y" + case 545: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3580 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10937 "MachineIndependent/glslang_tab.cpp" +#line 11193 "MachineIndependent/glslang_tab.cpp" break; - case 537: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3534 "MachineIndependent/glslang.y" + case 546: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3586 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10948 "MachineIndependent/glslang_tab.cpp" +#line 11204 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3540 "MachineIndependent/glslang.y" + case 547: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3592 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10956,11 +11212,11 @@ yyreduce: (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10960 "MachineIndependent/glslang_tab.cpp" +#line 11216 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3547 "MachineIndependent/glslang.y" + case 548: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3599 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10968,11 +11224,11 @@ yyreduce: (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10972 "MachineIndependent/glslang_tab.cpp" +#line 11228 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3554 "MachineIndependent/glslang.y" + case 549: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3606 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10980,11 +11236,11 @@ yyreduce: (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10984 "MachineIndependent/glslang_tab.cpp" +#line 11240 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* type_specifier_nonarray: COOPMAT */ -#line 3561 "MachineIndependent/glslang.y" + case 550: /* type_specifier_nonarray: COOPMAT */ +#line 3613 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10992,79 +11248,90 @@ yyreduce: (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } -#line 10996 "MachineIndependent/glslang_tab.cpp" +#line 11252 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* type_specifier_nonarray: TENSORLAYOUTNV */ -#line 3568 "MachineIndependent/glslang.y" + case 551: /* type_specifier_nonarray: TENSORLAYOUTNV */ +#line 3620 "MachineIndependent/glslang.y" { parseContext.tensorLayoutViewCheck((yyvsp[0].lex).loc, "tensorLayoutNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtTensorLayoutNV; } -#line 11006 "MachineIndependent/glslang_tab.cpp" +#line 11262 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* type_specifier_nonarray: TENSORVIEWNV */ -#line 3573 "MachineIndependent/glslang.y" + case 552: /* type_specifier_nonarray: TENSORVIEWNV */ +#line 3625 "MachineIndependent/glslang.y" { parseContext.tensorLayoutViewCheck((yyvsp[0].lex).loc, "tensorViewNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtTensorViewNV; } -#line 11016 "MachineIndependent/glslang_tab.cpp" +#line 11272 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* type_specifier_nonarray: FUNCTION */ -#line 3578 "MachineIndependent/glslang.y" + case 553: /* type_specifier_nonarray: FUNCTION */ +#line 3630 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).basicType = EbtFunction; } -#line 11025 "MachineIndependent/glslang_tab.cpp" +#line 11281 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* type_specifier_nonarray: COOPVECNV */ -#line 3582 "MachineIndependent/glslang.y" + case 554: /* type_specifier_nonarray: COOPVECNV */ +#line 3634 "MachineIndependent/glslang.y" { parseContext.coopvecCheck((yyvsp[0].lex).loc, "coopvecNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtCoopvecNV; (yyval.interm.type).coopvecNV = true; } -#line 11036 "MachineIndependent/glslang_tab.cpp" +#line 11292 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3588 "MachineIndependent/glslang.y" + case 555: /* type_specifier_nonarray: TENSORARM */ +#line 3640 "MachineIndependent/glslang.y" + { + parseContext.tensorCheckARM((yyvsp[0].lex).loc, "tensorARM", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).tensorRankARM = 1; // placeholder value + (yyval.interm.type).basicType = EbtTensorARM; + } +#line 11303 "MachineIndependent/glslang_tab.cpp" + break; + + case 556: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3646 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 11045 "MachineIndependent/glslang_tab.cpp" +#line 11312 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3592 "MachineIndependent/glslang.y" + case 557: /* type_specifier_nonarray: HITOBJECTNV */ +#line 3650 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 11054 "MachineIndependent/glslang_tab.cpp" +#line 11321 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* type_specifier_nonarray: struct_specifier */ -#line 3596 "MachineIndependent/glslang.y" + case 558: /* type_specifier_nonarray: struct_specifier */ +#line 3654 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 11064 "MachineIndependent/glslang_tab.cpp" +#line 11331 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* type_specifier_nonarray: TYPE_NAME */ -#line 3601 "MachineIndependent/glslang.y" + case 559: /* type_specifier_nonarray: TYPE_NAME */ +#line 3659 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -11078,47 +11345,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 11082 "MachineIndependent/glslang_tab.cpp" +#line 11349 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* precision_qualifier: HIGH_PRECISION */ -#line 3617 "MachineIndependent/glslang.y" + case 560: /* precision_qualifier: HIGH_PRECISION */ +#line 3675 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 11092 "MachineIndependent/glslang_tab.cpp" +#line 11359 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3622 "MachineIndependent/glslang.y" + case 561: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3680 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 11102 "MachineIndependent/glslang_tab.cpp" +#line 11369 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* precision_qualifier: LOW_PRECISION */ -#line 3627 "MachineIndependent/glslang.y" + case 562: /* precision_qualifier: LOW_PRECISION */ +#line 3685 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 11112 "MachineIndependent/glslang_tab.cpp" +#line 11379 "MachineIndependent/glslang_tab.cpp" break; - case 553: /* $@3: %empty */ -#line 3635 "MachineIndependent/glslang.y" + case 563: /* $@3: %empty */ +#line 3693 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 11118 "MachineIndependent/glslang_tab.cpp" +#line 11385 "MachineIndependent/glslang_tab.cpp" break; - case 554: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3635 "MachineIndependent/glslang.y" + case 564: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3693 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); @@ -11136,17 +11403,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 11140 "MachineIndependent/glslang_tab.cpp" +#line 11407 "MachineIndependent/glslang_tab.cpp" break; - case 555: /* $@4: %empty */ -#line 3652 "MachineIndependent/glslang.y" + case 565: /* $@4: %empty */ +#line 3710 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 11146 "MachineIndependent/glslang_tab.cpp" +#line 11413 "MachineIndependent/glslang_tab.cpp" break; - case 556: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3652 "MachineIndependent/glslang.y" + case 566: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3710 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -11154,19 +11421,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 11158 "MachineIndependent/glslang_tab.cpp" +#line 11425 "MachineIndependent/glslang_tab.cpp" break; - case 557: /* struct_declaration_list: struct_declaration */ -#line 3662 "MachineIndependent/glslang.y" + case 567: /* struct_declaration_list: struct_declaration */ +#line 3720 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 11166 "MachineIndependent/glslang_tab.cpp" +#line 11433 "MachineIndependent/glslang_tab.cpp" break; - case 558: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3665 "MachineIndependent/glslang.y" + case 568: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3723 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -11177,11 +11444,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 11181 "MachineIndependent/glslang_tab.cpp" +#line 11448 "MachineIndependent/glslang_tab.cpp" break; - case 559: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3678 "MachineIndependent/glslang.y" + case 569: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3736 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11193,7 +11460,7 @@ yyreduce: (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); - parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).isCoopmatOrvec()); + parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).hasTypeParameter()); for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { TType type((yyvsp[-2].interm.type)); @@ -11204,11 +11471,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11208 "MachineIndependent/glslang_tab.cpp" +#line 11475 "MachineIndependent/glslang_tab.cpp" break; - case 560: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3700 "MachineIndependent/glslang.y" + case 570: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3758 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11222,7 +11489,7 @@ yyreduce: parseContext.memberQualifierCheck((yyvsp[-3].interm.type)); parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true); - parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).isCoopmatOrvec()); + parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).hasTypeParameter()); for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { TType type((yyvsp[-2].interm.type)); @@ -11233,38 +11500,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11237 "MachineIndependent/glslang_tab.cpp" +#line 11504 "MachineIndependent/glslang_tab.cpp" break; - case 561: /* struct_declarator_list: struct_declarator */ -#line 3727 "MachineIndependent/glslang.y" + case 571: /* struct_declarator_list: struct_declarator */ +#line 3785 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11246 "MachineIndependent/glslang_tab.cpp" +#line 11513 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3731 "MachineIndependent/glslang.y" + case 572: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3789 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11254 "MachineIndependent/glslang_tab.cpp" +#line 11521 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* struct_declarator: IDENTIFIER */ -#line 3737 "MachineIndependent/glslang.y" + case 573: /* struct_declarator: IDENTIFIER */ +#line 3795 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11264 "MachineIndependent/glslang_tab.cpp" +#line 11531 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3742 "MachineIndependent/glslang.y" + case 574: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3800 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11273,168 +11540,168 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11277 "MachineIndependent/glslang_tab.cpp" +#line 11544 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* initializer: assignment_expression */ -#line 3753 "MachineIndependent/glslang.y" + case 575: /* initializer: assignment_expression */ +#line 3811 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11285 "MachineIndependent/glslang_tab.cpp" +#line 11552 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3756 "MachineIndependent/glslang.y" + case 576: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3814 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11296 "MachineIndependent/glslang_tab.cpp" +#line 11563 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3762 "MachineIndependent/glslang.y" + case 577: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3820 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11307 "MachineIndependent/glslang_tab.cpp" +#line 11574 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3768 "MachineIndependent/glslang.y" + case 578: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3826 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11318 "MachineIndependent/glslang_tab.cpp" +#line 11585 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* initializer_list: initializer */ -#line 3777 "MachineIndependent/glslang.y" + case 579: /* initializer_list: initializer */ +#line 3835 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11326 "MachineIndependent/glslang_tab.cpp" +#line 11593 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* initializer_list: initializer_list COMMA initializer */ -#line 3780 "MachineIndependent/glslang.y" + case 580: /* initializer_list: initializer_list COMMA initializer */ +#line 3838 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11334 "MachineIndependent/glslang_tab.cpp" +#line 11601 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* declaration_statement: declaration */ -#line 3786 "MachineIndependent/glslang.y" + case 581: /* declaration_statement: declaration */ +#line 3844 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11340 "MachineIndependent/glslang_tab.cpp" +#line 11607 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* statement: compound_statement */ -#line 3790 "MachineIndependent/glslang.y" + case 582: /* statement: compound_statement */ +#line 3848 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11346 "MachineIndependent/glslang_tab.cpp" +#line 11613 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* statement: simple_statement */ -#line 3791 "MachineIndependent/glslang.y" + case 583: /* statement: simple_statement */ +#line 3849 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11352 "MachineIndependent/glslang_tab.cpp" +#line 11619 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* simple_statement: declaration_statement */ -#line 3797 "MachineIndependent/glslang.y" + case 584: /* simple_statement: declaration_statement */ +#line 3855 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11358 "MachineIndependent/glslang_tab.cpp" +#line 11625 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* simple_statement: expression_statement */ -#line 3798 "MachineIndependent/glslang.y" + case 585: /* simple_statement: expression_statement */ +#line 3856 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11364 "MachineIndependent/glslang_tab.cpp" +#line 11631 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* simple_statement: selection_statement */ -#line 3799 "MachineIndependent/glslang.y" + case 586: /* simple_statement: selection_statement */ +#line 3857 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11370 "MachineIndependent/glslang_tab.cpp" +#line 11637 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* simple_statement: switch_statement */ -#line 3800 "MachineIndependent/glslang.y" + case 587: /* simple_statement: switch_statement */ +#line 3858 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11376 "MachineIndependent/glslang_tab.cpp" +#line 11643 "MachineIndependent/glslang_tab.cpp" break; - case 578: /* simple_statement: case_label */ -#line 3801 "MachineIndependent/glslang.y" + case 588: /* simple_statement: case_label */ +#line 3859 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11382 "MachineIndependent/glslang_tab.cpp" +#line 11649 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* simple_statement: iteration_statement */ -#line 3802 "MachineIndependent/glslang.y" + case 589: /* simple_statement: iteration_statement */ +#line 3860 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11388 "MachineIndependent/glslang_tab.cpp" +#line 11655 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* simple_statement: jump_statement */ -#line 3803 "MachineIndependent/glslang.y" + case 590: /* simple_statement: jump_statement */ +#line 3861 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11394 "MachineIndependent/glslang_tab.cpp" +#line 11661 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* simple_statement: demote_statement */ -#line 3804 "MachineIndependent/glslang.y" + case 591: /* simple_statement: demote_statement */ +#line 3862 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11400 "MachineIndependent/glslang_tab.cpp" +#line 11667 "MachineIndependent/glslang_tab.cpp" break; - case 582: /* demote_statement: DEMOTE SEMICOLON */ -#line 3808 "MachineIndependent/glslang.y" + case 592: /* demote_statement: DEMOTE SEMICOLON */ +#line 3866 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11410 "MachineIndependent/glslang_tab.cpp" +#line 11677 "MachineIndependent/glslang_tab.cpp" break; - case 583: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3816 "MachineIndependent/glslang.y" + case 593: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3874 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11416 "MachineIndependent/glslang_tab.cpp" +#line 11683 "MachineIndependent/glslang_tab.cpp" break; - case 584: /* $@5: %empty */ -#line 3817 "MachineIndependent/glslang.y" + case 594: /* $@5: %empty */ +#line 3875 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11425 "MachineIndependent/glslang_tab.cpp" +#line 11692 "MachineIndependent/glslang_tab.cpp" break; - case 585: /* $@6: %empty */ -#line 3821 "MachineIndependent/glslang.y" + case 595: /* $@6: %empty */ +#line 3879 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11434 "MachineIndependent/glslang_tab.cpp" +#line 11701 "MachineIndependent/glslang_tab.cpp" break; - case 586: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3825 "MachineIndependent/glslang.y" + case 596: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3883 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) { (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); @@ -11442,69 +11709,69 @@ yyreduce: } (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11446 "MachineIndependent/glslang_tab.cpp" +#line 11713 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3835 "MachineIndependent/glslang.y" + case 597: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3893 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11452 "MachineIndependent/glslang_tab.cpp" +#line 11719 "MachineIndependent/glslang_tab.cpp" break; - case 588: /* statement_no_new_scope: simple_statement */ -#line 3836 "MachineIndependent/glslang.y" + case 598: /* statement_no_new_scope: simple_statement */ +#line 3894 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11458 "MachineIndependent/glslang_tab.cpp" +#line 11725 "MachineIndependent/glslang_tab.cpp" break; - case 589: /* $@7: %empty */ -#line 3840 "MachineIndependent/glslang.y" + case 599: /* $@7: %empty */ +#line 3898 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11466 "MachineIndependent/glslang_tab.cpp" +#line 11733 "MachineIndependent/glslang_tab.cpp" break; - case 590: /* statement_scoped: $@7 compound_statement */ -#line 3843 "MachineIndependent/glslang.y" + case 600: /* statement_scoped: $@7 compound_statement */ +#line 3901 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11475 "MachineIndependent/glslang_tab.cpp" +#line 11742 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* $@8: %empty */ -#line 3847 "MachineIndependent/glslang.y" + case 601: /* $@8: %empty */ +#line 3905 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11485 "MachineIndependent/glslang_tab.cpp" +#line 11752 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* statement_scoped: $@8 simple_statement */ -#line 3852 "MachineIndependent/glslang.y" + case 602: /* statement_scoped: $@8 simple_statement */ +#line 3910 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11496 "MachineIndependent/glslang_tab.cpp" +#line 11763 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3861 "MachineIndependent/glslang.y" + case 603: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3919 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11504 "MachineIndependent/glslang_tab.cpp" +#line 11771 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3864 "MachineIndependent/glslang.y" + case 604: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3922 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) { (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); @@ -11512,11 +11779,11 @@ yyreduce: } (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11516 "MachineIndependent/glslang_tab.cpp" +#line 11783 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* statement_list: statement */ -#line 3874 "MachineIndependent/glslang.y" + case 605: /* statement_list: statement */ +#line 3932 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11525,11 +11792,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11529 "MachineIndependent/glslang_tab.cpp" +#line 11796 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* statement_list: statement_list statement */ -#line 3882 "MachineIndependent/glslang.y" + case 606: /* statement_list: statement_list statement */ +#line 3940 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11538,77 +11805,77 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11542 "MachineIndependent/glslang_tab.cpp" +#line 11809 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* expression_statement: SEMICOLON */ -#line 3893 "MachineIndependent/glslang.y" + case 607: /* expression_statement: SEMICOLON */ +#line 3951 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11548 "MachineIndependent/glslang_tab.cpp" +#line 11815 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* expression_statement: expression SEMICOLON */ -#line 3894 "MachineIndependent/glslang.y" + case 608: /* expression_statement: expression SEMICOLON */ +#line 3952 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11554 "MachineIndependent/glslang_tab.cpp" +#line 11821 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* selection_statement: selection_statement_nonattributed */ -#line 3898 "MachineIndependent/glslang.y" + case 609: /* selection_statement: selection_statement_nonattributed */ +#line 3956 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11562 "MachineIndependent/glslang_tab.cpp" +#line 11829 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3901 "MachineIndependent/glslang.y" + case 610: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3959 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11572 "MachineIndependent/glslang_tab.cpp" +#line 11839 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3908 "MachineIndependent/glslang.y" + case 611: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3966 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11581 "MachineIndependent/glslang_tab.cpp" +#line 11848 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3915 "MachineIndependent/glslang.y" + case 612: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3973 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11590 "MachineIndependent/glslang_tab.cpp" +#line 11857 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* selection_rest_statement: statement_scoped */ -#line 3919 "MachineIndependent/glslang.y" + case 613: /* selection_rest_statement: statement_scoped */ +#line 3977 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11599 "MachineIndependent/glslang_tab.cpp" +#line 11866 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* condition: expression */ -#line 3927 "MachineIndependent/glslang.y" + case 614: /* condition: expression */ +#line 3985 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11608 "MachineIndependent/glslang_tab.cpp" +#line 11875 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3931 "MachineIndependent/glslang.y" + case 615: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3989 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11619,29 +11886,29 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 11623 "MachineIndependent/glslang_tab.cpp" +#line 11890 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* switch_statement: switch_statement_nonattributed */ -#line 3944 "MachineIndependent/glslang.y" + case 616: /* switch_statement: switch_statement_nonattributed */ +#line 4002 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11631 "MachineIndependent/glslang_tab.cpp" +#line 11898 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3947 "MachineIndependent/glslang.y" + case 617: /* switch_statement: attribute switch_statement_nonattributed */ +#line 4005 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11641 "MachineIndependent/glslang_tab.cpp" +#line 11908 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* $@9: %empty */ -#line 3954 "MachineIndependent/glslang.y" + case 618: /* $@9: %empty */ +#line 4012 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11650,11 +11917,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11654 "MachineIndependent/glslang_tab.cpp" +#line 11921 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3962 "MachineIndependent/glslang.y" + case 619: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 4020 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11664,27 +11931,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11668 "MachineIndependent/glslang_tab.cpp" +#line 11935 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* switch_statement_list: %empty */ -#line 3974 "MachineIndependent/glslang.y" + case 620: /* switch_statement_list: %empty */ +#line 4032 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11676 "MachineIndependent/glslang_tab.cpp" +#line 11943 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* switch_statement_list: statement_list */ -#line 3977 "MachineIndependent/glslang.y" + case 621: /* switch_statement_list: statement_list */ +#line 4035 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11684 "MachineIndependent/glslang_tab.cpp" +#line 11951 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* case_label: CASE expression COLON */ -#line 3983 "MachineIndependent/glslang.y" + case 622: /* case_label: CASE expression COLON */ +#line 4041 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11697,11 +11964,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11701 "MachineIndependent/glslang_tab.cpp" +#line 11968 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* case_label: DEFAULT COLON */ -#line 3995 "MachineIndependent/glslang.y" + case 623: /* case_label: DEFAULT COLON */ +#line 4053 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11711,30 +11978,30 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11715 "MachineIndependent/glslang_tab.cpp" +#line 11982 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* iteration_statement: iteration_statement_nonattributed */ -#line 4007 "MachineIndependent/glslang.y" + case 624: /* iteration_statement: iteration_statement_nonattributed */ +#line 4065 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11723 "MachineIndependent/glslang_tab.cpp" +#line 11990 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 4010 "MachineIndependent/glslang.y" + case 625: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 4068 "MachineIndependent/glslang.y" { const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11734 "MachineIndependent/glslang_tab.cpp" +#line 12001 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* $@10: %empty */ -#line 4018 "MachineIndependent/glslang.y" + case 626: /* $@10: %empty */ +#line 4076 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11743,11 +12010,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11747 "MachineIndependent/glslang_tab.cpp" +#line 12014 "MachineIndependent/glslang_tab.cpp" break; - case 617: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 4026 "MachineIndependent/glslang.y" + case 627: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 4084 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11755,22 +12022,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11759 "MachineIndependent/glslang_tab.cpp" +#line 12026 "MachineIndependent/glslang_tab.cpp" break; - case 618: /* $@11: %empty */ -#line 4033 "MachineIndependent/glslang.y" + case 628: /* $@11: %empty */ +#line 4091 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11770 "MachineIndependent/glslang_tab.cpp" +#line 12037 "MachineIndependent/glslang_tab.cpp" break; - case 619: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 4039 "MachineIndependent/glslang.y" + case 629: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 4097 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11783,22 +12050,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11787 "MachineIndependent/glslang_tab.cpp" +#line 12054 "MachineIndependent/glslang_tab.cpp" break; - case 620: /* $@12: %empty */ -#line 4051 "MachineIndependent/glslang.y" + case 630: /* $@12: %empty */ +#line 4109 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11798 "MachineIndependent/glslang_tab.cpp" +#line 12065 "MachineIndependent/glslang_tab.cpp" break; - case 621: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 4057 "MachineIndependent/glslang.y" + case 631: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 4115 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11811,81 +12078,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11815 "MachineIndependent/glslang_tab.cpp" +#line 12082 "MachineIndependent/glslang_tab.cpp" break; - case 622: /* for_init_statement: expression_statement */ -#line 4072 "MachineIndependent/glslang.y" + case 632: /* for_init_statement: expression_statement */ +#line 4130 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11823 "MachineIndependent/glslang_tab.cpp" +#line 12090 "MachineIndependent/glslang_tab.cpp" break; - case 623: /* for_init_statement: declaration_statement */ -#line 4075 "MachineIndependent/glslang.y" + case 633: /* for_init_statement: declaration_statement */ +#line 4133 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11831 "MachineIndependent/glslang_tab.cpp" +#line 12098 "MachineIndependent/glslang_tab.cpp" break; - case 624: /* conditionopt: condition */ -#line 4081 "MachineIndependent/glslang.y" + case 634: /* conditionopt: condition */ +#line 4139 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11839 "MachineIndependent/glslang_tab.cpp" +#line 12106 "MachineIndependent/glslang_tab.cpp" break; - case 625: /* conditionopt: %empty */ -#line 4084 "MachineIndependent/glslang.y" + case 635: /* conditionopt: %empty */ +#line 4142 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11847 "MachineIndependent/glslang_tab.cpp" +#line 12114 "MachineIndependent/glslang_tab.cpp" break; - case 626: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4090 "MachineIndependent/glslang.y" + case 636: /* for_rest_statement: conditionopt SEMICOLON */ +#line 4148 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11856 "MachineIndependent/glslang_tab.cpp" +#line 12123 "MachineIndependent/glslang_tab.cpp" break; - case 627: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4094 "MachineIndependent/glslang.y" + case 637: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 4152 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11865 "MachineIndependent/glslang_tab.cpp" +#line 12132 "MachineIndependent/glslang_tab.cpp" break; - case 628: /* jump_statement: CONTINUE SEMICOLON */ -#line 4101 "MachineIndependent/glslang.y" + case 638: /* jump_statement: CONTINUE SEMICOLON */ +#line 4159 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11875 "MachineIndependent/glslang_tab.cpp" +#line 12142 "MachineIndependent/glslang_tab.cpp" break; - case 629: /* jump_statement: BREAK SEMICOLON */ -#line 4106 "MachineIndependent/glslang.y" + case 639: /* jump_statement: BREAK SEMICOLON */ +#line 4164 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11885 "MachineIndependent/glslang_tab.cpp" +#line 12152 "MachineIndependent/glslang_tab.cpp" break; - case 630: /* jump_statement: RETURN SEMICOLON */ -#line 4111 "MachineIndependent/glslang.y" + case 640: /* jump_statement: RETURN SEMICOLON */ +#line 4169 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11893,101 +12160,101 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11897 "MachineIndependent/glslang_tab.cpp" +#line 12164 "MachineIndependent/glslang_tab.cpp" break; - case 631: /* jump_statement: RETURN expression SEMICOLON */ -#line 4118 "MachineIndependent/glslang.y" + case 641: /* jump_statement: RETURN expression SEMICOLON */ +#line 4176 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11905 "MachineIndependent/glslang_tab.cpp" +#line 12172 "MachineIndependent/glslang_tab.cpp" break; - case 632: /* jump_statement: DISCARD SEMICOLON */ -#line 4121 "MachineIndependent/glslang.y" + case 642: /* jump_statement: DISCARD SEMICOLON */ +#line 4179 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11914 "MachineIndependent/glslang_tab.cpp" +#line 12181 "MachineIndependent/glslang_tab.cpp" break; - case 633: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4125 "MachineIndependent/glslang.y" + case 643: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4183 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11923 "MachineIndependent/glslang_tab.cpp" +#line 12190 "MachineIndependent/glslang_tab.cpp" break; - case 634: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4129 "MachineIndependent/glslang.y" + case 644: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4187 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11932 "MachineIndependent/glslang_tab.cpp" +#line 12199 "MachineIndependent/glslang_tab.cpp" break; - case 635: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4133 "MachineIndependent/glslang.y" + case 645: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4191 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11941 "MachineIndependent/glslang_tab.cpp" +#line 12208 "MachineIndependent/glslang_tab.cpp" break; - case 636: /* translation_unit: external_declaration */ -#line 4142 "MachineIndependent/glslang.y" + case 646: /* translation_unit: external_declaration */ +#line 4200 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11950 "MachineIndependent/glslang_tab.cpp" +#line 12217 "MachineIndependent/glslang_tab.cpp" break; - case 637: /* translation_unit: translation_unit external_declaration */ -#line 4146 "MachineIndependent/glslang.y" + case 647: /* translation_unit: translation_unit external_declaration */ +#line 4204 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11961 "MachineIndependent/glslang_tab.cpp" +#line 12228 "MachineIndependent/glslang_tab.cpp" break; - case 638: /* external_declaration: function_definition */ -#line 4155 "MachineIndependent/glslang.y" + case 648: /* external_declaration: function_definition */ +#line 4213 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11969 "MachineIndependent/glslang_tab.cpp" +#line 12236 "MachineIndependent/glslang_tab.cpp" break; - case 639: /* external_declaration: declaration */ -#line 4158 "MachineIndependent/glslang.y" + case 649: /* external_declaration: declaration */ +#line 4216 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11977 "MachineIndependent/glslang_tab.cpp" +#line 12244 "MachineIndependent/glslang_tab.cpp" break; - case 640: /* external_declaration: SEMICOLON */ -#line 4161 "MachineIndependent/glslang.y" + case 650: /* external_declaration: SEMICOLON */ +#line 4219 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11987 "MachineIndependent/glslang_tab.cpp" +#line 12254 "MachineIndependent/glslang_tab.cpp" break; - case 641: /* $@13: %empty */ -#line 4169 "MachineIndependent/glslang.y" + case 651: /* $@13: %empty */ +#line 4227 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -12000,11 +12267,11 @@ yyreduce: ++parseContext.statementNestingLevel; } } -#line 12004 "MachineIndependent/glslang_tab.cpp" +#line 12271 "MachineIndependent/glslang_tab.cpp" break; - case 642: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4181 "MachineIndependent/glslang.y" + case 652: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4239 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -12032,228 +12299,228 @@ yyreduce: --parseContext.statementNestingLevel; } } -#line 12036 "MachineIndependent/glslang_tab.cpp" +#line 12303 "MachineIndependent/glslang_tab.cpp" break; - case 643: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4211 "MachineIndependent/glslang.y" + case 653: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4269 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 12044 "MachineIndependent/glslang_tab.cpp" +#line 12311 "MachineIndependent/glslang_tab.cpp" break; - case 644: /* attribute_list: single_attribute */ -#line 4216 "MachineIndependent/glslang.y" + case 654: /* attribute_list: single_attribute */ +#line 4274 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 12052 "MachineIndependent/glslang_tab.cpp" +#line 12319 "MachineIndependent/glslang_tab.cpp" break; - case 645: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4219 "MachineIndependent/glslang.y" + case 655: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4277 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 12060 "MachineIndependent/glslang_tab.cpp" +#line 12327 "MachineIndependent/glslang_tab.cpp" break; - case 646: /* single_attribute: IDENTIFIER */ -#line 4224 "MachineIndependent/glslang.y" + case 656: /* single_attribute: IDENTIFIER */ +#line 4282 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 12068 "MachineIndependent/glslang_tab.cpp" +#line 12335 "MachineIndependent/glslang_tab.cpp" break; - case 647: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4227 "MachineIndependent/glslang.y" + case 657: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4285 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 12076 "MachineIndependent/glslang_tab.cpp" +#line 12343 "MachineIndependent/glslang_tab.cpp" break; - case 648: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4232 "MachineIndependent/glslang.y" + case 658: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4290 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 12084 "MachineIndependent/glslang_tab.cpp" +#line 12351 "MachineIndependent/glslang_tab.cpp" break; - case 649: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4235 "MachineIndependent/glslang.y" + case 659: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4293 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 12092 "MachineIndependent/glslang_tab.cpp" +#line 12359 "MachineIndependent/glslang_tab.cpp" break; - case 650: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4240 "MachineIndependent/glslang.y" + case 660: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4298 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 12100 "MachineIndependent/glslang_tab.cpp" +#line 12367 "MachineIndependent/glslang_tab.cpp" break; - case 651: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4243 "MachineIndependent/glslang.y" + case 661: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4301 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12108 "MachineIndependent/glslang_tab.cpp" +#line 12375 "MachineIndependent/glslang_tab.cpp" break; - case 652: /* spirv_extension_list: STRING_LITERAL */ -#line 4248 "MachineIndependent/glslang.y" + case 662: /* spirv_extension_list: STRING_LITERAL */ +#line 4306 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12116 "MachineIndependent/glslang_tab.cpp" +#line 12383 "MachineIndependent/glslang_tab.cpp" break; - case 653: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4251 "MachineIndependent/glslang.y" + case 663: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ +#line 4309 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12124 "MachineIndependent/glslang_tab.cpp" +#line 12391 "MachineIndependent/glslang_tab.cpp" break; - case 654: /* spirv_capability_list: INTCONSTANT */ -#line 4256 "MachineIndependent/glslang.y" + case 664: /* spirv_capability_list: INTCONSTANT */ +#line 4314 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 12132 "MachineIndependent/glslang_tab.cpp" +#line 12399 "MachineIndependent/glslang_tab.cpp" break; - case 655: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4259 "MachineIndependent/glslang.y" + case 665: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4317 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 12140 "MachineIndependent/glslang_tab.cpp" +#line 12407 "MachineIndependent/glslang_tab.cpp" break; - case 656: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4264 "MachineIndependent/glslang.y" + case 666: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4322 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 12149 "MachineIndependent/glslang_tab.cpp" +#line 12416 "MachineIndependent/glslang_tab.cpp" break; - case 657: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4268 "MachineIndependent/glslang.y" + case 667: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4326 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 12159 "MachineIndependent/glslang_tab.cpp" +#line 12426 "MachineIndependent/glslang_tab.cpp" break; - case 658: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4273 "MachineIndependent/glslang.y" + case 668: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4331 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12168 "MachineIndependent/glslang_tab.cpp" +#line 12435 "MachineIndependent/glslang_tab.cpp" break; - case 659: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4277 "MachineIndependent/glslang.y" + case 669: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4335 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12178 "MachineIndependent/glslang_tab.cpp" +#line 12445 "MachineIndependent/glslang_tab.cpp" break; - case 660: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4282 "MachineIndependent/glslang.y" + case 670: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4340 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12187 "MachineIndependent/glslang_tab.cpp" +#line 12454 "MachineIndependent/glslang_tab.cpp" break; - case 661: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4286 "MachineIndependent/glslang.y" + case 671: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4344 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12197 "MachineIndependent/glslang_tab.cpp" +#line 12464 "MachineIndependent/glslang_tab.cpp" break; - case 662: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4293 "MachineIndependent/glslang.y" + case 672: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4351 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12205 "MachineIndependent/glslang_tab.cpp" +#line 12472 "MachineIndependent/glslang_tab.cpp" break; - case 663: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4296 "MachineIndependent/glslang.y" + case 673: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4354 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12213 "MachineIndependent/glslang_tab.cpp" +#line 12480 "MachineIndependent/glslang_tab.cpp" break; - case 664: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4301 "MachineIndependent/glslang.y" + case 674: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4359 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12221 "MachineIndependent/glslang_tab.cpp" +#line 12488 "MachineIndependent/glslang_tab.cpp" break; - case 665: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4304 "MachineIndependent/glslang.y" + case 675: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4362 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12229 "MachineIndependent/glslang_tab.cpp" +#line 12496 "MachineIndependent/glslang_tab.cpp" break; - case 666: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4307 "MachineIndependent/glslang.y" + case 676: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4365 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12237 "MachineIndependent/glslang_tab.cpp" +#line 12504 "MachineIndependent/glslang_tab.cpp" break; - case 667: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4310 "MachineIndependent/glslang.y" + case 677: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4368 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12245 "MachineIndependent/glslang_tab.cpp" +#line 12512 "MachineIndependent/glslang_tab.cpp" break; - case 668: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4313 "MachineIndependent/glslang.y" + case 678: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4371 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12253 "MachineIndependent/glslang_tab.cpp" +#line 12520 "MachineIndependent/glslang_tab.cpp" break; - case 669: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4318 "MachineIndependent/glslang.y" + case 679: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4376 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12263,11 +12530,11 @@ yyreduce: parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12267 "MachineIndependent/glslang_tab.cpp" +#line 12534 "MachineIndependent/glslang_tab.cpp" break; - case 670: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4327 "MachineIndependent/glslang.y" + case 680: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4385 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12277,351 +12544,351 @@ yyreduce: parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12281 "MachineIndependent/glslang_tab.cpp" +#line 12548 "MachineIndependent/glslang_tab.cpp" break; - case 671: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4338 "MachineIndependent/glslang.y" + case 681: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4396 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12291 "MachineIndependent/glslang_tab.cpp" +#line 12558 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4343 "MachineIndependent/glslang.y" + case 682: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4401 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12302 "MachineIndependent/glslang_tab.cpp" +#line 12569 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4351 "MachineIndependent/glslang.y" + case 683: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4409 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12311 "MachineIndependent/glslang_tab.cpp" +#line 12578 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4355 "MachineIndependent/glslang.y" + case 684: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4413 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12321 "MachineIndependent/glslang_tab.cpp" +#line 12588 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4360 "MachineIndependent/glslang.y" + case 685: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4418 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12330 "MachineIndependent/glslang_tab.cpp" +#line 12597 "MachineIndependent/glslang_tab.cpp" break; - case 676: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4364 "MachineIndependent/glslang.y" + case 686: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4422 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12340 "MachineIndependent/glslang_tab.cpp" +#line 12607 "MachineIndependent/glslang_tab.cpp" break; - case 677: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4369 "MachineIndependent/glslang.y" + case 687: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4427 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12349 "MachineIndependent/glslang_tab.cpp" +#line 12616 "MachineIndependent/glslang_tab.cpp" break; - case 678: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4373 "MachineIndependent/glslang.y" + case 688: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4431 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12359 "MachineIndependent/glslang_tab.cpp" +#line 12626 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4378 "MachineIndependent/glslang.y" + case 689: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4436 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12368 "MachineIndependent/glslang_tab.cpp" +#line 12635 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4382 "MachineIndependent/glslang.y" + case 690: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4440 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12378 "MachineIndependent/glslang_tab.cpp" +#line 12645 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4389 "MachineIndependent/glslang.y" + case 691: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4447 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12386 "MachineIndependent/glslang_tab.cpp" +#line 12653 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4392 "MachineIndependent/glslang.y" + case 692: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4450 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12394 "MachineIndependent/glslang_tab.cpp" +#line 12661 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4397 "MachineIndependent/glslang.y" + case 693: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4455 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12402 "MachineIndependent/glslang_tab.cpp" +#line 12669 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4400 "MachineIndependent/glslang.y" + case 694: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4458 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12410 "MachineIndependent/glslang_tab.cpp" +#line 12677 "MachineIndependent/glslang_tab.cpp" break; - case 685: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4403 "MachineIndependent/glslang.y" + case 695: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4461 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12418 "MachineIndependent/glslang_tab.cpp" +#line 12685 "MachineIndependent/glslang_tab.cpp" break; - case 686: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4406 "MachineIndependent/glslang.y" + case 696: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4464 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12426 "MachineIndependent/glslang_tab.cpp" +#line 12693 "MachineIndependent/glslang_tab.cpp" break; - case 687: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4411 "MachineIndependent/glslang.y" + case 697: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ +#line 4469 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12434 "MachineIndependent/glslang_tab.cpp" +#line 12701 "MachineIndependent/glslang_tab.cpp" break; - case 688: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4414 "MachineIndependent/glslang.y" + case 698: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ +#line 4472 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12442 "MachineIndependent/glslang_tab.cpp" +#line 12709 "MachineIndependent/glslang_tab.cpp" break; - case 689: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4419 "MachineIndependent/glslang.y" + case 699: /* spirv_decorate_id_parameter: variable_identifier */ +#line 4477 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12453 "MachineIndependent/glslang_tab.cpp" +#line 12720 "MachineIndependent/glslang_tab.cpp" break; - case 690: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4425 "MachineIndependent/glslang.y" + case 700: /* spirv_decorate_id_parameter: FLOATCONSTANT */ +#line 4483 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12461 "MachineIndependent/glslang_tab.cpp" +#line 12728 "MachineIndependent/glslang_tab.cpp" break; - case 691: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4428 "MachineIndependent/glslang.y" + case 701: /* spirv_decorate_id_parameter: INTCONSTANT */ +#line 4486 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12469 "MachineIndependent/glslang_tab.cpp" +#line 12736 "MachineIndependent/glslang_tab.cpp" break; - case 692: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4431 "MachineIndependent/glslang.y" + case 702: /* spirv_decorate_id_parameter: UINTCONSTANT */ +#line 4489 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12477 "MachineIndependent/glslang_tab.cpp" +#line 12744 "MachineIndependent/glslang_tab.cpp" break; - case 693: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4434 "MachineIndependent/glslang.y" + case 703: /* spirv_decorate_id_parameter: BOOLCONSTANT */ +#line 4492 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12485 "MachineIndependent/glslang_tab.cpp" +#line 12752 "MachineIndependent/glslang_tab.cpp" break; - case 694: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4439 "MachineIndependent/glslang.y" + case 704: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4497 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12494 "MachineIndependent/glslang_tab.cpp" +#line 12761 "MachineIndependent/glslang_tab.cpp" break; - case 695: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4443 "MachineIndependent/glslang.y" + case 705: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4501 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12502 "MachineIndependent/glslang_tab.cpp" +#line 12769 "MachineIndependent/glslang_tab.cpp" break; - case 696: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4448 "MachineIndependent/glslang.y" + case 706: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4506 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12511 "MachineIndependent/glslang_tab.cpp" +#line 12778 "MachineIndependent/glslang_tab.cpp" break; - case 697: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4452 "MachineIndependent/glslang.y" + case 707: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4510 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12521 "MachineIndependent/glslang_tab.cpp" +#line 12788 "MachineIndependent/glslang_tab.cpp" break; - case 698: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4457 "MachineIndependent/glslang.y" + case 708: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4515 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12530 "MachineIndependent/glslang_tab.cpp" +#line 12797 "MachineIndependent/glslang_tab.cpp" break; - case 699: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4461 "MachineIndependent/glslang.y" + case 709: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4519 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12540 "MachineIndependent/glslang_tab.cpp" +#line 12807 "MachineIndependent/glslang_tab.cpp" break; - case 700: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4468 "MachineIndependent/glslang.y" + case 710: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4526 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12548 "MachineIndependent/glslang_tab.cpp" +#line 12815 "MachineIndependent/glslang_tab.cpp" break; - case 701: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4471 "MachineIndependent/glslang.y" + case 711: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4529 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12556 "MachineIndependent/glslang_tab.cpp" +#line 12823 "MachineIndependent/glslang_tab.cpp" break; - case 702: /* spirv_type_parameter: constant_expression */ -#line 4476 "MachineIndependent/glslang.y" + case 712: /* spirv_type_parameter: constant_expression */ +#line 4534 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12564 "MachineIndependent/glslang_tab.cpp" +#line 12831 "MachineIndependent/glslang_tab.cpp" break; - case 703: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4479 "MachineIndependent/glslang.y" + case 713: /* spirv_type_parameter: type_specifier_nonarray */ +#line 4537 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12572 "MachineIndependent/glslang_tab.cpp" +#line 12839 "MachineIndependent/glslang_tab.cpp" break; - case 704: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4484 "MachineIndependent/glslang.y" + case 714: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4542 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12580 "MachineIndependent/glslang_tab.cpp" +#line 12847 "MachineIndependent/glslang_tab.cpp" break; - case 705: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4487 "MachineIndependent/glslang.y" + case 715: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4545 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12589 "MachineIndependent/glslang_tab.cpp" +#line 12856 "MachineIndependent/glslang_tab.cpp" break; - case 706: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4493 "MachineIndependent/glslang.y" + case 716: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4551 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12597 "MachineIndependent/glslang_tab.cpp" +#line 12864 "MachineIndependent/glslang_tab.cpp" break; - case 707: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4496 "MachineIndependent/glslang.y" + case 717: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4554 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12605 "MachineIndependent/glslang_tab.cpp" +#line 12872 "MachineIndependent/glslang_tab.cpp" break; - case 708: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4501 "MachineIndependent/glslang.y" + case 718: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4559 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12613 "MachineIndependent/glslang_tab.cpp" +#line 12880 "MachineIndependent/glslang_tab.cpp" break; - case 709: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4504 "MachineIndependent/glslang.y" + case 719: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4562 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12621 "MachineIndependent/glslang_tab.cpp" +#line 12888 "MachineIndependent/glslang_tab.cpp" break; -#line 12625 "MachineIndependent/glslang_tab.cpp" +#line 12892 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12845,5 +13112,5 @@ yyreturnlab: return yyresult; } -#line 4508 "MachineIndependent/glslang.y" +#line 4566 "MachineIndependent/glslang.y" diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h index 2ff6f78ae..b92ddec03 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h @@ -114,417 +114,426 @@ extern int yydebug; UTEXTURE2DARRAY = 315, /* UTEXTURE2DARRAY */ ATTRIBUTE = 316, /* ATTRIBUTE */ VARYING = 317, /* VARYING */ - BFLOAT16_T = 318, /* BFLOAT16_T */ - FLOAT16_T = 319, /* FLOAT16_T */ - FLOAT32_T = 320, /* FLOAT32_T */ - DOUBLE = 321, /* DOUBLE */ - FLOAT64_T = 322, /* FLOAT64_T */ - INT64_T = 323, /* INT64_T */ - UINT64_T = 324, /* UINT64_T */ - INT32_T = 325, /* INT32_T */ - UINT32_T = 326, /* UINT32_T */ - INT16_T = 327, /* INT16_T */ - UINT16_T = 328, /* UINT16_T */ - INT8_T = 329, /* INT8_T */ - UINT8_T = 330, /* UINT8_T */ - I64VEC2 = 331, /* I64VEC2 */ - I64VEC3 = 332, /* I64VEC3 */ - I64VEC4 = 333, /* I64VEC4 */ - U64VEC2 = 334, /* U64VEC2 */ - U64VEC3 = 335, /* U64VEC3 */ - U64VEC4 = 336, /* U64VEC4 */ - I32VEC2 = 337, /* I32VEC2 */ - I32VEC3 = 338, /* I32VEC3 */ - I32VEC4 = 339, /* I32VEC4 */ - U32VEC2 = 340, /* U32VEC2 */ - U32VEC3 = 341, /* U32VEC3 */ - U32VEC4 = 342, /* U32VEC4 */ - I16VEC2 = 343, /* I16VEC2 */ - I16VEC3 = 344, /* I16VEC3 */ - I16VEC4 = 345, /* I16VEC4 */ - U16VEC2 = 346, /* U16VEC2 */ - U16VEC3 = 347, /* U16VEC3 */ - U16VEC4 = 348, /* U16VEC4 */ - I8VEC2 = 349, /* I8VEC2 */ - I8VEC3 = 350, /* I8VEC3 */ - I8VEC4 = 351, /* I8VEC4 */ - U8VEC2 = 352, /* U8VEC2 */ - U8VEC3 = 353, /* U8VEC3 */ - U8VEC4 = 354, /* U8VEC4 */ - DVEC2 = 355, /* DVEC2 */ - DVEC3 = 356, /* DVEC3 */ - DVEC4 = 357, /* DVEC4 */ - DMAT2 = 358, /* DMAT2 */ - DMAT3 = 359, /* DMAT3 */ - DMAT4 = 360, /* DMAT4 */ - BF16VEC2 = 361, /* BF16VEC2 */ - BF16VEC3 = 362, /* BF16VEC3 */ - BF16VEC4 = 363, /* BF16VEC4 */ - F16VEC2 = 364, /* F16VEC2 */ - F16VEC3 = 365, /* F16VEC3 */ - F16VEC4 = 366, /* F16VEC4 */ - F16MAT2 = 367, /* F16MAT2 */ - F16MAT3 = 368, /* F16MAT3 */ - F16MAT4 = 369, /* F16MAT4 */ - F32VEC2 = 370, /* F32VEC2 */ - F32VEC3 = 371, /* F32VEC3 */ - F32VEC4 = 372, /* F32VEC4 */ - F32MAT2 = 373, /* F32MAT2 */ - F32MAT3 = 374, /* F32MAT3 */ - F32MAT4 = 375, /* F32MAT4 */ - F64VEC2 = 376, /* F64VEC2 */ - F64VEC3 = 377, /* F64VEC3 */ - F64VEC4 = 378, /* F64VEC4 */ - F64MAT2 = 379, /* F64MAT2 */ - F64MAT3 = 380, /* F64MAT3 */ - F64MAT4 = 381, /* F64MAT4 */ - DMAT2X2 = 382, /* DMAT2X2 */ - DMAT2X3 = 383, /* DMAT2X3 */ - DMAT2X4 = 384, /* DMAT2X4 */ - DMAT3X2 = 385, /* DMAT3X2 */ - DMAT3X3 = 386, /* DMAT3X3 */ - DMAT3X4 = 387, /* DMAT3X4 */ - DMAT4X2 = 388, /* DMAT4X2 */ - DMAT4X3 = 389, /* DMAT4X3 */ - DMAT4X4 = 390, /* DMAT4X4 */ - F16MAT2X2 = 391, /* F16MAT2X2 */ - F16MAT2X3 = 392, /* F16MAT2X3 */ - F16MAT2X4 = 393, /* F16MAT2X4 */ - F16MAT3X2 = 394, /* F16MAT3X2 */ - F16MAT3X3 = 395, /* F16MAT3X3 */ - F16MAT3X4 = 396, /* F16MAT3X4 */ - F16MAT4X2 = 397, /* F16MAT4X2 */ - F16MAT4X3 = 398, /* F16MAT4X3 */ - F16MAT4X4 = 399, /* F16MAT4X4 */ - F32MAT2X2 = 400, /* F32MAT2X2 */ - F32MAT2X3 = 401, /* F32MAT2X3 */ - F32MAT2X4 = 402, /* F32MAT2X4 */ - F32MAT3X2 = 403, /* F32MAT3X2 */ - F32MAT3X3 = 404, /* F32MAT3X3 */ - F32MAT3X4 = 405, /* F32MAT3X4 */ - F32MAT4X2 = 406, /* F32MAT4X2 */ - F32MAT4X3 = 407, /* F32MAT4X3 */ - F32MAT4X4 = 408, /* F32MAT4X4 */ - F64MAT2X2 = 409, /* F64MAT2X2 */ - F64MAT2X3 = 410, /* F64MAT2X3 */ - F64MAT2X4 = 411, /* F64MAT2X4 */ - F64MAT3X2 = 412, /* F64MAT3X2 */ - F64MAT3X3 = 413, /* F64MAT3X3 */ - F64MAT3X4 = 414, /* F64MAT3X4 */ - F64MAT4X2 = 415, /* F64MAT4X2 */ - F64MAT4X3 = 416, /* F64MAT4X3 */ - F64MAT4X4 = 417, /* F64MAT4X4 */ - ATOMIC_UINT = 418, /* ATOMIC_UINT */ - ACCSTRUCTNV = 419, /* ACCSTRUCTNV */ - ACCSTRUCTEXT = 420, /* ACCSTRUCTEXT */ - RAYQUERYEXT = 421, /* RAYQUERYEXT */ - FCOOPMATNV = 422, /* FCOOPMATNV */ - ICOOPMATNV = 423, /* ICOOPMATNV */ - UCOOPMATNV = 424, /* UCOOPMATNV */ - COOPMAT = 425, /* COOPMAT */ - COOPVECNV = 426, /* COOPVECNV */ - HITOBJECTNV = 427, /* HITOBJECTNV */ - HITOBJECTATTRNV = 428, /* HITOBJECTATTRNV */ - TENSORLAYOUTNV = 429, /* TENSORLAYOUTNV */ - TENSORVIEWNV = 430, /* TENSORVIEWNV */ - SAMPLERCUBEARRAY = 431, /* SAMPLERCUBEARRAY */ - SAMPLERCUBEARRAYSHADOW = 432, /* SAMPLERCUBEARRAYSHADOW */ - ISAMPLERCUBEARRAY = 433, /* ISAMPLERCUBEARRAY */ - USAMPLERCUBEARRAY = 434, /* USAMPLERCUBEARRAY */ - SAMPLER1D = 435, /* SAMPLER1D */ - SAMPLER1DARRAY = 436, /* SAMPLER1DARRAY */ - SAMPLER1DARRAYSHADOW = 437, /* SAMPLER1DARRAYSHADOW */ - ISAMPLER1D = 438, /* ISAMPLER1D */ - SAMPLER1DSHADOW = 439, /* SAMPLER1DSHADOW */ - SAMPLER2DRECT = 440, /* SAMPLER2DRECT */ - SAMPLER2DRECTSHADOW = 441, /* SAMPLER2DRECTSHADOW */ - ISAMPLER2DRECT = 442, /* ISAMPLER2DRECT */ - USAMPLER2DRECT = 443, /* USAMPLER2DRECT */ - SAMPLERBUFFER = 444, /* SAMPLERBUFFER */ - ISAMPLERBUFFER = 445, /* ISAMPLERBUFFER */ - USAMPLERBUFFER = 446, /* USAMPLERBUFFER */ - SAMPLER2DMS = 447, /* SAMPLER2DMS */ - ISAMPLER2DMS = 448, /* ISAMPLER2DMS */ - USAMPLER2DMS = 449, /* USAMPLER2DMS */ - SAMPLER2DMSARRAY = 450, /* SAMPLER2DMSARRAY */ - ISAMPLER2DMSARRAY = 451, /* ISAMPLER2DMSARRAY */ - USAMPLER2DMSARRAY = 452, /* USAMPLER2DMSARRAY */ - SAMPLEREXTERNALOES = 453, /* SAMPLEREXTERNALOES */ - SAMPLEREXTERNAL2DY2YEXT = 454, /* SAMPLEREXTERNAL2DY2YEXT */ - ISAMPLER1DARRAY = 455, /* ISAMPLER1DARRAY */ - USAMPLER1D = 456, /* USAMPLER1D */ - USAMPLER1DARRAY = 457, /* USAMPLER1DARRAY */ - F16SAMPLER1D = 458, /* F16SAMPLER1D */ - F16SAMPLER2D = 459, /* F16SAMPLER2D */ - F16SAMPLER3D = 460, /* F16SAMPLER3D */ - F16SAMPLER2DRECT = 461, /* F16SAMPLER2DRECT */ - F16SAMPLERCUBE = 462, /* F16SAMPLERCUBE */ - F16SAMPLER1DARRAY = 463, /* F16SAMPLER1DARRAY */ - F16SAMPLER2DARRAY = 464, /* F16SAMPLER2DARRAY */ - F16SAMPLERCUBEARRAY = 465, /* F16SAMPLERCUBEARRAY */ - F16SAMPLERBUFFER = 466, /* F16SAMPLERBUFFER */ - F16SAMPLER2DMS = 467, /* F16SAMPLER2DMS */ - F16SAMPLER2DMSARRAY = 468, /* F16SAMPLER2DMSARRAY */ - F16SAMPLER1DSHADOW = 469, /* F16SAMPLER1DSHADOW */ - F16SAMPLER2DSHADOW = 470, /* F16SAMPLER2DSHADOW */ - F16SAMPLER1DARRAYSHADOW = 471, /* F16SAMPLER1DARRAYSHADOW */ - F16SAMPLER2DARRAYSHADOW = 472, /* F16SAMPLER2DARRAYSHADOW */ - F16SAMPLER2DRECTSHADOW = 473, /* F16SAMPLER2DRECTSHADOW */ - F16SAMPLERCUBESHADOW = 474, /* F16SAMPLERCUBESHADOW */ - F16SAMPLERCUBEARRAYSHADOW = 475, /* F16SAMPLERCUBEARRAYSHADOW */ - IMAGE1D = 476, /* IMAGE1D */ - IIMAGE1D = 477, /* IIMAGE1D */ - UIMAGE1D = 478, /* UIMAGE1D */ - IMAGE2D = 479, /* IMAGE2D */ - IIMAGE2D = 480, /* IIMAGE2D */ - UIMAGE2D = 481, /* UIMAGE2D */ - IMAGE3D = 482, /* IMAGE3D */ - IIMAGE3D = 483, /* IIMAGE3D */ - UIMAGE3D = 484, /* UIMAGE3D */ - IMAGE2DRECT = 485, /* IMAGE2DRECT */ - IIMAGE2DRECT = 486, /* IIMAGE2DRECT */ - UIMAGE2DRECT = 487, /* UIMAGE2DRECT */ - IMAGECUBE = 488, /* IMAGECUBE */ - IIMAGECUBE = 489, /* IIMAGECUBE */ - UIMAGECUBE = 490, /* UIMAGECUBE */ - IMAGEBUFFER = 491, /* IMAGEBUFFER */ - IIMAGEBUFFER = 492, /* IIMAGEBUFFER */ - UIMAGEBUFFER = 493, /* UIMAGEBUFFER */ - IMAGE1DARRAY = 494, /* IMAGE1DARRAY */ - IIMAGE1DARRAY = 495, /* IIMAGE1DARRAY */ - UIMAGE1DARRAY = 496, /* UIMAGE1DARRAY */ - IMAGE2DARRAY = 497, /* IMAGE2DARRAY */ - IIMAGE2DARRAY = 498, /* IIMAGE2DARRAY */ - UIMAGE2DARRAY = 499, /* UIMAGE2DARRAY */ - IMAGECUBEARRAY = 500, /* IMAGECUBEARRAY */ - IIMAGECUBEARRAY = 501, /* IIMAGECUBEARRAY */ - UIMAGECUBEARRAY = 502, /* UIMAGECUBEARRAY */ - IMAGE2DMS = 503, /* IMAGE2DMS */ - IIMAGE2DMS = 504, /* IIMAGE2DMS */ - UIMAGE2DMS = 505, /* UIMAGE2DMS */ - IMAGE2DMSARRAY = 506, /* IMAGE2DMSARRAY */ - IIMAGE2DMSARRAY = 507, /* IIMAGE2DMSARRAY */ - UIMAGE2DMSARRAY = 508, /* UIMAGE2DMSARRAY */ - F16IMAGE1D = 509, /* F16IMAGE1D */ - F16IMAGE2D = 510, /* F16IMAGE2D */ - F16IMAGE3D = 511, /* F16IMAGE3D */ - F16IMAGE2DRECT = 512, /* F16IMAGE2DRECT */ - F16IMAGECUBE = 513, /* F16IMAGECUBE */ - F16IMAGE1DARRAY = 514, /* F16IMAGE1DARRAY */ - F16IMAGE2DARRAY = 515, /* F16IMAGE2DARRAY */ - F16IMAGECUBEARRAY = 516, /* F16IMAGECUBEARRAY */ - F16IMAGEBUFFER = 517, /* F16IMAGEBUFFER */ - F16IMAGE2DMS = 518, /* F16IMAGE2DMS */ - F16IMAGE2DMSARRAY = 519, /* F16IMAGE2DMSARRAY */ - I64IMAGE1D = 520, /* I64IMAGE1D */ - U64IMAGE1D = 521, /* U64IMAGE1D */ - I64IMAGE2D = 522, /* I64IMAGE2D */ - U64IMAGE2D = 523, /* U64IMAGE2D */ - I64IMAGE3D = 524, /* I64IMAGE3D */ - U64IMAGE3D = 525, /* U64IMAGE3D */ - I64IMAGE2DRECT = 526, /* I64IMAGE2DRECT */ - U64IMAGE2DRECT = 527, /* U64IMAGE2DRECT */ - I64IMAGECUBE = 528, /* I64IMAGECUBE */ - U64IMAGECUBE = 529, /* U64IMAGECUBE */ - I64IMAGEBUFFER = 530, /* I64IMAGEBUFFER */ - U64IMAGEBUFFER = 531, /* U64IMAGEBUFFER */ - I64IMAGE1DARRAY = 532, /* I64IMAGE1DARRAY */ - U64IMAGE1DARRAY = 533, /* U64IMAGE1DARRAY */ - I64IMAGE2DARRAY = 534, /* I64IMAGE2DARRAY */ - U64IMAGE2DARRAY = 535, /* U64IMAGE2DARRAY */ - I64IMAGECUBEARRAY = 536, /* I64IMAGECUBEARRAY */ - U64IMAGECUBEARRAY = 537, /* U64IMAGECUBEARRAY */ - I64IMAGE2DMS = 538, /* I64IMAGE2DMS */ - U64IMAGE2DMS = 539, /* U64IMAGE2DMS */ - I64IMAGE2DMSARRAY = 540, /* I64IMAGE2DMSARRAY */ - U64IMAGE2DMSARRAY = 541, /* U64IMAGE2DMSARRAY */ - TEXTURECUBEARRAY = 542, /* TEXTURECUBEARRAY */ - ITEXTURECUBEARRAY = 543, /* ITEXTURECUBEARRAY */ - UTEXTURECUBEARRAY = 544, /* UTEXTURECUBEARRAY */ - TEXTURE1D = 545, /* TEXTURE1D */ - ITEXTURE1D = 546, /* ITEXTURE1D */ - UTEXTURE1D = 547, /* UTEXTURE1D */ - TEXTURE1DARRAY = 548, /* TEXTURE1DARRAY */ - ITEXTURE1DARRAY = 549, /* ITEXTURE1DARRAY */ - UTEXTURE1DARRAY = 550, /* UTEXTURE1DARRAY */ - TEXTURE2DRECT = 551, /* TEXTURE2DRECT */ - ITEXTURE2DRECT = 552, /* ITEXTURE2DRECT */ - UTEXTURE2DRECT = 553, /* UTEXTURE2DRECT */ - TEXTUREBUFFER = 554, /* TEXTUREBUFFER */ - ITEXTUREBUFFER = 555, /* ITEXTUREBUFFER */ - UTEXTUREBUFFER = 556, /* UTEXTUREBUFFER */ - TEXTURE2DMS = 557, /* TEXTURE2DMS */ - ITEXTURE2DMS = 558, /* ITEXTURE2DMS */ - UTEXTURE2DMS = 559, /* UTEXTURE2DMS */ - TEXTURE2DMSARRAY = 560, /* TEXTURE2DMSARRAY */ - ITEXTURE2DMSARRAY = 561, /* ITEXTURE2DMSARRAY */ - UTEXTURE2DMSARRAY = 562, /* UTEXTURE2DMSARRAY */ - F16TEXTURE1D = 563, /* F16TEXTURE1D */ - F16TEXTURE2D = 564, /* F16TEXTURE2D */ - F16TEXTURE3D = 565, /* F16TEXTURE3D */ - F16TEXTURE2DRECT = 566, /* F16TEXTURE2DRECT */ - F16TEXTURECUBE = 567, /* F16TEXTURECUBE */ - F16TEXTURE1DARRAY = 568, /* F16TEXTURE1DARRAY */ - F16TEXTURE2DARRAY = 569, /* F16TEXTURE2DARRAY */ - F16TEXTURECUBEARRAY = 570, /* F16TEXTURECUBEARRAY */ - F16TEXTUREBUFFER = 571, /* F16TEXTUREBUFFER */ - F16TEXTURE2DMS = 572, /* F16TEXTURE2DMS */ - F16TEXTURE2DMSARRAY = 573, /* F16TEXTURE2DMSARRAY */ - SUBPASSINPUT = 574, /* SUBPASSINPUT */ - SUBPASSINPUTMS = 575, /* SUBPASSINPUTMS */ - ISUBPASSINPUT = 576, /* ISUBPASSINPUT */ - ISUBPASSINPUTMS = 577, /* ISUBPASSINPUTMS */ - USUBPASSINPUT = 578, /* USUBPASSINPUT */ - USUBPASSINPUTMS = 579, /* USUBPASSINPUTMS */ - F16SUBPASSINPUT = 580, /* F16SUBPASSINPUT */ - F16SUBPASSINPUTMS = 581, /* F16SUBPASSINPUTMS */ - SPIRV_INSTRUCTION = 582, /* SPIRV_INSTRUCTION */ - SPIRV_EXECUTION_MODE = 583, /* SPIRV_EXECUTION_MODE */ - SPIRV_EXECUTION_MODE_ID = 584, /* SPIRV_EXECUTION_MODE_ID */ - SPIRV_DECORATE = 585, /* SPIRV_DECORATE */ - SPIRV_DECORATE_ID = 586, /* SPIRV_DECORATE_ID */ - SPIRV_DECORATE_STRING = 587, /* SPIRV_DECORATE_STRING */ - SPIRV_TYPE = 588, /* SPIRV_TYPE */ - SPIRV_STORAGE_CLASS = 589, /* SPIRV_STORAGE_CLASS */ - SPIRV_BY_REFERENCE = 590, /* SPIRV_BY_REFERENCE */ - SPIRV_LITERAL = 591, /* SPIRV_LITERAL */ - ATTACHMENTEXT = 592, /* ATTACHMENTEXT */ - IATTACHMENTEXT = 593, /* IATTACHMENTEXT */ - UATTACHMENTEXT = 594, /* UATTACHMENTEXT */ - LEFT_OP = 595, /* LEFT_OP */ - RIGHT_OP = 596, /* RIGHT_OP */ - INC_OP = 597, /* INC_OP */ - DEC_OP = 598, /* DEC_OP */ - LE_OP = 599, /* LE_OP */ - GE_OP = 600, /* GE_OP */ - EQ_OP = 601, /* EQ_OP */ - NE_OP = 602, /* NE_OP */ - AND_OP = 603, /* AND_OP */ - OR_OP = 604, /* OR_OP */ - XOR_OP = 605, /* XOR_OP */ - MUL_ASSIGN = 606, /* MUL_ASSIGN */ - DIV_ASSIGN = 607, /* DIV_ASSIGN */ - ADD_ASSIGN = 608, /* ADD_ASSIGN */ - MOD_ASSIGN = 609, /* MOD_ASSIGN */ - LEFT_ASSIGN = 610, /* LEFT_ASSIGN */ - RIGHT_ASSIGN = 611, /* RIGHT_ASSIGN */ - AND_ASSIGN = 612, /* AND_ASSIGN */ - XOR_ASSIGN = 613, /* XOR_ASSIGN */ - OR_ASSIGN = 614, /* OR_ASSIGN */ - SUB_ASSIGN = 615, /* SUB_ASSIGN */ - STRING_LITERAL = 616, /* STRING_LITERAL */ - LEFT_PAREN = 617, /* LEFT_PAREN */ - RIGHT_PAREN = 618, /* RIGHT_PAREN */ - LEFT_BRACKET = 619, /* LEFT_BRACKET */ - RIGHT_BRACKET = 620, /* RIGHT_BRACKET */ - LEFT_BRACE = 621, /* LEFT_BRACE */ - RIGHT_BRACE = 622, /* RIGHT_BRACE */ - DOT = 623, /* DOT */ - COMMA = 624, /* COMMA */ - COLON = 625, /* COLON */ - EQUAL = 626, /* EQUAL */ - SEMICOLON = 627, /* SEMICOLON */ - BANG = 628, /* BANG */ - DASH = 629, /* DASH */ - TILDE = 630, /* TILDE */ - PLUS = 631, /* PLUS */ - STAR = 632, /* STAR */ - SLASH = 633, /* SLASH */ - PERCENT = 634, /* PERCENT */ - LEFT_ANGLE = 635, /* LEFT_ANGLE */ - RIGHT_ANGLE = 636, /* RIGHT_ANGLE */ - VERTICAL_BAR = 637, /* VERTICAL_BAR */ - CARET = 638, /* CARET */ - AMPERSAND = 639, /* AMPERSAND */ - QUESTION = 640, /* QUESTION */ - INVARIANT = 641, /* INVARIANT */ - HIGH_PRECISION = 642, /* HIGH_PRECISION */ - MEDIUM_PRECISION = 643, /* MEDIUM_PRECISION */ - LOW_PRECISION = 644, /* LOW_PRECISION */ - PRECISION = 645, /* PRECISION */ - PACKED = 646, /* PACKED */ - RESOURCE = 647, /* RESOURCE */ - SUPERP = 648, /* SUPERP */ - FLOATCONSTANT = 649, /* FLOATCONSTANT */ - INTCONSTANT = 650, /* INTCONSTANT */ - UINTCONSTANT = 651, /* UINTCONSTANT */ - BOOLCONSTANT = 652, /* BOOLCONSTANT */ - IDENTIFIER = 653, /* IDENTIFIER */ - TYPE_NAME = 654, /* TYPE_NAME */ - CENTROID = 655, /* CENTROID */ - IN = 656, /* IN */ - OUT = 657, /* OUT */ - INOUT = 658, /* INOUT */ - STRUCT = 659, /* STRUCT */ - VOID = 660, /* VOID */ - WHILE = 661, /* WHILE */ - BREAK = 662, /* BREAK */ - CONTINUE = 663, /* CONTINUE */ - DO = 664, /* DO */ - ELSE = 665, /* ELSE */ - FOR = 666, /* FOR */ - IF = 667, /* IF */ - DISCARD = 668, /* DISCARD */ - RETURN = 669, /* RETURN */ - SWITCH = 670, /* SWITCH */ - CASE = 671, /* CASE */ - DEFAULT = 672, /* DEFAULT */ - TERMINATE_INVOCATION = 673, /* TERMINATE_INVOCATION */ - TERMINATE_RAY = 674, /* TERMINATE_RAY */ - IGNORE_INTERSECTION = 675, /* IGNORE_INTERSECTION */ - UNIFORM = 676, /* UNIFORM */ - SHARED = 677, /* SHARED */ - BUFFER = 678, /* BUFFER */ - TILEIMAGEEXT = 679, /* TILEIMAGEEXT */ - FLAT = 680, /* FLAT */ - SMOOTH = 681, /* SMOOTH */ - LAYOUT = 682, /* LAYOUT */ - DOUBLECONSTANT = 683, /* DOUBLECONSTANT */ - INT16CONSTANT = 684, /* INT16CONSTANT */ - UINT16CONSTANT = 685, /* UINT16CONSTANT */ - FLOAT16CONSTANT = 686, /* FLOAT16CONSTANT */ - INT32CONSTANT = 687, /* INT32CONSTANT */ - UINT32CONSTANT = 688, /* UINT32CONSTANT */ - INT64CONSTANT = 689, /* INT64CONSTANT */ - UINT64CONSTANT = 690, /* UINT64CONSTANT */ - SUBROUTINE = 691, /* SUBROUTINE */ - DEMOTE = 692, /* DEMOTE */ - FUNCTION = 693, /* FUNCTION */ - PAYLOADNV = 694, /* PAYLOADNV */ - PAYLOADINNV = 695, /* PAYLOADINNV */ - HITATTRNV = 696, /* HITATTRNV */ - CALLDATANV = 697, /* CALLDATANV */ - CALLDATAINNV = 698, /* CALLDATAINNV */ - PAYLOADEXT = 699, /* PAYLOADEXT */ - PAYLOADINEXT = 700, /* PAYLOADINEXT */ - HITATTREXT = 701, /* HITATTREXT */ - CALLDATAEXT = 702, /* CALLDATAEXT */ - CALLDATAINEXT = 703, /* CALLDATAINEXT */ - PATCH = 704, /* PATCH */ - SAMPLE = 705, /* SAMPLE */ - NONUNIFORM = 706, /* NONUNIFORM */ - COHERENT = 707, /* COHERENT */ - VOLATILE = 708, /* VOLATILE */ - RESTRICT = 709, /* RESTRICT */ - READONLY = 710, /* READONLY */ - WRITEONLY = 711, /* WRITEONLY */ - NONTEMPORAL = 712, /* NONTEMPORAL */ - DEVICECOHERENT = 713, /* DEVICECOHERENT */ - QUEUEFAMILYCOHERENT = 714, /* QUEUEFAMILYCOHERENT */ - WORKGROUPCOHERENT = 715, /* WORKGROUPCOHERENT */ - SUBGROUPCOHERENT = 716, /* SUBGROUPCOHERENT */ - NONPRIVATE = 717, /* NONPRIVATE */ - SHADERCALLCOHERENT = 718, /* SHADERCALLCOHERENT */ - NOPERSPECTIVE = 719, /* NOPERSPECTIVE */ - EXPLICITINTERPAMD = 720, /* EXPLICITINTERPAMD */ - PERVERTEXEXT = 721, /* PERVERTEXEXT */ - PERVERTEXNV = 722, /* PERVERTEXNV */ - PERPRIMITIVENV = 723, /* PERPRIMITIVENV */ - PERVIEWNV = 724, /* PERVIEWNV */ - PERTASKNV = 725, /* PERTASKNV */ - PERPRIMITIVEEXT = 726, /* PERPRIMITIVEEXT */ - TASKPAYLOADWORKGROUPEXT = 727, /* TASKPAYLOADWORKGROUPEXT */ - PRECISE = 728 /* PRECISE */ + FLOATE5M2_T = 318, /* FLOATE5M2_T */ + FLOATE4M3_T = 319, /* FLOATE4M3_T */ + BFLOAT16_T = 320, /* BFLOAT16_T */ + FLOAT16_T = 321, /* FLOAT16_T */ + FLOAT32_T = 322, /* FLOAT32_T */ + DOUBLE = 323, /* DOUBLE */ + FLOAT64_T = 324, /* FLOAT64_T */ + INT64_T = 325, /* INT64_T */ + UINT64_T = 326, /* UINT64_T */ + INT32_T = 327, /* INT32_T */ + UINT32_T = 328, /* UINT32_T */ + INT16_T = 329, /* INT16_T */ + UINT16_T = 330, /* UINT16_T */ + INT8_T = 331, /* INT8_T */ + UINT8_T = 332, /* UINT8_T */ + I64VEC2 = 333, /* I64VEC2 */ + I64VEC3 = 334, /* I64VEC3 */ + I64VEC4 = 335, /* I64VEC4 */ + U64VEC2 = 336, /* U64VEC2 */ + U64VEC3 = 337, /* U64VEC3 */ + U64VEC4 = 338, /* U64VEC4 */ + I32VEC2 = 339, /* I32VEC2 */ + I32VEC3 = 340, /* I32VEC3 */ + I32VEC4 = 341, /* I32VEC4 */ + U32VEC2 = 342, /* U32VEC2 */ + U32VEC3 = 343, /* U32VEC3 */ + U32VEC4 = 344, /* U32VEC4 */ + I16VEC2 = 345, /* I16VEC2 */ + I16VEC3 = 346, /* I16VEC3 */ + I16VEC4 = 347, /* I16VEC4 */ + U16VEC2 = 348, /* U16VEC2 */ + U16VEC3 = 349, /* U16VEC3 */ + U16VEC4 = 350, /* U16VEC4 */ + I8VEC2 = 351, /* I8VEC2 */ + I8VEC3 = 352, /* I8VEC3 */ + I8VEC4 = 353, /* I8VEC4 */ + U8VEC2 = 354, /* U8VEC2 */ + U8VEC3 = 355, /* U8VEC3 */ + U8VEC4 = 356, /* U8VEC4 */ + DVEC2 = 357, /* DVEC2 */ + DVEC3 = 358, /* DVEC3 */ + DVEC4 = 359, /* DVEC4 */ + DMAT2 = 360, /* DMAT2 */ + DMAT3 = 361, /* DMAT3 */ + DMAT4 = 362, /* DMAT4 */ + BF16VEC2 = 363, /* BF16VEC2 */ + BF16VEC3 = 364, /* BF16VEC3 */ + BF16VEC4 = 365, /* BF16VEC4 */ + FE5M2VEC2 = 366, /* FE5M2VEC2 */ + FE5M2VEC3 = 367, /* FE5M2VEC3 */ + FE5M2VEC4 = 368, /* FE5M2VEC4 */ + FE4M3VEC2 = 369, /* FE4M3VEC2 */ + FE4M3VEC3 = 370, /* FE4M3VEC3 */ + FE4M3VEC4 = 371, /* FE4M3VEC4 */ + F16VEC2 = 372, /* F16VEC2 */ + F16VEC3 = 373, /* F16VEC3 */ + F16VEC4 = 374, /* F16VEC4 */ + F16MAT2 = 375, /* F16MAT2 */ + F16MAT3 = 376, /* F16MAT3 */ + F16MAT4 = 377, /* F16MAT4 */ + F32VEC2 = 378, /* F32VEC2 */ + F32VEC3 = 379, /* F32VEC3 */ + F32VEC4 = 380, /* F32VEC4 */ + F32MAT2 = 381, /* F32MAT2 */ + F32MAT3 = 382, /* F32MAT3 */ + F32MAT4 = 383, /* F32MAT4 */ + F64VEC2 = 384, /* F64VEC2 */ + F64VEC3 = 385, /* F64VEC3 */ + F64VEC4 = 386, /* F64VEC4 */ + F64MAT2 = 387, /* F64MAT2 */ + F64MAT3 = 388, /* F64MAT3 */ + F64MAT4 = 389, /* F64MAT4 */ + DMAT2X2 = 390, /* DMAT2X2 */ + DMAT2X3 = 391, /* DMAT2X3 */ + DMAT2X4 = 392, /* DMAT2X4 */ + DMAT3X2 = 393, /* DMAT3X2 */ + DMAT3X3 = 394, /* DMAT3X3 */ + DMAT3X4 = 395, /* DMAT3X4 */ + DMAT4X2 = 396, /* DMAT4X2 */ + DMAT4X3 = 397, /* DMAT4X3 */ + DMAT4X4 = 398, /* DMAT4X4 */ + F16MAT2X2 = 399, /* F16MAT2X2 */ + F16MAT2X3 = 400, /* F16MAT2X3 */ + F16MAT2X4 = 401, /* F16MAT2X4 */ + F16MAT3X2 = 402, /* F16MAT3X2 */ + F16MAT3X3 = 403, /* F16MAT3X3 */ + F16MAT3X4 = 404, /* F16MAT3X4 */ + F16MAT4X2 = 405, /* F16MAT4X2 */ + F16MAT4X3 = 406, /* F16MAT4X3 */ + F16MAT4X4 = 407, /* F16MAT4X4 */ + F32MAT2X2 = 408, /* F32MAT2X2 */ + F32MAT2X3 = 409, /* F32MAT2X3 */ + F32MAT2X4 = 410, /* F32MAT2X4 */ + F32MAT3X2 = 411, /* F32MAT3X2 */ + F32MAT3X3 = 412, /* F32MAT3X3 */ + F32MAT3X4 = 413, /* F32MAT3X4 */ + F32MAT4X2 = 414, /* F32MAT4X2 */ + F32MAT4X3 = 415, /* F32MAT4X3 */ + F32MAT4X4 = 416, /* F32MAT4X4 */ + F64MAT2X2 = 417, /* F64MAT2X2 */ + F64MAT2X3 = 418, /* F64MAT2X3 */ + F64MAT2X4 = 419, /* F64MAT2X4 */ + F64MAT3X2 = 420, /* F64MAT3X2 */ + F64MAT3X3 = 421, /* F64MAT3X3 */ + F64MAT3X4 = 422, /* F64MAT3X4 */ + F64MAT4X2 = 423, /* F64MAT4X2 */ + F64MAT4X3 = 424, /* F64MAT4X3 */ + F64MAT4X4 = 425, /* F64MAT4X4 */ + ATOMIC_UINT = 426, /* ATOMIC_UINT */ + ACCSTRUCTNV = 427, /* ACCSTRUCTNV */ + ACCSTRUCTEXT = 428, /* ACCSTRUCTEXT */ + RAYQUERYEXT = 429, /* RAYQUERYEXT */ + FCOOPMATNV = 430, /* FCOOPMATNV */ + ICOOPMATNV = 431, /* ICOOPMATNV */ + UCOOPMATNV = 432, /* UCOOPMATNV */ + COOPMAT = 433, /* COOPMAT */ + COOPVECNV = 434, /* COOPVECNV */ + HITOBJECTNV = 435, /* HITOBJECTNV */ + HITOBJECTATTRNV = 436, /* HITOBJECTATTRNV */ + TENSORLAYOUTNV = 437, /* TENSORLAYOUTNV */ + TENSORVIEWNV = 438, /* TENSORVIEWNV */ + TENSORARM = 439, /* TENSORARM */ + SAMPLERCUBEARRAY = 440, /* SAMPLERCUBEARRAY */ + SAMPLERCUBEARRAYSHADOW = 441, /* SAMPLERCUBEARRAYSHADOW */ + ISAMPLERCUBEARRAY = 442, /* ISAMPLERCUBEARRAY */ + USAMPLERCUBEARRAY = 443, /* USAMPLERCUBEARRAY */ + SAMPLER1D = 444, /* SAMPLER1D */ + SAMPLER1DARRAY = 445, /* SAMPLER1DARRAY */ + SAMPLER1DARRAYSHADOW = 446, /* SAMPLER1DARRAYSHADOW */ + ISAMPLER1D = 447, /* ISAMPLER1D */ + SAMPLER1DSHADOW = 448, /* SAMPLER1DSHADOW */ + SAMPLER2DRECT = 449, /* SAMPLER2DRECT */ + SAMPLER2DRECTSHADOW = 450, /* SAMPLER2DRECTSHADOW */ + ISAMPLER2DRECT = 451, /* ISAMPLER2DRECT */ + USAMPLER2DRECT = 452, /* USAMPLER2DRECT */ + SAMPLERBUFFER = 453, /* SAMPLERBUFFER */ + ISAMPLERBUFFER = 454, /* ISAMPLERBUFFER */ + USAMPLERBUFFER = 455, /* USAMPLERBUFFER */ + SAMPLER2DMS = 456, /* SAMPLER2DMS */ + ISAMPLER2DMS = 457, /* ISAMPLER2DMS */ + USAMPLER2DMS = 458, /* USAMPLER2DMS */ + SAMPLER2DMSARRAY = 459, /* SAMPLER2DMSARRAY */ + ISAMPLER2DMSARRAY = 460, /* ISAMPLER2DMSARRAY */ + USAMPLER2DMSARRAY = 461, /* USAMPLER2DMSARRAY */ + SAMPLEREXTERNALOES = 462, /* SAMPLEREXTERNALOES */ + SAMPLEREXTERNAL2DY2YEXT = 463, /* SAMPLEREXTERNAL2DY2YEXT */ + ISAMPLER1DARRAY = 464, /* ISAMPLER1DARRAY */ + USAMPLER1D = 465, /* USAMPLER1D */ + USAMPLER1DARRAY = 466, /* USAMPLER1DARRAY */ + F16SAMPLER1D = 467, /* F16SAMPLER1D */ + F16SAMPLER2D = 468, /* F16SAMPLER2D */ + F16SAMPLER3D = 469, /* F16SAMPLER3D */ + F16SAMPLER2DRECT = 470, /* F16SAMPLER2DRECT */ + F16SAMPLERCUBE = 471, /* F16SAMPLERCUBE */ + F16SAMPLER1DARRAY = 472, /* F16SAMPLER1DARRAY */ + F16SAMPLER2DARRAY = 473, /* F16SAMPLER2DARRAY */ + F16SAMPLERCUBEARRAY = 474, /* F16SAMPLERCUBEARRAY */ + F16SAMPLERBUFFER = 475, /* F16SAMPLERBUFFER */ + F16SAMPLER2DMS = 476, /* F16SAMPLER2DMS */ + F16SAMPLER2DMSARRAY = 477, /* F16SAMPLER2DMSARRAY */ + F16SAMPLER1DSHADOW = 478, /* F16SAMPLER1DSHADOW */ + F16SAMPLER2DSHADOW = 479, /* F16SAMPLER2DSHADOW */ + F16SAMPLER1DARRAYSHADOW = 480, /* F16SAMPLER1DARRAYSHADOW */ + F16SAMPLER2DARRAYSHADOW = 481, /* F16SAMPLER2DARRAYSHADOW */ + F16SAMPLER2DRECTSHADOW = 482, /* F16SAMPLER2DRECTSHADOW */ + F16SAMPLERCUBESHADOW = 483, /* F16SAMPLERCUBESHADOW */ + F16SAMPLERCUBEARRAYSHADOW = 484, /* F16SAMPLERCUBEARRAYSHADOW */ + IMAGE1D = 485, /* IMAGE1D */ + IIMAGE1D = 486, /* IIMAGE1D */ + UIMAGE1D = 487, /* UIMAGE1D */ + IMAGE2D = 488, /* IMAGE2D */ + IIMAGE2D = 489, /* IIMAGE2D */ + UIMAGE2D = 490, /* UIMAGE2D */ + IMAGE3D = 491, /* IMAGE3D */ + IIMAGE3D = 492, /* IIMAGE3D */ + UIMAGE3D = 493, /* UIMAGE3D */ + IMAGE2DRECT = 494, /* IMAGE2DRECT */ + IIMAGE2DRECT = 495, /* IIMAGE2DRECT */ + UIMAGE2DRECT = 496, /* UIMAGE2DRECT */ + IMAGECUBE = 497, /* IMAGECUBE */ + IIMAGECUBE = 498, /* IIMAGECUBE */ + UIMAGECUBE = 499, /* UIMAGECUBE */ + IMAGEBUFFER = 500, /* IMAGEBUFFER */ + IIMAGEBUFFER = 501, /* IIMAGEBUFFER */ + UIMAGEBUFFER = 502, /* UIMAGEBUFFER */ + IMAGE1DARRAY = 503, /* IMAGE1DARRAY */ + IIMAGE1DARRAY = 504, /* IIMAGE1DARRAY */ + UIMAGE1DARRAY = 505, /* UIMAGE1DARRAY */ + IMAGE2DARRAY = 506, /* IMAGE2DARRAY */ + IIMAGE2DARRAY = 507, /* IIMAGE2DARRAY */ + UIMAGE2DARRAY = 508, /* UIMAGE2DARRAY */ + IMAGECUBEARRAY = 509, /* IMAGECUBEARRAY */ + IIMAGECUBEARRAY = 510, /* IIMAGECUBEARRAY */ + UIMAGECUBEARRAY = 511, /* UIMAGECUBEARRAY */ + IMAGE2DMS = 512, /* IMAGE2DMS */ + IIMAGE2DMS = 513, /* IIMAGE2DMS */ + UIMAGE2DMS = 514, /* UIMAGE2DMS */ + IMAGE2DMSARRAY = 515, /* IMAGE2DMSARRAY */ + IIMAGE2DMSARRAY = 516, /* IIMAGE2DMSARRAY */ + UIMAGE2DMSARRAY = 517, /* UIMAGE2DMSARRAY */ + F16IMAGE1D = 518, /* F16IMAGE1D */ + F16IMAGE2D = 519, /* F16IMAGE2D */ + F16IMAGE3D = 520, /* F16IMAGE3D */ + F16IMAGE2DRECT = 521, /* F16IMAGE2DRECT */ + F16IMAGECUBE = 522, /* F16IMAGECUBE */ + F16IMAGE1DARRAY = 523, /* F16IMAGE1DARRAY */ + F16IMAGE2DARRAY = 524, /* F16IMAGE2DARRAY */ + F16IMAGECUBEARRAY = 525, /* F16IMAGECUBEARRAY */ + F16IMAGEBUFFER = 526, /* F16IMAGEBUFFER */ + F16IMAGE2DMS = 527, /* F16IMAGE2DMS */ + F16IMAGE2DMSARRAY = 528, /* F16IMAGE2DMSARRAY */ + I64IMAGE1D = 529, /* I64IMAGE1D */ + U64IMAGE1D = 530, /* U64IMAGE1D */ + I64IMAGE2D = 531, /* I64IMAGE2D */ + U64IMAGE2D = 532, /* U64IMAGE2D */ + I64IMAGE3D = 533, /* I64IMAGE3D */ + U64IMAGE3D = 534, /* U64IMAGE3D */ + I64IMAGE2DRECT = 535, /* I64IMAGE2DRECT */ + U64IMAGE2DRECT = 536, /* U64IMAGE2DRECT */ + I64IMAGECUBE = 537, /* I64IMAGECUBE */ + U64IMAGECUBE = 538, /* U64IMAGECUBE */ + I64IMAGEBUFFER = 539, /* I64IMAGEBUFFER */ + U64IMAGEBUFFER = 540, /* U64IMAGEBUFFER */ + I64IMAGE1DARRAY = 541, /* I64IMAGE1DARRAY */ + U64IMAGE1DARRAY = 542, /* U64IMAGE1DARRAY */ + I64IMAGE2DARRAY = 543, /* I64IMAGE2DARRAY */ + U64IMAGE2DARRAY = 544, /* U64IMAGE2DARRAY */ + I64IMAGECUBEARRAY = 545, /* I64IMAGECUBEARRAY */ + U64IMAGECUBEARRAY = 546, /* U64IMAGECUBEARRAY */ + I64IMAGE2DMS = 547, /* I64IMAGE2DMS */ + U64IMAGE2DMS = 548, /* U64IMAGE2DMS */ + I64IMAGE2DMSARRAY = 549, /* I64IMAGE2DMSARRAY */ + U64IMAGE2DMSARRAY = 550, /* U64IMAGE2DMSARRAY */ + TEXTURECUBEARRAY = 551, /* TEXTURECUBEARRAY */ + ITEXTURECUBEARRAY = 552, /* ITEXTURECUBEARRAY */ + UTEXTURECUBEARRAY = 553, /* UTEXTURECUBEARRAY */ + TEXTURE1D = 554, /* TEXTURE1D */ + ITEXTURE1D = 555, /* ITEXTURE1D */ + UTEXTURE1D = 556, /* UTEXTURE1D */ + TEXTURE1DARRAY = 557, /* TEXTURE1DARRAY */ + ITEXTURE1DARRAY = 558, /* ITEXTURE1DARRAY */ + UTEXTURE1DARRAY = 559, /* UTEXTURE1DARRAY */ + TEXTURE2DRECT = 560, /* TEXTURE2DRECT */ + ITEXTURE2DRECT = 561, /* ITEXTURE2DRECT */ + UTEXTURE2DRECT = 562, /* UTEXTURE2DRECT */ + TEXTUREBUFFER = 563, /* TEXTUREBUFFER */ + ITEXTUREBUFFER = 564, /* ITEXTUREBUFFER */ + UTEXTUREBUFFER = 565, /* UTEXTUREBUFFER */ + TEXTURE2DMS = 566, /* TEXTURE2DMS */ + ITEXTURE2DMS = 567, /* ITEXTURE2DMS */ + UTEXTURE2DMS = 568, /* UTEXTURE2DMS */ + TEXTURE2DMSARRAY = 569, /* TEXTURE2DMSARRAY */ + ITEXTURE2DMSARRAY = 570, /* ITEXTURE2DMSARRAY */ + UTEXTURE2DMSARRAY = 571, /* UTEXTURE2DMSARRAY */ + F16TEXTURE1D = 572, /* F16TEXTURE1D */ + F16TEXTURE2D = 573, /* F16TEXTURE2D */ + F16TEXTURE3D = 574, /* F16TEXTURE3D */ + F16TEXTURE2DRECT = 575, /* F16TEXTURE2DRECT */ + F16TEXTURECUBE = 576, /* F16TEXTURECUBE */ + F16TEXTURE1DARRAY = 577, /* F16TEXTURE1DARRAY */ + F16TEXTURE2DARRAY = 578, /* F16TEXTURE2DARRAY */ + F16TEXTURECUBEARRAY = 579, /* F16TEXTURECUBEARRAY */ + F16TEXTUREBUFFER = 580, /* F16TEXTUREBUFFER */ + F16TEXTURE2DMS = 581, /* F16TEXTURE2DMS */ + F16TEXTURE2DMSARRAY = 582, /* F16TEXTURE2DMSARRAY */ + SUBPASSINPUT = 583, /* SUBPASSINPUT */ + SUBPASSINPUTMS = 584, /* SUBPASSINPUTMS */ + ISUBPASSINPUT = 585, /* ISUBPASSINPUT */ + ISUBPASSINPUTMS = 586, /* ISUBPASSINPUTMS */ + USUBPASSINPUT = 587, /* USUBPASSINPUT */ + USUBPASSINPUTMS = 588, /* USUBPASSINPUTMS */ + F16SUBPASSINPUT = 589, /* F16SUBPASSINPUT */ + F16SUBPASSINPUTMS = 590, /* F16SUBPASSINPUTMS */ + SPIRV_INSTRUCTION = 591, /* SPIRV_INSTRUCTION */ + SPIRV_EXECUTION_MODE = 592, /* SPIRV_EXECUTION_MODE */ + SPIRV_EXECUTION_MODE_ID = 593, /* SPIRV_EXECUTION_MODE_ID */ + SPIRV_DECORATE = 594, /* SPIRV_DECORATE */ + SPIRV_DECORATE_ID = 595, /* SPIRV_DECORATE_ID */ + SPIRV_DECORATE_STRING = 596, /* SPIRV_DECORATE_STRING */ + SPIRV_TYPE = 597, /* SPIRV_TYPE */ + SPIRV_STORAGE_CLASS = 598, /* SPIRV_STORAGE_CLASS */ + SPIRV_BY_REFERENCE = 599, /* SPIRV_BY_REFERENCE */ + SPIRV_LITERAL = 600, /* SPIRV_LITERAL */ + ATTACHMENTEXT = 601, /* ATTACHMENTEXT */ + IATTACHMENTEXT = 602, /* IATTACHMENTEXT */ + UATTACHMENTEXT = 603, /* UATTACHMENTEXT */ + LEFT_OP = 604, /* LEFT_OP */ + RIGHT_OP = 605, /* RIGHT_OP */ + INC_OP = 606, /* INC_OP */ + DEC_OP = 607, /* DEC_OP */ + LE_OP = 608, /* LE_OP */ + GE_OP = 609, /* GE_OP */ + EQ_OP = 610, /* EQ_OP */ + NE_OP = 611, /* NE_OP */ + AND_OP = 612, /* AND_OP */ + OR_OP = 613, /* OR_OP */ + XOR_OP = 614, /* XOR_OP */ + MUL_ASSIGN = 615, /* MUL_ASSIGN */ + DIV_ASSIGN = 616, /* DIV_ASSIGN */ + ADD_ASSIGN = 617, /* ADD_ASSIGN */ + MOD_ASSIGN = 618, /* MOD_ASSIGN */ + LEFT_ASSIGN = 619, /* LEFT_ASSIGN */ + RIGHT_ASSIGN = 620, /* RIGHT_ASSIGN */ + AND_ASSIGN = 621, /* AND_ASSIGN */ + XOR_ASSIGN = 622, /* XOR_ASSIGN */ + OR_ASSIGN = 623, /* OR_ASSIGN */ + SUB_ASSIGN = 624, /* SUB_ASSIGN */ + STRING_LITERAL = 625, /* STRING_LITERAL */ + LEFT_PAREN = 626, /* LEFT_PAREN */ + RIGHT_PAREN = 627, /* RIGHT_PAREN */ + LEFT_BRACKET = 628, /* LEFT_BRACKET */ + RIGHT_BRACKET = 629, /* RIGHT_BRACKET */ + LEFT_BRACE = 630, /* LEFT_BRACE */ + RIGHT_BRACE = 631, /* RIGHT_BRACE */ + DOT = 632, /* DOT */ + COMMA = 633, /* COMMA */ + COLON = 634, /* COLON */ + EQUAL = 635, /* EQUAL */ + SEMICOLON = 636, /* SEMICOLON */ + BANG = 637, /* BANG */ + DASH = 638, /* DASH */ + TILDE = 639, /* TILDE */ + PLUS = 640, /* PLUS */ + STAR = 641, /* STAR */ + SLASH = 642, /* SLASH */ + PERCENT = 643, /* PERCENT */ + LEFT_ANGLE = 644, /* LEFT_ANGLE */ + RIGHT_ANGLE = 645, /* RIGHT_ANGLE */ + VERTICAL_BAR = 646, /* VERTICAL_BAR */ + CARET = 647, /* CARET */ + AMPERSAND = 648, /* AMPERSAND */ + QUESTION = 649, /* QUESTION */ + INVARIANT = 650, /* INVARIANT */ + HIGH_PRECISION = 651, /* HIGH_PRECISION */ + MEDIUM_PRECISION = 652, /* MEDIUM_PRECISION */ + LOW_PRECISION = 653, /* LOW_PRECISION */ + PRECISION = 654, /* PRECISION */ + PACKED = 655, /* PACKED */ + RESOURCE = 656, /* RESOURCE */ + SUPERP = 657, /* SUPERP */ + FLOATCONSTANT = 658, /* FLOATCONSTANT */ + INTCONSTANT = 659, /* INTCONSTANT */ + UINTCONSTANT = 660, /* UINTCONSTANT */ + BOOLCONSTANT = 661, /* BOOLCONSTANT */ + IDENTIFIER = 662, /* IDENTIFIER */ + TYPE_NAME = 663, /* TYPE_NAME */ + CENTROID = 664, /* CENTROID */ + IN = 665, /* IN */ + OUT = 666, /* OUT */ + INOUT = 667, /* INOUT */ + STRUCT = 668, /* STRUCT */ + VOID = 669, /* VOID */ + WHILE = 670, /* WHILE */ + BREAK = 671, /* BREAK */ + CONTINUE = 672, /* CONTINUE */ + DO = 673, /* DO */ + ELSE = 674, /* ELSE */ + FOR = 675, /* FOR */ + IF = 676, /* IF */ + DISCARD = 677, /* DISCARD */ + RETURN = 678, /* RETURN */ + SWITCH = 679, /* SWITCH */ + CASE = 680, /* CASE */ + DEFAULT = 681, /* DEFAULT */ + TERMINATE_INVOCATION = 682, /* TERMINATE_INVOCATION */ + TERMINATE_RAY = 683, /* TERMINATE_RAY */ + IGNORE_INTERSECTION = 684, /* IGNORE_INTERSECTION */ + UNIFORM = 685, /* UNIFORM */ + SHARED = 686, /* SHARED */ + BUFFER = 687, /* BUFFER */ + TILEIMAGEEXT = 688, /* TILEIMAGEEXT */ + FLAT = 689, /* FLAT */ + SMOOTH = 690, /* SMOOTH */ + LAYOUT = 691, /* LAYOUT */ + DOUBLECONSTANT = 692, /* DOUBLECONSTANT */ + INT16CONSTANT = 693, /* INT16CONSTANT */ + UINT16CONSTANT = 694, /* UINT16CONSTANT */ + FLOAT16CONSTANT = 695, /* FLOAT16CONSTANT */ + INT32CONSTANT = 696, /* INT32CONSTANT */ + UINT32CONSTANT = 697, /* UINT32CONSTANT */ + INT64CONSTANT = 698, /* INT64CONSTANT */ + UINT64CONSTANT = 699, /* UINT64CONSTANT */ + SUBROUTINE = 700, /* SUBROUTINE */ + DEMOTE = 701, /* DEMOTE */ + FUNCTION = 702, /* FUNCTION */ + PAYLOADNV = 703, /* PAYLOADNV */ + PAYLOADINNV = 704, /* PAYLOADINNV */ + HITATTRNV = 705, /* HITATTRNV */ + CALLDATANV = 706, /* CALLDATANV */ + CALLDATAINNV = 707, /* CALLDATAINNV */ + PAYLOADEXT = 708, /* PAYLOADEXT */ + PAYLOADINEXT = 709, /* PAYLOADINEXT */ + HITATTREXT = 710, /* HITATTREXT */ + CALLDATAEXT = 711, /* CALLDATAEXT */ + CALLDATAINEXT = 712, /* CALLDATAINEXT */ + PATCH = 713, /* PATCH */ + SAMPLE = 714, /* SAMPLE */ + NONUNIFORM = 715, /* NONUNIFORM */ + COHERENT = 716, /* COHERENT */ + VOLATILE = 717, /* VOLATILE */ + RESTRICT = 718, /* RESTRICT */ + READONLY = 719, /* READONLY */ + WRITEONLY = 720, /* WRITEONLY */ + NONTEMPORAL = 721, /* NONTEMPORAL */ + DEVICECOHERENT = 722, /* DEVICECOHERENT */ + QUEUEFAMILYCOHERENT = 723, /* QUEUEFAMILYCOHERENT */ + WORKGROUPCOHERENT = 724, /* WORKGROUPCOHERENT */ + SUBGROUPCOHERENT = 725, /* SUBGROUPCOHERENT */ + NONPRIVATE = 726, /* NONPRIVATE */ + SHADERCALLCOHERENT = 727, /* SHADERCALLCOHERENT */ + NOPERSPECTIVE = 728, /* NOPERSPECTIVE */ + EXPLICITINTERPAMD = 729, /* EXPLICITINTERPAMD */ + PERVERTEXEXT = 730, /* PERVERTEXEXT */ + PERVERTEXNV = 731, /* PERVERTEXNV */ + PERPRIMITIVENV = 732, /* PERPRIMITIVENV */ + PERVIEWNV = 733, /* PERVIEWNV */ + PERTASKNV = 734, /* PERTASKNV */ + PERPRIMITIVEEXT = 735, /* PERPRIMITIVEEXT */ + TASKPAYLOADWORKGROUPEXT = 736, /* TASKPAYLOADWORKGROUPEXT */ + PRECISE = 737 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -572,7 +581,7 @@ union YYSTYPE glslang::TTypeParameters* typeParameters; } interm; -#line 576 "MachineIndependent/glslang_tab.cpp.h" +#line 585 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp b/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp index 7ec8ed4a7..b28da23f8 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp @@ -629,6 +629,14 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructBF16Vec2: out.debug << "Construct bf16vec2"; break; case EOpConstructBF16Vec3: out.debug << "Construct bf16vec3"; break; case EOpConstructBF16Vec4: out.debug << "Construct bf16vec4"; break; + case EOpConstructFloatE5M2: out.debug << "Construct floate5m2_t"; break; + case EOpConstructFloatE5M2Vec2: out.debug << "Construct fe5m2vec2"; break; + case EOpConstructFloatE5M2Vec3: out.debug << "Construct fe5m2vec3"; break; + case EOpConstructFloatE5M2Vec4: out.debug << "Construct fe5m2vec4"; break; + case EOpConstructFloatE4M3: out.debug << "Construct floate4m3_t"; break; + case EOpConstructFloatE4M3Vec2: out.debug << "Construct fe4m3vec2"; break; + case EOpConstructFloatE4M3Vec3: out.debug << "Construct fe4m3vec3"; break; + case EOpConstructFloatE4M3Vec4: out.debug << "Construct fe4m3vec4"; break; case EOpConstructFloat16: out.debug << "Construct float16_t"; break; case EOpConstructF16Vec2: out.debug << "Construct f16vec2"; break; case EOpConstructF16Vec3: out.debug << "Construct f16vec3"; break; @@ -650,6 +658,11 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructCooperativeVectorNV: out.debug << "Construct cooperative vector NV"; break; case EOpConstructAccStruct: out.debug << "Construct acceleration structure"; break; + case EOpBitCastArrayQCOM: out.debug << "Bitcast To Array QCOM"; break; + case EOpExtractSubArrayQCOM: out.debug << "Extract Subarray QCOM"; break; + case EOpCompositeConstructCoopMatQCOM: out.debug << "Construct Cooperative Matrix QCOM"; break; + case EOpCompositeExtractCoopMatQCOM: out.debug << "Extract Cooperative Matrix QCOM"; break; + case EOpLessThan: out.debug << "Compare Less Than"; break; case EOpGreaterThan: out.debug << "Compare Greater Than"; break; case EOpLessThanEqual: out.debug << "Compare Less Than or Equal"; break; @@ -975,6 +988,10 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpCooperativeVectorOuterProductAccumulateNV: out.debug << "Cooperative vector outer product accumulate NV"; break; case EOpCooperativeVectorReduceSumAccumulateNV: out.debug << "Cooperative vector reduce sum accumulate NV"; break; + case EOpTensorReadARM: out.debug << "Read from tensor"; break; + case EOpTensorWriteARM: out.debug << "Write to tensor"; break; + case EOpTensorSizeARM: out.debug << "Get tensor size"; break; + case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break; case EOpDebugPrintf: out.debug << "Debug printf"; break; @@ -1164,6 +1181,8 @@ static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const case EbtDouble: case EbtFloat16: case EbtBFloat16: + case EbtFloatE5M2: + case EbtFloatE4M3: OutputDouble(out, constUnion[i].getDConst(), extra); out.debug << "\n"; break; diff --git a/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp b/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp index fa0e66e7c..3fd647796 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp @@ -535,6 +535,9 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) error(infoSink, "number of invocations must match between compilation units"); } + // The GLSL specification requires that at least one compilation unit + // must declare the vertices layout, but not all units need to do so. + // However, all declarations must match. if (vertices == TQualifier::layoutNotSet) vertices = unit.vertices; else if (unit.vertices != TQualifier::layoutNotSet && vertices != unit.vertices) { @@ -545,20 +548,30 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) else assert(0); } + + // The mesh shader extension requires that at least one compilation unit + // must declare the max_primitives layout, but not all units need to do so. + // However, all declarations must match. if (primitives == TQualifier::layoutNotSet) primitives = unit.primitives; - else if (primitives != unit.primitives) { + else if (unit.primitives != TQualifier::layoutNotSet && primitives != unit.primitives) { if (language == EShLangMesh) error(infoSink, "Contradictory layout max_primitives values"); else assert(0); } + // The GLSL specification requires that at least one compilation unit + // must declare the input primitive layout, but not all units need to do so. + // However, all declarations must match. if (inputPrimitive == ElgNone) inputPrimitive = unit.inputPrimitive; else if (unit.inputPrimitive != ElgNone && inputPrimitive != unit.inputPrimitive) error(infoSink, "Contradictory input layout primitives"); + // The GLSL specification requires that at least one compilation unit + // must declare the output primitive layout, but not all units need to do so. + // However, all declarations must match. if (outputPrimitive == ElgNone) outputPrimitive = unit.outputPrimitive; else if (unit.outputPrimitive != ElgNone && outputPrimitive != unit.outputPrimitive) @@ -567,19 +580,27 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) if (originUpperLeft != unit.originUpperLeft || pixelCenterInteger != unit.pixelCenterInteger) error(infoSink, "gl_FragCoord redeclarations must match across shaders"); + // The GLSL specification requires that at least one compilation unit + // must declare the vertex spacing layout, but not all units need to do so. + // However, all declarations must match. if (vertexSpacing == EvsNone) vertexSpacing = unit.vertexSpacing; - else if (vertexSpacing != unit.vertexSpacing) + else if (unit.vertexSpacing != EvsNone && vertexSpacing != unit.vertexSpacing) error(infoSink, "Contradictory input vertex spacing"); + // The GLSL specification requires that at least one compilation unit + // must declare the triangle ordering layout, but not all units need to do so. + // However, all declarations must match. if (vertexOrder == EvoNone) vertexOrder = unit.vertexOrder; - else if (vertexOrder != unit.vertexOrder) + else if (unit.vertexOrder != EvoNone && vertexOrder != unit.vertexOrder) error(infoSink, "Contradictory triangle ordering"); MERGE_TRUE(pointMode); for (int i = 0; i < 3; ++i) { + // The GLSL specification requires that all workgroup size declarations must match + // but not all units have to declare the layout. if (unit.localSizeNotDefault[i]) { if (!localSizeNotDefault[i]) { localSize[i] = unit.localSize[i]; @@ -589,9 +610,11 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) error(infoSink, "Contradictory local size"); } + // The GLSL specification requires that all workgroup size specialization + // ids declarations must match, but not all units have to declare the layout. if (localSizeSpecId[i] == TQualifier::layoutNotSet) localSizeSpecId[i] = unit.localSizeSpecId[i]; - else if (localSizeSpecId[i] != unit.localSizeSpecId[i]) + else if (unit.localSizeSpecId[i] != TQualifier::layoutNotSet && localSizeSpecId[i] != unit.localSizeSpecId[i]) error(infoSink, "Contradictory local size specialization ids"); } @@ -602,9 +625,11 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(nonCoherentStencilAttachmentReadEXT); MERGE_TRUE(nonCoherentTileAttachmentReadQCOM); + // The GLSL specification requires that all depth layout redeclarations must match, + // but not all units have to declare the layout. if (depthLayout == EldNone) depthLayout = unit.depthLayout; - else if (depthLayout != unit.depthLayout) + else if (unit.depthLayout != EldNone && depthLayout != unit.depthLayout) error(infoSink, "Contradictory depth layouts"); MERGE_TRUE(depthReplacing); @@ -615,9 +640,11 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(xfbMode); for (size_t b = 0; b < xfbBuffers.size(); ++b) { + // The GLSL specification requires that all xfb_stride declarations for + // the same buffer must match, but not all units have to declare the layout. if (xfbBuffers[b].stride == TQualifier::layoutXfbStrideEnd) xfbBuffers[b].stride = unit.xfbBuffers[b].stride; - else if (xfbBuffers[b].stride != unit.xfbBuffers[b].stride) + else if (unit.xfbBuffers[b].stride != TQualifier::layoutXfbStrideEnd && xfbBuffers[b].stride != unit.xfbBuffers[b].stride) error(infoSink, "Contradictory xfb_stride"); xfbBuffers[b].implicitStride = std::max(xfbBuffers[b].implicitStride, unit.xfbBuffers[b].implicitStride); if (unit.xfbBuffers[b].contains64BitType) @@ -2386,6 +2413,8 @@ int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size) case EbtDouble: size = 8; return 8; case EbtFloat16: size = 2; return 2; case EbtBFloat16: size = 2; return 2; + case EbtFloatE5M2: + case EbtFloatE4M3: case EbtInt8: case EbtUint8: size = 1; return 1; case EbtInt16: diff --git a/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h b/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h index 1deb2db1b..81f5f59b8 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h +++ b/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h @@ -104,6 +104,8 @@ public: virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void float16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void bfloat16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); + virtual void floate5m2ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); + virtual void floate4m3ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual bool float16Arithmetic(); virtual void requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc); virtual void int16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false); @@ -122,9 +124,11 @@ public: virtual void fcoopmatCheckNV(const TSourceLoc&, const char* op, bool builtIn = false); virtual void intcoopmatCheckNV(const TSourceLoc&, const char *op, bool builtIn = false); virtual void coopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false); + virtual void coopmatConverisonCheckQCOM(const TSourceLoc& loc, const char* op, bool builtIn = false); virtual void tensorLayoutViewCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void coopvecCheck(const TSourceLoc&, const char* op, bool builtIn = false); virtual void intattachmentCheck(const TSourceLoc&, const char *op, bool builtIn = false); + virtual void tensorCheckARM(const TSourceLoc&, const char *op, bool builtIn = false); bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; } bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; } bool isForwardCompatible() const { return forwardCompatible; } diff --git a/3rdparty/glslang/glslang/ResourceLimits/ResourceLimits.cpp b/3rdparty/glslang/glslang/ResourceLimits/ResourceLimits.cpp index 0e9d1b548..79a1b3a6d 100644 --- a/3rdparty/glslang/glslang/ResourceLimits/ResourceLimits.cpp +++ b/3rdparty/glslang/glslang/ResourceLimits/ResourceLimits.cpp @@ -39,9 +39,9 @@ #include "glslang/Public/ResourceLimits.h" -TBuiltInResource Resources; +static TBuiltInResource Resources; -const TBuiltInResource DefaultTBuiltInResource = { +static const TBuiltInResource DefaultTBuiltInResource = { /* .MaxLights = */ 32, /* .MaxClipPlanes = */ 6, /* .MaxTextureUnits = */ 32,