diff --git a/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h b/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h index d2098cc1a..a1b9ef957 100644 --- a/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h +++ b/3rdparty/glslang/SPIRV/GLSL.ext.AMD.h @@ -28,11 +28,12 @@ #define GLSLextAMD_H enum BuiltIn; +enum Capability; enum Decoration; enum Op; static const int GLSLextAMDVersion = 100; -static const int GLSLextAMDRevision = 2; +static const int GLSLextAMDRevision = 4; // SPV_AMD_shader_ballot static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot"; @@ -113,4 +114,12 @@ enum GcnShaderAMD { // SPV_AMD_gpu_shader_half_float static const char* const E_SPV_AMD_gpu_shader_half_float = "SPV_AMD_gpu_shader_half_float"; +// SPV_AMD_texture_gather_bias_lod +static const char* const E_SPV_AMD_texture_gather_bias_lod = "SPV_AMD_texture_gather_bias_lod"; + +static const Capability OpCapabilityImageGatherBiasLodAMD = static_cast(5009); + +// SPV_AMD_gpu_shader_int16 +static const char* const E_SPV_AMD_gpu_shader_int16 = "SPV_AMD_gpu_shader_int16"; + #endif // #ifndef GLSLextAMD_H diff --git a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp index e175bfc65..9a29b2eb9 100755 --- a/3rdparty/glslang/SPIRV/GlslangToSpv.cpp +++ b/3rdparty/glslang/SPIRV/GlslangToSpv.cpp @@ -1369,6 +1369,10 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI #endif else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64) one = builder.makeInt64Constant(1); +#ifdef AMD_EXTENSIONS + else if (node->getBasicType() == glslang::EbtInt16 || node->getBasicType() == glslang::EbtUint16) + one = builder.makeInt16Constant(1); +#endif else one = builder.makeIntConstant(1); glslang::TOperator op; @@ -1616,6 +1620,16 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructU64Vec2: case glslang::EOpConstructU64Vec3: case glslang::EOpConstructU64Vec4: +#ifdef AMD_EXTENSIONS + case glslang::EOpConstructInt16: + case glslang::EOpConstructI16Vec2: + case glslang::EOpConstructI16Vec3: + case glslang::EOpConstructI16Vec4: + case glslang::EOpConstructUint16: + case glslang::EOpConstructU16Vec2: + case glslang::EOpConstructU16Vec3: + case glslang::EOpConstructU16Vec4: +#endif case glslang::EOpConstructStruct: case glslang::EOpConstructTextureSampler: { @@ -2149,7 +2163,9 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* spv::Id spvType = convertGlslangToSpvType(node->getType()); #ifdef AMD_EXTENSIONS - const bool contains16BitType = node->getType().containsBasicType(glslang::EbtFloat16); + const bool contains16BitType = node->getType().containsBasicType(glslang::EbtFloat16) || + node->getType().containsBasicType(glslang::EbtInt16) || + node->getType().containsBasicType(glslang::EbtUint16); if (contains16BitType) { if (storageClass == spv::StorageClassInput || storageClass == spv::StorageClassOutput) { builder.addExtension(spv::E_SPV_KHR_16bit_storage); @@ -2262,13 +2278,21 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = builder.makeUintType(32); break; case glslang::EbtInt64: - builder.addCapability(spv::CapabilityInt64); spvType = builder.makeIntType(64); break; case glslang::EbtUint64: - builder.addCapability(spv::CapabilityInt64); spvType = builder.makeUintType(64); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtInt16: + builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16); + spvType = builder.makeIntType(16); + break; + case glslang::EbtUint16: + builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16); + spvType = builder.makeUintType(16); + break; +#endif case glslang::EbtAtomicUint: builder.addCapability(spv::CapabilityAtomicStorage); spvType = builder.makeUintType(32); @@ -3044,7 +3068,7 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& if (i == 6) lvalue = true; break; - case glslang::EOpSparseTextureGather: + case glslang::EOpSparseTextureGather: if ((sampler.shadow && i == 3) || (! sampler.shadow && i == 2)) lvalue = true; break; @@ -3053,6 +3077,17 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& if ((sampler.shadow && i == 4) || (! sampler.shadow && i == 3)) lvalue = true; break; +#ifdef AMD_EXTENSIONS + case glslang::EOpSparseTextureGatherLod: + if (i == 3) + lvalue = true; + break; + case glslang::EOpSparseTextureGatherLodOffset: + case glslang::EOpSparseTextureGatherLodOffsets: + if (i == 4) + lvalue = true; + break; +#endif default: break; } @@ -3219,10 +3254,22 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // check for bias argument bool bias = false; +#ifdef AMD_EXTENSIONS + if (! cracked.lod && ! cracked.grad && ! cracked.fetch && ! cubeCompare) { +#else if (! cracked.lod && ! cracked.gather && ! cracked.grad && ! cracked.fetch && ! cubeCompare) { +#endif int nonBiasArgCount = 2; +#ifdef AMD_EXTENSIONS + if (cracked.gather) + ++nonBiasArgCount; // comp argument should be present when bias argument is present +#endif if (cracked.offset) ++nonBiasArgCount; +#ifdef AMD_EXTENSIONS + else if (cracked.offsets) + ++nonBiasArgCount; +#endif if (cracked.grad) nonBiasArgCount += 2; if (cracked.lodClamp) @@ -3241,6 +3288,17 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); } +#ifdef AMD_EXTENSIONS + if (cracked.gather) { + const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); + if (bias || cracked.lod || + sourceExtensions.find(glslang::E_GL_AMD_texture_gather_bias_lod) != sourceExtensions.end()) { + builder.addExtension(spv::E_SPV_AMD_texture_gather_bias_lod); + builder.addCapability(spv::OpCapabilityImageGatherBiasLodAMD); + } + } +#endif + // set the rest of the arguments params.coords = arguments[1]; @@ -3308,21 +3366,20 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO ++extraArgs; } - // bias - if (bias) { - params.bias = arguments[2 + extraArgs]; - ++extraArgs; - } - // gather component if (cracked.gather && ! sampler.shadow) { // default component is 0, if missing, otherwise an argument if (2 + extraArgs < (int)arguments.size()) { params.component = arguments[2 + extraArgs]; ++extraArgs; - } else { + } else params.component = builder.makeIntConstant(0); - } + } + + // bias + if (bias) { + params.bias = arguments[2 + extraArgs]; + ++extraArgs; } // projective component (might not to move) @@ -3452,10 +3509,11 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv spv::Id typeId, spv::Id left, spv::Id right, glslang::TBasicType typeProxy, bool reduceComparison) { - bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; #ifdef AMD_EXTENSIONS + bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16; bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; #else + bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; #endif bool isBool = typeProxy == glslang::EbtBool; @@ -3782,10 +3840,11 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: spv::Op unaryOp = spv::OpNop; int extBuiltins = -1; int libCall = -1; - bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; #ifdef AMD_EXTENSIONS + bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16; bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; #else + bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; #endif @@ -3924,6 +3983,12 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: case glslang::EOpDoubleBitsToUint64: case glslang::EOpInt64BitsToDouble: case glslang::EOpUint64BitsToDouble: +#ifdef AMD_EXTENSIONS + case glslang::EOpFloat16BitsToInt16: + case glslang::EOpFloat16BitsToUint16: + case glslang::EOpInt16BitsToFloat16: + case glslang::EOpUint16BitsToFloat16: +#endif unaryOp = spv::OpBitcast; break; @@ -3972,6 +4037,14 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: break; #ifdef AMD_EXTENSIONS + case glslang::EOpPackInt2x16: + case glslang::EOpUnpackInt2x16: + case glslang::EOpPackUint2x16: + case glslang::EOpUnpackUint2x16: + case glslang::EOpPackInt4x16: + case glslang::EOpUnpackInt4x16: + case glslang::EOpPackUint4x16: + case glslang::EOpUnpackUint4x16: case glslang::EOpPackFloat2x16: case glslang::EOpUnpackFloat2x16: unaryOp = spv::OpBitcast; @@ -4171,8 +4244,18 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvUintToBool: case glslang::EOpConvInt64ToBool: case glslang::EOpConvUint64ToBool: - zero = (op == glslang::EOpConvInt64ToBool || - op == glslang::EOpConvUint64ToBool) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0); +#ifdef AMD_EXTENSIONS + case glslang::EOpConvInt16ToBool: + case glslang::EOpConvUint16ToBool: +#endif + if (op == glslang::EOpConvInt64ToBool || op == glslang::EOpConvUint64ToBool) + zero = builder.makeUint64Constant(0); +#ifdef AMD_EXTENSIONS + else if (op == glslang::EOpConvInt16ToBool || op == glslang::EOpConvUint16ToBool) + zero = builder.makeUint16Constant(0); +#endif + else + zero = builder.makeUintConstant(0); zero = makeSmearedConstant(zero, vectorSize); return builder.createBinOp(spv::OpINotEqual, destType, operand, zero); @@ -4215,15 +4298,53 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvBoolToInt: case glslang::EOpConvBoolToInt64: - zero = (op == glslang::EOpConvBoolToInt64) ? builder.makeInt64Constant(0) : builder.makeIntConstant(0); - one = (op == glslang::EOpConvBoolToInt64) ? builder.makeInt64Constant(1) : builder.makeIntConstant(1); +#ifdef AMD_EXTENSIONS + case glslang::EOpConvBoolToInt16: +#endif + if (op == glslang::EOpConvBoolToInt64) + zero = builder.makeInt64Constant(0); +#ifdef AMD_EXTENSIONS + else if (op == glslang::EOpConvBoolToInt16) + zero = builder.makeInt16Constant(0); +#endif + else + zero = builder.makeIntConstant(0); + + if (op == glslang::EOpConvBoolToInt64) + one = builder.makeInt64Constant(1); +#ifdef AMD_EXTENSIONS + else if (op == glslang::EOpConvBoolToInt16) + one = builder.makeInt16Constant(1); +#endif + else + one = builder.makeIntConstant(1); + convOp = spv::OpSelect; break; case glslang::EOpConvBoolToUint: case glslang::EOpConvBoolToUint64: - zero = (op == glslang::EOpConvBoolToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0); - one = (op == glslang::EOpConvBoolToUint64) ? builder.makeUint64Constant(1) : builder.makeUintConstant(1); +#ifdef AMD_EXTENSIONS + case glslang::EOpConvBoolToUint16: +#endif + if (op == glslang::EOpConvBoolToUint64) + zero = builder.makeUint64Constant(0); +#ifdef AMD_EXTENSIONS + else if (op == glslang::EOpConvBoolToUint16) + zero = builder.makeUint16Constant(0); +#endif + else + zero = builder.makeUintConstant(0); + + if (op == glslang::EOpConvBoolToUint64) + one = builder.makeUint64Constant(1); +#ifdef AMD_EXTENSIONS + else if (op == glslang::EOpConvBoolToUint16) + one = builder.makeUint16Constant(1); +#endif + else + one = builder.makeUintConstant(1); + convOp = spv::OpSelect; break; @@ -4232,6 +4353,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvInt64ToFloat: case glslang::EOpConvInt64ToDouble: #ifdef AMD_EXTENSIONS + case glslang::EOpConvInt16ToFloat: + case glslang::EOpConvInt16ToDouble: + case glslang::EOpConvInt16ToFloat16: case glslang::EOpConvIntToFloat16: case glslang::EOpConvInt64ToFloat16: #endif @@ -4243,6 +4367,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvUint64ToFloat: case glslang::EOpConvUint64ToDouble: #ifdef AMD_EXTENSIONS + case glslang::EOpConvUint16ToFloat: + case glslang::EOpConvUint16ToDouble: + case glslang::EOpConvUint16ToFloat16: case glslang::EOpConvUintToFloat16: case glslang::EOpConvUint64ToFloat16: #endif @@ -4267,6 +4394,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvFloatToInt64: case glslang::EOpConvDoubleToInt64: #ifdef AMD_EXTENSIONS + case glslang::EOpConvFloatToInt16: + case glslang::EOpConvDoubleToInt16: + case glslang::EOpConvFloat16ToInt16: case glslang::EOpConvFloat16ToInt: case glslang::EOpConvFloat16ToInt64: #endif @@ -4277,10 +4407,21 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvIntToUint: case glslang::EOpConvUint64ToInt64: case glslang::EOpConvInt64ToUint64: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvUint16ToInt16: + case glslang::EOpConvInt16ToUint16: +#endif if (builder.isInSpecConstCodeGenMode()) { // Build zero scalar or vector for OpIAdd. - zero = (op == glslang::EOpConvUint64ToInt64 || - op == glslang::EOpConvInt64ToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0); + if (op == glslang::EOpConvUint64ToInt64 || op == glslang::EOpConvInt64ToUint64) + zero = builder.makeUint64Constant(0); +#ifdef AMD_EXTENSIONS + else if (op == glslang::EOpConvUint16ToInt16 || op == glslang::EOpConvInt16ToUint16) + zero = builder.makeUint16Constant(0); +#endif + else + zero = builder.makeUintConstant(0); + zero = makeSmearedConstant(zero, vectorSize); // Use OpIAdd, instead of OpBitcast to do the conversion when // generating for OpSpecConstantOp instruction. @@ -4295,6 +4436,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvFloatToUint64: case glslang::EOpConvDoubleToUint64: #ifdef AMD_EXTENSIONS + case glslang::EOpConvFloatToUint16: + case glslang::EOpConvDoubleToUint16: + case glslang::EOpConvFloat16ToUint16: case glslang::EOpConvFloat16ToUint: case glslang::EOpConvFloat16ToUint64: #endif @@ -4303,11 +4447,23 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvIntToInt64: case glslang::EOpConvInt64ToInt: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvIntToInt16: + case glslang::EOpConvInt16ToInt: + case glslang::EOpConvInt64ToInt16: + case glslang::EOpConvInt16ToInt64: +#endif convOp = spv::OpSConvert; break; case glslang::EOpConvUintToUint64: case glslang::EOpConvUint64ToUint: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvUintToUint16: + case glslang::EOpConvUint16ToUint: + case glslang::EOpConvUint64ToUint16: + case glslang::EOpConvUint16ToUint64: +#endif convOp = spv::OpUConvert; break; @@ -4315,24 +4471,58 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvInt64ToUint: case glslang::EOpConvUint64ToInt: case glslang::EOpConvUintToInt64: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvInt16ToUint: + case glslang::EOpConvUintToInt16: + case glslang::EOpConvInt16ToUint64: + case glslang::EOpConvUint64ToInt16: + case glslang::EOpConvUint16ToInt: + case glslang::EOpConvIntToUint16: + case glslang::EOpConvUint16ToInt64: + case glslang::EOpConvInt64ToUint16: +#endif // OpSConvert/OpUConvert + OpBitCast switch (op) { case glslang::EOpConvIntToUint64: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvInt16ToUint64: +#endif convOp = spv::OpSConvert; type = builder.makeIntType(64); break; case glslang::EOpConvInt64ToUint: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvInt16ToUint: +#endif convOp = spv::OpSConvert; type = builder.makeIntType(32); break; case glslang::EOpConvUint64ToInt: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvUint16ToInt: +#endif convOp = spv::OpUConvert; type = builder.makeUintType(32); break; case glslang::EOpConvUintToInt64: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvUint16ToInt64: +#endif convOp = spv::OpUConvert; type = builder.makeUintType(64); break; +#ifdef AMD_EXTENSIONS + case glslang::EOpConvUintToInt16: + case glslang::EOpConvUint64ToInt16: + convOp = spv::OpUConvert; + type = builder.makeUintType(16); + break; + case glslang::EOpConvIntToUint16: + case glslang::EOpConvInt64ToUint16: + convOp = spv::OpSConvert; + type = builder.makeIntType(16); + break; +#endif default: assert(0); break; @@ -4345,8 +4535,22 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec if (builder.isInSpecConstCodeGenMode()) { // Build zero scalar or vector for OpIAdd. - zero = (op == glslang::EOpConvIntToUint64 || - op == glslang::EOpConvUintToInt64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0); +#ifdef AMD_EXTENSIONS + if (op == glslang::EOpConvIntToUint64 || op == glslang::EOpConvUintToInt64 || + op == glslang::EOpConvInt16ToUint64 || op == glslang::EOpConvUint16ToInt64) + zero = builder.makeUint64Constant(0); + else if (op == glslang::EOpConvIntToUint16 || op == glslang::EOpConvUintToInt16 || + op == glslang::EOpConvInt64ToUint16 || op == glslang::EOpConvUint64ToInt16) + zero = builder.makeUint16Constant(0); + else + zero = builder.makeUintConstant(0); +#else + if (op == glslang::EOpConvIntToUint64 || op == glslang::EOpConvUintToInt64) + zero = builder.makeUint64Constant(0); + else + zero = builder.makeUintConstant(0); +#endif + zero = makeSmearedConstant(zero, vectorSize); // Use OpIAdd, instead of OpBitcast to do the conversion when // generating for OpSpecConstantOp instruction. @@ -4732,10 +4936,11 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { - bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; #ifdef AMD_EXTENSIONS + bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64 || typeProxy == glslang::EbtUint16; bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; #else + bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; #endif @@ -5320,6 +5525,14 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtUint64: spvConsts.push_back(builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const())); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtInt16: + spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : (short)consts[nextConst].getIConst())); + break; + case glslang::EbtUint16: + spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : (unsigned short)consts[nextConst].getUConst())); + break; +#endif case glslang::EbtFloat: spvConsts.push_back(builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; @@ -5357,6 +5570,14 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtUint64: scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtInt16: + scalar = builder.makeInt16Constant(zero ? 0 : (short)consts[nextConst].getIConst(), specConstant); + break; + case glslang::EbtUint16: + scalar = builder.makeUint16Constant(zero ? 0 : (unsigned short)consts[nextConst].getUConst(), specConstant); + break; +#endif case glslang::EbtFloat: scalar = builder.makeFloatConstant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; diff --git a/3rdparty/glslang/SPIRV/SpvBuilder.h b/3rdparty/glslang/SPIRV/SpvBuilder.h index 60d97e9c8..92f5084c1 100755 --- a/3rdparty/glslang/SPIRV/SpvBuilder.h +++ b/3rdparty/glslang/SPIRV/SpvBuilder.h @@ -214,6 +214,10 @@ public: Id makeUintConstant(unsigned u, bool specConstant = false) { return makeIntConstant(makeUintType(32), u, specConstant); } Id makeInt64Constant(long long i, bool specConstant = false) { return makeInt64Constant(makeIntType(64), (unsigned long long)i, specConstant); } Id makeUint64Constant(unsigned long long u, bool specConstant = false) { return makeInt64Constant(makeUintType(64), u, specConstant); } +#ifdef AMD_EXTENSIONS + Id makeInt16Constant(short i, bool specConstant = false) { return makeIntConstant(makeIntType(16), (unsigned)((unsigned short)i), specConstant); } + Id makeUint16Constant(unsigned short u, bool specConstant = false) { return makeIntConstant(makeUintType(16), (unsigned)u, specConstant); } +#endif Id makeFloatConstant(float f, bool specConstant = false); Id makeDoubleConstant(double d, bool specConstant = false); #ifdef AMD_EXTENSIONS diff --git a/3rdparty/glslang/SPIRV/doc.cpp b/3rdparty/glslang/SPIRV/doc.cpp index 49b734b5e..bae43bdcc 100755 --- a/3rdparty/glslang/SPIRV/doc.cpp +++ b/3rdparty/glslang/SPIRV/doc.cpp @@ -839,6 +839,10 @@ const char* CapabilityString(int info) case 4437: return "DeviceGroup"; case 4439: return "MultiView"; +#ifdef AMD_EXTENSIONS + case 5009: return "ImageGatherBiasLodAMD"; +#endif + #ifdef NV_EXTENSIONS case 5251: return "GeometryShaderPassthroughNV"; case 5254: return "ShaderViewportIndexLayerNV"; diff --git a/3rdparty/glslang/StandAlone/DirStackFileIncluder.h b/3rdparty/glslang/StandAlone/DirStackFileIncluder.h index 8f06f9ea8..8d6543ab4 100644 --- a/3rdparty/glslang/StandAlone/DirStackFileIncluder.h +++ b/3rdparty/glslang/StandAlone/DirStackFileIncluder.h @@ -48,6 +48,8 @@ // Can be overridden to customize. class DirStackFileIncluder : public glslang::TShader::Includer { public: + DirStackFileIncluder() : externalLocalDirectoryCount(0) { } + virtual IncludeResult* includeLocal(const char* headerName, const char* includerName, size_t inclusionDepth) override @@ -62,6 +64,18 @@ public: return readSystemPath(headerName); } + // Externally set directories. E.g., from a command-line -I. + // - Most-recently pushed are checked first. + // - All these are checked after the parse-time stack of local directories + // is checked. + // - This only applies to the "local" form of #include. + // - Makes its own copy of the path. + virtual void pushExternalLocalDirectory(const std::string& dir) + { + directoryStack.push_back(dir); + externalLocalDirectoryCount = directoryStack.size(); + } + virtual void releaseInclude(IncludeResult* result) override { if (result != nullptr) { @@ -75,17 +89,19 @@ public: protected: typedef char tUserDataElement; std::vector directoryStack; + int externalLocalDirectoryCount; // Search for a valid "local" path based on combining the stack of include // directories and the nominal name of the header. virtual IncludeResult* readLocalPath(const char* headerName, const char* includerName, int depth) { - // Discard popped include directories, and if first level, initialize. - directoryStack.resize(depth); + // Discard popped include directories, and + // initialize when at parse-time first level. + directoryStack.resize(depth + externalLocalDirectoryCount); if (depth == 1) - directoryStack.front() = getDirectory(includerName); + directoryStack.back() = getDirectory(includerName); - // find a directory that works, reverse search of include stack + // Find a directory that works, using a reverse search of the include stack. for (auto it = directoryStack.rbegin(); it != directoryStack.rend(); ++it) { std::string path = *it + '/' + headerName; std::replace(path.begin(), path.end(), '\\', '/'); diff --git a/3rdparty/glslang/StandAlone/StandAlone.cpp b/3rdparty/glslang/StandAlone/StandAlone.cpp index 40110e35d..0b8b8f4da 100644 --- a/3rdparty/glslang/StandAlone/StandAlone.cpp +++ b/3rdparty/glslang/StandAlone/StandAlone.cpp @@ -167,6 +167,7 @@ const char* entryPointName = nullptr; const char* sourceEntryPointName = nullptr; const char* shaderStageName = nullptr; const char* variableName = nullptr; +std::vector IncludeDirectoryList; std::array baseSamplerBinding; std::array baseTextureBinding; @@ -407,6 +408,13 @@ void ProcessArguments(std::vector>& workItem Options |= EOptionLinkProgram; } break; + case 'I': + if (argv[0][2] == 0) { + printf("include path must immediately follow (no spaces) -I\n"); + exit(EFailUsage); + } + IncludeDirectoryList.push_back(argv[0]+2); + break; case 'V': Options |= EOptionSpv; Options |= EOptionVulkanRules; @@ -668,6 +676,8 @@ void CompileAndLinkShaderUnits(std::vector compUnits) const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100; DirStackFileIncluder includer; + std::for_each(IncludeDirectoryList.rbegin(), IncludeDirectoryList.rend(), [&includer](const std::string& dir) { + includer.pushExternalLocalDirectory(dir); }); if (Options & EOptionOutputPreprocessed) { std::string str; if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false, @@ -1031,6 +1041,8 @@ void usage() " -G create SPIR-V binary, under OpenGL semantics; turns on -l;\n" " default file name is .spv (-o overrides this)\n" " -H print human readable form of SPIR-V; turns on -V\n" + " -I add dir to the include search path; includer's directory\n" + " is searched first, followed by left-to-right order of -I\n" " -E print pre-processed GLSL; cannot be used with -l;\n" " errors will appear on stderr.\n" " -S uses specified stage rather than parsing the file extension\n" diff --git a/3rdparty/glslang/Test/310.comp b/3rdparty/glslang/Test/310.comp index 9575b6f9d..9ca8eaaa1 100644 --- a/3rdparty/glslang/Test/310.comp +++ b/3rdparty/glslang/Test/310.comp @@ -4,7 +4,7 @@ layout(local_size_x = 2) in; layout(local_size_x = 16) in; // ERROR, changing layout(local_size_z = 4096) in; // ERROR, too large layout(local_size_x = 2) in; - +layout(local_size_y = 0) in; // ERROR, 0 not allowed const int total = gl_MaxComputeWorkGroupCount.y + gl_MaxComputeUniformComponents + gl_MaxComputeTextureImageUnits diff --git a/3rdparty/glslang/Test/400.frag b/3rdparty/glslang/Test/400.frag index 92dcd58ed..039d4809f 100644 --- a/3rdparty/glslang/Test/400.frag +++ b/3rdparty/glslang/Test/400.frag @@ -194,4 +194,8 @@ void bitwiseConv() iout += i | uu; } +subroutine(subT1, subT2); +subroutine float subT1() { return 1.0; } +subroutine float subT2() { return 1.0; } + struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member diff --git a/3rdparty/glslang/Test/450.comp b/3rdparty/glslang/Test/450.comp index 7f723ec0f..fb2b56a77 100644 --- a/3rdparty/glslang/Test/450.comp +++ b/3rdparty/glslang/Test/450.comp @@ -1 +1,6 @@ #version 450 core +layout(local_size_x = 0) in; // ERROR, 0 not allowed +void main() +{ + shared float f; // ERROR shared must be global +} diff --git a/3rdparty/glslang/Test/450.frag b/3rdparty/glslang/Test/450.frag index 04f3aa1ca..9df13912d 100644 --- a/3rdparty/glslang/Test/450.frag +++ b/3rdparty/glslang/Test/450.frag @@ -54,3 +54,13 @@ float cull(int i) { return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i]; } + +layout(location = 6) in bName1 { + float f; + layout(location = 7) float g; + mat4 m; +} bInst1; +layout(location = 12) in bName2 { + float f; + layout(location = 13) float g; // ERROR, location on array +} bInst2[3]; diff --git a/3rdparty/glslang/Test/450.tesc b/3rdparty/glslang/Test/450.tesc index 75a9bf469..bf5c08373 100644 --- a/3rdparty/glslang/Test/450.tesc +++ b/3rdparty/glslang/Test/450.tesc @@ -12,3 +12,12 @@ void main() { gl_out[gl_InvocationID].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2]; } + +layout(location = 4) out bName1 { + float f; + layout(location = 5) float g; +} bInst1[2]; +layout(location = 6) out bName2 { + float f; + layout(location = 7) float g; // ERROR, location on array +} bInst2[2][3]; diff --git a/3rdparty/glslang/Test/baseResults/150.tesc.out b/3rdparty/glslang/Test/baseResults/150.tesc.out index 526b6e7d5..5cc9e804c 100644 --- a/3rdparty/glslang/Test/baseResults/150.tesc.out +++ b/3rdparty/glslang/Test/baseResults/150.tesc.out @@ -210,7 +210,6 @@ ERROR: node is still EOpNull! 0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 400.tesc -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) @@ -442,7 +441,6 @@ ERROR: node is still EOpNull! 0:? 'badOrder' ( invariant noContraction out 4-element array of 4-component vector of float) 400.tese -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:5: 'triangles' : cannot change previously set input primitive ERROR: 0:6: 'isolines' : cannot change previously set input primitive @@ -612,7 +610,6 @@ ERROR: node is still EOpNull! 0:? 'pinbi' ( patch in block{ in int a}) 410.tesc -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:4: 'length' : array must first be sized by a redeclaration or layout qualifier ERROR: 1 compilation errors. No code generated. @@ -628,7 +625,6 @@ ERROR: node is still EOpNull! 0:? 'patchOut' ( patch out 4-component vector of float) 420.tesc -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb @@ -747,7 +743,6 @@ ERROR: node is still EOpNull! 0:? 'vs_tcs_last' (layout( location=12) in 32-element array of 2X4 matrix of double) 420.tese -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:7: '=' : cannot convert from ' const 3-element array of float' to ' global 2-element array of float' ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): temp 2-component vector of float ERROR: 0:9: 'initializer list' : wrong number of matrix columns: temp 3X3 matrix of float diff --git a/3rdparty/glslang/Test/baseResults/310.comp.out b/3rdparty/glslang/Test/baseResults/310.comp.out index 3246622de..f2d48efd8 100644 --- a/3rdparty/glslang/Test/baseResults/310.comp.out +++ b/3rdparty/glslang/Test/baseResults/310.comp.out @@ -1,7 +1,7 @@ 310.comp -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:4: 'local_size' : cannot change previously set size ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize +ERROR: 0:7: 'local_size_y' : must be at least 1 ERROR: 0:23: '' : array size required ERROR: 0:39: 'in' : global storage input qualifier cannot be used in a compute shader ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute @@ -16,7 +16,7 @@ ERROR: 0:47: 'local_size' : can only apply to 'in' ERROR: 0:61: 'assign' : l-value required "ro" (can't modify a readonly buffer) ERROR: 0:66: 'buffer' : buffers can be declared only as blocks ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier -ERROR: 0:76: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:76: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:81: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:82: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:87: 'imageAtomicCompSwap' : required extension not requested: GL_OES_shader_image_atomic @@ -54,12 +54,12 @@ ERROR: 0:171: 'samplerCubeArray' : Reserved word. ERROR: 0:171: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:172: 'iimage2DRect' : Reserved word. ERROR: 0:172: 'sampler/image' : type requires declaration of default precision qualifier -ERROR: 0:172: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:172: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:173: 'image2DMS' : Reserved word. -ERROR: 0:173: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:173: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:174: 'uimage2DMSArray' : Reserved word. ERROR: 0:174: 'sampler/image' : type requires declaration of default precision qualifier -ERROR: 0:174: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:174: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:181: 'rgba32f' : format requires readonly or writeonly memory qualifier ERROR: 0:182: 'rgba8i' : format requires readonly or writeonly memory qualifier ERROR: 0:183: 'rgba16ui' : format requires readonly or writeonly memory qualifier @@ -84,7 +84,7 @@ WARNING: 0:238: '#define' : names containing consecutive underscores are reserve ERROR: 0:244: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group ERROR: 0:245: 'gl_ViewIndex' : undeclared identifier ERROR: 0:255: 'gl_ViewIndex' : undeclared identifier -ERROR: 82 compilation errors. No code generated. +ERROR: 83 compilation errors. No code generated. Shader version: 310 diff --git a/3rdparty/glslang/Test/baseResults/310.frag.out b/3rdparty/glslang/Test/baseResults/310.frag.out index 3b2fdd087..a6346b312 100644 --- a/3rdparty/glslang/Test/baseResults/310.frag.out +++ b/3rdparty/glslang/Test/baseResults/310.frag.out @@ -1,5 +1,4 @@ 310.frag -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:2: 'float' : type requires declaration of default precision qualifier ERROR: 0:8: 'origin_upper_left' : not supported with this profile: es ERROR: 0:8: 'pixel_center_integer' : not supported with this profile: es @@ -19,13 +18,13 @@ ERROR: 0:44: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:45: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] ERROR: 0:66: 'sampler/image' : type requires declaration of default precision qualifier -ERROR: 0:66: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:66: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:67: 'sampler/image' : type requires declaration of default precision qualifier -ERROR: 0:67: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:67: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:68: 'sampler/image' : type requires declaration of default precision qualifier -ERROR: 0:68: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:68: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:69: 'sampler/image' : type requires declaration of default precision qualifier -ERROR: 0:69: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:69: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:73: 'binding' : requires block, or sampler/image, or atomic-counter type ERROR: 0:77: 'location' : location is too large ERROR: 0:81: 'location' : too large for fragment output @@ -36,7 +35,7 @@ ERROR: 0:83: 'layout-id value' : cannot be negative ERROR: 0:96: 'sampler/image' : type requires declaration of default precision qualifier ERROR: 0:110: 'out' : cannot be bool ERROR: 0:111: 'image2D' : sampler/image types can only be used in uniform variables or function parameters: imageOut -ERROR: 0:111: 'image variables declared 'writeonly' without a format layout qualifier' : not supported with this profile: es +ERROR: 0:111: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported with this profile: es ERROR: 0:112: 'out' : cannot be a matrix ERROR: 0:114: 'in' : cannot be bool ERROR: 0:115: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: ino diff --git a/3rdparty/glslang/Test/baseResults/310.geom.out b/3rdparty/glslang/Test/baseResults/310.geom.out index e57c8222c..b0dabc3b2 100644 --- a/3rdparty/glslang/Test/baseResults/310.geom.out +++ b/3rdparty/glslang/Test/baseResults/310.geom.out @@ -1,5 +1,4 @@ 310.geom -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:29: 'fromVertex' : block instance name redefinition ERROR: 0:33: 'fromVertex' : redefinition ERROR: 0:35: 'fooC' : block instance name redefinition diff --git a/3rdparty/glslang/Test/baseResults/310.tesc.out b/3rdparty/glslang/Test/baseResults/310.tesc.out index 9c3d1d55f..01d7ecfb4 100644 --- a/3rdparty/glslang/Test/baseResults/310.tesc.out +++ b/3rdparty/glslang/Test/baseResults/310.tesc.out @@ -1,5 +1,4 @@ 310.tesc -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:8: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:9: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:10: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) diff --git a/3rdparty/glslang/Test/baseResults/310.tese.out b/3rdparty/glslang/Test/baseResults/310.tese.out index 4550230d2..52d19b4fd 100644 --- a/3rdparty/glslang/Test/baseResults/310.tese.out +++ b/3rdparty/glslang/Test/baseResults/310.tese.out @@ -1,5 +1,4 @@ 310.tese -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:7: 'vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:9: 'triangles' : cannot change previously set input primitive ERROR: 0:10: 'isolines' : cannot change previously set input primitive diff --git a/3rdparty/glslang/Test/baseResults/310.vert.out b/3rdparty/glslang/Test/baseResults/310.vert.out index 6d4599c53..21fa27b90 100644 --- a/3rdparty/glslang/Test/baseResults/310.vert.out +++ b/3rdparty/glslang/Test/baseResults/310.vert.out @@ -1,5 +1,4 @@ 310.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'shared' : not supported in this stage: vertex ERROR: 0:4: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:5: 'buffer' : buffers can be declared only as blocks diff --git a/3rdparty/glslang/Test/baseResults/310AofA.vert.out b/3rdparty/glslang/Test/baseResults/310AofA.vert.out index ffba25f9a..882c58a59 100644 --- a/3rdparty/glslang/Test/baseResults/310AofA.vert.out +++ b/3rdparty/glslang/Test/baseResults/310AofA.vert.out @@ -1,5 +1,4 @@ 310AofA.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:17: '' : array size required ERROR: 0:23: '' : array size required ERROR: 0:28: '[]' : only outermost dimension of an array of arrays can be implicitly sized diff --git a/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out b/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out index 07ac52378..1eed457db 100644 --- a/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out +++ b/3rdparty/glslang/Test/baseResults/310implicitSizeArrayError.vert.out @@ -1,5 +1,4 @@ 310implicitSizeArrayError.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: '' : array size required ERROR: 1 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/330.frag.out b/3rdparty/glslang/Test/baseResults/330.frag.out index 4b5a84be5..5919c76af 100644 --- a/3rdparty/glslang/Test/baseResults/330.frag.out +++ b/3rdparty/glslang/Test/baseResults/330.frag.out @@ -100,7 +100,7 @@ ERROR: node is still EOpNull! 0:? 'v20' ( smooth in 4-component vector of float) 0:? 'v21' (layout( location=60) smooth in float) 0:? 'v22' (layout( location=2) smooth in float) -0:? 'anon@1' ( in block{layout( location=1 component=0) in float f1, layout( location=3) in float f2}) +0:? 'anon@1' ( in block{layout( location=1) in float f1, layout( location=3) in float f2}) 0:? 'uinst' (layout( location=1 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2}) 0:? 'v3' (layout( location=6) smooth in 4-component vector of float) 0:? 'v4' ( smooth in 4-component vector of float) @@ -108,12 +108,12 @@ ERROR: node is still EOpNull! 0:? 'v6' (layout( location=30) smooth in 4-component vector of float) 0:? 'v23' (layout( location=61) smooth in float) 0:? 'v24' (layout( location=62) smooth in float) -0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2, layout( location=26 component=0) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23 component=0) in 4-component vector of float f4, layout( location=24 component=0) in 4-component vector of float f5}) +0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2, layout( location=26) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23) in 4-component vector of float f4, layout( location=24) in 4-component vector of float f5}) 0:? 'uinst2' (layout( location=13 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2}) 0:? 'in3' ( in block{ in float f1, layout( location=40) in float f2}) 0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 's' (layout( location=33) smooth in structure{ global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A}) -0:? 'anon@2' ( in block{layout( location=44 component=0) in 4-component vector of float d, layout( location=45 component=0) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48 component=0) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42 component=0) in 4-component vector of float i, layout( location=43 component=0) in 4-component vector of float j, layout( location=44 component=0) in 4-component vector of float k}) +0:? 'anon@2' ( in block{layout( location=44) in 4-component vector of float d, layout( location=45) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42) in 4-component vector of float i, layout( location=43) in 4-component vector of float j, layout( location=44) in 4-component vector of float k}) 0:? 'outVar2' (layout( location=4095 index=0) out 4-component vector of float) 0:? 'outVar3' (layout( location=0 index=1) out 4-component vector of float) 0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float) @@ -165,7 +165,7 @@ ERROR: node is still EOpNull! 0:? 'v20' ( smooth in 4-component vector of float) 0:? 'v21' (layout( location=60) smooth in float) 0:? 'v22' (layout( location=2) smooth in float) -0:? 'anon@1' ( in block{layout( location=1 component=0) in float f1, layout( location=3) in float f2}) +0:? 'anon@1' ( in block{layout( location=1) in float f1, layout( location=3) in float f2}) 0:? 'uinst' (layout( location=1 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2}) 0:? 'v3' (layout( location=6) smooth in 4-component vector of float) 0:? 'v4' ( smooth in 4-component vector of float) @@ -173,12 +173,12 @@ ERROR: node is still EOpNull! 0:? 'v6' (layout( location=30) smooth in 4-component vector of float) 0:? 'v23' (layout( location=61) smooth in float) 0:? 'v24' (layout( location=62) smooth in float) -0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2, layout( location=26 component=0) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23 component=0) in 4-component vector of float f4, layout( location=24 component=0) in 4-component vector of float f5}) +0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2, layout( location=26) in 4-component vector of float f3, layout( location=21) in structure{ global float f1, temp float f2} s2, layout( location=23) in 4-component vector of float f4, layout( location=24) in 4-component vector of float f5}) 0:? 'uinst2' (layout( location=13 column_major shared) uniform block{layout( column_major shared) uniform float f1, layout( location=3 column_major shared) uniform float f2}) 0:? 'in3' ( in block{ in float f1, layout( location=40) in float f2}) 0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 's' (layout( location=33) smooth in structure{ global 3-component vector of float a, global 2X2 matrix of float b, global 2-element array of 4-component vector of float c, temp 2-component vector of float A}) -0:? 'anon@2' ( in block{layout( location=44 component=0) in 4-component vector of float d, layout( location=45 component=0) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48 component=0) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42 component=0) in 4-component vector of float i, layout( location=43 component=0) in 4-component vector of float j, layout( location=44 component=0) in 4-component vector of float k}) +0:? 'anon@2' ( in block{layout( location=44) in 4-component vector of float d, layout( location=45) in 4-component vector of float e, layout( location=47) in 4-component vector of float f, layout( location=48) in 4-component vector of float g, layout( location=41) in 4-component vector of float h, layout( location=42) in 4-component vector of float i, layout( location=43) in 4-component vector of float j, layout( location=44) in 4-component vector of float k}) 0:? 'outVar2' (layout( location=4095 index=0) out 4-component vector of float) 0:? 'outVar3' (layout( location=0 index=1) out 4-component vector of float) 0:? 'outVar4' (layout( location=0 index=1) out 4-component vector of float) diff --git a/3rdparty/glslang/Test/baseResults/400.frag.out b/3rdparty/glslang/Test/baseResults/400.frag.out index 84456599d..443b10241 100644 --- a/3rdparty/glslang/Test/baseResults/400.frag.out +++ b/3rdparty/glslang/Test/baseResults/400.frag.out @@ -1,5 +1,4 @@ 400.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:18: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument ERROR: 0:22: 'textureGatherOffset(...)' : must be a compile-time constant: component argument ERROR: 0:23: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument @@ -34,8 +33,12 @@ ERROR: 0:183: 'textureQueryLod' : no matching overloaded function found ERROR: 0:183: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' -ERROR: 0:197: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER -ERROR: 35 compilation errors. No code generated. +ERROR: 0:197: 'subroutine' : feature not yet implemented +ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification +ERROR: 0:198: 'subroutine' : feature not yet implemented +ERROR: 0:199: 'subroutine' : feature not yet implemented +ERROR: 0:201: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER +ERROR: 39 compilation errors. No code generated. Shader version: 400 @@ -490,6 +493,18 @@ ERROR: node is still EOpNull! 0:194 Convert int to uint ( temp uint) 0:194 'i' ( flat in int) 0:194 'uu' ( uniform uint) +0:198 Function Definition: subT1( ( temp float) +0:198 Function Parameters: +0:198 Sequence +0:198 Branch: Return with expression +0:198 Constant: +0:198 1.000000 +0:199 Function Definition: subT2( ( temp float) +0:199 Function Parameters: +0:199 Sequence +0:199 Branch: Return with expression +0:199 Constant: +0:199 1.000000 0:? Linker Objects 0:? 'c2D' ( smooth in 2-component vector of float) 0:? 'i' ( flat in int) diff --git a/3rdparty/glslang/Test/baseResults/400.geom.out b/3rdparty/glslang/Test/baseResults/400.geom.out index 989b439b1..1d009d9ca 100644 --- a/3rdparty/glslang/Test/baseResults/400.geom.out +++ b/3rdparty/glslang/Test/baseResults/400.geom.out @@ -1,5 +1,4 @@ 400.geom -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:12: 'invocations' : can only apply to a standalone qualifier ERROR: 0:20: 'patch' : not supported in this stage: geometry ERROR: 0:20: 'gl_PointSize' : cannot add layout to redeclared block member diff --git a/3rdparty/glslang/Test/baseResults/400.tesc.out b/3rdparty/glslang/Test/baseResults/400.tesc.out index 434079e95..762f0b8d4 100644 --- a/3rdparty/glslang/Test/baseResults/400.tesc.out +++ b/3rdparty/glslang/Test/baseResults/400.tesc.out @@ -1,5 +1,4 @@ 400.tesc -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:6: 'quads' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:7: 'ccw' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:8: 'fractional_even_spacing' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) diff --git a/3rdparty/glslang/Test/baseResults/400.tese.out b/3rdparty/glslang/Test/baseResults/400.tese.out index 2f1c97c09..e9ffcdf6d 100644 --- a/3rdparty/glslang/Test/baseResults/400.tese.out +++ b/3rdparty/glslang/Test/baseResults/400.tese.out @@ -1,5 +1,4 @@ 400.tese -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'vertices' : there is no such layout identifier for this stage taking an assigned value ERROR: 0:5: 'triangles' : cannot change previously set input primitive ERROR: 0:6: 'isolines' : cannot change previously set input primitive diff --git a/3rdparty/glslang/Test/baseResults/400.vert.out b/3rdparty/glslang/Test/baseResults/400.vert.out index 0fd453d8e..05f58e2d8 100755 --- a/3rdparty/glslang/Test/baseResults/400.vert.out +++ b/3rdparty/glslang/Test/baseResults/400.vert.out @@ -1,5 +1,4 @@ 400.vert -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions ERROR: 0:4: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions ERROR: 0:5: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions diff --git a/3rdparty/glslang/Test/baseResults/410.geom.out b/3rdparty/glslang/Test/baseResults/410.geom.out index 7219e4de1..4d35d5206 100644 --- a/3rdparty/glslang/Test/baseResults/410.geom.out +++ b/3rdparty/glslang/Test/baseResults/410.geom.out @@ -1,5 +1,4 @@ 410.geom -Warning, version 410 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use diff --git a/3rdparty/glslang/Test/baseResults/410.tesc.out b/3rdparty/glslang/Test/baseResults/410.tesc.out index 9b459b17f..68593d0db 100644 --- a/3rdparty/glslang/Test/baseResults/410.tesc.out +++ b/3rdparty/glslang/Test/baseResults/410.tesc.out @@ -1,5 +1,4 @@ 410.tesc -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:4: 'length' : array must first be sized by a redeclaration or layout qualifier ERROR: 1 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/410.vert.out b/3rdparty/glslang/Test/baseResults/410.vert.out index 0e2c87e73..aacdf36c0 100755 --- a/3rdparty/glslang/Test/baseResults/410.vert.out +++ b/3rdparty/glslang/Test/baseResults/410.vert.out @@ -1,6 +1,4 @@ 410.vert -Warning, version 410 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 410 0:? Sequence 0:7 Function Definition: main( ( global void) diff --git a/3rdparty/glslang/Test/baseResults/420.comp.out b/3rdparty/glslang/Test/baseResults/420.comp.out index 07944de8f..4e091acff 100755 --- a/3rdparty/glslang/Test/baseResults/420.comp.out +++ b/3rdparty/glslang/Test/baseResults/420.comp.out @@ -1,5 +1,4 @@ 420.comp -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'gl_WorkGroupSize' : not supported for this version or the enabled extensions ERROR: 1 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/420.frag.out b/3rdparty/glslang/Test/baseResults/420.frag.out index 31fe7f96f..5f2b0f7b0 100644 --- a/3rdparty/glslang/Test/baseResults/420.frag.out +++ b/3rdparty/glslang/Test/baseResults/420.frag.out @@ -1,10 +1,9 @@ 420.frag -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:4: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth ERROR: 0:11: 'layout qualifier' : can only apply depth layout to gl_FragDepth ERROR: 0:12: 'gl_FragDepth' : cannot redeclare after use -WARNING: 0:14: 'atomic_uint' : implicitly sized atomic_uint array treated as having one element for tracking the default offset -ERROR: 3 compilation errors. No code generated. +ERROR: 0:14: 'atomic_uint' : array must be explicitly sized +ERROR: 4 compilation errors. No code generated. Shader version: 420 diff --git a/3rdparty/glslang/Test/baseResults/420.geom.out b/3rdparty/glslang/Test/baseResults/420.geom.out index 0fccfe0f2..fe9e12f42 100644 --- a/3rdparty/glslang/Test/baseResults/420.geom.out +++ b/3rdparty/glslang/Test/baseResults/420.geom.out @@ -1,5 +1,4 @@ 420.geom -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:9: 'length' : array must first be sized by a redeclaration or layout qualifier ERROR: 0:11: '[' : array must be sized by a redeclaration or layout qualifier before being indexed with a variable ERROR: 0:42: 'assign' : l-value required (can't modify a const) diff --git a/3rdparty/glslang/Test/baseResults/420.tesc.out b/3rdparty/glslang/Test/baseResults/420.tesc.out index 83816f30b..7876bd63a 100644 --- a/3rdparty/glslang/Test/baseResults/420.tesc.out +++ b/3rdparty/glslang/Test/baseResults/420.tesc.out @@ -1,5 +1,4 @@ 420.tesc -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb diff --git a/3rdparty/glslang/Test/baseResults/420.tese.out b/3rdparty/glslang/Test/baseResults/420.tese.out index 9986c2a26..66d41e55b 100644 --- a/3rdparty/glslang/Test/baseResults/420.tese.out +++ b/3rdparty/glslang/Test/baseResults/420.tese.out @@ -1,5 +1,4 @@ 420.tese -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:7: '=' : cannot convert from ' const 3-element array of float' to ' global 2-element array of float' ERROR: 0:8: 'initializer list' : wrong vector size (or rows in a matrix column): temp 2-component vector of float ERROR: 0:9: 'initializer list' : wrong number of matrix columns: temp 3X3 matrix of float diff --git a/3rdparty/glslang/Test/baseResults/420.vert.out b/3rdparty/glslang/Test/baseResults/420.vert.out index 8fb8546ee..b912dc078 100644 --- a/3rdparty/glslang/Test/baseResults/420.vert.out +++ b/3rdparty/glslang/Test/baseResults/420.vert.out @@ -1,5 +1,4 @@ 420.vert -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:2: '#version' : must occur first in shader WARNING: 0:3: varying deprecated in version 130; may be removed in future release ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420 @@ -33,7 +32,7 @@ ERROR: 0:85: '' : vertex input cannot be further qualified ERROR: 0:86: 'patch' : not supported in this stage: vertex ERROR: 0:100: '=' : global const initializers must be constant ' const int' ERROR: 0:101: '' : array size must be a constant integer expression -ERROR: 0:107: 'image variables declared 'writeonly' without a format layout qualifier' : not supported for this version or the enabled extensions +ERROR: 0:107: 'image variables not declared 'writeonly' and without a format layout qualifier' : not supported for this version or the enabled extensions ERROR: 0:114: 'imageAtomicMin' : only supported on image with format r32i or r32ui ERROR: 0:115: 'imageAtomicMax' : no matching overloaded function found ERROR: 0:119: 'writeonly' : argument cannot drop memory qualifier when passed to formal parameter diff --git a/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out b/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out index 3c3b8105f..d058013d8 100644 --- a/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out +++ b/3rdparty/glslang/Test/baseResults/420_size_gl_in.geom.out @@ -1,5 +1,4 @@ 420_size_gl_in.geom -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:19: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 1 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/430.comp.out b/3rdparty/glslang/Test/baseResults/430.comp.out index 91aaf786c..c4ad19ed0 100644 --- a/3rdparty/glslang/Test/baseResults/430.comp.out +++ b/3rdparty/glslang/Test/baseResults/430.comp.out @@ -1,5 +1,4 @@ 430.comp -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:4: 'local_size' : cannot change previously set size ERROR: 0:5: 'local_size' : too large; see gl_MaxComputeWorkGroupSize ERROR: 0:43: 'in' : global storage input qualifier cannot be used in a compute shader diff --git a/3rdparty/glslang/Test/baseResults/430.vert.out b/3rdparty/glslang/Test/baseResults/430.vert.out index a5898f24f..29ffb01aa 100644 --- a/3rdparty/glslang/Test/baseResults/430.vert.out +++ b/3rdparty/glslang/Test/baseResults/430.vert.out @@ -1,5 +1,4 @@ 430.vert -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:7: 'input block' : not supported in this stage: vertex ERROR: 0:7: 'location qualifier on in/out block' : not supported for this version or the enabled extensions @@ -233,7 +232,7 @@ ERROR: node is still EOpNull! 0:? 'start2' ( const int) 0:? 5 (const int) 0:? 'v6' (layout( location=19) in 4-component vector of float) -0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2}) +0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2}) 0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 'bbinst2g' ( out block{layout( xfb_buffer=3 xfb_offset=64) out 4-component vector of float bbv}) 0:? 'bg' (layout( xfb_buffer=1 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float) @@ -308,7 +307,7 @@ ERROR: node is still EOpNull! 0:? 'start2' ( const int) 0:? 5 (const int) 0:? 'v6' (layout( location=19) in 4-component vector of float) -0:? 'ininst2' ( in block{layout( location=28 component=0) in bool b1, layout( location=29 component=0) in float f1, layout( location=25) in float f2}) +0:? 'ininst2' ( in block{layout( location=28) in bool b1, layout( location=29) in float f1, layout( location=25) in float f2}) 0:? 'in4' ( in block{layout( location=50) in float f1, layout( location=51) in float f2}) 0:? 'bbinst2g' ( out block{layout( xfb_buffer=3 xfb_offset=64) out 4-component vector of float bbv}) 0:? 'bg' (layout( xfb_buffer=1 xfb_offset=48 xfb_stride=80) smooth out 4-component vector of float) diff --git a/3rdparty/glslang/Test/baseResults/430AofA.frag.out b/3rdparty/glslang/Test/baseResults/430AofA.frag.out index 3d532803a..788a8d17c 100644 --- a/3rdparty/glslang/Test/baseResults/430AofA.frag.out +++ b/3rdparty/glslang/Test/baseResults/430AofA.frag.out @@ -1,5 +1,4 @@ 430AofA.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:6: '[]' : only outermost dimension of an array of arrays can be implicitly sized ERROR: 0:14: 'constructor' : constructing non-array constituent from array argument ERROR: 0:15: 'constructor' : array constructor argument not correct type to construct array element diff --git a/3rdparty/glslang/Test/baseResults/430scope.vert.out b/3rdparty/glslang/Test/baseResults/430scope.vert.out index 3e710024a..0d9138922 100644 --- a/3rdparty/glslang/Test/baseResults/430scope.vert.out +++ b/3rdparty/glslang/Test/baseResults/430scope.vert.out @@ -1,5 +1,4 @@ 430scope.vert -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:5: 'a' : redefinition ERROR: 0:17: 'b' : function name is redeclaration of existing name ERROR: 0:20: 'c' : redefinition diff --git a/3rdparty/glslang/Test/baseResults/440.frag.out b/3rdparty/glslang/Test/baseResults/440.frag.out index ff276415f..18e014f92 100644 --- a/3rdparty/glslang/Test/baseResults/440.frag.out +++ b/3rdparty/glslang/Test/baseResults/440.frag.out @@ -1,5 +1,4 @@ 440.frag -Warning, version 440 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:11: 'location' : overlapping use of location 4 ERROR: 0:13: 'component' : type overflows the available 4 components ERROR: 0:22: 'location' : fragment outputs sharing the same location must be the same basic type 30 diff --git a/3rdparty/glslang/Test/baseResults/440.vert.out b/3rdparty/glslang/Test/baseResults/440.vert.out index 3448113c8..8eafb0aea 100644 --- a/3rdparty/glslang/Test/baseResults/440.vert.out +++ b/3rdparty/glslang/Test/baseResults/440.vert.out @@ -1,5 +1,4 @@ 440.vert -Warning, version 440 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:8: 'component' : type overflows the available 4 components ERROR: 0:15: 'component' : component is too large ERROR: 0:23: 'location' : overlapping use of location 4 diff --git a/3rdparty/glslang/Test/baseResults/450.comp.out b/3rdparty/glslang/Test/baseResults/450.comp.out index 203c4b24d..4ae77ccaa 100644 --- a/3rdparty/glslang/Test/baseResults/450.comp.out +++ b/3rdparty/glslang/Test/baseResults/450.comp.out @@ -1,18 +1,24 @@ 450.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. +ERROR: 0:2: 'local_size_x' : must be at least 1 +ERROR: 0:5: 'shared' : not allowed in nested scope +ERROR: 2 compilation errors. No code generated. + Shader version: 450 local_size = (1, 1, 1) -0:? Sequence +ERROR: node is still EOpNull! +0:3 Function Definition: main( ( global void) +0:3 Function Parameters: 0:? Linker Objects Linked compute stage: -ERROR: Linking compute stage: Missing entry point: Each stage requires one entry point Shader version: 450 local_size = (1, 1, 1) -0:? Sequence +ERROR: node is still EOpNull! +0:3 Function Definition: main( ( global void) +0:3 Function Parameters: 0:? Linker Objects diff --git a/3rdparty/glslang/Test/baseResults/450.frag.out b/3rdparty/glslang/Test/baseResults/450.frag.out index 297ae63fb..c0db5a7b9 100644 --- a/3rdparty/glslang/Test/baseResults/450.frag.out +++ b/3rdparty/glslang/Test/baseResults/450.frag.out @@ -1,8 +1,10 @@ 450.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. +ERROR: 0:63: 'location' : cannot use in a block array where new locations are needed for each block element +ERROR: 1 compilation errors. No code generated. + Shader version: 450 -0:? Sequence +ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence @@ -160,13 +162,15 @@ Shader version: 450 0:? 'us2dmsa' ( uniform usampler2DMSArray) 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) +0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m}) +0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g}) Linked fragment stage: Shader version: 450 -0:? Sequence +ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) 0:8 Function Parameters: 0:10 Sequence @@ -273,4 +277,6 @@ Shader version: 450 0:? 'us2dmsa' ( uniform usampler2DMSArray) 0:? 'ii2dms' (layout( rgba32i) uniform iimage2DMS) 0:? 'i2dmsa' (layout( rgba32f) uniform image2DMSArray) +0:? 'bInst1' ( in block{layout( location=6) in float f, layout( location=7) in float g, layout( location=8) in 4X4 matrix of float m}) +0:? 'bInst2' ( in 3-element array of block{layout( location=12) in float f, layout( location=13) in float g}) diff --git a/3rdparty/glslang/Test/baseResults/450.geom.out b/3rdparty/glslang/Test/baseResults/450.geom.out index 8d313c8df..ee08188c7 100644 --- a/3rdparty/glslang/Test/baseResults/450.geom.out +++ b/3rdparty/glslang/Test/baseResults/450.geom.out @@ -1,5 +1,4 @@ 450.geom -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:15: '[' : array index out of range '3' ERROR: 0:15: 'gl_Position' : no such field in structure ERROR: 2 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/450.tesc.out b/3rdparty/glslang/Test/baseResults/450.tesc.out index 29da425ec..b3f4e252d 100644 --- a/3rdparty/glslang/Test/baseResults/450.tesc.out +++ b/3rdparty/glslang/Test/baseResults/450.tesc.out @@ -1,9 +1,11 @@ 450.tesc -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. +ERROR: 0:20: 'location' : cannot use in a block array where new locations are needed for each block element +ERROR: 1 compilation errors. No code generated. + Shader version: 450 vertices = -1 -0:? Sequence +ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence @@ -30,6 +32,8 @@ vertices = -1 0:? Linker Objects 0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:? 'gl_out' ( out 4-element array of block{ out 3-element array of float CullDistance gl_CullDistance}) +0:? 'bInst1' ( out 2-element array of block{layout( location=4) out float f, layout( location=5) out float g}) +0:? 'bInst2' ( out 2-element array of 3-element array of block{layout( location=6) out float f, layout( location=7) out float g}) Linked tessellation control stage: @@ -38,7 +42,7 @@ ERROR: Linking tessellation control stage: At least one shader must specify an o Shader version: 450 vertices = -1 -0:? Sequence +ERROR: node is still EOpNull! 0:11 Function Definition: main( ( global void) 0:11 Function Parameters: 0:13 Sequence @@ -65,4 +69,6 @@ vertices = -1 0:? Linker Objects 0:? 'gl_in' ( in 32-element array of block{ in 3-element array of float CullDistance gl_CullDistance}) 0:? 'gl_out' ( out 4-element array of block{ out 3-element array of float CullDistance gl_CullDistance}) +0:? 'bInst1' ( out 2-element array of block{layout( location=4) out float f, layout( location=5) out float g}) +0:? 'bInst2' ( out 2-element array of 3-element array of block{layout( location=6) out float f, layout( location=7) out float g}) diff --git a/3rdparty/glslang/Test/baseResults/450.tese.out b/3rdparty/glslang/Test/baseResults/450.tese.out index b7735e66b..7b803045e 100644 --- a/3rdparty/glslang/Test/baseResults/450.tese.out +++ b/3rdparty/glslang/Test/baseResults/450.tese.out @@ -1,6 +1,4 @@ 450.tese -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 input primitive = none vertex spacing = none diff --git a/3rdparty/glslang/Test/baseResults/450.vert.out b/3rdparty/glslang/Test/baseResults/450.vert.out index cc300d99e..d2a05a9d3 100644 --- a/3rdparty/glslang/Test/baseResults/450.vert.out +++ b/3rdparty/glslang/Test/baseResults/450.vert.out @@ -1,5 +1,4 @@ 450.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:12: 'out' : cannot be bool ERROR: 0:13: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: outo ERROR: 0:27: '::' : not supported diff --git a/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out b/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out index e0ba0994b..e2773f9eb 100644 --- a/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out +++ b/3rdparty/glslang/Test/baseResults/atomic_uint.frag.out @@ -1,5 +1,4 @@ atomic_uint.frag -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:10: 'atomic_uint' : samplers and atomic_uints cannot be output parameters ERROR: 0:12: 'return' : type does not match, or is not convertible to, the function's return type ERROR: 0:18: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: non_uniform_counter diff --git a/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out b/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out index 95937ce31..5e6233f8d 100644 --- a/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out +++ b/3rdparty/glslang/Test/baseResults/badMacroArgs.frag.out @@ -1,5 +1,4 @@ badMacroArgs.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:4: 'macro expansion' : Too few args in Macro m ERROR: 0:4: '' : compilation terminated ERROR: 2 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/comment.frag.out b/3rdparty/glslang/Test/baseResults/comment.frag.out index 57f2a1d08..b1a00ff51 100644 --- a/3rdparty/glslang/Test/baseResults/comment.frag.out +++ b/3rdparty/glslang/Test/baseResults/comment.frag.out @@ -1,5 +1,4 @@ comment.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. WARNING: 0:10: 'line continuation' : used at end of comment; the following line is still part of the comment WARNING: 0:12: 'line continuation' : used at end of comment; the following line is still part of the comment diff --git a/3rdparty/glslang/Test/baseResults/constFold.frag.out b/3rdparty/glslang/Test/baseResults/constFold.frag.out index 965c6dbc5..33cfcbafe 100644 --- a/3rdparty/glslang/Test/baseResults/constFold.frag.out +++ b/3rdparty/glslang/Test/baseResults/constFold.frag.out @@ -1,5 +1,4 @@ constFold.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:109: '[' : index out of range '-1' ERROR: 0:110: '[' : vector index out of range '4' ERROR: 0:111: '[' : index out of range '-2' diff --git a/3rdparty/glslang/Test/baseResults/cppSimple.vert.out b/3rdparty/glslang/Test/baseResults/cppSimple.vert.out index 0696c7447..1b6e6b50d 100644 --- a/3rdparty/glslang/Test/baseResults/cppSimple.vert.out +++ b/3rdparty/glslang/Test/baseResults/cppSimple.vert.out @@ -1,5 +1,4 @@ cppSimple.vert -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:77: '#error' : good1 ERROR: 0:81: '#error' : good2 ERROR: 0:85: '#error' : good3 @@ -91,8 +90,10 @@ ERROR: 12:9504: '#if' : unexpected tokens following directive ERROR: 12:9506: '#error' : \ 377 ERROR: 12:9507: '#error' : \ 376 ERROR: 12:9508: '#error' : \ 377 +ERROR: 12:9602: 'defined' : cannot use in preprocessor expression when expanded from macros +ERROR: 12:9603: '#error' : DEF_DEFINED then ERROR: 12:10002: '' : missing #endif -ERROR: 88 compilation errors. No code generated. +ERROR: 90 compilation errors. No code generated. Shader version: 400 diff --git a/3rdparty/glslang/Test/baseResults/dce.frag.out b/3rdparty/glslang/Test/baseResults/dce.frag.out index 63d194ca4..6b02eb1c2 100644 --- a/3rdparty/glslang/Test/baseResults/dce.frag.out +++ b/3rdparty/glslang/Test/baseResults/dce.frag.out @@ -1,6 +1,4 @@ dce.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 400 0:? Sequence 0:5 Sequence diff --git a/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out b/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out index 6c5ebdc6f..d04e6e7ad 100644 --- a/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out +++ b/3rdparty/glslang/Test/baseResults/functionSemantics.frag.out @@ -1,5 +1,4 @@ functionSemantics.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:74: 'return' : cannot convert return value to function return type WARNING: 0:74: 'return' : type conversion on return values was not explicitly allowed until version 420 ERROR: 1 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out b/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out index 8e4b3b883..782865abc 100755 --- a/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out +++ b/3rdparty/glslang/Test/baseResults/glspv.esversion.vert.out @@ -1,6 +1,5 @@ glspv.esversion.vert ERROR: #version: ES shaders for OpenGL SPIR-V are not supported -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 1 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/glspv.vert.out b/3rdparty/glslang/Test/baseResults/glspv.vert.out index fae52b7cf..f2fe53b29 100755 --- a/3rdparty/glslang/Test/baseResults/glspv.vert.out +++ b/3rdparty/glslang/Test/baseResults/glspv.vert.out @@ -1,5 +1,4 @@ glspv.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'push_constant' : only allowed when using GLSL for Vulkan ERROR: 0:6: 'descriptor set' : only allowed when using GLSL for Vulkan ERROR: 0:8: 'shared' : not allowed when generating SPIR-V diff --git a/3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out new file mode 100644 index 000000000..27e9129ca --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.dashI.vert.out @@ -0,0 +1,69 @@ +hlsl.dashI.vert +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 40 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 38 + Source HLSL 500 + Name 4 "main" + Name 9 "@main(" + Name 11 "$Global" + MemberName 11($Global) 0 "i1" + MemberName 11($Global) 1 "p1" + MemberName 11($Global) 2 "p2" + MemberName 11($Global) 3 "p3" + MemberName 11($Global) 4 "i4" + Name 13 "" + Name 38 "@entryPointOutput" + MemberDecorate 11($Global) 0 Offset 0 + MemberDecorate 11($Global) 1 Offset 16 + MemberDecorate 11($Global) 2 Offset 32 + MemberDecorate 11($Global) 3 Offset 48 + MemberDecorate 11($Global) 4 Offset 64 + Decorate 11($Global) Block + Decorate 13 DescriptorSet 0 + Decorate 38(@entryPointOutput) BuiltIn Position + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 11($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) + 12: TypePointer Uniform 11($Global) + 13: 12(ptr) Variable Uniform + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: TypePointer Uniform 7(fvec4) + 19: 14(int) Constant 4 + 23: 14(int) Constant 1 + 27: 14(int) Constant 2 + 31: 14(int) Constant 3 + 37: TypePointer Output 7(fvec4) +38(@entryPointOutput): 37(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 39: 7(fvec4) FunctionCall 9(@main() + Store 38(@entryPointOutput) 39 + Return + FunctionEnd + 9(@main(): 7(fvec4) Function None 8 + 10: Label + 17: 16(ptr) AccessChain 13 15 + 18: 7(fvec4) Load 17 + 20: 16(ptr) AccessChain 13 19 + 21: 7(fvec4) Load 20 + 22: 7(fvec4) FAdd 18 21 + 24: 16(ptr) AccessChain 13 23 + 25: 7(fvec4) Load 24 + 26: 7(fvec4) FAdd 22 25 + 28: 16(ptr) AccessChain 13 27 + 29: 7(fvec4) Load 28 + 30: 7(fvec4) FAdd 26 29 + 32: 16(ptr) AccessChain 13 31 + 33: 7(fvec4) Load 32 + 34: 7(fvec4) FAdd 30 33 + ReturnValue 34 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out index e9908db36..eaca9fde2 100755 --- a/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.forLoop.frag.out @@ -110,6 +110,80 @@ gl_FragCoord origin is upper left 0:11 'ii' ( temp int) 0:12 Pre-Decrement ( temp float) 0:12 'ii' ( temp float) +0:13 Sequence +0:13 move second child to first child ( temp int) +0:13 'first' ( temp int) +0:13 Constant: +0:13 0 (const int) +0:13 move second child to first child ( temp int) +0:13 'second' ( temp int) +0:13 Constant: +0:13 1 (const int) +0:13 Loop with condition tested first +0:13 No loop condition +0:13 Loop Body +0:13 add ( temp int) +0:13 'first' ( temp int) +0:13 'second' ( temp int) +0:14 Sequence +0:14 move second child to first child ( temp int) +0:14 'i' ( temp int) +0:14 Constant: +0:14 0 (const int) +0:14 move second child to first child ( temp int) +0:14 'count' ( temp int) +0:14 Convert float to int ( temp int) +0:14 'ii' ( temp float) +0:14 Loop with condition tested first +0:14 Loop Condition +0:14 Compare Less Than ( temp bool) +0:14 'i' ( temp int) +0:14 'count' ( temp int) +0:14 No loop body +0:14 Loop Terminal Expression +0:14 Post-Increment ( temp int) +0:14 'i' ( temp int) +0:15 Sequence +0:15 move second child to first child ( temp float) +0:15 'first' ( temp float) +0:15 Constant: +0:15 0.000000 +0:15 Loop with condition tested first +0:15 Loop Condition +0:15 Compare Less Than ( temp bool) +0:15 'first' ( temp float) +0:15 direct index ( temp float) +0:15 'second' ( temp 2-element array of float) +0:15 Constant: +0:15 0 (const int) +0:15 Loop Body +0:15 add ( temp float) +0:15 add ( temp float) +0:15 'first' ( temp float) +0:15 direct index ( temp float) +0:15 'second' ( temp 2-element array of float) +0:15 Constant: +0:15 1 (const int) +0:15 'third' ( temp float) +0:15 Loop Terminal Expression +0:15 Pre-Increment ( temp float) +0:15 direct index ( temp float) +0:15 'second' ( temp 2-element array of float) +0:15 Constant: +0:15 1 (const int) +0:? Sequence +0:16 Comma ( temp float) +0:16 Comma ( temp float) +0:16 Pre-Decrement ( temp float) +0:16 'ii' ( temp float) +0:16 Pre-Decrement ( temp float) +0:16 'ii' ( temp float) +0:16 Pre-Decrement ( temp float) +0:16 'ii' ( temp float) +0:16 Loop with condition tested first +0:16 No loop condition +0:16 Loop Body +0:16 'ii' ( temp float) 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence @@ -239,6 +313,80 @@ gl_FragCoord origin is upper left 0:11 'ii' ( temp int) 0:12 Pre-Decrement ( temp float) 0:12 'ii' ( temp float) +0:13 Sequence +0:13 move second child to first child ( temp int) +0:13 'first' ( temp int) +0:13 Constant: +0:13 0 (const int) +0:13 move second child to first child ( temp int) +0:13 'second' ( temp int) +0:13 Constant: +0:13 1 (const int) +0:13 Loop with condition tested first +0:13 No loop condition +0:13 Loop Body +0:13 add ( temp int) +0:13 'first' ( temp int) +0:13 'second' ( temp int) +0:14 Sequence +0:14 move second child to first child ( temp int) +0:14 'i' ( temp int) +0:14 Constant: +0:14 0 (const int) +0:14 move second child to first child ( temp int) +0:14 'count' ( temp int) +0:14 Convert float to int ( temp int) +0:14 'ii' ( temp float) +0:14 Loop with condition tested first +0:14 Loop Condition +0:14 Compare Less Than ( temp bool) +0:14 'i' ( temp int) +0:14 'count' ( temp int) +0:14 No loop body +0:14 Loop Terminal Expression +0:14 Post-Increment ( temp int) +0:14 'i' ( temp int) +0:15 Sequence +0:15 move second child to first child ( temp float) +0:15 'first' ( temp float) +0:15 Constant: +0:15 0.000000 +0:15 Loop with condition tested first +0:15 Loop Condition +0:15 Compare Less Than ( temp bool) +0:15 'first' ( temp float) +0:15 direct index ( temp float) +0:15 'second' ( temp 2-element array of float) +0:15 Constant: +0:15 0 (const int) +0:15 Loop Body +0:15 add ( temp float) +0:15 add ( temp float) +0:15 'first' ( temp float) +0:15 direct index ( temp float) +0:15 'second' ( temp 2-element array of float) +0:15 Constant: +0:15 1 (const int) +0:15 'third' ( temp float) +0:15 Loop Terminal Expression +0:15 Pre-Increment ( temp float) +0:15 direct index ( temp float) +0:15 'second' ( temp 2-element array of float) +0:15 Constant: +0:15 1 (const int) +0:? Sequence +0:16 Comma ( temp float) +0:16 Comma ( temp float) +0:16 Pre-Decrement ( temp float) +0:16 'ii' ( temp float) +0:16 Pre-Decrement ( temp float) +0:16 'ii' ( temp float) +0:16 Pre-Decrement ( temp float) +0:16 'ii' ( temp float) +0:16 Loop with condition tested first +0:16 No loop condition +0:16 Loop Body +0:16 'ii' ( temp float) 0:2 Function Definition: PixelShaderFunction( ( temp void) 0:2 Function Parameters: 0:? Sequence @@ -255,12 +403,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 124 +// Id's are bound by 183 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 117 120 + EntryPoint Fragment 4 "PixelShaderFunction" 176 179 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" @@ -268,12 +416,19 @@ gl_FragCoord origin is upper left Name 10 "input" Name 92 "ii" Name 111 "ii" - Name 115 "input" - Name 117 "input" - Name 120 "@entryPointOutput" - Name 121 "param" - Decorate 117(input) Location 0 - Decorate 120(@entryPointOutput) Location 0 + Name 114 "first" + Name 116 "second" + Name 124 "i" + Name 125 "count" + Name 138 "first" + Name 149 "second" + Name 157 "third" + Name 174 "input" + Name 176 "input" + Name 179 "@entryPointOutput" + Name 180 "param" + Decorate 176(input) Location 0 + Decorate 179(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -293,20 +448,25 @@ gl_FragCoord origin is upper left 100: 90(int) Constant 3 103: 90(int) Constant 2 109: 90(int) Constant 1 - 116: TypePointer Input 7(fvec4) - 117(input): 116(ptr) Variable Input - 119: TypePointer Output 7(fvec4) -120(@entryPointOutput): 119(ptr) Variable Output + 115: 90(int) Constant 0 + 139: 6(float) Constant 0 + 146: 71(int) Constant 2 + 147: TypeArray 6(float) 146 + 148: TypePointer Function 147 + 175: TypePointer Input 7(fvec4) + 176(input): 175(ptr) Variable Input + 178: TypePointer Output 7(fvec4) +179(@entryPointOutput): 178(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 115(input): 8(ptr) Variable Function - 121(param): 8(ptr) Variable Function - 118: 7(fvec4) Load 117(input) - Store 115(input) 118 - 122: 7(fvec4) Load 115(input) - Store 121(param) 122 - 123: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 121(param) - Store 120(@entryPointOutput) 123 + 174(input): 8(ptr) Variable Function + 180(param): 8(ptr) Variable Function + 177: 7(fvec4) Load 176(input) + Store 174(input) 177 + 181: 7(fvec4) Load 174(input) + Store 180(param) 181 + 182: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 180(param) + Store 179(@entryPointOutput) 182 Return FunctionEnd 11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9 @@ -314,6 +474,13 @@ gl_FragCoord origin is upper left 12: Label 92(ii): 91(ptr) Variable Function 111(ii): 73(ptr) Variable Function + 114(first): 91(ptr) Variable Function + 116(second): 91(ptr) Variable Function + 124(i): 91(ptr) Variable Function + 125(count): 91(ptr) Variable Function + 138(first): 73(ptr) Variable Function + 149(second): 148(ptr) Variable Function + 157(third): 73(ptr) Variable Function Branch 13 13: Label LoopMerge 15 16 None @@ -454,6 +621,85 @@ gl_FragCoord origin is upper left 112: 6(float) Load 111(ii) 113: 6(float) FSub 112 18 Store 111(ii) 113 - 114: 7(fvec4) Undef - ReturnValue 114 + Store 114(first) 115 + Store 116(second) 109 + Branch 117 + 117: Label + LoopMerge 119 120 None + Branch 118 + 118: Label + 121: 90(int) Load 114(first) + 122: 90(int) Load 116(second) + 123: 90(int) IAdd 121 122 + Branch 120 + 120: Label + Branch 117 + 119: Label + Store 124(i) 115 + 126: 6(float) Load 111(ii) + 127: 90(int) ConvertFToS 126 + Store 125(count) 127 + Branch 128 + 128: Label + LoopMerge 130 131 None + Branch 132 + 132: Label + 133: 90(int) Load 124(i) + 134: 90(int) Load 125(count) + 135: 32(bool) SLessThan 133 134 + BranchConditional 135 129 130 + 129: Label + Branch 131 + 131: Label + 136: 90(int) Load 124(i) + 137: 90(int) IAdd 136 109 + Store 124(i) 137 + Branch 128 + 130: Label + Store 138(first) 139 + Branch 140 + 140: Label + LoopMerge 142 143 None + Branch 144 + 144: Label + 145: 6(float) Load 138(first) + 150: 73(ptr) AccessChain 149(second) 115 + 151: 6(float) Load 150 + 152: 32(bool) FOrdLessThan 145 151 + BranchConditional 152 141 142 + 141: Label + 153: 6(float) Load 138(first) + 154: 73(ptr) AccessChain 149(second) 109 + 155: 6(float) Load 154 + 156: 6(float) FAdd 153 155 + 158: 6(float) Load 157(third) + 159: 6(float) FAdd 156 158 + Branch 143 + 143: Label + 160: 73(ptr) AccessChain 149(second) 109 + 161: 6(float) Load 160 + 162: 6(float) FAdd 161 18 + Store 160 162 + Branch 140 + 142: Label + 163: 6(float) Load 111(ii) + 164: 6(float) FSub 163 18 + Store 111(ii) 164 + 165: 6(float) Load 111(ii) + 166: 6(float) FSub 165 18 + Store 111(ii) 166 + 167: 6(float) Load 111(ii) + 168: 6(float) FSub 167 18 + Store 111(ii) 168 + Branch 169 + 169: Label + LoopMerge 171 172 None + Branch 170 + 170: Label + Branch 172 + 172: Label + Branch 169 + 171: Label + 173: 7(fvec4) Undef + ReturnValue 173 FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.pp.vert.out b/3rdparty/glslang/Test/baseResults/hlsl.pp.vert.out new file mode 100755 index 000000000..55186363e --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.pp.vert.out @@ -0,0 +1,61 @@ +hlsl.pp.vert +Shader version: 500 +0:? Sequence +0:17 Function Definition: @main( ( temp void) +0:17 Function Parameters: +0:17 Function Definition: main( ( temp void) +0:17 Function Parameters: +0:? Sequence +0:17 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1, uniform int goodGlobal2}) + + +Linked vertex stage: + + +Shader version: 500 +0:? Sequence +0:17 Function Definition: @main( ( temp void) +0:17 Function Parameters: +0:17 Function Definition: main( ( temp void) +0:17 Function Parameters: +0:? Sequence +0:17 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1, uniform int goodGlobal2}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 13 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" + Source HLSL 500 + Name 4 "main" + Name 6 "@main(" + Name 10 "$Global" + MemberName 10($Global) 0 "goodGlobal1" + MemberName 10($Global) 1 "goodGlobal2" + Name 12 "" + MemberDecorate 10($Global) 0 Offset 0 + MemberDecorate 10($Global) 1 Offset 4 + Decorate 10($Global) Block + Decorate 12 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 9: TypeInt 32 1 + 10($Global): TypeStruct 9(int) 9(int) + 11: TypePointer Uniform 10($Global) + 12: 11(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 8: 2 FunctionCall 6(@main() + Return + FunctionEnd + 6(@main(): 2 Function None 3 + 7: Label + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.texture.subvec4.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.texture.subvec4.frag.out new file mode 100644 index 000000000..79ea788ca --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/hlsl.texture.subvec4.frag.out @@ -0,0 +1,544 @@ +hlsl.texture.subvec4.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:15 Function Definition: @main( ( temp 4-component vector of float) +0:15 Function Parameters: +0:? Sequence +0:24 Sequence +0:24 move second child to first child ( temp 2-component vector of uint) +0:24 'sizeQueryTemp' ( temp 2-component vector of uint) +0:24 textureSize ( temp 2-component vector of uint) +0:24 'g_tTex2dmsf1' ( uniform texture2DMS) +0:24 move second child to first child ( temp uint) +0:24 'WidthU' ( temp uint) +0:24 direct index ( temp uint) +0:24 'sizeQueryTemp' ( temp 2-component vector of uint) +0:24 Constant: +0:24 0 (const int) +0:24 move second child to first child ( temp uint) +0:24 'HeightU' ( temp uint) +0:24 direct index ( temp uint) +0:24 'sizeQueryTemp' ( temp 2-component vector of uint) +0:24 Constant: +0:24 1 (const int) +0:24 move second child to first child ( temp uint) +0:24 'NumberOfSamplesU' ( temp uint) +0:24 imageQuerySamples ( temp uint) +0:24 'g_tTex2dmsf1' ( uniform texture2DMS) +0:25 Sequence +0:25 move second child to first child ( temp 2-component vector of uint) +0:25 'sizeQueryTemp' ( temp 2-component vector of uint) +0:25 textureSize ( temp 2-component vector of uint) +0:25 'g_tTex2dmsf2' ( uniform texture2DMS) +0:25 move second child to first child ( temp uint) +0:25 'WidthU' ( temp uint) +0:25 direct index ( temp uint) +0:25 'sizeQueryTemp' ( temp 2-component vector of uint) +0:25 Constant: +0:25 0 (const int) +0:25 move second child to first child ( temp uint) +0:25 'HeightU' ( temp uint) +0:25 direct index ( temp uint) +0:25 'sizeQueryTemp' ( temp 2-component vector of uint) +0:25 Constant: +0:25 1 (const int) +0:25 move second child to first child ( temp uint) +0:25 'NumberOfSamplesU' ( temp uint) +0:25 imageQuerySamples ( temp uint) +0:25 'g_tTex2dmsf2' ( uniform texture2DMS) +0:26 Sequence +0:26 move second child to first child ( temp 2-component vector of uint) +0:26 'sizeQueryTemp' ( temp 2-component vector of uint) +0:26 textureSize ( temp 2-component vector of uint) +0:26 'g_tTex2dmsf3' ( uniform texture2DMS) +0:26 move second child to first child ( temp uint) +0:26 'WidthU' ( temp uint) +0:26 direct index ( temp uint) +0:26 'sizeQueryTemp' ( temp 2-component vector of uint) +0:26 Constant: +0:26 0 (const int) +0:26 move second child to first child ( temp uint) +0:26 'HeightU' ( temp uint) +0:26 direct index ( temp uint) +0:26 'sizeQueryTemp' ( temp 2-component vector of uint) +0:26 Constant: +0:26 1 (const int) +0:26 move second child to first child ( temp uint) +0:26 'NumberOfSamplesU' ( temp uint) +0:26 imageQuerySamples ( temp uint) +0:26 'g_tTex2dmsf3' ( uniform texture2DMS) +0:27 Sequence +0:27 move second child to first child ( temp 2-component vector of uint) +0:27 'sizeQueryTemp' ( temp 2-component vector of uint) +0:27 textureSize ( temp 2-component vector of uint) +0:27 'g_tTex2dmsf4' ( uniform texture2DMS) +0:27 move second child to first child ( temp uint) +0:27 'WidthU' ( temp uint) +0:27 direct index ( temp uint) +0:27 'sizeQueryTemp' ( temp 2-component vector of uint) +0:27 Constant: +0:27 0 (const int) +0:27 move second child to first child ( temp uint) +0:27 'HeightU' ( temp uint) +0:27 direct index ( temp uint) +0:27 'sizeQueryTemp' ( temp 2-component vector of uint) +0:27 Constant: +0:27 1 (const int) +0:27 move second child to first child ( temp uint) +0:27 'NumberOfSamplesU' ( temp uint) +0:27 imageQuerySamples ( temp uint) +0:27 'g_tTex2dmsf4' ( uniform texture2DMS) +0:29 Construct float ( temp float) +0:? textureFetch ( temp 4-component vector of float) +0:29 'g_tTex2dmsf1' ( uniform texture2DMS) +0:? Constant: +0:? 1 (const int) +0:? 2 (const int) +0:29 Constant: +0:29 3 (const int) +0:30 Construct vec2 ( temp 2-component vector of float) +0:? textureFetch ( temp 4-component vector of float) +0:30 'g_tTex2dmsf2' ( uniform texture2DMS) +0:? Constant: +0:? 1 (const int) +0:? 2 (const int) +0:30 Constant: +0:30 3 (const int) +0:31 Construct vec3 ( temp 3-component vector of float) +0:? textureFetch ( temp 4-component vector of float) +0:31 'g_tTex2dmsf3' ( uniform texture2DMS) +0:? Constant: +0:? 1 (const int) +0:? 2 (const int) +0:31 Constant: +0:31 3 (const int) +0:32 textureFetch ( temp 4-component vector of float) +0:32 'g_tTex2dmsf4' ( uniform texture2DMS) +0:? Constant: +0:? 1 (const int) +0:? 2 (const int) +0:32 Constant: +0:32 3 (const int) +0:34 Construct float ( temp float) +0:? texture ( temp 4-component vector of float) +0:34 Construct combined texture-sampler ( temp sampler2D) +0:34 'g_tTex2df1' ( uniform texture2D) +0:34 'g_sSamp' ( uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Construct vec2 ( temp 2-component vector of float) +0:? texture ( temp 4-component vector of float) +0:35 Construct combined texture-sampler ( temp sampler2D) +0:35 'g_tTex2df2' ( uniform texture2D) +0:35 'g_sSamp' ( uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:36 Construct vec3 ( temp 3-component vector of float) +0:? texture ( temp 4-component vector of float) +0:36 Construct combined texture-sampler ( temp sampler2D) +0:36 'g_tTex2df3' ( uniform texture2D) +0:36 'g_sSamp' ( uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:37 texture ( temp 4-component vector of float) +0:37 Construct combined texture-sampler ( temp sampler2D) +0:37 'g_tTex2df4' ( uniform texture2D) +0:37 'g_sSamp' ( uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:39 Branch: Return with expression +0:39 Constant: +0:39 0.000000 +0:39 0.000000 +0:39 0.000000 +0:39 0.000000 +0:15 Function Definition: main( ( temp void) +0:15 Function Parameters: +0:? Sequence +0:15 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:15 Function Call: @main( ( temp 4-component vector of float) +0:? Linker Objects +0:? 'g_tTex2dmsf1' ( uniform texture2DMS) +0:? 'g_tTex2dmsf2' ( uniform texture2DMS) +0:? 'g_tTex2dmsf3' ( uniform texture2DMS) +0:? 'g_tTex2dmsf4' ( uniform texture2DMS) +0:? 'g_tTex2df1' ( uniform texture2D) +0:? 'g_tTex2df2' ( uniform texture2D) +0:? 'g_tTex2df3' ( uniform texture2D) +0:? 'g_tTex2df4' ( uniform texture2D) +0:? 'g_sSamp' ( uniform sampler) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:15 Function Definition: @main( ( temp 4-component vector of float) +0:15 Function Parameters: +0:? Sequence +0:24 Sequence +0:24 move second child to first child ( temp 2-component vector of uint) +0:24 'sizeQueryTemp' ( temp 2-component vector of uint) +0:24 textureSize ( temp 2-component vector of uint) +0:24 'g_tTex2dmsf1' ( uniform texture2DMS) +0:24 move second child to first child ( temp uint) +0:24 'WidthU' ( temp uint) +0:24 direct index ( temp uint) +0:24 'sizeQueryTemp' ( temp 2-component vector of uint) +0:24 Constant: +0:24 0 (const int) +0:24 move second child to first child ( temp uint) +0:24 'HeightU' ( temp uint) +0:24 direct index ( temp uint) +0:24 'sizeQueryTemp' ( temp 2-component vector of uint) +0:24 Constant: +0:24 1 (const int) +0:24 move second child to first child ( temp uint) +0:24 'NumberOfSamplesU' ( temp uint) +0:24 imageQuerySamples ( temp uint) +0:24 'g_tTex2dmsf1' ( uniform texture2DMS) +0:25 Sequence +0:25 move second child to first child ( temp 2-component vector of uint) +0:25 'sizeQueryTemp' ( temp 2-component vector of uint) +0:25 textureSize ( temp 2-component vector of uint) +0:25 'g_tTex2dmsf2' ( uniform texture2DMS) +0:25 move second child to first child ( temp uint) +0:25 'WidthU' ( temp uint) +0:25 direct index ( temp uint) +0:25 'sizeQueryTemp' ( temp 2-component vector of uint) +0:25 Constant: +0:25 0 (const int) +0:25 move second child to first child ( temp uint) +0:25 'HeightU' ( temp uint) +0:25 direct index ( temp uint) +0:25 'sizeQueryTemp' ( temp 2-component vector of uint) +0:25 Constant: +0:25 1 (const int) +0:25 move second child to first child ( temp uint) +0:25 'NumberOfSamplesU' ( temp uint) +0:25 imageQuerySamples ( temp uint) +0:25 'g_tTex2dmsf2' ( uniform texture2DMS) +0:26 Sequence +0:26 move second child to first child ( temp 2-component vector of uint) +0:26 'sizeQueryTemp' ( temp 2-component vector of uint) +0:26 textureSize ( temp 2-component vector of uint) +0:26 'g_tTex2dmsf3' ( uniform texture2DMS) +0:26 move second child to first child ( temp uint) +0:26 'WidthU' ( temp uint) +0:26 direct index ( temp uint) +0:26 'sizeQueryTemp' ( temp 2-component vector of uint) +0:26 Constant: +0:26 0 (const int) +0:26 move second child to first child ( temp uint) +0:26 'HeightU' ( temp uint) +0:26 direct index ( temp uint) +0:26 'sizeQueryTemp' ( temp 2-component vector of uint) +0:26 Constant: +0:26 1 (const int) +0:26 move second child to first child ( temp uint) +0:26 'NumberOfSamplesU' ( temp uint) +0:26 imageQuerySamples ( temp uint) +0:26 'g_tTex2dmsf3' ( uniform texture2DMS) +0:27 Sequence +0:27 move second child to first child ( temp 2-component vector of uint) +0:27 'sizeQueryTemp' ( temp 2-component vector of uint) +0:27 textureSize ( temp 2-component vector of uint) +0:27 'g_tTex2dmsf4' ( uniform texture2DMS) +0:27 move second child to first child ( temp uint) +0:27 'WidthU' ( temp uint) +0:27 direct index ( temp uint) +0:27 'sizeQueryTemp' ( temp 2-component vector of uint) +0:27 Constant: +0:27 0 (const int) +0:27 move second child to first child ( temp uint) +0:27 'HeightU' ( temp uint) +0:27 direct index ( temp uint) +0:27 'sizeQueryTemp' ( temp 2-component vector of uint) +0:27 Constant: +0:27 1 (const int) +0:27 move second child to first child ( temp uint) +0:27 'NumberOfSamplesU' ( temp uint) +0:27 imageQuerySamples ( temp uint) +0:27 'g_tTex2dmsf4' ( uniform texture2DMS) +0:29 Construct float ( temp float) +0:? textureFetch ( temp 4-component vector of float) +0:29 'g_tTex2dmsf1' ( uniform texture2DMS) +0:? Constant: +0:? 1 (const int) +0:? 2 (const int) +0:29 Constant: +0:29 3 (const int) +0:30 Construct vec2 ( temp 2-component vector of float) +0:? textureFetch ( temp 4-component vector of float) +0:30 'g_tTex2dmsf2' ( uniform texture2DMS) +0:? Constant: +0:? 1 (const int) +0:? 2 (const int) +0:30 Constant: +0:30 3 (const int) +0:31 Construct vec3 ( temp 3-component vector of float) +0:? textureFetch ( temp 4-component vector of float) +0:31 'g_tTex2dmsf3' ( uniform texture2DMS) +0:? Constant: +0:? 1 (const int) +0:? 2 (const int) +0:31 Constant: +0:31 3 (const int) +0:32 textureFetch ( temp 4-component vector of float) +0:32 'g_tTex2dmsf4' ( uniform texture2DMS) +0:? Constant: +0:? 1 (const int) +0:? 2 (const int) +0:32 Constant: +0:32 3 (const int) +0:34 Construct float ( temp float) +0:? texture ( temp 4-component vector of float) +0:34 Construct combined texture-sampler ( temp sampler2D) +0:34 'g_tTex2df1' ( uniform texture2D) +0:34 'g_sSamp' ( uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Construct vec2 ( temp 2-component vector of float) +0:? texture ( temp 4-component vector of float) +0:35 Construct combined texture-sampler ( temp sampler2D) +0:35 'g_tTex2df2' ( uniform texture2D) +0:35 'g_sSamp' ( uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:36 Construct vec3 ( temp 3-component vector of float) +0:? texture ( temp 4-component vector of float) +0:36 Construct combined texture-sampler ( temp sampler2D) +0:36 'g_tTex2df3' ( uniform texture2D) +0:36 'g_sSamp' ( uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:37 texture ( temp 4-component vector of float) +0:37 Construct combined texture-sampler ( temp sampler2D) +0:37 'g_tTex2df4' ( uniform texture2D) +0:37 'g_sSamp' ( uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:39 Branch: Return with expression +0:39 Constant: +0:39 0.000000 +0:39 0.000000 +0:39 0.000000 +0:39 0.000000 +0:15 Function Definition: main( ( temp void) +0:15 Function Parameters: +0:? Sequence +0:15 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:15 Function Call: @main( ( temp 4-component vector of float) +0:? Linker Objects +0:? 'g_tTex2dmsf1' ( uniform texture2DMS) +0:? 'g_tTex2dmsf2' ( uniform texture2DMS) +0:? 'g_tTex2dmsf3' ( uniform texture2DMS) +0:? 'g_tTex2dmsf4' ( uniform texture2DMS) +0:? 'g_tTex2df1' ( uniform texture2D) +0:? 'g_tTex2df2' ( uniform texture2D) +0:? 'g_tTex2df3' ( uniform texture2D) +0:? 'g_tTex2df4' ( uniform texture2D) +0:? 'g_sSamp' ( uniform sampler) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 130 + + Capability Shader + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 128 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 9 "@main(" + Name 14 "sizeQueryTemp" + Name 17 "g_tTex2dmsf1" + Name 21 "WidthU" + Name 25 "HeightU" + Name 29 "NumberOfSamplesU" + Name 32 "sizeQueryTemp" + Name 33 "g_tTex2dmsf2" + Name 42 "sizeQueryTemp" + Name 43 "g_tTex2dmsf3" + Name 52 "sizeQueryTemp" + Name 53 "g_tTex2dmsf4" + Name 88 "g_tTex2df1" + Name 92 "g_sSamp" + Name 101 "g_tTex2df2" + Name 109 "g_tTex2df3" + Name 118 "g_tTex2df4" + Name 128 "@entryPointOutput" + Decorate 17(g_tTex2dmsf1) DescriptorSet 0 + Decorate 33(g_tTex2dmsf2) DescriptorSet 0 + Decorate 43(g_tTex2dmsf3) DescriptorSet 0 + Decorate 53(g_tTex2dmsf4) DescriptorSet 0 + Decorate 88(g_tTex2df1) DescriptorSet 0 + Decorate 92(g_sSamp) DescriptorSet 0 + Decorate 101(g_tTex2df2) DescriptorSet 0 + Decorate 109(g_tTex2df3) DescriptorSet 0 + Decorate 118(g_tTex2df4) DescriptorSet 0 + Decorate 128(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 11: TypeInt 32 0 + 12: TypeVector 11(int) 2 + 13: TypePointer Function 12(ivec2) + 15: TypeImage 6(float) 2D multi-sampled sampled format:Unknown + 16: TypePointer UniformConstant 15 +17(g_tTex2dmsf1): 16(ptr) Variable UniformConstant + 20: TypePointer Function 11(int) + 22: 11(int) Constant 0 + 26: 11(int) Constant 1 +33(g_tTex2dmsf2): 16(ptr) Variable UniformConstant +43(g_tTex2dmsf3): 16(ptr) Variable UniformConstant +53(g_tTex2dmsf4): 16(ptr) Variable UniformConstant + 63: TypeInt 32 1 + 64: TypeVector 63(int) 2 + 65: 63(int) Constant 1 + 66: 63(int) Constant 2 + 67: 64(ivec2) ConstantComposite 65 66 + 68: 63(int) Constant 3 + 73: TypeVector 6(float) 2 + 79: TypeVector 6(float) 3 + 86: TypeImage 6(float) 2D sampled format:Unknown + 87: TypePointer UniformConstant 86 + 88(g_tTex2df1): 87(ptr) Variable UniformConstant + 90: TypeSampler + 91: TypePointer UniformConstant 90 + 92(g_sSamp): 91(ptr) Variable UniformConstant + 94: TypeSampledImage 86 + 96: 6(float) Constant 1036831949 + 97: 6(float) Constant 1045220557 + 98: 73(fvec2) ConstantComposite 96 97 + 101(g_tTex2df2): 87(ptr) Variable UniformConstant + 109(g_tTex2df3): 87(ptr) Variable UniformConstant + 118(g_tTex2df4): 87(ptr) Variable UniformConstant + 123: 6(float) Constant 0 + 124: 7(fvec4) ConstantComposite 123 123 123 123 + 127: TypePointer Output 7(fvec4) +128(@entryPointOutput): 127(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 129: 7(fvec4) FunctionCall 9(@main() + Store 128(@entryPointOutput) 129 + Return + FunctionEnd + 9(@main(): 7(fvec4) Function None 8 + 10: Label +14(sizeQueryTemp): 13(ptr) Variable Function + 21(WidthU): 20(ptr) Variable Function + 25(HeightU): 20(ptr) Variable Function +29(NumberOfSamplesU): 20(ptr) Variable Function +32(sizeQueryTemp): 13(ptr) Variable Function +42(sizeQueryTemp): 13(ptr) Variable Function +52(sizeQueryTemp): 13(ptr) Variable Function + 18: 15 Load 17(g_tTex2dmsf1) + 19: 12(ivec2) ImageQuerySize 18 + Store 14(sizeQueryTemp) 19 + 23: 20(ptr) AccessChain 14(sizeQueryTemp) 22 + 24: 11(int) Load 23 + Store 21(WidthU) 24 + 27: 20(ptr) AccessChain 14(sizeQueryTemp) 26 + 28: 11(int) Load 27 + Store 25(HeightU) 28 + 30: 15 Load 17(g_tTex2dmsf1) + 31: 11(int) ImageQuerySamples 30 + Store 29(NumberOfSamplesU) 31 + 34: 15 Load 33(g_tTex2dmsf2) + 35: 12(ivec2) ImageQuerySize 34 + Store 32(sizeQueryTemp) 35 + 36: 20(ptr) AccessChain 32(sizeQueryTemp) 22 + 37: 11(int) Load 36 + Store 21(WidthU) 37 + 38: 20(ptr) AccessChain 32(sizeQueryTemp) 26 + 39: 11(int) Load 38 + Store 25(HeightU) 39 + 40: 15 Load 33(g_tTex2dmsf2) + 41: 11(int) ImageQuerySamples 40 + Store 29(NumberOfSamplesU) 41 + 44: 15 Load 43(g_tTex2dmsf3) + 45: 12(ivec2) ImageQuerySize 44 + Store 42(sizeQueryTemp) 45 + 46: 20(ptr) AccessChain 42(sizeQueryTemp) 22 + 47: 11(int) Load 46 + Store 21(WidthU) 47 + 48: 20(ptr) AccessChain 42(sizeQueryTemp) 26 + 49: 11(int) Load 48 + Store 25(HeightU) 49 + 50: 15 Load 43(g_tTex2dmsf3) + 51: 11(int) ImageQuerySamples 50 + Store 29(NumberOfSamplesU) 51 + 54: 15 Load 53(g_tTex2dmsf4) + 55: 12(ivec2) ImageQuerySize 54 + Store 52(sizeQueryTemp) 55 + 56: 20(ptr) AccessChain 52(sizeQueryTemp) 22 + 57: 11(int) Load 56 + Store 21(WidthU) 57 + 58: 20(ptr) AccessChain 52(sizeQueryTemp) 26 + 59: 11(int) Load 58 + Store 25(HeightU) 59 + 60: 15 Load 53(g_tTex2dmsf4) + 61: 11(int) ImageQuerySamples 60 + Store 29(NumberOfSamplesU) 61 + 62: 15 Load 17(g_tTex2dmsf1) + 69: 7(fvec4) ImageFetch 62 67 Sample 68 + 70: 6(float) CompositeExtract 69 0 + 71: 15 Load 33(g_tTex2dmsf2) + 72: 7(fvec4) ImageFetch 71 67 Sample 68 + 74: 6(float) CompositeExtract 72 0 + 75: 6(float) CompositeExtract 72 1 + 76: 73(fvec2) CompositeConstruct 74 75 + 77: 15 Load 43(g_tTex2dmsf3) + 78: 7(fvec4) ImageFetch 77 67 Sample 68 + 80: 6(float) CompositeExtract 78 0 + 81: 6(float) CompositeExtract 78 1 + 82: 6(float) CompositeExtract 78 2 + 83: 79(fvec3) CompositeConstruct 80 81 82 + 84: 15 Load 53(g_tTex2dmsf4) + 85: 7(fvec4) ImageFetch 84 67 Sample 68 + 89: 86 Load 88(g_tTex2df1) + 93: 90 Load 92(g_sSamp) + 95: 94 SampledImage 89 93 + 99: 7(fvec4) ImageSampleImplicitLod 95 98 + 100: 6(float) CompositeExtract 99 0 + 102: 86 Load 101(g_tTex2df2) + 103: 90 Load 92(g_sSamp) + 104: 94 SampledImage 102 103 + 105: 7(fvec4) ImageSampleImplicitLod 104 98 + 106: 6(float) CompositeExtract 105 0 + 107: 6(float) CompositeExtract 105 1 + 108: 73(fvec2) CompositeConstruct 106 107 + 110: 86 Load 109(g_tTex2df3) + 111: 90 Load 92(g_sSamp) + 112: 94 SampledImage 110 111 + 113: 7(fvec4) ImageSampleImplicitLod 112 98 + 114: 6(float) CompositeExtract 113 0 + 115: 6(float) CompositeExtract 113 1 + 116: 6(float) CompositeExtract 113 2 + 117: 79(fvec3) CompositeConstruct 114 115 116 + 119: 86 Load 118(g_tTex2df4) + 120: 90 Load 92(g_sSamp) + 121: 94 SampledImage 119 120 + 122: 7(fvec4) ImageSampleImplicitLod 121 98 + ReturnValue 124 + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out index 889d79bf0..17eb057a4 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.type.half.frag.out @@ -6,42 +6,70 @@ gl_FragCoord origin is upper left 0:3 Function Parameters: 0:? Sequence 0:4 Sequence -0:4 move second child to first child ( temp mediump float) -0:4 'h0' ( temp mediump float) +0:4 move second child to first child ( temp float) +0:4 'h0' ( temp float) 0:4 Constant: 0:4 0.000000 0:5 Sequence -0:5 move second child to first child ( temp mediump 1-component vector of float) -0:5 'h1' ( temp mediump 1-component vector of float) +0:5 move second child to first child ( temp 1-component vector of float) +0:5 'h1' ( temp 1-component vector of float) 0:5 Constant: 0:5 1.000000 0:6 Sequence -0:6 move second child to first child ( temp mediump 2-component vector of float) -0:6 'h2' ( temp mediump 2-component vector of float) +0:6 move second child to first child ( temp 2-component vector of float) +0:6 'h2' ( temp 2-component vector of float) 0:6 Constant: 0:6 2.000000 0:6 2.000000 0:7 Sequence -0:7 move second child to first child ( temp mediump 3-component vector of float) -0:7 'h3' ( temp mediump 3-component vector of float) +0:7 move second child to first child ( temp 3-component vector of float) +0:7 'h3' ( temp 3-component vector of float) 0:7 Constant: 0:7 3.000000 0:7 3.000000 0:7 3.000000 0:8 Sequence -0:8 move second child to first child ( temp mediump 4-component vector of float) -0:8 'h4' ( temp mediump 4-component vector of float) +0:8 move second child to first child ( temp 4-component vector of float) +0:8 'h4' ( temp 4-component vector of float) 0:8 Constant: 0:8 4.000000 0:8 4.000000 0:8 4.000000 0:8 4.000000 -0:10 Branch: Return with expression -0:10 Constant: -0:10 0.000000 -0:10 0.000000 -0:10 0.000000 -0:10 0.000000 +0:15 Sequence +0:15 move second child to first child ( temp 2X2 matrix of float) +0:15 'h22' ( temp 2X2 matrix of float) +0:? Constant: +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:16 Sequence +0:16 move second child to first child ( temp 2X3 matrix of float) +0:16 'h23' ( temp 2X3 matrix of float) +0:16 Constant: +0:16 4.900000 +0:16 0.000000 +0:16 0.000000 +0:16 0.000000 +0:16 4.900000 +0:16 0.000000 +0:27 Branch: Return with expression +0:27 Construct vec4 ( temp 4-component vector of float) +0:27 add ( temp float) +0:27 add ( temp float) +0:27 direct index ( temp float) +0:27 direct index ( temp 3-component vector of float) +0:27 'h23' ( temp 2X3 matrix of float) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 0 (const int) +0:27 direct index ( temp float) +0:27 'h4' ( temp 4-component vector of float) +0:27 Constant: +0:27 1 (const int) +0:27 'h0' ( temp float) 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence @@ -62,42 +90,70 @@ gl_FragCoord origin is upper left 0:3 Function Parameters: 0:? Sequence 0:4 Sequence -0:4 move second child to first child ( temp mediump float) -0:4 'h0' ( temp mediump float) +0:4 move second child to first child ( temp float) +0:4 'h0' ( temp float) 0:4 Constant: 0:4 0.000000 0:5 Sequence -0:5 move second child to first child ( temp mediump 1-component vector of float) -0:5 'h1' ( temp mediump 1-component vector of float) +0:5 move second child to first child ( temp 1-component vector of float) +0:5 'h1' ( temp 1-component vector of float) 0:5 Constant: 0:5 1.000000 0:6 Sequence -0:6 move second child to first child ( temp mediump 2-component vector of float) -0:6 'h2' ( temp mediump 2-component vector of float) +0:6 move second child to first child ( temp 2-component vector of float) +0:6 'h2' ( temp 2-component vector of float) 0:6 Constant: 0:6 2.000000 0:6 2.000000 0:7 Sequence -0:7 move second child to first child ( temp mediump 3-component vector of float) -0:7 'h3' ( temp mediump 3-component vector of float) +0:7 move second child to first child ( temp 3-component vector of float) +0:7 'h3' ( temp 3-component vector of float) 0:7 Constant: 0:7 3.000000 0:7 3.000000 0:7 3.000000 0:8 Sequence -0:8 move second child to first child ( temp mediump 4-component vector of float) -0:8 'h4' ( temp mediump 4-component vector of float) +0:8 move second child to first child ( temp 4-component vector of float) +0:8 'h4' ( temp 4-component vector of float) 0:8 Constant: 0:8 4.000000 0:8 4.000000 0:8 4.000000 0:8 4.000000 -0:10 Branch: Return with expression -0:10 Constant: -0:10 0.000000 -0:10 0.000000 -0:10 0.000000 -0:10 0.000000 +0:15 Sequence +0:15 move second child to first child ( temp 2X2 matrix of float) +0:15 'h22' ( temp 2X2 matrix of float) +0:? Constant: +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:16 Sequence +0:16 move second child to first child ( temp 2X3 matrix of float) +0:16 'h23' ( temp 2X3 matrix of float) +0:16 Constant: +0:16 4.900000 +0:16 0.000000 +0:16 0.000000 +0:16 0.000000 +0:16 4.900000 +0:16 0.000000 +0:27 Branch: Return with expression +0:27 Construct vec4 ( temp 4-component vector of float) +0:27 add ( temp float) +0:27 add ( temp float) +0:27 direct index ( temp float) +0:27 direct index ( temp 3-component vector of float) +0:27 'h23' ( temp 2X3 matrix of float) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 0 (const int) +0:27 direct index ( temp float) +0:27 'h4' ( temp 4-component vector of float) +0:27 Constant: +0:27 1 (const int) +0:27 'h0' ( temp float) 0:3 Function Definition: main( ( temp void) 0:3 Function Parameters: 0:? Sequence @@ -109,12 +165,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 36 +// Id's are bound by 61 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 34 + EntryPoint Fragment 4 "main" 59 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" @@ -124,13 +180,10 @@ gl_FragCoord origin is upper left Name 18 "h2" Name 23 "h3" Name 27 "h4" - Name 34 "@entryPointOutput" - Decorate 12(h0) RelaxedPrecision - Decorate 14(h1) RelaxedPrecision - Decorate 18(h2) RelaxedPrecision - Decorate 23(h3) RelaxedPrecision - Decorate 27(h4) RelaxedPrecision - Decorate 34(@entryPointOutput) Location 0 + Name 32 "h22" + Name 38 "h23" + Name 59 "@entryPointOutput" + Decorate 59(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -150,13 +203,28 @@ gl_FragCoord origin is upper left 26: TypePointer Function 7(fvec4) 28: 6(float) Constant 1082130432 29: 7(fvec4) ConstantComposite 28 28 28 28 - 30: 7(fvec4) ConstantComposite 13 13 13 13 - 33: TypePointer Output 7(fvec4) -34(@entryPointOutput): 33(ptr) Variable Output + 30: TypeMatrix 16(fvec2) 2 + 31: TypePointer Function 30 + 33: 16(fvec2) ConstantComposite 15 19 + 34: 16(fvec2) ConstantComposite 24 28 + 35: 30 ConstantComposite 33 34 + 36: TypeMatrix 21(fvec3) 2 + 37: TypePointer Function 36 + 39: 6(float) Constant 1084017869 + 40: 21(fvec3) ConstantComposite 39 13 13 + 41: 21(fvec3) ConstantComposite 13 39 13 + 42: 36 ConstantComposite 40 41 + 43: TypeInt 32 1 + 44: 43(int) Constant 0 + 45: TypeInt 32 0 + 46: 45(int) Constant 0 + 49: 45(int) Constant 1 + 58: TypePointer Output 7(fvec4) +59(@entryPointOutput): 58(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 35: 7(fvec4) FunctionCall 9(@main() - Store 34(@entryPointOutput) 35 + 60: 7(fvec4) FunctionCall 9(@main() + Store 59(@entryPointOutput) 60 Return FunctionEnd 9(@main(): 7(fvec4) Function None 8 @@ -166,10 +234,22 @@ gl_FragCoord origin is upper left 18(h2): 17(ptr) Variable Function 23(h3): 22(ptr) Variable Function 27(h4): 26(ptr) Variable Function + 32(h22): 31(ptr) Variable Function + 38(h23): 37(ptr) Variable Function Store 12(h0) 13 Store 14(h1) 15 Store 18(h2) 20 Store 23(h3) 25 Store 27(h4) 29 - ReturnValue 30 + Store 32(h22) 35 + Store 38(h23) 42 + 47: 11(ptr) AccessChain 38(h23) 44 46 + 48: 6(float) Load 47 + 50: 11(ptr) AccessChain 27(h4) 49 + 51: 6(float) Load 50 + 52: 6(float) FAdd 48 51 + 53: 6(float) Load 12(h0) + 54: 6(float) FAdd 52 53 + 55: 7(fvec4) CompositeConstruct 54 54 54 54 + ReturnValue 55 FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out index 19773408a..c722e564a 100644 --- a/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out +++ b/3rdparty/glslang/Test/baseResults/hlsl.type.identifier.frag.out @@ -50,8 +50,8 @@ gl_FragCoord origin is upper left 0:15 'min10float' ( temp mediump float) 0:15 'min16float' ( temp mediump float) 0:16 Sequence -0:16 move second child to first child ( temp mediump float) -0:16 'half' ( temp mediump float) +0:16 move second child to first child ( temp float) +0:16 'half' ( temp float) 0:16 Constant: 0:16 0.500000 0:? Sequence @@ -99,9 +99,17 @@ gl_FragCoord origin is upper left 0:25 'float' ( temp mediump float) 0:25 Function Call: fn(f1; ( temp mediump float) 0:25 'float' ( temp mediump float) -0:27 Branch: Return with expression -0:27 Construct vec4 ( temp 4-component vector of float) -0:27 'float' ( temp float) +0:29 Branch: Return with expression +0:29 Construct vec4 ( temp 4-component vector of float) +0:29 add ( temp float) +0:29 'float' ( temp float) +0:29 direct index ( temp float) +0:29 direct index ( temp 3-component vector of float) +0:29 'half2x3' ( temp 2X3 matrix of float) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 0 (const int) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence @@ -166,8 +174,8 @@ gl_FragCoord origin is upper left 0:15 'min10float' ( temp mediump float) 0:15 'min16float' ( temp mediump float) 0:16 Sequence -0:16 move second child to first child ( temp mediump float) -0:16 'half' ( temp mediump float) +0:16 move second child to first child ( temp float) +0:16 'half' ( temp float) 0:16 Constant: 0:16 0.500000 0:? Sequence @@ -215,9 +223,17 @@ gl_FragCoord origin is upper left 0:25 'float' ( temp mediump float) 0:25 Function Call: fn(f1; ( temp mediump float) 0:25 'float' ( temp mediump float) -0:27 Branch: Return with expression -0:27 Construct vec4 ( temp 4-component vector of float) -0:27 'float' ( temp float) +0:29 Branch: Return with expression +0:29 Construct vec4 ( temp 4-component vector of float) +0:29 add ( temp float) +0:29 'float' ( temp float) +0:29 direct index ( temp float) +0:29 direct index ( temp 3-component vector of float) +0:29 'half2x3' ( temp 2X3 matrix of float) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 0 (const int) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence @@ -229,12 +245,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 97 +// Id's are bound by 105 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 95 + EntryPoint Fragment 4 "main" 103 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" @@ -252,13 +268,13 @@ gl_FragCoord origin is upper left MemberName 56(foo_t) 0 "float" Name 58 "float" Name 86 "param" - Name 95 "@entryPointOutput" + Name 94 "half2x3" + Name 103 "@entryPointOutput" Decorate 49(min16float) RelaxedPrecision Decorate 50 RelaxedPrecision Decorate 51 RelaxedPrecision Decorate 52(min10float) RelaxedPrecision Decorate 53 RelaxedPrecision - Decorate 54(half) RelaxedPrecision Decorate 64 RelaxedPrecision Decorate 65 RelaxedPrecision Decorate 66 RelaxedPrecision @@ -278,7 +294,7 @@ gl_FragCoord origin is upper left Decorate 87 RelaxedPrecision Decorate 88 RelaxedPrecision Decorate 89 RelaxedPrecision - Decorate 95(@entryPointOutput) Location 0 + Decorate 103(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -303,12 +319,16 @@ gl_FragCoord origin is upper left 56(foo_t): TypeStruct 6(float) 57: TypePointer Function 56(foo_t) 59: 6(float) Constant 1109917696 - 94: TypePointer Output 12(fvec4) -95(@entryPointOutput): 94(ptr) Variable Output + 91: TypeVector 6(float) 3 + 92: TypeMatrix 91(fvec3) 2 + 93: TypePointer Function 92 + 95: 22(int) Constant 0 + 102: TypePointer Output 12(fvec4) +103(@entryPointOutput): 102(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 96: 12(fvec4) FunctionCall 14(@main() - Store 95(@entryPointOutput) 96 + 104: 12(fvec4) FunctionCall 14(@main() + Store 103(@entryPointOutput) 104 Return FunctionEnd 10(fn(f1;): 6(float) Function None 8 @@ -329,6 +349,7 @@ gl_FragCoord origin is upper left 58(float): 57(ptr) Variable Function 75: 7(ptr) Variable Function 86(param): 7(ptr) Variable Function + 94(half2x3): 93(ptr) Variable Function Store 19(float) 20 27: 6(float) Load 19(float) 29: 21(bool) FOrdNotEqual 27 28 @@ -391,6 +412,9 @@ gl_FragCoord origin is upper left 89: 6(float) FAdd 85 88 Store 19(float) 89 90: 6(float) Load 19(float) - 91: 12(fvec4) CompositeConstruct 90 90 90 90 - ReturnValue 91 + 96: 7(ptr) AccessChain 94(half2x3) 40 95 + 97: 6(float) Load 96 + 98: 6(float) FAdd 90 97 + 99: 12(fvec4) CompositeConstruct 98 98 98 98 + ReturnValue 99 FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/include.vert.out b/3rdparty/glslang/Test/baseResults/include.vert.out index c94ffcb08..42f10323a 100644 --- a/3rdparty/glslang/Test/baseResults/include.vert.out +++ b/3rdparty/glslang/Test/baseResults/include.vert.out @@ -1,6 +1,4 @@ include.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 Requested GL_GOOGLE_cpp_style_line_directive Requested GL_GOOGLE_include_directive diff --git a/3rdparty/glslang/Test/baseResults/link1.vk.frag.out b/3rdparty/glslang/Test/baseResults/link1.vk.frag.out index 436f5e217..26a26af87 100644 --- a/3rdparty/glslang/Test/baseResults/link1.vk.frag.out +++ b/3rdparty/glslang/Test/baseResults/link1.vk.frag.out @@ -1,6 +1,4 @@ link1.vk.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence @@ -14,8 +12,6 @@ gl_FragCoord origin is upper left 0:? 'color' ( out highp 4-component vector of float) link2.vk.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence diff --git a/3rdparty/glslang/Test/baseResults/missingBodies.vert.out b/3rdparty/glslang/Test/baseResults/missingBodies.vert.out index 7760c3fd3..3a9a99f6c 100755 --- a/3rdparty/glslang/Test/baseResults/missingBodies.vert.out +++ b/3rdparty/glslang/Test/baseResults/missingBodies.vert.out @@ -1,6 +1,4 @@ missingBodies.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 0:? Sequence 0:4 Function Definition: foo( ( global void) diff --git a/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out b/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out index abdd51e2c..0a5ba310f 100644 --- a/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out +++ b/3rdparty/glslang/Test/baseResults/negativeArraySize.comp.out @@ -1,5 +1,4 @@ negativeArraySize.comp -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:9: '' : array size must be a positive integer ERROR: 1 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/newTexture.frag.out b/3rdparty/glslang/Test/baseResults/newTexture.frag.out index 3a1c7a201..52921e8fc 100644 --- a/3rdparty/glslang/Test/baseResults/newTexture.frag.out +++ b/3rdparty/glslang/Test/baseResults/newTexture.frag.out @@ -1,6 +1,4 @@ newTexture.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 430 0:? Sequence 0:36 Function Definition: main( ( global void) diff --git a/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out b/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out index 236f5a847..2b8b6a0ce 100644 --- a/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out +++ b/3rdparty/glslang/Test/baseResults/nonVulkan.frag.out @@ -1,5 +1,4 @@ nonVulkan.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'constant_id' : only allowed when generating SPIR-V ERROR: 0:4: 'input_attachment_index' : only allowed when using GLSL for Vulkan ERROR: 0:4: 'input_attachment_index' : can only be used with a subpass diff --git a/3rdparty/glslang/Test/baseResults/numeral.frag.out b/3rdparty/glslang/Test/baseResults/numeral.frag.out index 22f4a9498..11def1205 100644 --- a/3rdparty/glslang/Test/baseResults/numeral.frag.out +++ b/3rdparty/glslang/Test/baseResults/numeral.frag.out @@ -1,5 +1,4 @@ numeral.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:14: '' : octal literal digit too large ERROR: 0:15: '' : octal literal digit too large ERROR: 0:16: '' : octal literal digit too large diff --git a/3rdparty/glslang/Test/baseResults/precise.tesc.out b/3rdparty/glslang/Test/baseResults/precise.tesc.out index 7beff892e..abe56f750 100644 --- a/3rdparty/glslang/Test/baseResults/precise.tesc.out +++ b/3rdparty/glslang/Test/baseResults/precise.tesc.out @@ -1,6 +1,4 @@ precise.tesc -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 Requested GL_EXT_gpu_shader5 Requested GL_EXT_shader_io_blocks diff --git a/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out b/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out index 638bd1b52..a239e95de 100644 --- a/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out +++ b/3rdparty/glslang/Test/baseResults/precise_struct_block.vert.out @@ -1,6 +1,4 @@ precise_struct_block.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 0:? Sequence 0:11 Function Definition: struct_member( ( global float) diff --git a/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err b/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err index 5f177e6cc..e69de29bb 100644 --- a/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err +++ b/3rdparty/glslang/Test/baseResults/preprocessor.edge_cases.vert.err @@ -1,2 +0,0 @@ -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - diff --git a/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err b/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err index cfde4041e..bc588958f 100644 --- a/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err +++ b/3rdparty/glslang/Test/baseResults/preprocessor.errors.vert.err @@ -1,4 +1,3 @@ -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:9: '#error' : This should show up in pp output . ERROR: 0:14: '#' : invalid directive: def ERROR: 0:15: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile Y diff --git a/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err b/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err index 925cc0ca0..35db30341 100644 --- a/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err +++ b/3rdparty/glslang/Test/baseResults/preprocessor.extensions.vert.err @@ -1,3 +1,2 @@ -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. WARNING: 0:6: '#extension' : extension not supported: GL_EXT_shader_texture_image_samples diff --git a/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err b/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err index 5f177e6cc..e69de29bb 100644 --- a/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err +++ b/3rdparty/glslang/Test/baseResults/preprocessor.function_macro.vert.err @@ -1,2 +0,0 @@ -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - diff --git a/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err b/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err index 5f177e6cc..e69de29bb 100644 --- a/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err +++ b/3rdparty/glslang/Test/baseResults/preprocessor.line.frag.err @@ -1,2 +0,0 @@ -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - diff --git a/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err b/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err index 5f177e6cc..e69de29bb 100644 --- a/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err +++ b/3rdparty/glslang/Test/baseResults/preprocessor.pragma.vert.err @@ -1,2 +0,0 @@ -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - diff --git a/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err b/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err index 5f177e6cc..e69de29bb 100644 --- a/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err +++ b/3rdparty/glslang/Test/baseResults/preprocessor.simple.vert.err @@ -1,2 +0,0 @@ -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - diff --git a/3rdparty/glslang/Test/baseResults/reflection.vert.out b/3rdparty/glslang/Test/baseResults/reflection.vert.out index ba3e0e698..de49cc457 100644 --- a/3rdparty/glslang/Test/baseResults/reflection.vert.out +++ b/3rdparty/glslang/Test/baseResults/reflection.vert.out @@ -1,6 +1,4 @@ reflection.vert -Warning, version 440 is not yet complete; most version-specific features are present, but some are missing. - Uniform reflection: image_ui2D: offset -1, type 9063, size 1, index -1, binding -1 sampler_2D: offset -1, type 8b5e, size 1, index -1, binding -1 diff --git a/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out b/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out index c28d90a39..ff2e606d9 100644 --- a/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.basic.dcefunc.frag.out @@ -1,6 +1,4 @@ remap.basic.dcefunc.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22 diff --git a/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out b/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out index 357a8d2be..82db4487c 100644 --- a/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.basic.everything.frag.out @@ -1,6 +1,4 @@ remap.basic.everything.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24969 diff --git a/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out b/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out index 44f5747bf..ebed8a129 100644 --- a/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.basic.none.frag.out @@ -1,6 +1,4 @@ remap.basic.none.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22 diff --git a/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out b/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out index ab1a003af..026309d46 100644 --- a/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.basic.strip.frag.out @@ -1,6 +1,4 @@ remap.basic.strip.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22 diff --git a/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out b/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out index d20564c5d..1c9a8d166 100644 --- a/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.if.everything.frag.out @@ -1,6 +1,4 @@ remap.if.everything.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22855 diff --git a/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out b/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out index 081d5cdd6..0aaec38db 100644 --- a/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.if.none.frag.out @@ -1,6 +1,4 @@ remap.if.none.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 25 diff --git a/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out b/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out index 384b8e861..59ed9eb16 100644 --- a/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.similar_1a.everything.frag.out @@ -1,6 +1,4 @@ remap.similar_1a.everything.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24916 diff --git a/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out b/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out index 910ef424a..af049b581 100644 --- a/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.similar_1a.none.frag.out @@ -1,6 +1,4 @@ remap.similar_1a.none.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 86 diff --git a/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out b/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out index 0ce4544c9..483c622b1 100644 --- a/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.similar_1b.everything.frag.out @@ -1,6 +1,4 @@ remap.similar_1b.everything.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24916 diff --git a/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out b/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out index ce79e00be..a5555c294 100644 --- a/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.similar_1b.none.frag.out @@ -1,6 +1,4 @@ remap.similar_1b.none.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 91 diff --git a/3rdparty/glslang/Test/baseResults/remap.specconst.comp.out b/3rdparty/glslang/Test/baseResults/remap.specconst.comp.out index 141c1a479..ca276b6ee 100644 --- a/3rdparty/glslang/Test/baseResults/remap.specconst.comp.out +++ b/3rdparty/glslang/Test/baseResults/remap.specconst.comp.out @@ -1,6 +1,4 @@ remap.specconst.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 16104 diff --git a/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out b/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out index e5a7ef759..bad1e1e74 100644 --- a/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.switch.everything.frag.out @@ -1,5 +1,4 @@ remap.switch.everything.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" diff --git a/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out b/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out index 68d075b25..0c4cf6a51 100644 --- a/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out +++ b/3rdparty/glslang/Test/baseResults/remap.switch.none.frag.out @@ -1,5 +1,4 @@ remap.switch.none.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" diff --git a/3rdparty/glslang/Test/baseResults/specExamples.frag.out b/3rdparty/glslang/Test/baseResults/specExamples.frag.out index 939ea6206..ba47b6c75 100644 --- a/3rdparty/glslang/Test/baseResults/specExamples.frag.out +++ b/3rdparty/glslang/Test/baseResults/specExamples.frag.out @@ -1,5 +1,4 @@ specExamples.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:6: '=' : cannot convert from ' const uint' to ' global int' ERROR: 0:20: '' : numeric literal too big ERROR: 0:21: '' : hexadecimal literal too big diff --git a/3rdparty/glslang/Test/baseResults/specExamples.vert.out b/3rdparty/glslang/Test/baseResults/specExamples.vert.out index f050477be..71ce86898 100644 --- a/3rdparty/glslang/Test/baseResults/specExamples.vert.out +++ b/3rdparty/glslang/Test/baseResults/specExamples.vert.out @@ -1,5 +1,4 @@ specExamples.vert -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:29: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:31: 'triangles' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) ERROR: 0:31: 'invocations' : there is no such layout identifier for this stage taking an assigned value diff --git a/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out b/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out index efd82012b..17f0bdc59 100755 --- a/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.100ops.frag.out @@ -1,6 +1,4 @@ spv.100ops.frag -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 49 diff --git a/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out b/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out index 7dc949dca..d3190941d 100755 --- a/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.300BuiltIns.vert.out @@ -1,6 +1,4 @@ spv.300BuiltIns.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 42 diff --git a/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out b/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out index 7ce08d868..6a7accd3d 100755 --- a/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.300layout.frag.out @@ -1,6 +1,4 @@ spv.300layout.frag -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 37 diff --git a/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out b/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out index 69f66b6a3..3eae4680a 100644 --- a/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.300layout.vert.out @@ -1,6 +1,4 @@ spv.300layout.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 163 diff --git a/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out b/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out index 5924137cd..82a34ca2a 100755 --- a/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.300layoutp.vert.out @@ -1,6 +1,4 @@ spv.300layoutp.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 115 diff --git a/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out b/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out index 14e184a47..407625173 100755 --- a/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.310.bitcast.frag.out @@ -1,6 +1,4 @@ spv.310.bitcast.frag -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 153 diff --git a/3rdparty/glslang/Test/baseResults/spv.310.comp.out b/3rdparty/glslang/Test/baseResults/spv.310.comp.out index 4b47c7d76..0d7a6bdfe 100644 --- a/3rdparty/glslang/Test/baseResults/spv.310.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.310.comp.out @@ -1,6 +1,4 @@ spv.310.comp -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 69 diff --git a/3rdparty/glslang/Test/baseResults/spv.400.frag.out b/3rdparty/glslang/Test/baseResults/spv.400.frag.out index cb2de9687..be1f6ed53 100644 --- a/3rdparty/glslang/Test/baseResults/spv.400.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.400.frag.out @@ -1,6 +1,4 @@ spv.400.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 1118 diff --git a/3rdparty/glslang/Test/baseResults/spv.400.tesc.out b/3rdparty/glslang/Test/baseResults/spv.400.tesc.out index 68b142e5a..5b402c474 100644 --- a/3rdparty/glslang/Test/baseResults/spv.400.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.400.tesc.out @@ -1,6 +1,4 @@ spv.400.tesc -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 93 diff --git a/3rdparty/glslang/Test/baseResults/spv.400.tese.out b/3rdparty/glslang/Test/baseResults/spv.400.tese.out index 0c62bed6d..a322ac519 100755 --- a/3rdparty/glslang/Test/baseResults/spv.400.tese.out +++ b/3rdparty/glslang/Test/baseResults/spv.400.tese.out @@ -1,6 +1,4 @@ spv.400.tese -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 96 diff --git a/3rdparty/glslang/Test/baseResults/spv.420.geom.out b/3rdparty/glslang/Test/baseResults/spv.420.geom.out index 6413d5a45..9ce05d09d 100644 --- a/3rdparty/glslang/Test/baseResults/spv.420.geom.out +++ b/3rdparty/glslang/Test/baseResults/spv.420.geom.out @@ -1,6 +1,4 @@ spv.420.geom -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 72 diff --git a/3rdparty/glslang/Test/baseResults/spv.430.frag.out b/3rdparty/glslang/Test/baseResults/spv.430.frag.out index abe2a58a0..6d43ead0c 100755 --- a/3rdparty/glslang/Test/baseResults/spv.430.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.430.frag.out @@ -1,6 +1,4 @@ spv.430.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24 diff --git a/3rdparty/glslang/Test/baseResults/spv.430.vert.out b/3rdparty/glslang/Test/baseResults/spv.430.vert.out index 8ea95d1a7..10c3eaea8 100755 --- a/3rdparty/glslang/Test/baseResults/spv.430.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.430.vert.out @@ -1,6 +1,4 @@ spv.430.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 66 diff --git a/3rdparty/glslang/Test/baseResults/spv.450.geom.out b/3rdparty/glslang/Test/baseResults/spv.450.geom.out index 85c681432..4d012c415 100755 --- a/3rdparty/glslang/Test/baseResults/spv.450.geom.out +++ b/3rdparty/glslang/Test/baseResults/spv.450.geom.out @@ -1,6 +1,4 @@ spv.450.geom -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 26 diff --git a/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out b/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out index e62aa38aa..91887b020 100755 --- a/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.450.noRedecl.tesc.out @@ -1,6 +1,4 @@ spv.450.noRedecl.tesc -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 21 diff --git a/3rdparty/glslang/Test/baseResults/spv.450.tesc.out b/3rdparty/glslang/Test/baseResults/spv.450.tesc.out index a0bf3dd3b..18da599e9 100755 --- a/3rdparty/glslang/Test/baseResults/spv.450.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.450.tesc.out @@ -1,6 +1,4 @@ spv.450.tesc -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 23 @@ -47,12 +45,10 @@ Warning, version 450 is not yet complete; most version-specific features are pre Decorate 19(singleBlock) Location 2 MemberDecorate 20(bn) 0 Patch MemberDecorate 20(bn) 0 Location 20 - MemberDecorate 20(bn) 0 Component 0 MemberDecorate 20(bn) 1 Patch MemberDecorate 20(bn) 1 Location 24 MemberDecorate 20(bn) 2 Patch MemberDecorate 20(bn) 2 Location 25 - MemberDecorate 20(bn) 2 Component 0 Decorate 20(bn) Block 2: TypeVoid 3: TypeFunction 2 diff --git a/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out b/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out index 4eb756301..5837deb02 100644 --- a/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.AofA.frag.out @@ -1,6 +1,4 @@ spv.AofA.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 104 diff --git a/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out index 05aeb9710..c771bc681 100644 --- a/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out +++ b/3rdparty/glslang/Test/baseResults/spv.GeometryShaderPassthrough.geom.out @@ -1,6 +1,4 @@ spv.GeometryShaderPassthrough.geom -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 15 diff --git a/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out b/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out index aeee253bf..5e89f494c 100755 --- a/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.Operations.frag.out @@ -1,6 +1,4 @@ spv.Operations.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 532 diff --git a/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out b/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out index b319cfd13..ee97c6c65 100755 --- a/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.accessChain.frag.out @@ -1,6 +1,4 @@ spv.accessChain.frag -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 206 diff --git a/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out b/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out index c3ceb9a67..6825585fd 100644 --- a/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.aggOps.frag.out @@ -1,5 +1,4 @@ spv.aggOps.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. WARNING: 0:4: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" diff --git a/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out b/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out index 97c7f6e3a..beb0302af 100755 --- a/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.atomic.comp.out @@ -1,6 +1,4 @@ spv.atomic.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 73 diff --git a/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out b/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out index 07dd729e6..26846ec11 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.bitCast.frag.out @@ -1,6 +1,4 @@ spv.bitCast.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 172 diff --git a/3rdparty/glslang/Test/baseResults/spv.bool.vert.out b/3rdparty/glslang/Test/baseResults/spv.bool.vert.out index 1e87c4215..e9d4e9760 100644 --- a/3rdparty/glslang/Test/baseResults/spv.bool.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.bool.vert.out @@ -1,6 +1,4 @@ spv.bool.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 46 diff --git a/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out b/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out index b057e285e..e3752a3c9 100644 --- a/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.boolInBlock.frag.out @@ -1,6 +1,4 @@ spv.boolInBlock.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 107 diff --git a/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out b/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out index 9093135b9..e11f15af6 100644 --- a/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.branch-return.vert.out @@ -1,6 +1,4 @@ spv.branch-return.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 38 diff --git a/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out b/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out index fd4a36679..a9fb2de36 100755 --- a/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.conditionalDiscard.frag.out @@ -1,6 +1,4 @@ spv.conditionalDiscard.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 36 diff --git a/3rdparty/glslang/Test/baseResults/spv.debugInfo.frag.out b/3rdparty/glslang/Test/baseResults/spv.debugInfo.frag.out index 16f605bfa..f501528a5 100644 --- a/3rdparty/glslang/Test/baseResults/spv.debugInfo.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.debugInfo.frag.out @@ -1,6 +1,4 @@ spv.debugInfo.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 126 diff --git a/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out b/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out index 247b2f3d0..a019710b2 100755 --- a/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.depthOut.frag.out @@ -1,6 +1,4 @@ spv.depthOut.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 15 diff --git a/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out b/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out index 42e045b3c..8244df0fe 100755 --- a/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.deviceGroup.frag.out @@ -1,6 +1,4 @@ spv.deviceGroup.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 17 diff --git a/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out b/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out index d6d4c28f3..4043a2124 100755 --- a/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.do-simple.vert.out @@ -1,6 +1,4 @@ spv.do-simple.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 21 diff --git a/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out b/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out index d1d0c85c9..ab7bfd88c 100644 --- a/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.do-while-continue-break.vert.out @@ -1,6 +1,4 @@ spv.do-while-continue-break.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 43 diff --git a/3rdparty/glslang/Test/baseResults/spv.double.comp.out b/3rdparty/glslang/Test/baseResults/spv.double.comp.out index 3b1bdc89c..015de2f0b 100755 --- a/3rdparty/glslang/Test/baseResults/spv.double.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.double.comp.out @@ -1,6 +1,4 @@ spv.double.comp -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 60 diff --git a/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out b/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out index b75efe048..9a5f116b7 100755 --- a/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.drawParams.vert.out @@ -1,6 +1,4 @@ spv.drawParams.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 29 diff --git a/3rdparty/glslang/Test/baseResults/spv.float16.frag.out b/3rdparty/glslang/Test/baseResults/spv.float16.frag.out index 7c2b3c05f..7eb2b68e3 100644 --- a/3rdparty/glslang/Test/baseResults/spv.float16.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.float16.frag.out @@ -1,6 +1,4 @@ spv.float16.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 534 diff --git a/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out b/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out index 939d08273..76282917d 100644 --- a/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.for-complex-condition.vert.out @@ -1,6 +1,4 @@ spv.for-complex-condition.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 31 diff --git a/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out b/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out index 764001dbe..fcf9bbb6b 100644 --- a/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.for-continue-break.vert.out @@ -1,6 +1,4 @@ spv.for-continue-break.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 45 diff --git a/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out b/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out index 0ec3584da..810d776ed 100644 --- a/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.for-nobody.vert.out @@ -1,6 +1,4 @@ spv.for-nobody.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 25 diff --git a/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out b/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out index c7346f9df..70697ad89 100644 --- a/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.for-notest.vert.out @@ -1,6 +1,4 @@ spv.for-notest.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 20 diff --git a/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out b/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out index 996b65a4a..7aaa17ee4 100755 --- a/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.for-simple.vert.out @@ -1,6 +1,4 @@ spv.for-simple.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 24 diff --git a/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out b/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out index 1dae38144..cc1d6d453 100644 --- a/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.functionNestedOpaque.vert.out @@ -1,6 +1,4 @@ spv.functionNestedOpaque.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 39 diff --git a/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out b/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out index e4d8887ad..7e02e8b9c 100755 --- a/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.functionSemantics.frag.out @@ -1,6 +1,4 @@ spv.functionSemantics.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 156 diff --git a/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out b/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out index 8216e05f0..d1dea9ebd 100644 --- a/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.glsl.register.autoassign.frag.out @@ -1,6 +1,4 @@ spv.glsl.register.autoassign.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 142 diff --git a/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out index 8595a89cb..a82042d38 100644 --- a/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.glsl.register.noautoassign.frag.out @@ -1,6 +1,4 @@ spv.glsl.register.noautoassign.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 142 diff --git a/3rdparty/glslang/Test/baseResults/spv.hlslOffsets.vert.out b/3rdparty/glslang/Test/baseResults/spv.hlslOffsets.vert.out index c1f6cb25e..bdc24b31d 100644 --- a/3rdparty/glslang/Test/baseResults/spv.hlslOffsets.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.hlslOffsets.vert.out @@ -1,6 +1,4 @@ spv.hlslOffsets.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 0:? Sequence 0:27 Function Definition: main( ( global void) diff --git a/3rdparty/glslang/Test/baseResults/spv.image.frag.out b/3rdparty/glslang/Test/baseResults/spv.image.frag.out index b4f673bc1..c21f9bf15 100644 --- a/3rdparty/glslang/Test/baseResults/spv.image.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.image.frag.out @@ -1,6 +1,4 @@ spv.image.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 376 diff --git a/3rdparty/glslang/Test/baseResults/spv.int16.frag.out b/3rdparty/glslang/Test/baseResults/spv.int16.frag.out new file mode 100644 index 000000000..7442cffdf --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.int16.frag.out @@ -0,0 +1,779 @@ +spv.int16.frag +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 561 + + Capability Shader + Capability Float16 + Capability Float64 + Capability Int64 + Capability Int16 + Capability StorageUniform16 + Capability StorageInputOutput16 + Extension "SPV_AMD_gpu_shader_half_float" + Extension "SPV_AMD_gpu_shader_int16" + Extension "SPV_KHR_16bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 520 522 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_AMD_gpu_shader_half_float" + SourceExtension "GL_AMD_gpu_shader_int16" + SourceExtension "GL_ARB_gpu_shader_int64" + Name 4 "main" + Name 6 "literal(" + Name 8 "operators(" + Name 10 "typeCast(" + Name 12 "builtinFuncs(" + Name 16 "u16" + Name 25 "Uniforms" + MemberName 25(Uniforms) 0 "i" + Name 27 "" + Name 34 "indexable" + Name 45 "indexable" + Name 51 "u16v" + Name 57 "i16" + Name 70 "u16" + Name 108 "i" + Name 130 "b" + Name 151 "u" + Name 190 "i16v" + Name 193 "bv" + Name 201 "u16v" + Name 214 "iv" + Name 227 "uv" + Name 241 "fv" + Name 253 "dv" + Name 265 "f16v" + Name 277 "i64v" + Name 291 "u64v" + Name 306 "i16v" + Name 312 "i16" + Name 320 "u16v" + Name 322 "u16" + Name 394 "f16v" + Name 397 "exp" + Name 398 "ResType" + Name 419 "packi" + Name 424 "packu" + Name 433 "packi64" + Name 442 "packu64" + Name 451 "bv" + Name 516 "Block" + MemberName 516(Block) 0 "i16v" + MemberName 516(Block) 1 "u16" + Name 518 "block" + Name 520 "iu16v" + Name 522 "ii16" + Name 523 "si64" + Name 524 "su64" + Name 525 "si" + Name 526 "su" + Name 527 "sb" + Name 528 "si16" + Name 529 "su16" + MemberDecorate 25(Uniforms) 0 Offset 0 + Decorate 25(Uniforms) Block + Decorate 27 DescriptorSet 0 + Decorate 27 Binding 0 + MemberDecorate 516(Block) 0 Offset 0 + MemberDecorate 516(Block) 1 Offset 6 + Decorate 516(Block) Block + Decorate 518(block) DescriptorSet 0 + Decorate 518(block) Binding 1 + Decorate 520(iu16v) Flat + Decorate 520(iu16v) Location 0 + Decorate 522(ii16) Flat + Decorate 522(ii16) Location 1 + Decorate 523(si64) SpecId 100 + Decorate 524(su64) SpecId 101 + Decorate 525(si) SpecId 102 + Decorate 526(su) SpecId 103 + Decorate 527(sb) SpecId 104 + Decorate 528(si16) SpecId 105 + Decorate 529(su16) SpecId 106 + 2: TypeVoid + 3: TypeFunction 2 + 14: TypeInt 16 0 + 15: TypePointer Function 14(int) + 17: TypeInt 16 1 + 18: TypeInt 32 0 + 19: 18(int) Constant 3 + 20: TypeArray 17(int) 19 + 21: 17(int) Constant 273 + 22: 17(int) Constant 65534 + 23: 17(int) Constant 256 + 24: 20 ConstantComposite 21 22 23 + 25(Uniforms): TypeStruct 18(int) + 26: TypePointer Uniform 25(Uniforms) + 27: 26(ptr) Variable Uniform + 28: TypeInt 32 1 + 29: 28(int) Constant 0 + 30: TypePointer Uniform 18(int) + 33: TypePointer Function 20 + 35: TypePointer Function 17(int) + 39: TypeArray 14(int) 19 + 40: 14(int) Constant 65535 + 41: 39 ConstantComposite 40 40 40 + 44: TypePointer Function 39 + 49: TypeVector 14(int) 3 + 50: TypePointer Function 49(ivec3) + 53: 17(int) Constant 1 + 54: TypeVector 17(int) 3 + 107: TypePointer Function 28(int) + 111: TypeVector 28(int) 3 + 114: 18(int) Constant 1 + 120: 18(int) Constant 2 + 128: TypeBool + 129: TypePointer Function 128(bool) + 131: 18(int) Constant 0 + 150: TypePointer Function 18(int) + 188: TypeVector 17(int) 2 + 189: TypePointer Function 188(ivec2) + 191: TypeVector 128(bool) 2 + 192: TypePointer Function 191(bvec2) + 195: 17(int) Constant 0 + 196: 188(ivec2) ConstantComposite 195 195 + 197: 188(ivec2) ConstantComposite 53 53 + 199: TypeVector 14(int) 2 + 200: TypePointer Function 199(ivec2) + 203: 14(int) Constant 0 + 204: 14(int) Constant 1 + 205: 199(ivec2) ConstantComposite 203 203 + 206: 199(ivec2) ConstantComposite 204 204 + 212: TypeVector 28(int) 2 + 213: TypePointer Function 212(ivec2) + 223: TypeVector 18(int) 2 + 226: TypePointer Function 223(ivec2) + 238: TypeFloat 32 + 239: TypeVector 238(float) 2 + 240: TypePointer Function 239(fvec2) + 250: TypeFloat 64 + 251: TypeVector 250(float) 2 + 252: TypePointer Function 251(fvec2) + 262: TypeFloat 16 + 263: TypeVector 262(float) 2 + 264: TypePointer Function 263(fvec2) + 274: TypeInt 64 1 + 275: TypeVector 274(int) 2 + 276: TypePointer Function 275(ivec2) + 286: TypeInt 64 0 + 287: TypeVector 286(int) 2 + 290: TypePointer Function 287(ivec2) + 317: 17(int) Constant 65535 + 318: 188(ivec2) ConstantComposite 317 317 + 327: 49(ivec3) ConstantComposite 203 203 203 + 369: 128(bool) ConstantTrue + 376: 128(bool) ConstantFalse + 377: 191(bvec2) ConstantComposite 376 376 + 389: TypeVector 128(bool) 3 + 390: 389(bvec3) ConstantComposite 376 376 376 + 392: TypeVector 262(float) 3 + 393: TypePointer Function 392(fvec3) + 396: TypePointer Function 54(ivec3) + 398(ResType): TypeStruct 392(fvec3) 54(ivec3) + 408: TypePointer Function 262(float) + 432: TypePointer Function 274(int) + 435: TypeVector 17(int) 4 + 441: TypePointer Function 286(int) + 444: TypeVector 14(int) 4 + 450: TypePointer Function 389(bvec3) + 516(Block): TypeStruct 54(ivec3) 14(int) + 517: TypePointer Uniform 516(Block) + 518(block): 517(ptr) Variable Uniform + 519: TypePointer Input 49(ivec3) + 520(iu16v): 519(ptr) Variable Input + 521: TypePointer Input 17(int) + 522(ii16): 521(ptr) Variable Input + 523(si64): 274(int) SpecConstant 4294967286 4294967295 + 524(su64): 286(int) SpecConstant 20 0 + 525(si): 28(int) SpecConstant 4294967291 + 526(su): 18(int) SpecConstant 4 + 527(sb): 128(bool) SpecConstantTrue + 528(si16): 17(int) SpecConstant 65531 + 529(su16): 14(int) SpecConstant 4 + 530: 128(bool) SpecConstantOp 171 528(si16) 203 + 531: 128(bool) SpecConstantOp 171 529(su16) 203 + 532: 17(int) SpecConstantOp 169 527(sb) 53 195 + 533: 14(int) SpecConstantOp 169 527(sb) 204 203 + 534: 28(int) SpecConstantOp 114 528(si16) + 535: 18(int) SpecConstantOp 113 529(su16) + 536: 28(int) SpecConstantOp 128 535 131 + 537: 17(int) SpecConstantOp 114 525(si) + 538: 17(int) SpecConstantOp 114 525(si) + 539: 14(int) SpecConstantOp 128 538 203 + 540: 28(int) SpecConstantOp 114 528(si16) + 541: 18(int) SpecConstantOp 128 540 131 + 542: 18(int) SpecConstantOp 113 529(su16) + 543: 14(int) SpecConstantOp 113 526(su) + 544: 17(int) SpecConstantOp 128 543 203 + 545: 14(int) SpecConstantOp 113 526(su) + 546: 274(int) SpecConstantOp 114 528(si16) + 547: 286(int) SpecConstantOp 113 529(su16) + 548: 286(int) Constant 0 0 + 549: 274(int) SpecConstantOp 128 547 548 + 550: 17(int) SpecConstantOp 114 523(si64) + 551: 17(int) SpecConstantOp 114 523(si64) + 552: 14(int) SpecConstantOp 128 551 203 + 553: 274(int) SpecConstantOp 114 528(si16) + 554: 286(int) SpecConstantOp 128 553 548 + 555: 286(int) SpecConstantOp 113 529(su16) + 556: 14(int) SpecConstantOp 113 524(su64) + 557: 17(int) SpecConstantOp 128 556 203 + 558: 14(int) SpecConstantOp 113 524(su64) + 559: 14(int) SpecConstantOp 128 528(si16) 203 + 560: 17(int) SpecConstantOp 128 529(su16) 203 + 4(main): 2 Function None 3 + 5: Label + 512: 2 FunctionCall 6(literal() + 513: 2 FunctionCall 8(operators() + 514: 2 FunctionCall 10(typeCast() + 515: 2 FunctionCall 12(builtinFuncs() + Return + FunctionEnd + 6(literal(): 2 Function None 3 + 7: Label + 16(u16): 15(ptr) Variable Function + 34(indexable): 33(ptr) Variable Function + 45(indexable): 44(ptr) Variable Function + 31: 30(ptr) AccessChain 27 29 + 32: 18(int) Load 31 + Store 34(indexable) 24 + 36: 35(ptr) AccessChain 34(indexable) 32 + 37: 17(int) Load 36 + 38: 14(int) Bitcast 37 + 42: 30(ptr) AccessChain 27 29 + 43: 18(int) Load 42 + Store 45(indexable) 41 + 46: 15(ptr) AccessChain 45(indexable) 43 + 47: 14(int) Load 46 + 48: 14(int) IAdd 38 47 + Store 16(u16) 48 + Return + FunctionEnd + 8(operators(): 2 Function None 3 + 9: Label + 51(u16v): 50(ptr) Variable Function + 57(i16): 35(ptr) Variable Function + 70(u16): 15(ptr) Variable Function + 108(i): 107(ptr) Variable Function + 130(b): 129(ptr) Variable Function + 151(u): 150(ptr) Variable Function + 52: 49(ivec3) Load 51(u16v) + 55: 54(ivec3) CompositeConstruct 53 53 53 + 56: 49(ivec3) IAdd 52 55 + Store 51(u16v) 56 + 58: 17(int) Load 57(i16) + 59: 17(int) ISub 58 53 + Store 57(i16) 59 + 60: 17(int) Load 57(i16) + 61: 17(int) IAdd 60 53 + Store 57(i16) 61 + 62: 49(ivec3) Load 51(u16v) + 63: 54(ivec3) CompositeConstruct 53 53 53 + 64: 49(ivec3) ISub 62 63 + Store 51(u16v) 64 + 65: 49(ivec3) Load 51(u16v) + 66: 49(ivec3) Not 65 + Store 51(u16v) 66 + 67: 17(int) Load 57(i16) + Store 57(i16) 67 + 68: 49(ivec3) Load 51(u16v) + 69: 49(ivec3) SNegate 68 + Store 51(u16v) 69 + 71: 17(int) Load 57(i16) + 72: 14(int) Bitcast 71 + 73: 14(int) Load 70(u16) + 74: 14(int) IAdd 73 72 + Store 70(u16) 74 + 75: 49(ivec3) Load 51(u16v) + 76: 49(ivec3) Load 51(u16v) + 77: 49(ivec3) ISub 76 75 + Store 51(u16v) 77 + 78: 17(int) Load 57(i16) + 79: 17(int) Load 57(i16) + 80: 17(int) IMul 79 78 + Store 57(i16) 80 + 81: 49(ivec3) Load 51(u16v) + 82: 49(ivec3) Load 51(u16v) + 83: 49(ivec3) UDiv 82 81 + Store 51(u16v) 83 + 84: 17(int) Load 57(i16) + 85: 14(int) Bitcast 84 + 86: 49(ivec3) Load 51(u16v) + 87: 49(ivec3) CompositeConstruct 85 85 85 + 88: 49(ivec3) UMod 86 87 + Store 51(u16v) 88 + 89: 49(ivec3) Load 51(u16v) + 90: 49(ivec3) Load 51(u16v) + 91: 49(ivec3) IAdd 89 90 + Store 51(u16v) 91 + 92: 17(int) Load 57(i16) + 93: 14(int) Bitcast 92 + 94: 14(int) Load 70(u16) + 95: 14(int) ISub 93 94 + Store 70(u16) 95 + 96: 49(ivec3) Load 51(u16v) + 97: 17(int) Load 57(i16) + 98: 14(int) Bitcast 97 + 99: 49(ivec3) CompositeConstruct 98 98 98 + 100: 49(ivec3) IMul 96 99 + Store 51(u16v) 100 + 101: 17(int) Load 57(i16) + 102: 17(int) Load 57(i16) + 103: 17(int) IMul 101 102 + Store 57(i16) 103 + 104: 17(int) Load 57(i16) + 105: 17(int) Load 57(i16) + 106: 17(int) SMod 104 105 + Store 57(i16) 106 + 109: 28(int) Load 108(i) + 110: 49(ivec3) Load 51(u16v) + 112: 111(ivec3) CompositeConstruct 109 109 109 + 113: 49(ivec3) ShiftLeftLogical 110 112 + Store 51(u16v) 113 + 115: 15(ptr) AccessChain 51(u16v) 114 + 116: 14(int) Load 115 + 117: 17(int) Load 57(i16) + 118: 17(int) ShiftRightArithmetic 117 116 + Store 57(i16) 118 + 119: 17(int) Load 57(i16) + 121: 15(ptr) AccessChain 51(u16v) 120 + 122: 14(int) Load 121 + 123: 17(int) ShiftLeftLogical 119 122 + Store 57(i16) 123 + 124: 49(ivec3) Load 51(u16v) + 125: 17(int) Load 57(i16) + 126: 54(ivec3) CompositeConstruct 125 125 125 + 127: 49(ivec3) ShiftLeftLogical 124 126 + Store 51(u16v) 127 + 132: 15(ptr) AccessChain 51(u16v) 131 + 133: 14(int) Load 132 + 134: 17(int) Load 57(i16) + 135: 14(int) Bitcast 134 + 136: 128(bool) INotEqual 133 135 + Store 130(b) 136 + 137: 17(int) Load 57(i16) + 138: 14(int) Bitcast 137 + 139: 15(ptr) AccessChain 51(u16v) 131 + 140: 14(int) Load 139 + 141: 128(bool) IEqual 138 140 + Store 130(b) 141 + 142: 15(ptr) AccessChain 51(u16v) 131 + 143: 14(int) Load 142 + 144: 15(ptr) AccessChain 51(u16v) 114 + 145: 14(int) Load 144 + 146: 128(bool) UGreaterThan 143 145 + Store 130(b) 146 + 147: 17(int) Load 57(i16) + 148: 28(int) SConvert 147 + 149: 18(int) Bitcast 148 + 152: 18(int) Load 151(u) + 153: 128(bool) ULessThan 149 152 + Store 130(b) 153 + 154: 15(ptr) AccessChain 51(u16v) 114 + 155: 14(int) Load 154 + 156: 15(ptr) AccessChain 51(u16v) 131 + 157: 14(int) Load 156 + 158: 128(bool) UGreaterThanEqual 155 157 + Store 130(b) 158 + 159: 17(int) Load 57(i16) + 160: 28(int) SConvert 159 + 161: 28(int) Load 108(i) + 162: 128(bool) SLessThanEqual 160 161 + Store 130(b) 162 + 163: 17(int) Load 57(i16) + 164: 14(int) Bitcast 163 + 165: 49(ivec3) Load 51(u16v) + 166: 49(ivec3) CompositeConstruct 164 164 164 + 167: 49(ivec3) BitwiseOr 165 166 + Store 51(u16v) 167 + 168: 17(int) Load 57(i16) + 169: 14(int) Bitcast 168 + 170: 14(int) Load 70(u16) + 171: 14(int) BitwiseOr 169 170 + Store 70(u16) 171 + 172: 17(int) Load 57(i16) + 173: 17(int) Load 57(i16) + 174: 17(int) BitwiseAnd 173 172 + Store 57(i16) 174 + 175: 49(ivec3) Load 51(u16v) + 176: 49(ivec3) Load 51(u16v) + 177: 49(ivec3) BitwiseAnd 175 176 + Store 51(u16v) 177 + 178: 17(int) Load 57(i16) + 179: 14(int) Bitcast 178 + 180: 49(ivec3) Load 51(u16v) + 181: 49(ivec3) CompositeConstruct 179 179 179 + 182: 49(ivec3) BitwiseXor 180 181 + Store 51(u16v) 182 + 183: 49(ivec3) Load 51(u16v) + 184: 17(int) Load 57(i16) + 185: 14(int) Bitcast 184 + 186: 49(ivec3) CompositeConstruct 185 185 185 + 187: 49(ivec3) BitwiseXor 183 186 + Store 51(u16v) 187 + Return + FunctionEnd + 10(typeCast(): 2 Function None 3 + 11: Label + 190(i16v): 189(ptr) Variable Function + 193(bv): 192(ptr) Variable Function + 201(u16v): 200(ptr) Variable Function + 214(iv): 213(ptr) Variable Function + 227(uv): 226(ptr) Variable Function + 241(fv): 240(ptr) Variable Function + 253(dv): 252(ptr) Variable Function + 265(f16v): 264(ptr) Variable Function + 277(i64v): 276(ptr) Variable Function + 291(u64v): 290(ptr) Variable Function + 194: 191(bvec2) Load 193(bv) + 198: 188(ivec2) Select 194 197 196 + Store 190(i16v) 198 + 202: 191(bvec2) Load 193(bv) + 207: 199(ivec2) Select 202 206 205 + Store 201(u16v) 207 + 208: 188(ivec2) Load 190(i16v) + 209: 191(bvec2) INotEqual 208 205 + Store 193(bv) 209 + 210: 199(ivec2) Load 201(u16v) + 211: 191(bvec2) INotEqual 210 205 + Store 193(bv) 211 + 215: 212(ivec2) Load 214(iv) + 216: 188(ivec2) SConvert 215 + Store 190(i16v) 216 + 217: 212(ivec2) Load 214(iv) + 218: 188(ivec2) SConvert 217 + 219: 199(ivec2) Bitcast 218 + Store 201(u16v) 219 + 220: 188(ivec2) Load 190(i16v) + 221: 212(ivec2) SConvert 220 + Store 214(iv) 221 + 222: 199(ivec2) Load 201(u16v) + 224: 223(ivec2) UConvert 222 + 225: 212(ivec2) Bitcast 224 + Store 214(iv) 225 + 228: 223(ivec2) Load 227(uv) + 229: 199(ivec2) UConvert 228 + 230: 188(ivec2) Bitcast 229 + Store 190(i16v) 230 + 231: 223(ivec2) Load 227(uv) + 232: 199(ivec2) UConvert 231 + Store 201(u16v) 232 + 233: 188(ivec2) Load 190(i16v) + 234: 212(ivec2) SConvert 233 + 235: 223(ivec2) Bitcast 234 + Store 227(uv) 235 + 236: 199(ivec2) Load 201(u16v) + 237: 223(ivec2) UConvert 236 + Store 227(uv) 237 + 242: 239(fvec2) Load 241(fv) + 243: 188(ivec2) ConvertFToS 242 + Store 190(i16v) 243 + 244: 239(fvec2) Load 241(fv) + 245: 199(ivec2) ConvertFToU 244 + Store 201(u16v) 245 + 246: 188(ivec2) Load 190(i16v) + 247: 239(fvec2) ConvertSToF 246 + Store 241(fv) 247 + 248: 199(ivec2) Load 201(u16v) + 249: 239(fvec2) ConvertUToF 248 + Store 241(fv) 249 + 254: 251(fvec2) Load 253(dv) + 255: 188(ivec2) ConvertFToS 254 + Store 190(i16v) 255 + 256: 251(fvec2) Load 253(dv) + 257: 199(ivec2) ConvertFToU 256 + Store 201(u16v) 257 + 258: 188(ivec2) Load 190(i16v) + 259: 251(fvec2) ConvertSToF 258 + Store 253(dv) 259 + 260: 199(ivec2) Load 201(u16v) + 261: 251(fvec2) ConvertUToF 260 + Store 253(dv) 261 + 266: 263(fvec2) Load 265(f16v) + 267: 188(ivec2) ConvertFToS 266 + Store 190(i16v) 267 + 268: 263(fvec2) Load 265(f16v) + 269: 199(ivec2) ConvertFToU 268 + Store 201(u16v) 269 + 270: 188(ivec2) Load 190(i16v) + 271: 263(fvec2) ConvertSToF 270 + Store 265(f16v) 271 + 272: 199(ivec2) Load 201(u16v) + 273: 263(fvec2) ConvertUToF 272 + Store 265(f16v) 273 + 278: 275(ivec2) Load 277(i64v) + 279: 188(ivec2) SConvert 278 + Store 190(i16v) 279 + 280: 275(ivec2) Load 277(i64v) + 281: 188(ivec2) SConvert 280 + 282: 199(ivec2) Bitcast 281 + Store 201(u16v) 282 + 283: 188(ivec2) Load 190(i16v) + 284: 275(ivec2) SConvert 283 + Store 277(i64v) 284 + 285: 199(ivec2) Load 201(u16v) + 288: 287(ivec2) UConvert 285 + 289: 275(ivec2) Bitcast 288 + Store 277(i64v) 289 + 292: 287(ivec2) Load 291(u64v) + 293: 199(ivec2) UConvert 292 + 294: 188(ivec2) Bitcast 293 + Store 190(i16v) 294 + 295: 287(ivec2) Load 291(u64v) + 296: 199(ivec2) UConvert 295 + Store 201(u16v) 296 + 297: 188(ivec2) Load 190(i16v) + 298: 275(ivec2) SConvert 297 + 299: 287(ivec2) Bitcast 298 + Store 291(u64v) 299 + 300: 199(ivec2) Load 201(u16v) + 301: 287(ivec2) UConvert 300 + Store 291(u64v) 301 + 302: 199(ivec2) Load 201(u16v) + 303: 188(ivec2) Bitcast 302 + Store 190(i16v) 303 + 304: 188(ivec2) Load 190(i16v) + 305: 199(ivec2) Bitcast 304 + Store 201(u16v) 305 + Return + FunctionEnd +12(builtinFuncs(): 2 Function None 3 + 13: Label + 306(i16v): 189(ptr) Variable Function + 312(i16): 35(ptr) Variable Function + 320(u16v): 50(ptr) Variable Function + 322(u16): 15(ptr) Variable Function + 394(f16v): 393(ptr) Variable Function + 397(exp): 396(ptr) Variable Function + 419(packi): 107(ptr) Variable Function + 424(packu): 150(ptr) Variable Function + 433(packi64): 432(ptr) Variable Function + 442(packu64): 441(ptr) Variable Function + 451(bv): 450(ptr) Variable Function + 307: 188(ivec2) Load 306(i16v) + 308: 188(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 307 + Store 306(i16v) 308 + 309: 188(ivec2) Load 306(i16v) + 310: 188(ivec2) ExtInst 1(GLSL.std.450) 7(SSign) 309 + Store 306(i16v) 310 + 311: 188(ivec2) Load 306(i16v) + 313: 17(int) Load 312(i16) + 314: 188(ivec2) CompositeConstruct 313 313 + 315: 188(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 311 314 + Store 306(i16v) 315 + 316: 188(ivec2) Load 306(i16v) + 319: 188(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 316 318 + Store 306(i16v) 319 + 321: 49(ivec3) Load 320(u16v) + 323: 14(int) Load 322(u16) + 324: 49(ivec3) CompositeConstruct 323 323 323 + 325: 49(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 321 324 + Store 320(u16v) 325 + 326: 49(ivec3) Load 320(u16v) + 328: 49(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 326 327 + Store 320(u16v) 328 + 329: 188(ivec2) Load 306(i16v) + 330: 17(int) Load 312(i16) + 331: 188(ivec2) CompositeConstruct 330 330 + 332: 188(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 329 331 + Store 306(i16v) 332 + 333: 188(ivec2) Load 306(i16v) + 334: 188(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 333 318 + Store 306(i16v) 334 + 335: 49(ivec3) Load 320(u16v) + 336: 14(int) Load 322(u16) + 337: 49(ivec3) CompositeConstruct 336 336 336 + 338: 49(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 335 337 + Store 320(u16v) 338 + 339: 49(ivec3) Load 320(u16v) + 340: 49(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 339 327 + Store 320(u16v) 340 + 341: 188(ivec2) Load 306(i16v) + 342: 17(int) Load 312(i16) + 343: 17(int) SNegate 342 + 344: 17(int) Load 312(i16) + 345: 188(ivec2) CompositeConstruct 343 343 + 346: 188(ivec2) CompositeConstruct 344 344 + 347: 188(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 341 345 346 + Store 306(i16v) 347 + 348: 188(ivec2) Load 306(i16v) + 349: 188(ivec2) Load 306(i16v) + 350: 188(ivec2) SNegate 349 + 351: 188(ivec2) Load 306(i16v) + 352: 188(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 348 350 351 + Store 306(i16v) 352 + 353: 49(ivec3) Load 320(u16v) + 354: 14(int) Load 322(u16) + 355: 14(int) SNegate 354 + 356: 14(int) Load 322(u16) + 357: 49(ivec3) CompositeConstruct 355 355 355 + 358: 49(ivec3) CompositeConstruct 356 356 356 + 359: 49(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 353 357 358 + Store 320(u16v) 359 + 360: 49(ivec3) Load 320(u16v) + 361: 49(ivec3) Load 320(u16v) + 362: 49(ivec3) SNegate 361 + 363: 49(ivec3) Load 320(u16v) + 364: 49(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 360 362 363 + Store 320(u16v) 364 + 365: 35(ptr) AccessChain 306(i16v) 131 + 366: 17(int) Load 365 + 367: 35(ptr) AccessChain 306(i16v) 114 + 368: 17(int) Load 367 + 370: 17(int) Select 369 368 366 + Store 312(i16) 370 + 371: 17(int) Load 312(i16) + 372: 188(ivec2) CompositeConstruct 371 371 + 373: 17(int) Load 312(i16) + 374: 17(int) SNegate 373 + 375: 188(ivec2) CompositeConstruct 374 374 + 378: 188(ivec2) Select 377 375 372 + Store 306(i16v) 378 + 379: 15(ptr) AccessChain 320(u16v) 131 + 380: 14(int) Load 379 + 381: 15(ptr) AccessChain 320(u16v) 114 + 382: 14(int) Load 381 + 383: 14(int) Select 369 382 380 + Store 322(u16) 383 + 384: 14(int) Load 322(u16) + 385: 49(ivec3) CompositeConstruct 384 384 384 + 386: 14(int) Load 322(u16) + 387: 14(int) SNegate 386 + 388: 49(ivec3) CompositeConstruct 387 387 387 + 391: 49(ivec3) Select 390 388 385 + Store 320(u16v) 391 + 395: 392(fvec3) Load 394(f16v) + 399:398(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 395 + 400: 54(ivec3) CompositeExtract 399 1 + Store 397(exp) 400 + 401: 392(fvec3) CompositeExtract 399 0 + Store 394(f16v) 401 + 402: 392(fvec3) Load 394(f16v) + 403: 54(ivec3) Load 397(exp) + 404: 392(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 402 403 + Store 394(f16v) 404 + 405: 392(fvec3) Load 394(f16v) + 406: 263(fvec2) VectorShuffle 405 405 0 1 + 407: 188(ivec2) Bitcast 406 + Store 306(i16v) 407 + 409: 408(ptr) AccessChain 394(f16v) 120 + 410: 262(float) Load 409 + 411: 14(int) Bitcast 410 + 412: 15(ptr) AccessChain 320(u16v) 131 + Store 412 411 + 413: 188(ivec2) Load 306(i16v) + 414: 263(fvec2) Bitcast 413 + 415: 392(fvec3) Load 394(f16v) + 416: 392(fvec3) VectorShuffle 415 414 3 4 2 + Store 394(f16v) 416 + 417: 49(ivec3) Load 320(u16v) + 418: 392(fvec3) Bitcast 417 + Store 394(f16v) 418 + 420: 188(ivec2) Load 306(i16v) + 421: 28(int) Bitcast 420 + Store 419(packi) 421 + 422: 28(int) Load 419(packi) + 423: 188(ivec2) Bitcast 422 + Store 306(i16v) 423 + 425: 49(ivec3) Load 320(u16v) + 426: 199(ivec2) VectorShuffle 425 425 0 1 + 427: 18(int) Bitcast 426 + Store 424(packu) 427 + 428: 18(int) Load 424(packu) + 429: 199(ivec2) Bitcast 428 + 430: 49(ivec3) Load 320(u16v) + 431: 49(ivec3) VectorShuffle 430 429 3 4 2 + Store 320(u16v) 431 + 434: 17(int) Load 312(i16) + 436: 435(ivec4) CompositeConstruct 434 434 434 434 + 437: 274(int) Bitcast 436 + Store 433(packi64) 437 + 438: 274(int) Load 433(packi64) + 439: 435(ivec4) Bitcast 438 + 440: 188(ivec2) VectorShuffle 439 439 0 1 + Store 306(i16v) 440 + 443: 14(int) Load 322(u16) + 445: 444(ivec4) CompositeConstruct 443 443 443 443 + 446: 286(int) Bitcast 445 + Store 442(packu64) 446 + 447: 286(int) Load 442(packu64) + 448: 444(ivec4) Bitcast 447 + 449: 49(ivec3) VectorShuffle 448 448 0 1 2 + Store 320(u16v) 449 + 452: 49(ivec3) Load 320(u16v) + 453: 14(int) Load 322(u16) + 454: 49(ivec3) CompositeConstruct 453 453 453 + 455: 389(bvec3) ULessThan 452 454 + Store 451(bv) 455 + 456: 188(ivec2) Load 306(i16v) + 457: 17(int) Load 312(i16) + 458: 188(ivec2) CompositeConstruct 457 457 + 459: 191(bvec2) SLessThan 456 458 + 460: 389(bvec3) Load 451(bv) + 461: 389(bvec3) VectorShuffle 460 459 3 4 2 + Store 451(bv) 461 + 462: 49(ivec3) Load 320(u16v) + 463: 14(int) Load 322(u16) + 464: 49(ivec3) CompositeConstruct 463 463 463 + 465: 389(bvec3) ULessThanEqual 462 464 + Store 451(bv) 465 + 466: 188(ivec2) Load 306(i16v) + 467: 17(int) Load 312(i16) + 468: 188(ivec2) CompositeConstruct 467 467 + 469: 191(bvec2) SLessThanEqual 466 468 + 470: 389(bvec3) Load 451(bv) + 471: 389(bvec3) VectorShuffle 470 469 3 4 2 + Store 451(bv) 471 + 472: 49(ivec3) Load 320(u16v) + 473: 14(int) Load 322(u16) + 474: 49(ivec3) CompositeConstruct 473 473 473 + 475: 389(bvec3) UGreaterThan 472 474 + Store 451(bv) 475 + 476: 188(ivec2) Load 306(i16v) + 477: 17(int) Load 312(i16) + 478: 188(ivec2) CompositeConstruct 477 477 + 479: 191(bvec2) SGreaterThan 476 478 + 480: 389(bvec3) Load 451(bv) + 481: 389(bvec3) VectorShuffle 480 479 3 4 2 + Store 451(bv) 481 + 482: 49(ivec3) Load 320(u16v) + 483: 14(int) Load 322(u16) + 484: 49(ivec3) CompositeConstruct 483 483 483 + 485: 389(bvec3) UGreaterThanEqual 482 484 + Store 451(bv) 485 + 486: 188(ivec2) Load 306(i16v) + 487: 17(int) Load 312(i16) + 488: 188(ivec2) CompositeConstruct 487 487 + 489: 191(bvec2) SGreaterThanEqual 486 488 + 490: 389(bvec3) Load 451(bv) + 491: 389(bvec3) VectorShuffle 490 489 3 4 2 + Store 451(bv) 491 + 492: 49(ivec3) Load 320(u16v) + 493: 14(int) Load 322(u16) + 494: 49(ivec3) CompositeConstruct 493 493 493 + 495: 389(bvec3) IEqual 492 494 + Store 451(bv) 495 + 496: 188(ivec2) Load 306(i16v) + 497: 17(int) Load 312(i16) + 498: 188(ivec2) CompositeConstruct 497 497 + 499: 191(bvec2) IEqual 496 498 + 500: 389(bvec3) Load 451(bv) + 501: 389(bvec3) VectorShuffle 500 499 3 4 2 + Store 451(bv) 501 + 502: 49(ivec3) Load 320(u16v) + 503: 14(int) Load 322(u16) + 504: 49(ivec3) CompositeConstruct 503 503 503 + 505: 389(bvec3) INotEqual 502 504 + Store 451(bv) 505 + 506: 188(ivec2) Load 306(i16v) + 507: 17(int) Load 312(i16) + 508: 188(ivec2) CompositeConstruct 507 507 + 509: 191(bvec2) INotEqual 506 508 + 510: 389(bvec3) Load 451(bv) + 511: 389(bvec3) VectorShuffle 510 509 3 4 2 + Store 451(bv) 511 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.int64.frag.out b/3rdparty/glslang/Test/baseResults/spv.int64.frag.out index df35fea78..c272660d7 100644 --- a/3rdparty/glslang/Test/baseResults/spv.int64.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.int64.frag.out @@ -1,6 +1,4 @@ spv.int64.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 480 diff --git a/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out b/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out index 93d2dfdae..7e846d6e0 100644 --- a/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.intOps.vert.out @@ -1,6 +1,4 @@ spv.intOps.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 268 diff --git a/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out b/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out index 88d8e53cf..ebe9716fe 100644 --- a/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.interpOps.frag.out @@ -1,6 +1,4 @@ spv.interpOps.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 100 diff --git a/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out b/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out index 0d0b28bbe..533f5944a 100644 --- a/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.layoutNested.vert.out @@ -1,6 +1,4 @@ spv.layoutNested.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 66 diff --git a/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out b/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out index 404563aaf..c9dbc3070 100755 --- a/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.localAggregates.frag.out @@ -1,6 +1,4 @@ spv.localAggregates.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 136 diff --git a/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out b/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out index 38d9d2cf1..4d863c8ee 100755 --- a/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.matFun.vert.out @@ -1,6 +1,4 @@ spv.matFun.vert -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 103 diff --git a/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out b/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out index c7077b9a0..872642f81 100644 --- a/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.matrix.frag.out @@ -1,6 +1,4 @@ spv.matrix.frag -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 286 diff --git a/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out b/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out index a990e4759..d4841a413 100644 --- a/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.memoryQualifier.frag.out @@ -1,6 +1,4 @@ spv.memoryQualifier.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 97 diff --git a/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out b/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out index 58bbb0627..678c5e4ac 100644 --- a/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.merge-unreachable.frag.out @@ -1,6 +1,4 @@ spv.merge-unreachable.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 25 diff --git a/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out b/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out index 5eebe407c..c7af1410a 100755 --- a/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.multiStruct.comp.out @@ -1,6 +1,4 @@ spv.multiStruct.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 161 diff --git a/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out b/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out index b9b0cb2cb..8609b3ac9 100755 --- a/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.multiStructFuncall.frag.out @@ -1,6 +1,4 @@ spv.multiStructFuncall.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 63 diff --git a/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out b/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out index de2a54960..ba9e2d3ee 100755 --- a/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.multiView.frag.out @@ -1,6 +1,4 @@ spv.multiView.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 17 diff --git a/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out index f93aa0172..31d8c51cb 100644 --- a/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out @@ -1,6 +1,4 @@ spv.multiviewPerViewAttributes.tesc -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 37 diff --git a/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out b/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out index 350944a85..376493581 100644 --- a/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.vert.out @@ -1,6 +1,4 @@ spv.multiviewPerViewAttributes.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 29 diff --git a/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out b/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out index ea694eeaf..d53fcb61e 100755 --- a/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.newTexture.frag.out @@ -1,6 +1,4 @@ spv.newTexture.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 284 diff --git a/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out b/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out index 41d2a4314..39c234311 100644 --- a/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.noDeadDecorations.vert.out @@ -1,6 +1,4 @@ spv.noDeadDecorations.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 32 diff --git a/3rdparty/glslang/Test/baseResults/spv.noLocation.vert.out b/3rdparty/glslang/Test/baseResults/spv.noLocation.vert.out index 7bd74679f..7a664745f 100644 --- a/3rdparty/glslang/Test/baseResults/spv.noLocation.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.noLocation.vert.out @@ -1,5 +1,4 @@ spv.noLocation.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: spv.noLocation.vert:4: 'location' : SPIR-V requires location for user input/output ERROR: spv.noLocation.vert:8: 'location' : SPIR-V requires location for user input/output ERROR: spv.noLocation.vert:19: 'location' : SPIR-V requires location for user input/output diff --git a/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out b/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out index 0f88436c5..d101b4fdc 100755 --- a/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.noWorkgroup.comp.out @@ -1,6 +1,4 @@ spv.noWorkgroup.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 12 diff --git a/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out b/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out index ea4be8f4c..ebfa7414c 100755 --- a/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.offsets.frag.out @@ -1,6 +1,4 @@ spv.offsets.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 15 diff --git a/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out b/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out index 4bae395a8..1b5cd0c2c 100644 --- a/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.precise.tesc.out @@ -1,6 +1,4 @@ spv.precise.tesc -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 72 diff --git a/3rdparty/glslang/Test/baseResults/spv.precise.tese.out b/3rdparty/glslang/Test/baseResults/spv.precise.tese.out index 4f1839c77..4e7b28a74 100644 --- a/3rdparty/glslang/Test/baseResults/spv.precise.tese.out +++ b/3rdparty/glslang/Test/baseResults/spv.precise.tese.out @@ -1,6 +1,4 @@ spv.precise.tese -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 119 diff --git a/3rdparty/glslang/Test/baseResults/spv.precision.frag.out b/3rdparty/glslang/Test/baseResults/spv.precision.frag.out index f49b35663..9cac37eaf 100755 --- a/3rdparty/glslang/Test/baseResults/spv.precision.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.precision.frag.out @@ -1,6 +1,4 @@ spv.precision.frag -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 127 diff --git a/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out b/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out index bdefd63de..bfef88338 100644 --- a/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.pushConstant.vert.out @@ -1,6 +1,4 @@ spv.pushConstant.vert -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 35 diff --git a/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out b/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out index 9559815b5..398ef0580 100755 --- a/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.pushConstantAnon.vert.out @@ -1,6 +1,4 @@ spv.pushConstantAnon.vert -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 38 diff --git a/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out b/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out index 37f474cca..e9edbe421 100755 --- a/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.qualifiers.vert.out @@ -1,6 +1,4 @@ spv.qualifiers.vert -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 21 diff --git a/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out b/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out index fbdcbc813..c06d87765 100755 --- a/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.queryL.frag.out @@ -1,6 +1,4 @@ spv.queryL.frag -Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 224 diff --git a/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out b/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out index 6bae6bd0c..315a60d01 100644 --- a/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out @@ -1,6 +1,4 @@ spv.sampleMaskOverrideCoverage.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 20 diff --git a/3rdparty/glslang/Test/baseResults/spv.separate.frag.out b/3rdparty/glslang/Test/baseResults/spv.separate.frag.out index c654117f7..5b078afc7 100644 --- a/3rdparty/glslang/Test/baseResults/spv.separate.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.separate.frag.out @@ -1,6 +1,4 @@ spv.separate.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 319 diff --git a/3rdparty/glslang/Test/baseResults/spv.set.vert.out b/3rdparty/glslang/Test/baseResults/spv.set.vert.out index 38cb669c6..681487922 100755 --- a/3rdparty/glslang/Test/baseResults/spv.set.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.set.vert.out @@ -1,6 +1,4 @@ spv.set.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22 diff --git a/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out b/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out index b8d5e3a01..45c21d90d 100644 --- a/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.shaderBallot.comp.out @@ -1,6 +1,4 @@ spv.shaderBallot.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 298 diff --git a/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out b/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out index 8011fb664..b6b57ec43 100644 --- a/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.shaderBallotAMD.comp.out @@ -1,6 +1,4 @@ spv.shaderBallotAMD.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 1048 diff --git a/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out b/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out index 41ad78d48..fbce2d29c 100644 --- a/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.shaderDrawParams.vert.out @@ -1,6 +1,4 @@ spv.shaderDrawParams.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 53 diff --git a/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out b/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out index 027714941..ed76187c2 100644 --- a/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.shaderGroupVote.comp.out @@ -1,6 +1,4 @@ spv.shaderGroupVote.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 33 diff --git a/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out b/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out index 498c28778..1381ea991 100644 --- a/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.shiftOps.frag.out @@ -1,6 +1,4 @@ spv.shiftOps.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 38 diff --git a/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out b/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out index 7d5189a25..9318785a1 100644 --- a/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.shortCircuit.frag.out @@ -1,6 +1,4 @@ spv.shortCircuit.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 147 diff --git a/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out b/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out index 431ef1528..af3b63ecc 100644 --- a/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.sparseTexture.frag.out @@ -1,6 +1,4 @@ spv.sparseTexture.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 438 diff --git a/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out b/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out index 175dc35c8..c716efd38 100644 --- a/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.sparseTextureClamp.frag.out @@ -1,6 +1,4 @@ spv.sparseTextureClamp.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 360 diff --git a/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out b/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out index 5e2020fe0..720d0a9ed 100755 --- a/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.specConst.vert.out @@ -1,6 +1,4 @@ spv.specConst.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 27 diff --git a/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out b/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out index 481ed68c3..8db9ebe23 100644 --- a/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out +++ b/3rdparty/glslang/Test/baseResults/spv.specConstant.comp.out @@ -1,6 +1,4 @@ spv.specConstant.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 27 diff --git a/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out b/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out index 2f11c2c62..6c2df3afc 100644 --- a/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.specConstant.vert.out @@ -1,6 +1,4 @@ spv.specConstant.vert -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 81 diff --git a/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out b/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out index 9079554ba..ec0dc4f87 100644 --- a/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.specConstantComposite.vert.out @@ -1,6 +1,4 @@ spv.specConstantComposite.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 43 diff --git a/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out b/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out index ab83e61e5..3fb61d4cd 100644 --- a/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.specConstantOperations.vert.out @@ -1,6 +1,4 @@ spv.specConstantOperations.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 162 diff --git a/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out b/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out index 8fd6dd5c8..8a83f9ef5 100644 --- a/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out @@ -1,6 +1,4 @@ spv.stereoViewRendering.tesc -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 38 diff --git a/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out b/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out index d6c695601..2452c31c0 100644 --- a/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.vert.out @@ -1,6 +1,4 @@ spv.stereoViewRendering.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 27 diff --git a/3rdparty/glslang/Test/baseResults/spv.storageBuffer.vert.out b/3rdparty/glslang/Test/baseResults/spv.storageBuffer.vert.out index fa08ca836..f9a7161e7 100755 --- a/3rdparty/glslang/Test/baseResults/spv.storageBuffer.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.storageBuffer.vert.out @@ -1,6 +1,4 @@ spv.storageBuffer.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 31 diff --git a/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out b/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out index c24211138..661ebbafb 100644 --- a/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.subpass.frag.out @@ -1,6 +1,4 @@ spv.subpass.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 67 diff --git a/3rdparty/glslang/Test/baseResults/spv.switch.frag.out b/3rdparty/glslang/Test/baseResults/spv.switch.frag.out index 86acb6c8e..f7427560f 100755 --- a/3rdparty/glslang/Test/baseResults/spv.switch.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.switch.frag.out @@ -1,5 +1,4 @@ spv.switch.frag -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. WARNING: 0:121: 'switch' : last case/default label not followed by statements WARNING: 0:134: 'switch' : last case/default label not followed by statements WARNING: 0:139: 'switch' : last case/default label not followed by statements diff --git a/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out b/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out index bf0699a3c..573bd6d47 100755 --- a/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.swizzleInversion.frag.out @@ -1,6 +1,4 @@ spv.swizzleInversion.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 46 diff --git a/3rdparty/glslang/Test/baseResults/spv.test.frag.out b/3rdparty/glslang/Test/baseResults/spv.test.frag.out index 4f5fbaaf9..0e5deebea 100644 --- a/3rdparty/glslang/Test/baseResults/spv.test.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.test.frag.out @@ -1,6 +1,4 @@ spv.test.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 55 diff --git a/3rdparty/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out b/3rdparty/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out index 198c48196..bc86ab24a 100644 --- a/3rdparty/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.texture.sampler.transform.frag.out @@ -1,6 +1,4 @@ spv.texture.sampler.transform.frag -Warning, version 440 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 19 diff --git a/3rdparty/glslang/Test/baseResults/spv.textureBuffer.vert.out b/3rdparty/glslang/Test/baseResults/spv.textureBuffer.vert.out index 8c287468a..606e566eb 100755 --- a/3rdparty/glslang/Test/baseResults/spv.textureBuffer.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.textureBuffer.vert.out @@ -1,6 +1,4 @@ spv.textureBuffer.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 42 diff --git a/3rdparty/glslang/Test/baseResults/spv.textureGatherBiasLod.frag.out b/3rdparty/glslang/Test/baseResults/spv.textureGatherBiasLod.frag.out new file mode 100644 index 000000000..6d0c3e879 --- /dev/null +++ b/3rdparty/glslang/Test/baseResults/spv.textureGatherBiasLod.frag.out @@ -0,0 +1,384 @@ +spv.textureGatherBiasLod.frag +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 298 + + Capability Shader + Capability SparseResidency + Capability SampledCubeArray + Capability ImageGatherBiasLodAMD + Extension "SPV_AMD_texture_gather_bias_lod" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 20 25 37 61 176 296 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_AMD_texture_gather_bias_lod" + SourceExtension "GL_ARB_sparse_texture2" + Name 4 "main" + Name 9 "texel" + Name 12 "result" + Name 16 "s2D" + Name 20 "c2" + Name 25 "bias" + Name 33 "s2DArray" + Name 37 "c3" + Name 47 "sCube" + Name 58 "sCubeArray" + Name 61 "c4" + Name 104 "ResType" + Name 176 "lod" + Name 296 "fragColor" + Decorate 16(s2D) DescriptorSet 0 + Decorate 33(s2DArray) DescriptorSet 0 + Decorate 47(sCube) DescriptorSet 0 + Decorate 58(sCubeArray) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: 6(float) Constant 0 + 11: 7(fvec4) ConstantComposite 10 10 10 10 + 13: TypeImage 6(float) 2D sampled format:Unknown + 14: TypeSampledImage 13 + 15: TypePointer UniformConstant 14 + 16(s2D): 15(ptr) Variable UniformConstant + 18: TypeVector 6(float) 2 + 19: TypePointer Input 18(fvec2) + 20(c2): 19(ptr) Variable Input + 22: TypeInt 32 1 + 23: 22(int) Constant 0 + 24: TypePointer Input 6(float) + 25(bias): 24(ptr) Variable Input + 30: TypeImage 6(float) 2D array sampled format:Unknown + 31: TypeSampledImage 30 + 32: TypePointer UniformConstant 31 + 33(s2DArray): 32(ptr) Variable UniformConstant + 35: TypeVector 6(float) 3 + 36: TypePointer Input 35(fvec3) + 37(c3): 36(ptr) Variable Input + 39: 22(int) Constant 1 + 44: TypeImage 6(float) Cube sampled format:Unknown + 45: TypeSampledImage 44 + 46: TypePointer UniformConstant 45 + 47(sCube): 46(ptr) Variable UniformConstant + 50: 22(int) Constant 2 + 55: TypeImage 6(float) Cube array sampled format:Unknown + 56: TypeSampledImage 55 + 57: TypePointer UniformConstant 56 + 58(sCubeArray): 57(ptr) Variable UniformConstant + 60: TypePointer Input 7(fvec4) + 61(c4): 60(ptr) Variable Input + 63: 22(int) Constant 3 + 70: TypeVector 22(int) 2 + 71: 70(ivec2) ConstantComposite 23 23 + 78: 70(ivec2) ConstantComposite 23 39 + 85: TypeInt 32 0 + 86: 85(int) Constant 4 + 87: TypeArray 70(ivec2) 86 + 88: 70(ivec2) ConstantComposite 39 23 + 89: 70(ivec2) ConstantComposite 39 39 + 90: 87 ConstantComposite 71 78 88 89 + 104(ResType): TypeStruct 22(int) 7(fvec4) + 176(lod): 24(ptr) Variable Input + 295: TypePointer Output 7(fvec4) + 296(fragColor): 295(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 9(texel): 8(ptr) Variable Function + 12(result): 8(ptr) Variable Function + Store 9(texel) 11 + Store 12(result) 11 + 17: 14 Load 16(s2D) + 21: 18(fvec2) Load 20(c2) + 26: 6(float) Load 25(bias) + 27: 7(fvec4) ImageGather 17 21 23 Bias 26 + 28: 7(fvec4) Load 9(texel) + 29: 7(fvec4) FAdd 28 27 + Store 9(texel) 29 + 34: 31 Load 33(s2DArray) + 38: 35(fvec3) Load 37(c3) + 40: 6(float) Load 25(bias) + 41: 7(fvec4) ImageGather 34 38 39 Bias 40 + 42: 7(fvec4) Load 9(texel) + 43: 7(fvec4) FAdd 42 41 + Store 9(texel) 43 + 48: 45 Load 47(sCube) + 49: 35(fvec3) Load 37(c3) + 51: 6(float) Load 25(bias) + 52: 7(fvec4) ImageGather 48 49 50 Bias 51 + 53: 7(fvec4) Load 9(texel) + 54: 7(fvec4) FAdd 53 52 + Store 9(texel) 54 + 59: 56 Load 58(sCubeArray) + 62: 7(fvec4) Load 61(c4) + 64: 6(float) Load 25(bias) + 65: 7(fvec4) ImageGather 59 62 63 Bias 64 + 66: 7(fvec4) Load 9(texel) + 67: 7(fvec4) FAdd 66 65 + Store 9(texel) 67 + 68: 14 Load 16(s2D) + 69: 18(fvec2) Load 20(c2) + 72: 6(float) Load 25(bias) + 73: 7(fvec4) ImageGather 68 69 23 Bias ConstOffset 72 71 + 74: 7(fvec4) Load 9(texel) + 75: 7(fvec4) FAdd 74 73 + Store 9(texel) 75 + 76: 31 Load 33(s2DArray) + 77: 35(fvec3) Load 37(c3) + 79: 6(float) Load 25(bias) + 80: 7(fvec4) ImageGather 76 77 39 Bias ConstOffset 79 78 + 81: 7(fvec4) Load 9(texel) + 82: 7(fvec4) FAdd 81 80 + Store 9(texel) 82 + 83: 14 Load 16(s2D) + 84: 18(fvec2) Load 20(c2) + 91: 6(float) Load 25(bias) + 92: 7(fvec4) ImageGather 83 84 23 Bias ConstOffsets 91 90 + 93: 7(fvec4) Load 9(texel) + 94: 7(fvec4) FAdd 93 92 + Store 9(texel) 94 + 95: 31 Load 33(s2DArray) + 96: 35(fvec3) Load 37(c3) + 97: 6(float) Load 25(bias) + 98: 7(fvec4) ImageGather 95 96 39 Bias ConstOffsets 97 90 + 99: 7(fvec4) Load 9(texel) + 100: 7(fvec4) FAdd 99 98 + Store 9(texel) 100 + 101: 14 Load 16(s2D) + 102: 18(fvec2) Load 20(c2) + 103: 6(float) Load 25(bias) + 105:104(ResType) ImageSparseGather 101 102 23 Bias 103 + 106: 7(fvec4) CompositeExtract 105 1 + Store 12(result) 106 + 107: 22(int) CompositeExtract 105 0 + 108: 7(fvec4) Load 12(result) + 109: 7(fvec4) Load 9(texel) + 110: 7(fvec4) FAdd 109 108 + Store 9(texel) 110 + 111: 31 Load 33(s2DArray) + 112: 35(fvec3) Load 37(c3) + 113: 6(float) Load 25(bias) + 114:104(ResType) ImageSparseGather 111 112 39 Bias 113 + 115: 7(fvec4) CompositeExtract 114 1 + Store 12(result) 115 + 116: 22(int) CompositeExtract 114 0 + 117: 7(fvec4) Load 12(result) + 118: 7(fvec4) Load 9(texel) + 119: 7(fvec4) FAdd 118 117 + Store 9(texel) 119 + 120: 45 Load 47(sCube) + 121: 35(fvec3) Load 37(c3) + 122: 6(float) Load 25(bias) + 123:104(ResType) ImageSparseGather 120 121 50 Bias 122 + 124: 7(fvec4) CompositeExtract 123 1 + Store 12(result) 124 + 125: 22(int) CompositeExtract 123 0 + 126: 7(fvec4) Load 12(result) + 127: 7(fvec4) Load 9(texel) + 128: 7(fvec4) FAdd 127 126 + Store 9(texel) 128 + 129: 56 Load 58(sCubeArray) + 130: 7(fvec4) Load 61(c4) + 131: 6(float) Load 25(bias) + 132:104(ResType) ImageSparseGather 129 130 50 Bias 131 + 133: 7(fvec4) CompositeExtract 132 1 + Store 12(result) 133 + 134: 22(int) CompositeExtract 132 0 + 135: 7(fvec4) Load 12(result) + 136: 7(fvec4) Load 9(texel) + 137: 7(fvec4) FAdd 136 135 + Store 9(texel) 137 + 138: 14 Load 16(s2D) + 139: 18(fvec2) Load 20(c2) + 140: 6(float) Load 25(bias) + 141:104(ResType) ImageSparseGather 138 139 23 Bias ConstOffset 140 71 + 142: 7(fvec4) CompositeExtract 141 1 + Store 12(result) 142 + 143: 22(int) CompositeExtract 141 0 + 144: 7(fvec4) Load 12(result) + 145: 7(fvec4) Load 9(texel) + 146: 7(fvec4) FAdd 145 144 + Store 9(texel) 146 + 147: 31 Load 33(s2DArray) + 148: 35(fvec3) Load 37(c3) + 149: 6(float) Load 25(bias) + 150:104(ResType) ImageSparseGather 147 148 39 Bias ConstOffset 149 78 + 151: 7(fvec4) CompositeExtract 150 1 + Store 12(result) 151 + 152: 22(int) CompositeExtract 150 0 + 153: 7(fvec4) Load 12(result) + 154: 7(fvec4) Load 9(texel) + 155: 7(fvec4) FAdd 154 153 + Store 9(texel) 155 + 156: 14 Load 16(s2D) + 157: 18(fvec2) Load 20(c2) + 158: 6(float) Load 25(bias) + 159:104(ResType) ImageSparseGather 156 157 23 Bias ConstOffsets 158 90 + 160: 7(fvec4) CompositeExtract 159 1 + Store 12(result) 160 + 161: 22(int) CompositeExtract 159 0 + 162: 7(fvec4) Load 12(result) + 163: 7(fvec4) Load 9(texel) + 164: 7(fvec4) FAdd 163 162 + Store 9(texel) 164 + 165: 31 Load 33(s2DArray) + 166: 35(fvec3) Load 37(c3) + 167: 6(float) Load 25(bias) + 168:104(ResType) ImageSparseGather 165 166 39 Bias ConstOffsets 167 90 + 169: 7(fvec4) CompositeExtract 168 1 + Store 12(result) 169 + 170: 22(int) CompositeExtract 168 0 + 171: 7(fvec4) Load 12(result) + 172: 7(fvec4) Load 9(texel) + 173: 7(fvec4) FAdd 172 171 + Store 9(texel) 173 + 174: 14 Load 16(s2D) + 175: 18(fvec2) Load 20(c2) + 177: 6(float) Load 176(lod) + 178: 7(fvec4) ImageGather 174 175 23 Lod 177 + 179: 7(fvec4) Load 9(texel) + 180: 7(fvec4) FAdd 179 178 + Store 9(texel) 180 + 181: 31 Load 33(s2DArray) + 182: 35(fvec3) Load 37(c3) + 183: 6(float) Load 176(lod) + 184: 7(fvec4) ImageGather 181 182 39 Lod 183 + 185: 7(fvec4) Load 9(texel) + 186: 7(fvec4) FAdd 185 184 + Store 9(texel) 186 + 187: 45 Load 47(sCube) + 188: 35(fvec3) Load 37(c3) + 189: 6(float) Load 176(lod) + 190: 7(fvec4) ImageGather 187 188 50 Lod 189 + 191: 7(fvec4) Load 9(texel) + 192: 7(fvec4) FAdd 191 190 + Store 9(texel) 192 + 193: 56 Load 58(sCubeArray) + 194: 7(fvec4) Load 61(c4) + 195: 6(float) Load 176(lod) + 196: 7(fvec4) ImageGather 193 194 63 Lod 195 + 197: 7(fvec4) Load 9(texel) + 198: 7(fvec4) FAdd 197 196 + Store 9(texel) 198 + 199: 14 Load 16(s2D) + 200: 18(fvec2) Load 20(c2) + 201: 6(float) Load 176(lod) + 202: 7(fvec4) ImageGather 199 200 23 Lod ConstOffset 201 71 + 203: 7(fvec4) Load 9(texel) + 204: 7(fvec4) FAdd 203 202 + Store 9(texel) 204 + 205: 31 Load 33(s2DArray) + 206: 35(fvec3) Load 37(c3) + 207: 6(float) Load 176(lod) + 208: 7(fvec4) ImageGather 205 206 39 Lod ConstOffset 207 78 + 209: 7(fvec4) Load 9(texel) + 210: 7(fvec4) FAdd 209 208 + Store 9(texel) 210 + 211: 14 Load 16(s2D) + 212: 18(fvec2) Load 20(c2) + 213: 6(float) Load 176(lod) + 214: 7(fvec4) ImageGather 211 212 23 Lod ConstOffsets 213 90 + 215: 7(fvec4) Load 9(texel) + 216: 7(fvec4) FAdd 215 214 + Store 9(texel) 216 + 217: 31 Load 33(s2DArray) + 218: 35(fvec3) Load 37(c3) + 219: 6(float) Load 176(lod) + 220: 7(fvec4) ImageGather 217 218 39 Lod ConstOffsets 219 90 + 221: 7(fvec4) Load 9(texel) + 222: 7(fvec4) FAdd 221 220 + Store 9(texel) 222 + 223: 14 Load 16(s2D) + 224: 18(fvec2) Load 20(c2) + 225: 6(float) Load 176(lod) + 226:104(ResType) ImageSparseGather 223 224 23 Lod 225 + 227: 7(fvec4) CompositeExtract 226 1 + Store 12(result) 227 + 228: 22(int) CompositeExtract 226 0 + 229: 7(fvec4) Load 12(result) + 230: 7(fvec4) Load 9(texel) + 231: 7(fvec4) FAdd 230 229 + Store 9(texel) 231 + 232: 31 Load 33(s2DArray) + 233: 35(fvec3) Load 37(c3) + 234: 6(float) Load 176(lod) + 235:104(ResType) ImageSparseGather 232 233 39 Lod 234 + 236: 7(fvec4) CompositeExtract 235 1 + Store 12(result) 236 + 237: 22(int) CompositeExtract 235 0 + 238: 7(fvec4) Load 12(result) + 239: 7(fvec4) Load 9(texel) + 240: 7(fvec4) FAdd 239 238 + Store 9(texel) 240 + 241: 45 Load 47(sCube) + 242: 35(fvec3) Load 37(c3) + 243: 6(float) Load 176(lod) + 244:104(ResType) ImageSparseGather 241 242 50 Lod 243 + 245: 7(fvec4) CompositeExtract 244 1 + Store 12(result) 245 + 246: 22(int) CompositeExtract 244 0 + 247: 7(fvec4) Load 12(result) + 248: 7(fvec4) Load 9(texel) + 249: 7(fvec4) FAdd 248 247 + Store 9(texel) 249 + 250: 56 Load 58(sCubeArray) + 251: 7(fvec4) Load 61(c4) + 252: 6(float) Load 176(lod) + 253:104(ResType) ImageSparseGather 250 251 50 Lod 252 + 254: 7(fvec4) CompositeExtract 253 1 + Store 12(result) 254 + 255: 22(int) CompositeExtract 253 0 + 256: 7(fvec4) Load 12(result) + 257: 7(fvec4) Load 9(texel) + 258: 7(fvec4) FAdd 257 256 + Store 9(texel) 258 + 259: 14 Load 16(s2D) + 260: 18(fvec2) Load 20(c2) + 261: 6(float) Load 176(lod) + 262:104(ResType) ImageSparseGather 259 260 23 Lod ConstOffset 261 71 + 263: 7(fvec4) CompositeExtract 262 1 + Store 12(result) 263 + 264: 22(int) CompositeExtract 262 0 + 265: 7(fvec4) Load 12(result) + 266: 7(fvec4) Load 9(texel) + 267: 7(fvec4) FAdd 266 265 + Store 9(texel) 267 + 268: 31 Load 33(s2DArray) + 269: 35(fvec3) Load 37(c3) + 270: 6(float) Load 176(lod) + 271:104(ResType) ImageSparseGather 268 269 39 Lod ConstOffset 270 78 + 272: 7(fvec4) CompositeExtract 271 1 + Store 12(result) 272 + 273: 22(int) CompositeExtract 271 0 + 274: 7(fvec4) Load 12(result) + 275: 7(fvec4) Load 9(texel) + 276: 7(fvec4) FAdd 275 274 + Store 9(texel) 276 + 277: 14 Load 16(s2D) + 278: 18(fvec2) Load 20(c2) + 279: 6(float) Load 176(lod) + 280:104(ResType) ImageSparseGather 277 278 23 Lod ConstOffsets 279 90 + 281: 7(fvec4) CompositeExtract 280 1 + Store 12(result) 281 + 282: 22(int) CompositeExtract 280 0 + 283: 7(fvec4) Load 12(result) + 284: 7(fvec4) Load 9(texel) + 285: 7(fvec4) FAdd 284 283 + Store 9(texel) 285 + 286: 31 Load 33(s2DArray) + 287: 35(fvec3) Load 37(c3) + 288: 6(float) Load 176(lod) + 289:104(ResType) ImageSparseGather 286 287 39 Lod ConstOffsets 288 90 + 290: 7(fvec4) CompositeExtract 289 1 + Store 12(result) 290 + 291: 22(int) CompositeExtract 289 0 + 292: 7(fvec4) Load 12(result) + 293: 7(fvec4) Load 9(texel) + 294: 7(fvec4) FAdd 293 292 + Store 9(texel) 294 + 297: 7(fvec4) Load 9(texel) + Store 296(fragColor) 297 + Return + FunctionEnd diff --git a/3rdparty/glslang/Test/baseResults/spv.uint.frag.out b/3rdparty/glslang/Test/baseResults/spv.uint.frag.out index e9ba0ce26..9ede2608d 100755 --- a/3rdparty/glslang/Test/baseResults/spv.uint.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.uint.frag.out @@ -1,6 +1,4 @@ spv.uint.frag -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 213 diff --git a/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out b/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out index bc638fdef..184c01db8 100755 --- a/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.variableArrayIndex.frag.out @@ -1,6 +1,4 @@ spv.variableArrayIndex.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 93 diff --git a/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out b/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out index fdfa2b884..814f0139c 100644 --- a/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out +++ b/3rdparty/glslang/Test/baseResults/spv.viewportArray2.tesc.out @@ -1,6 +1,4 @@ spv.viewportArray2.tesc -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 25 diff --git a/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out b/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out index 766685f69..3b3e84767 100644 --- a/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.viewportArray2.vert.out @@ -1,6 +1,4 @@ spv.viewportArray2.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 19 diff --git a/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out b/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out index a5ad88af7..80a6d0afc 100755 --- a/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out +++ b/3rdparty/glslang/Test/baseResults/spv.voidFunction.frag.out @@ -1,6 +1,4 @@ spv.voidFunction.frag -Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 43 diff --git a/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out b/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out index 73dc35ced..415f3b964 100644 --- a/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.while-continue-break.vert.out @@ -1,6 +1,4 @@ spv.while-continue-break.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 41 diff --git a/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out b/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out index 82121dd00..7e5586b69 100755 --- a/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out +++ b/3rdparty/glslang/Test/baseResults/spv.while-simple.vert.out @@ -1,6 +1,4 @@ spv.while-simple.vert -Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. - // Module Version 10000 // Generated by (magic number): 80001 // Id's are bound by 22 diff --git a/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out b/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out index acc2ced1a..b5ba9a5f8 100755 --- a/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out +++ b/3rdparty/glslang/Test/baseResults/tokenPaste.vert.out @@ -1,5 +1,4 @@ tokenPaste.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:38: '##' : unexpected location ERROR: 0:40: '##' : unexpected location; end of replacement list ERROR: 0:49: '##' : combined tokens are too long diff --git a/3rdparty/glslang/Test/baseResults/versionsClean.vert.out b/3rdparty/glslang/Test/baseResults/versionsClean.vert.out index cd9da127b..eb2e07b36 100644 --- a/3rdparty/glslang/Test/baseResults/versionsClean.vert.out +++ b/3rdparty/glslang/Test/baseResults/versionsClean.vert.out @@ -1,6 +1,4 @@ versionsClean.vert -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 420 0:? Sequence 0:40 Function Definition: main( ( global void) diff --git a/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out b/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out index 0d371365c..f11e0114f 100644 --- a/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out +++ b/3rdparty/glslang/Test/baseResults/versionsErrors.vert.out @@ -1,5 +1,4 @@ versionsErrors.vert -Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. WARNING: 0:38: attribute deprecated in version 130; may be removed in future release ERROR: 0:38: 'attribute' : no longer supported in core profile; removed in version 420 ERROR: 0:45: 'discard' : not supported in this stage: vertex diff --git a/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out b/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out index bfc38c035..0487a4f96 100755 --- a/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out +++ b/3rdparty/glslang/Test/baseResults/vulkan.ast.vert.out @@ -1,6 +1,4 @@ vulkan.ast.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - Shader version: 450 0:? Sequence 0:7 Function Definition: main( ( global void) diff --git a/3rdparty/glslang/Test/baseResults/vulkan.comp.out b/3rdparty/glslang/Test/baseResults/vulkan.comp.out index 5eb4c5b48..e56dca48e 100644 --- a/3rdparty/glslang/Test/baseResults/vulkan.comp.out +++ b/3rdparty/glslang/Test/baseResults/vulkan.comp.out @@ -1,5 +1,4 @@ vulkan.comp -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:5: 'local_size' : cannot change previously set size ERROR: 1 compilation errors. No code generated. diff --git a/3rdparty/glslang/Test/baseResults/vulkan.frag.out b/3rdparty/glslang/Test/baseResults/vulkan.frag.out index 27edff9b8..c8e1ed618 100644 --- a/3rdparty/glslang/Test/baseResults/vulkan.frag.out +++ b/3rdparty/glslang/Test/baseResults/vulkan.frag.out @@ -1,5 +1,4 @@ vulkan.frag -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:14: 'sampler2D' : sampler-constructor requires two arguments ERROR: 0:15: 'sampler2D' : sampler-constructor first argument must be a scalar textureXXX type ERROR: 0:16: 'sampler2D' : sampler-constructor first argument must be a scalar textureXXX type @@ -26,9 +25,9 @@ ERROR: 0:60: 'subpassLoadMS' : no matching overloaded function found ERROR: 0:61: 'subpassLoad' : no matching overloaded function found ERROR: 0:63: 'subpassLoadMS' : no matching overloaded function found ERROR: 0:66: 'subroutine' : not allowed when generating SPIR-V -ERROR: 0:66: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan +ERROR: 0:66: 'subroutine' : feature not yet implemented ERROR: 0:67: 'subroutine' : not allowed when generating SPIR-V -ERROR: 0:67: 'uniform' : no qualifiers allowed for function return +ERROR: 0:67: 'subroutine' : feature not yet implemented ERROR: 0:69: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan ERROR: 0:73: 'texture' : no matching overloaded function found ERROR: 0:74: 'imageStore' : no matching overloaded function found diff --git a/3rdparty/glslang/Test/baseResults/vulkan.vert.out b/3rdparty/glslang/Test/baseResults/vulkan.vert.out index 1e7441721..0b2ea5309 100644 --- a/3rdparty/glslang/Test/baseResults/vulkan.vert.out +++ b/3rdparty/glslang/Test/baseResults/vulkan.vert.out @@ -1,5 +1,4 @@ vulkan.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:3: 'subpass input' : not supported in this stage: vertex ERROR: 0:4: 'subpass input' : not supported in this stage: vertex ERROR: 0:5: 'subpass input' : not supported in this stage: vertex @@ -23,7 +22,11 @@ ERROR: 0:32: 'initializer' : can't use with types containing arrays sized with a ERROR: 0:34: '=' : can't use with types containing arrays sized with a specialization constant ERROR: 0:35: '==' : can't use with types containing arrays sized with a specialization constant ERROR: 0:39: 'set' : cannot be used with push_constant -ERROR: 23 compilation errors. No code generated. +ERROR: 0:49: '[]' : only outermost dimension of an array of arrays can be a specialization constant +ERROR: 0:50: '[]' : only outermost dimension of an array of arrays can be a specialization constant +ERROR: 0:51: '[]' : only outermost dimension of an array of arrays can be a specialization constant +ERROR: 0:54: '[]' : only outermost dimension of an array of arrays can be a specialization constant +ERROR: 27 compilation errors. No code generated. SPIR-V is not generated for failed compile or link diff --git a/3rdparty/glslang/Test/cppSimple.vert b/3rdparty/glslang/Test/cppSimple.vert index 198203a69..fdd14221b 100644 --- a/3rdparty/glslang/Test/cppSimple.vert +++ b/3rdparty/glslang/Test/cppSimple.vert @@ -337,6 +337,16 @@ int aoeua = FOOOM; #error \ 376 #error \377 +// ERROR for macro expansion to yield 'defined' +#line 9600 +#define DEF_MAC +#define DEF_DEFINED defined +#if DEF_DEFINED DEF_MAC +#error DEF_DEFINED then +#else +#error DEF_DEFINED else +#endif + #line 10000 #if 1 #else diff --git a/3rdparty/glslang/Test/hlsl.dashI.vert b/3rdparty/glslang/Test/hlsl.dashI.vert new file mode 100644 index 000000000..a432be51e --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.dashI.vert @@ -0,0 +1,13 @@ +// For -Iinc1/path1 -Iinc1/path2 +// bar.h from local directory will define i1, while the ones from inc1/path1 and inc1/path2 will not. +// notHere.h is only in inc1/path1 and inc2/path2, and only inc1/path1 defines p1, p2, and p3 +// parent.h is local again, and defines i4 + +#include "bar.h" +#include "notHere.h" +#include "parent.h" + +float4 main() : SV_Position +{ + return i1 + i4 + p1 + p2 + p3; +} diff --git a/3rdparty/glslang/Test/hlsl.forLoop.frag b/3rdparty/glslang/Test/hlsl.forLoop.frag index 937899670..9cf60ee46 100644 --- a/3rdparty/glslang/Test/hlsl.forLoop.frag +++ b/3rdparty/glslang/Test/hlsl.forLoop.frag @@ -5,9 +5,13 @@ float4 PixelShaderFunction(float4 input) : COLOR0 [unroll] for (; any(input != input); ) {} for (; any(input != input); ) { return -input; } for (--input; any(input != input); input += 2) { return -input; } - for (;;) if (input.x > 2.0) break; - for (;;) if (input.x > 2.0) continue; - float ii; - for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue; - --ii; + for (;;) if (input.x > 2.0) break; + for (;;) if (input.x > 2.0) continue; + float ii; + for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue; + --ii; + for (int first = 0, second = 1; ;) first + second; + for ( int i = 0, count = int(ii); i < count; i++ ); + for (float first = 0, second[2], third; first < second[0]; ++second[1]) first + second[1] + third; + for (--ii, --ii, --ii;;) ii; } diff --git a/3rdparty/glslang/Test/hlsl.pp.vert b/3rdparty/glslang/Test/hlsl.pp.vert new file mode 100644 index 000000000..4b0a45123 --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.pp.vert @@ -0,0 +1,17 @@ +#define A defined(B) + +#if A +int badGlobal1; +#else +int goodGlobal1; +#endif + +#define B + +#if A +int goodGlobal2; +#else +int badGlobal2; +#endif + +void main() {} diff --git a/3rdparty/glslang/Test/hlsl.texture.subvec4.frag b/3rdparty/glslang/Test/hlsl.texture.subvec4.frag new file mode 100644 index 000000000..9e057d575 --- /dev/null +++ b/3rdparty/glslang/Test/hlsl.texture.subvec4.frag @@ -0,0 +1,41 @@ + +Texture2DMS g_tTex2dmsf1; +Texture2DMS g_tTex2dmsf2; +Texture2DMS g_tTex2dmsf3; +Texture2DMS g_tTex2dmsf4; + +Texture2D g_tTex2df1; +Texture2D g_tTex2df2; +Texture2D g_tTex2df3; +Texture2D g_tTex2df4; + +SamplerState g_sSamp; + +float4 main() +{ + uint MipLevel; + uint WidthU; + uint HeightU; + uint ElementsU; + uint DepthU; + uint NumberOfLevelsU; + uint NumberOfSamplesU; + + g_tTex2dmsf1 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); + g_tTex2dmsf2 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); + g_tTex2dmsf3 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); + g_tTex2dmsf4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); + + g_tTex2dmsf1 . Load(int2(1,2), 3); + g_tTex2dmsf2 . Load(int2(1,2), 3); + g_tTex2dmsf3 . Load(int2(1,2), 3); + g_tTex2dmsf4 . Load(int2(1,2), 3); + + g_tTex2df1 . Sample(g_sSamp, float2(.1, .2)); + g_tTex2df2 . Sample(g_sSamp, float2(.1, .2)); + g_tTex2df3 . Sample(g_sSamp, float2(.1, .2)); + g_tTex2df4 . Sample(g_sSamp, float2(.1, .2)); + + return 0; +} + diff --git a/3rdparty/glslang/Test/hlsl.type.half.frag b/3rdparty/glslang/Test/hlsl.type.half.frag index f082039d2..a78afabf9 100644 --- a/3rdparty/glslang/Test/hlsl.type.half.frag +++ b/3rdparty/glslang/Test/hlsl.type.half.frag @@ -7,5 +7,22 @@ float4 main() : SV_Target0 half3 h3 = 3; half4 h4 = 4; - return 0.0; + half1x1 h11; + half1x2 h12; + half1x3 h13; + half1x4 h14; + half2x1 h21; + half2x2 h22 = half2x2(1,2,3,4); + half2x3 h23 = (half2x3)4.9; + half2x4 h24; + half3x1 h31; + half3x2 h32; + half3x3 h33; + half3x4 h34; + half4x1 h41; + half4x2 h42; + half4x3 h43; + half4x4 h44; + + return h23._11 + h4.y + h0; } diff --git a/3rdparty/glslang/Test/hlsl.type.identifier.frag b/3rdparty/glslang/Test/hlsl.type.identifier.frag index 25ba45739..b6e2e895b 100644 --- a/3rdparty/glslang/Test/hlsl.type.identifier.frag +++ b/3rdparty/glslang/Test/hlsl.type.identifier.frag @@ -24,5 +24,7 @@ float4 main() : SV_Target0 float = float + int + uint + min16float + min10float + (bool[0] ? int : float) + fn(float); - return float; + half2x3 half2x3; + + return float + half2x3._11; } diff --git a/3rdparty/glslang/Test/inc1/path1/bar.h b/3rdparty/glslang/Test/inc1/path1/bar.h new file mode 100644 index 000000000..46141dd1b --- /dev/null +++ b/3rdparty/glslang/Test/inc1/path1/bar.h @@ -0,0 +1 @@ +float4 i9991; diff --git a/3rdparty/glslang/Test/inc1/path1/local.h b/3rdparty/glslang/Test/inc1/path1/local.h new file mode 100644 index 000000000..b3aac8e3a --- /dev/null +++ b/3rdparty/glslang/Test/inc1/path1/local.h @@ -0,0 +1 @@ +float4 p2; diff --git a/3rdparty/glslang/Test/inc1/path1/notHere.h b/3rdparty/glslang/Test/inc1/path1/notHere.h new file mode 100644 index 000000000..2e7d56a67 --- /dev/null +++ b/3rdparty/glslang/Test/inc1/path1/notHere.h @@ -0,0 +1,4 @@ +float4 p1; + +#include "local.h" +#include "remote.h" diff --git a/3rdparty/glslang/Test/inc1/path2/bar.h b/3rdparty/glslang/Test/inc1/path2/bar.h new file mode 100644 index 000000000..46141dd1b --- /dev/null +++ b/3rdparty/glslang/Test/inc1/path2/bar.h @@ -0,0 +1 @@ +float4 i9991; diff --git a/3rdparty/glslang/Test/inc1/path2/notHere.h b/3rdparty/glslang/Test/inc1/path2/notHere.h new file mode 100644 index 000000000..63f4ca47c --- /dev/null +++ b/3rdparty/glslang/Test/inc1/path2/notHere.h @@ -0,0 +1 @@ +float4 paoeu1; diff --git a/3rdparty/glslang/Test/inc1/path2/remote.h b/3rdparty/glslang/Test/inc1/path2/remote.h new file mode 100644 index 000000000..c925d27ad --- /dev/null +++ b/3rdparty/glslang/Test/inc1/path2/remote.h @@ -0,0 +1 @@ +float4 p3; diff --git a/3rdparty/glslang/Test/runtests b/3rdparty/glslang/Test/runtests index c3a049b14..945a0f344 100755 --- a/3rdparty/glslang/Test/runtests +++ b/3rdparty/glslang/Test/runtests @@ -116,6 +116,8 @@ $EXE -D -e main -H hlsl.includeNegative.vert > $TARGETDIR/hlsl.includeNegative.v diff -b $BASEDIR/hlsl.includeNegative.vert.out $TARGETDIR/hlsl.includeNegative.vert.out || HASERROR=1 $EXE -l -i include.vert > $TARGETDIR/include.vert.out diff -b $BASEDIR/include.vert.out $TARGETDIR/include.vert.out || HASERROR=1 +$EXE -D -e main -H -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > $TARGETDIR/hlsl.dashI.vert.out +diff -b $BASEDIR/hlsl.dashI.vert.out $TARGETDIR/hlsl.dashI.vert.out || HASERROR=1 # # Final checking diff --git a/3rdparty/glslang/Test/spv.int16.frag b/3rdparty/glslang/Test/spv.int16.frag new file mode 100644 index 000000000..9dd9090c8 --- /dev/null +++ b/3rdparty/glslang/Test/spv.int16.frag @@ -0,0 +1,314 @@ +#version 450 core + +#extension GL_ARB_gpu_shader_int64: enable +#extension GL_AMD_gpu_shader_half_float: enable +#extension GL_AMD_gpu_shader_int16: enable + +layout(binding = 0) uniform Uniforms +{ + uint i; +}; + +// int16/uint16 in block +layout(std140, binding = 1) uniform Block +{ + i16vec3 i16v; + uint16_t u16; +} block; + +// int16/uint16 for input +layout(location = 0) in flat u16vec3 iu16v; +layout(location = 1) in flat int16_t ii16; + +void literal() +{ + const int16_t i16c[3] = + { + 0x111S, // Hex + -2s, // Dec + 0400s, // Oct + }; + + const uint16_t u16c[] = + { + 0xFFFFus, // Hex + 65535US, // Dec + 0177777us, // Oct + }; + + uint16_t u16 = i16c[i] + u16c[i]; +} + +void operators() +{ + u16vec3 u16v; + int16_t i16; + uint16_t u16; + int i; + uint u; + bool b; + + // Unary + u16v++; + i16--; + ++i16; + --u16v; + + u16v = ~u16v; + + i16 = +i16; + u16v = -u16v; + + // Arithmetic + u16 += i16; + u16v -= u16v; + i16 *= i16; + u16v /= u16v; + u16v %= i16; + + u16v = u16v + u16v; + u16 = i16 - u16; + u16v = u16v * i16; + i16 = i16 * i16; + i16 = i16 % i16; + + // Shift + u16v <<= i; + i16 >>= u16v.y; + + i16 = i16 << u16v.z; + u16v = u16v << i16; + + // Relational + b = (u16v.x != i16); + b = (i16 == u16v.x); + b = (u16v.x > u16v.y); + b = (i16 < u); + b = (u16v.y >= u16v.x); + b = (i16 <= i); + + // Bitwise + u16v |= i16; + u16 = i16 | u16; + i16 &= i16; + u16v = u16v & u16v; + u16v ^= i16; + u16v = u16v ^ i16; +} + +void typeCast() +{ + bvec2 bv; + ivec2 iv; + uvec2 uv; + vec2 fv; + dvec2 dv; + + f16vec2 f16v; + i64vec2 i64v; + u64vec2 u64v; + i16vec2 i16v; + u16vec2 u16v; + + i16v = i16vec2(bv); // bool -> int16 + u16v = u16vec2(bv); // bool -> uint16 + bv = bvec2(i16v); // int16 -> bool + bv = bvec2(u16v); // uint16 -> bool + + i16v = i16vec2(iv); // int -> int16 + u16v = u16vec2(iv); // int -> uint16 + iv = i16v; // int16 -> int + iv = ivec2(u16v); // uint16 -> int + + i16v = i16vec2(uv); // uint -> int16 + u16v = u16vec2(uv); // uint -> uint16 + uv = i16v; // int16 -> uint + uv = u16v; // uint16 -> uint + + i16v = i16vec2(fv); // float -> int16 + u16v = u16vec2(fv); // float -> uint16 + fv = i16v; // int16 -> float + fv = u16v; // uint16 -> float + + i16v = i16vec2(dv); // double -> int16 + u16v = u16vec2(dv); // double -> uint16 + dv = i16v; // int16 -> double + dv = u16v; // uint16 -> double + + i16v = i16vec2(f16v); // float16 -> int16 + u16v = u16vec2(f16v); // float16 -> uint16 + f16v = i16v; // int16 -> float16 + f16v = u16v; // uint16 -> float16 + + i16v = i16vec2(i64v); // int64 -> int16 + u16v = u16vec2(i64v); // int64 -> uint16 + i64v = i16v; // int16 -> int64 + i64v = i64vec2(u16v); // uint16 -> int64 + + i16v = i16vec2(u64v); // uint64 -> int16 + u16v = u16vec2(u64v); // uint64 -> uint16 + u64v = i16v; // int16 -> uint64 + u64v = u16v; // uint16 -> uint64 + + i16v = i16vec2(u16v); // uint16 -> int16 + u16v = i16v; // int16 -> uint16 +} + +void builtinFuncs() +{ + i16vec2 i16v; + u16vec3 u16v; + f16vec3 f16v; + bvec3 bv; + + int16_t i16; + uint16_t u16; + + // abs() + i16v = abs(i16v); + + // sign() + i16v = sign(i16v); + + // min() + i16v = min(i16v, i16); + i16v = min(i16v, i16vec2(-1s)); + u16v = min(u16v, u16); + u16v = min(u16v, u16vec3(0us)); + + // max() + i16v = max(i16v, i16); + i16v = max(i16v, i16vec2(-1s)); + u16v = max(u16v, u16); + u16v = max(u16v, u16vec3(0us)); + + // clamp() + i16v = clamp(i16v, -i16, i16); + i16v = clamp(i16v, -i16v, i16v); + u16v = clamp(u16v, -u16, u16); + u16v = clamp(u16v, -u16v, u16v); + + // mix() + i16 = mix(i16v.x, i16v.y, true); + i16v = mix(i16vec2(i16), i16vec2(-i16), bvec2(false)); + u16 = mix(u16v.x, u16v.y, true); + u16v = mix(u16vec3(u16), u16vec3(-u16), bvec3(false)); + + // frexp() + i16vec3 exp; + f16v = frexp(f16v, exp); + + // ldexp() + f16v = ldexp(f16v, exp); + + // float16BitsToInt16() + i16v = float16BitsToInt16(f16v.xy); + + // float16BitsToUint16() + u16v.x = float16BitsToUint16(f16v.z); + + // int16BitsToFloat16() + f16v.xy = int16BitsToFloat16(i16v); + + // uint16BitsToFloat16() + f16v = uint16BitsToFloat16(u16v); + + // packInt2x16() + int packi = packInt2x16(i16v); + + // unpackInt2x16() + i16v = unpackInt2x16(packi); + + // packUint2x16() + uint packu = packUint2x16(u16v.xy); + + // unpackUint2x16() + u16v.xy = unpackUint2x16(packu); + + // packInt4x16() + int64_t packi64 = packInt4x16(i16vec4(i16)); + + // unpackInt4x16() + i16v = unpackInt4x16(packi64).xy; + + // packUint4x16() + uint64_t packu64 = packUint4x16(u16vec4(u16)); + + // unpackUint4x16() + u16v = unpackUint4x16(packu64).xyz; + + // lessThan() + bv = lessThan(u16v, u16vec3(u16)); + bv.xy = lessThan(i16v, i16vec2(i16)); + + // lessThanEqual() + bv = lessThanEqual(u16v, u16vec3(u16)); + bv.xy = lessThanEqual(i16v, i16vec2(i16)); + + // greaterThan() + bv = greaterThan(u16v, u16vec3(u16)); + bv.xy = greaterThan(i16v, i16vec2(i16)); + + // greaterThanEqual() + bv = greaterThanEqual(u16v, u16vec3(u16)); + bv.xy = greaterThanEqual(i16v, i16vec2(i16)); + + // equal() + bv = equal(u16v, u16vec3(u16)); + bv.xy = equal(i16v, i16vec2(i16)); + + // notEqual() + bv = notEqual(u16v, u16vec3(u16)); + bv.xy = notEqual(i16v, i16vec2(i16)); +} + +// Type conversion for specialization constant +layout(constant_id = 100) const int64_t si64 = -10L; +layout(constant_id = 101) const uint64_t su64 = 20UL; +layout(constant_id = 102) const int si = -5; +layout(constant_id = 103) const uint su = 4; +layout(constant_id = 104) const bool sb = true; +layout(constant_id = 105) const int16_t si16 = -5S; +layout(constant_id = 106) const uint16_t su16 = 4US; + +// bool <-> int16/uint16 +const bool i16_to_b = bool(si16); +const bool u16_to_b = bool(su16); +const int16_t b_to_i16 = int16_t(sb); +const uint16_t b_to_u16 = uint16_t(sb); + +// int <-> int16/uint16 +const int i16_to_i = int(si16); +const int u16_to_i = int(su16); +const int16_t i_to_i16 = int16_t(si); +const uint16_t i_to_u16 = uint16_t(si); + +// uint <-> int16/uint16 +const uint i16_to_u = uint(si16); +const uint u16_to_u = uint(su16); +const int16_t u_to_i16 = int16_t(su); +const uint16_t u_to_u16 = uint16_t(su); + +// int64 <-> int16/uint16 +const int64_t i16_to_i64 = int64_t(si16); +const int64_t u16_to_i64 = int64_t(su16); +const int16_t i64_to_i16 = int16_t(si64); +const uint16_t i64_to_u16 = uint16_t(si64); + +// uint64 <-> int16/uint16 +const uint64_t i16_to_u64 = uint64_t(si16); +const uint64_t u16_to_u64 = uint64_t(su16); +const int16_t u64_to_i16 = int16_t(su64); +const uint16_t u64_to_u16 = uint16_t(su64); + +// int16 <-> uint16 +const uint16_t i16_to_u16 = uint16_t(si16); +const int16_t u16_to_i16 = int16_t(su16); + +void main() +{ + literal(); + operators(); + typeCast(); + builtinFuncs(); +} diff --git a/3rdparty/glslang/Test/spv.textureGatherBiasLod.frag b/3rdparty/glslang/Test/spv.textureGatherBiasLod.frag new file mode 100644 index 000000000..35bd035aa --- /dev/null +++ b/3rdparty/glslang/Test/spv.textureGatherBiasLod.frag @@ -0,0 +1,88 @@ +#version 450 core + +#extension GL_ARB_sparse_texture2: enable +#extension GL_AMD_texture_gather_bias_lod: enable + +uniform sampler2D s2D; +uniform sampler2DArray s2DArray; +uniform samplerCube sCube; +uniform samplerCubeArray sCubeArray; + +in vec2 c2; +in vec3 c3; +in vec4 c4; + +in float lod; +in float bias; + +out vec4 fragColor; + +void main() +{ + vec4 texel = vec4(0.0); + vec4 result = vec4(0.0); + + const ivec2 offsets[4] = { ivec2(0, 0), ivec2(0, 1), ivec2(1, 0), ivec2(1, 1) }; + + texel += textureGather(s2D, c2, 0, bias); + texel += textureGather(s2DArray, c3, 1, bias); + texel += textureGather(sCube, c3, 2, bias); + texel += textureGather(sCubeArray, c4, 3, bias); + + texel += textureGatherOffset(s2D, c2, offsets[0], 0, bias); + texel += textureGatherOffset(s2DArray, c3, offsets[1], 1, bias); + + texel += textureGatherOffsets(s2D, c2, offsets, 0, bias); + texel += textureGatherOffsets(s2DArray, c3, offsets, 1, bias); + + sparseTextureGatherARB(s2D, c2, result, 0, bias); + texel += result; + sparseTextureGatherARB(s2DArray, c3, result, 1, bias); + texel += result; + sparseTextureGatherARB(sCube, c3, result, 2, bias); + texel += result; + sparseTextureGatherARB(sCubeArray, c4, result, 2, bias); + texel += result; + + sparseTextureGatherOffsetARB(s2D, c2, offsets[0], result, 0, bias); + texel += result; + sparseTextureGatherOffsetARB(s2DArray, c3, offsets[1], result, 1, bias); + texel += result; + + sparseTextureGatherOffsetsARB(s2D, c2, offsets, result, 0, bias); + texel += result; + sparseTextureGatherOffsetsARB(s2DArray, c3, offsets, result, 1, bias); + texel += result; + + texel += textureGatherLodAMD(s2D, c2, lod); + texel += textureGatherLodAMD(s2DArray, c3, lod, 1); + texel += textureGatherLodAMD(sCube, c3, lod, 2); + texel += textureGatherLodAMD(sCubeArray, c4, lod, 3); + + texel += textureGatherLodOffsetAMD(s2D, c2, lod, offsets[0]); + texel += textureGatherLodOffsetAMD(s2DArray, c3, lod, offsets[1], 1); + + texel += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets); + texel += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 1); + + sparseTextureGatherLodAMD(s2D, c2, lod, result); + texel += result; + sparseTextureGatherLodAMD(s2DArray, c3, lod, result, 1); + texel += result; + sparseTextureGatherLodAMD(sCube, c3, lod, result, 2); + texel += result; + sparseTextureGatherLodAMD(sCubeArray, c4, lod, result, 2); + texel += result; + + sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offsets[0], result); + texel += result; + sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offsets[1], result, 1); + texel += result; + + sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, result); + texel += result; + sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, result, 1); + texel += result; + + fragColor = texel; +} diff --git a/3rdparty/glslang/Test/vulkan.vert b/3rdparty/glslang/Test/vulkan.vert index b234c75bb..a6dc8ad00 100644 --- a/3rdparty/glslang/Test/vulkan.vert +++ b/3rdparty/glslang/Test/vulkan.vert @@ -45,3 +45,16 @@ layout(set = 1, push_constant) uniform badpc { int a; } badpcI; // ERROR, no de #if VULKAN != 100 #error VULKAN should be 100 #endif + +float AofA0[2][arraySize]; // ERROR, only outer dimension +float AofA1[arraySize][arraySize]; // ERROR, only outer dimension +float AofA2[arraySize][2 + arraySize]; // ERROR, only outer dimension +float AofA3[arraySize][2]; + +out ban1 { // ERROR, only outer dimension + float f; +} bai1[2][arraySize]; + +out ban2 { + float f; +} bai2[arraySize][2]; diff --git a/3rdparty/glslang/glslang/CMakeLists.txt b/3rdparty/glslang/glslang/CMakeLists.txt index 8b9c2ad26..7c9476d8d 100644 --- a/3rdparty/glslang/glslang/CMakeLists.txt +++ b/3rdparty/glslang/glslang/CMakeLists.txt @@ -31,9 +31,7 @@ set(SOURCES MachineIndependent/preprocessor/Pp.cpp MachineIndependent/preprocessor/PpAtom.cpp MachineIndependent/preprocessor/PpContext.cpp - MachineIndependent/preprocessor/PpMemory.cpp MachineIndependent/preprocessor/PpScanner.cpp - MachineIndependent/preprocessor/PpSymbols.cpp MachineIndependent/preprocessor/PpTokens.cpp MachineIndependent/propagateNoContraction.cpp GenericCodeGen/CodeGen.cpp diff --git a/3rdparty/glslang/glslang/Include/BaseTypes.h b/3rdparty/glslang/glslang/Include/BaseTypes.h index abac5122d..46392d050 100644 --- a/3rdparty/glslang/glslang/Include/BaseTypes.h +++ b/3rdparty/glslang/glslang/Include/BaseTypes.h @@ -53,6 +53,10 @@ enum TBasicType { EbtUint, EbtInt64, EbtUint64, +#ifdef AMD_EXTENSIONS + EbtInt16, + EbtUint16, +#endif EbtBool, EbtAtomicUint, EbtSampler, diff --git a/3rdparty/glslang/glslang/Include/Types.h b/3rdparty/glslang/glslang/Include/Types.h index 5eac73e0d..16d893208 100644 --- a/3rdparty/glslang/glslang/Include/Types.h +++ b/3rdparty/glslang/glslang/Include/Types.h @@ -190,8 +190,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, case EbtFloat: break; case EbtInt: s.append("i"); break; case EbtUint: s.append("u"); break; - case EbtInt64: s.append("i64"); break; - case EbtUint64: s.append("u64"); break; default: break; // some compilers want this } if (image) { @@ -1448,6 +1446,10 @@ public: case EbtUint: case EbtInt64: case EbtUint64: +#ifdef AMD_EXTENSIONS + case EbtInt16: + case EbtUint16: +#endif case EbtBool: return true; default: @@ -1460,7 +1462,7 @@ public: virtual bool containsSpecializationSize() const { - return contains([](const TType* t) { return t->isArray() && t->arraySizes->containsNode(); } ); + return contains([](const TType* t) { return t->isArray() && t->arraySizes->isOuterSpecialization(); } ); } // Array editing methods. Array descriptors can be shared across @@ -1531,6 +1533,10 @@ public: case EbtUint: return "uint"; case EbtInt64: return "int64_t"; case EbtUint64: return "uint64_t"; +#ifdef AMD_EXTENSIONS + case EbtInt16: return "int16_t"; + case EbtUint16: return "uint16_t"; +#endif case EbtBool: return "bool"; case EbtAtomicUint: return "atomic_uint"; case EbtSampler: return "sampler/image"; diff --git a/3rdparty/glslang/glslang/Include/arrays.h b/3rdparty/glslang/glslang/Include/arrays.h index b6b5e479d..bc21c6c5e 100644 --- a/3rdparty/glslang/glslang/Include/arrays.h +++ b/3rdparty/glslang/glslang/Include/arrays.h @@ -264,6 +264,20 @@ struct TArraySizes { return false; } + bool isInnerSpecialization() const + { + for (int d = 1; d < sizes.size(); ++d) { + if (sizes.getDimNode(d) != nullptr) + return true; + } + + return false; + } + bool isOuterSpecialization() + { + return sizes.getDimNode(0) != nullptr; + } + bool isImplicit() const { return getOuterSize() == UnsizedArraySize || isInnerImplicit(); } void addOuterSizes(const TArraySizes& s) { sizes.push_front(s.sizes); } void dereference() { sizes.pop_front(); } @@ -288,18 +302,6 @@ struct TArraySizes { return true; } - // Returns true if any of the dimensions of the array is sized with a node - // instead of a front-end compile-time constant. - bool containsNode() - { - for (int d = 0; d < sizes.size(); ++d) { - if (sizes.getDimNode(d) != nullptr) - return true; - } - - return false; - } - bool operator==(const TArraySizes& rhs) { return sizes == rhs.sizes; } bool operator!=(const TArraySizes& rhs) { return sizes != rhs.sizes; } diff --git a/3rdparty/glslang/glslang/Include/intermediate.h b/3rdparty/glslang/glslang/Include/intermediate.h index 5115db9d5..98cc5546e 100644 --- a/3rdparty/glslang/glslang/Include/intermediate.h +++ b/3rdparty/glslang/glslang/Include/intermediate.h @@ -141,6 +141,42 @@ enum TOperator { EOpConvFloat16ToDouble, EOpConvFloat16ToInt64, EOpConvFloat16ToUint64, + + EOpConvBoolToInt16, + EOpConvIntToInt16, + EOpConvUintToInt16, + EOpConvFloatToInt16, + EOpConvDoubleToInt16, + EOpConvFloat16ToInt16, + EOpConvInt64ToInt16, + EOpConvUint64ToInt16, + EOpConvUint16ToInt16, + EOpConvInt16ToBool, + EOpConvInt16ToInt, + EOpConvInt16ToUint, + EOpConvInt16ToFloat, + EOpConvInt16ToDouble, + EOpConvInt16ToFloat16, + EOpConvInt16ToInt64, + EOpConvInt16ToUint64, + + EOpConvBoolToUint16, + EOpConvIntToUint16, + EOpConvUintToUint16, + EOpConvFloatToUint16, + EOpConvDoubleToUint16, + EOpConvFloat16ToUint16, + EOpConvInt64ToUint16, + EOpConvUint64ToUint16, + EOpConvInt16ToUint16, + EOpConvUint16ToBool, + EOpConvUint16ToInt, + EOpConvUint16ToUint, + EOpConvUint16ToFloat, + EOpConvUint16ToDouble, + EOpConvUint16ToFloat16, + EOpConvUint16ToInt64, + EOpConvUint16ToUint64, #endif // @@ -244,6 +280,12 @@ enum TOperator { EOpDoubleBitsToUint64, EOpInt64BitsToDouble, EOpUint64BitsToDouble, +#ifdef AMD_EXTENSIONS + EOpFloat16BitsToInt16, + EOpFloat16BitsToUint16, + EOpInt16BitsToFloat16, + EOpUint16BitsToFloat16, +#endif EOpPackSnorm2x16, EOpUnpackSnorm2x16, EOpPackUnorm2x16, @@ -263,6 +305,14 @@ enum TOperator { #ifdef AMD_EXTENSIONS EOpPackFloat2x16, EOpUnpackFloat2x16, + EOpPackInt2x16, + EOpUnpackInt2x16, + EOpPackUint2x16, + EOpUnpackUint2x16, + EOpPackInt4x16, + EOpUnpackInt4x16, + EOpPackUint4x16, + EOpUnpackUint4x16, #endif EOpLength, @@ -394,15 +444,27 @@ enum TOperator { EOpConstructUint, EOpConstructInt64, EOpConstructUint64, +#ifdef AMD_EXTENSIONS + EOpConstructInt16, + EOpConstructUint16, +#endif EOpConstructBool, EOpConstructFloat, EOpConstructDouble, +#ifdef AMD_EXTENSIONS + EOpConstructFloat16, +#endif EOpConstructVec2, EOpConstructVec3, EOpConstructVec4, EOpConstructDVec2, EOpConstructDVec3, EOpConstructDVec4, +#ifdef AMD_EXTENSIONS + EOpConstructF16Vec2, + EOpConstructF16Vec3, + EOpConstructF16Vec4, +#endif EOpConstructBVec2, EOpConstructBVec3, EOpConstructBVec4, @@ -418,6 +480,14 @@ enum TOperator { EOpConstructU64Vec2, EOpConstructU64Vec3, EOpConstructU64Vec4, +#ifdef AMD_EXTENSIONS + EOpConstructI16Vec2, + EOpConstructI16Vec3, + EOpConstructI16Vec4, + EOpConstructU16Vec2, + EOpConstructU16Vec3, + EOpConstructU16Vec4, +#endif EOpConstructMat2x2, EOpConstructMat2x3, EOpConstructMat2x4, @@ -464,10 +534,6 @@ enum TOperator { EOpConstructBMat4x3, EOpConstructBMat4x4, #ifdef AMD_EXTENSIONS - EOpConstructFloat16, - EOpConstructF16Vec2, - EOpConstructF16Vec3, - EOpConstructF16Vec4, EOpConstructF16Mat2x2, EOpConstructF16Mat2x3, EOpConstructF16Mat2x4, @@ -567,6 +633,11 @@ enum TOperator { EOpTextureOffsetClamp, EOpTextureGradClamp, EOpTextureGradOffsetClamp, +#ifdef AMD_EXTENSIONS + EOpTextureGatherLod, + EOpTextureGatherLodOffset, + EOpTextureGatherLodOffsets, +#endif EOpSparseTextureGuardBegin, @@ -586,6 +657,11 @@ enum TOperator { EOpSparseTextureOffsetClamp, EOpSparseTextureGradClamp, EOpSparseTextureGradOffsetClamp, +#ifdef AMD_EXTENSIONS + EOpSparseTextureGatherLod, + EOpSparseTextureGatherLodOffset, + EOpSparseTextureGatherLodOffsets, +#endif EOpSparseTextureGuardEnd, EOpSamplingGuardEnd, @@ -1075,6 +1151,25 @@ public: cracked.gather = true; cracked.offsets = true; break; +#ifdef AMD_EXTENSIONS + case EOpTextureGatherLod: + case EOpSparseTextureGatherLod: + cracked.gather = true; + cracked.lod = true; + break; + case EOpTextureGatherLodOffset: + case EOpSparseTextureGatherLodOffset: + cracked.gather = true; + cracked.offset = true; + cracked.lod = true; + break; + case EOpTextureGatherLodOffsets: + case EOpSparseTextureGatherLodOffsets: + cracked.gather = true; + cracked.offsets = true; + cracked.lod = true; + break; +#endif case EOpSubpassLoad: case EOpSubpassLoadMS: cracked.subpass = true; diff --git a/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp b/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp index fff8fd26d..625b8e940 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Constant.cpp @@ -193,7 +193,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right case EbtUint: if (rightUnionArray[i] == 0) { - newConstArray[i].setUConst(0xFFFFFFFF); + newConstArray[i].setUConst(0xFFFFFFFFu); } else newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst()); break; @@ -213,6 +213,23 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right } else newConstArray[i].setU64Const(leftUnionArray[i].getU64Const() / rightUnionArray[i].getU64Const()); break; +#ifdef AMD_EXTENSIONS + case EbtInt16: + if (rightUnionArray[i] == 0) + newConstArray[i].setIConst(0x7FFF); + else if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == (int)0x8000) + newConstArray[i].setIConst(0x8000); + else + newConstArray[i].setIConst(leftUnionArray[i].getIConst() / rightUnionArray[i].getIConst()); + break; + + case EbtUint16: + if (rightUnionArray[i] == 0) { + newConstArray[i].setUConst(0xFFFFu); + } else + newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst()); + break; +#endif default: return 0; } @@ -457,10 +474,16 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtFloat16: #endif case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break; +#ifdef AMD_EXTENSIONS + case EbtInt16: +#endif case EbtInt: newConstArray[i].setIConst(-unionArray[i].getIConst()); break; +#ifdef AMD_EXTENSIONS + case EbtUint16: +#endif case EbtUint: newConstArray[i].setUConst(static_cast(-static_cast(unionArray[i].getUConst()))); break; case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break; - case EbtUint64: newConstArray[i].setU64Const(static_cast(-static_cast(unionArray[i].getU64Const()))); break; + case EbtUint64: newConstArray[i].setU64Const(static_cast(-static_cast(unionArray[i].getU64Const()))); break; default: return 0; } @@ -610,6 +633,14 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpUintBitsToFloat: case EOpDoubleBitsToInt64: case EOpDoubleBitsToUint64: + case EOpInt64BitsToDouble: + case EOpUint64BitsToDouble: +#ifdef AMD_EXTENSIONS + case EOpFloat16BitsToInt16: + case EOpFloat16BitsToUint16: + case EOpInt16BitsToFloat16: + case EOpUint16BitsToFloat16: +#endif default: return 0; @@ -702,6 +733,9 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) #endif children[0]->getAsTyped()->getBasicType() == EbtDouble; bool isSigned = children[0]->getAsTyped()->getBasicType() == EbtInt || +#ifdef AMD_EXTENSIONS + children[0]->getAsTyped()->getBasicType() == EbtInt16 || +#endif children[0]->getAsTyped()->getBasicType() == EbtInt64; bool isInt64 = children[0]->getAsTyped()->getBasicType() == EbtInt64 || children[0]->getAsTyped()->getBasicType() == EbtUint64; diff --git a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp index 0771c86a5..b1e510b5a 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp @@ -85,8 +85,6 @@ TBuiltIns::TBuiltIns() prefixes[EbtFloat] = ""; prefixes[EbtInt] = "i"; prefixes[EbtUint] = "u"; - prefixes[EbtInt64] = "i64"; - prefixes[EbtUint64] = "u64"; postfixes[2] = "2"; postfixes[3] = "3"; postfixes[4] = "4"; @@ -2612,6 +2610,157 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + + // GL_AMD_gpu_shader_int16 + if (profile != EEsProfile && version >= 450) { + commonBuiltins.append( + "int16_t abs(int16_t);" + "i16vec2 abs(i16vec2);" + "i16vec3 abs(i16vec3);" + "i16vec4 abs(i16vec4);" + + "int16_t sign(int16_t);" + "i16vec2 sign(i16vec2);" + "i16vec3 sign(i16vec3);" + "i16vec4 sign(i16vec4);" + + "int16_t min(int16_t, int16_t);" + "i16vec2 min(i16vec2, int16_t);" + "i16vec3 min(i16vec3, int16_t);" + "i16vec4 min(i16vec4, int16_t);" + "i16vec2 min(i16vec2, i16vec2);" + "i16vec3 min(i16vec3, i16vec3);" + "i16vec4 min(i16vec4, i16vec4);" + "uint16_t min(uint16_t, uint16_t);" + "u16vec2 min(u16vec2, uint16_t);" + "u16vec3 min(u16vec3, uint16_t);" + "u16vec4 min(u16vec4, uint16_t);" + "u16vec2 min(u16vec2, u16vec2);" + "u16vec3 min(u16vec3, u16vec3);" + "u16vec4 min(u16vec4, u16vec4);" + + "int16_t max(int16_t, int16_t);" + "i16vec2 max(i16vec2, int16_t);" + "i16vec3 max(i16vec3, int16_t);" + "i16vec4 max(i16vec4, int16_t);" + "i16vec2 max(i16vec2, i16vec2);" + "i16vec3 max(i16vec3, i16vec3);" + "i16vec4 max(i16vec4, i16vec4);" + "uint16_t max(uint16_t, uint16_t);" + "u16vec2 max(u16vec2, uint16_t);" + "u16vec3 max(u16vec3, uint16_t);" + "u16vec4 max(u16vec4, uint16_t);" + "u16vec2 max(u16vec2, u16vec2);" + "u16vec3 max(u16vec3, u16vec3);" + "u16vec4 max(u16vec4, u16vec4);" + + "int16_t clamp(int16_t, int16_t, int16_t);" + "i16vec2 clamp(i16vec2, int16_t, int16_t);" + "i16vec3 clamp(i16vec3, int16_t, int16_t);" + "i16vec4 clamp(i16vec4, int16_t, int16_t);" + "i16vec2 clamp(i16vec2, i16vec2, i16vec2);" + "i16vec3 clamp(i16vec3, i16vec3, i16vec3);" + "i16vec4 clamp(i16vec4, i16vec4, i16vec4);" + "uint16_t clamp(uint16_t, uint16_t, uint16_t);" + "u16vec2 clamp(u16vec2, uint16_t, uint16_t);" + "u16vec3 clamp(u16vec3, uint16_t, uint16_t);" + "u16vec4 clamp(u16vec4, uint16_t, uint16_t);" + "u16vec2 clamp(u16vec2, u16vec2, u16vec2);" + "u16vec3 clamp(u16vec3, u16vec3, u16vec3);" + "u16vec4 clamp(u16vec4, u16vec4, u16vec4);" + + "int16_t mix(int16_t, int16_t, bool);" + "i16vec2 mix(i16vec2, i16vec2, bvec2);" + "i16vec3 mix(i16vec3, i16vec3, bvec3);" + "i16vec4 mix(i16vec4, i16vec4, bvec4);" + "uint16_t mix(uint16_t, uint16_t, bool);" + "u16vec2 mix(u16vec2, u16vec2, bvec2);" + "u16vec3 mix(u16vec3, u16vec3, bvec3);" + "u16vec4 mix(u16vec4, u16vec4, bvec4);" + + "float16_t frexp(float16_t, out int16_t);" + "f16vec2 frexp(f16vec2, out i16vec2);" + "f16vec3 frexp(f16vec3, out i16vec3);" + "f16vec4 frexp(f16vec4, out i16vec4);" + + "float16_t ldexp(float16_t, int16_t);" + "f16vec2 ldexp(f16vec2, i16vec2);" + "f16vec3 ldexp(f16vec3, i16vec3);" + "f16vec4 ldexp(f16vec4, i16vec4);" + + "int16_t float16BitsToInt16(float16_t);" + "i16vec2 float16BitsToInt16(f16vec2);" + "i16vec3 float16BitsToInt16(f16vec3);" + "i16vec4 float16BitsToInt16(f16vec4);" + + "uint16_t float16BitsToUint16(float16_t);" + "u16vec2 float16BitsToUint16(f16vec2);" + "u16vec3 float16BitsToUint16(f16vec3);" + "u16vec4 float16BitsToUint16(f16vec4);" + + "float16_t int16BitsToFloat16(int16_t);" + "f16vec2 int16BitsToFloat16(i16vec2);" + "f16vec3 int16BitsToFloat16(i16vec3);" + "f16vec4 int16BitsToFloat16(i16vec4);" + + "float16_t uint16BitsToFloat16(uint16_t);" + "f16vec2 uint16BitsToFloat16(u16vec2);" + "f16vec3 uint16BitsToFloat16(u16vec3);" + "f16vec4 uint16BitsToFloat16(u16vec4);" + + "int packInt2x16(i16vec2);" + "uint packUint2x16(u16vec2);" + "int64_t packInt4x16(i16vec4);" + "uint64_t packUint4x16(u16vec4);" + "i16vec2 unpackInt2x16(int);" + "u16vec2 unpackUint2x16(uint);" + "i16vec4 unpackInt4x16(int64_t);" + "u16vec4 unpackUint4x16(uint64_t);" + + "bvec2 lessThan(i16vec2, i16vec2);" + "bvec3 lessThan(i16vec3, i16vec3);" + "bvec4 lessThan(i16vec4, i16vec4);" + "bvec2 lessThan(u16vec2, u16vec2);" + "bvec3 lessThan(u16vec3, u16vec3);" + "bvec4 lessThan(u16vec4, u16vec4);" + + "bvec2 lessThanEqual(i16vec2, i16vec2);" + "bvec3 lessThanEqual(i16vec3, i16vec3);" + "bvec4 lessThanEqual(i16vec4, i16vec4);" + "bvec2 lessThanEqual(u16vec2, u16vec2);" + "bvec3 lessThanEqual(u16vec3, u16vec3);" + "bvec4 lessThanEqual(u16vec4, u16vec4);" + + "bvec2 greaterThan(i16vec2, i16vec2);" + "bvec3 greaterThan(i16vec3, i16vec3);" + "bvec4 greaterThan(i16vec4, i16vec4);" + "bvec2 greaterThan(u16vec2, u16vec2);" + "bvec3 greaterThan(u16vec3, u16vec3);" + "bvec4 greaterThan(u16vec4, u16vec4);" + + "bvec2 greaterThanEqual(i16vec2, i16vec2);" + "bvec3 greaterThanEqual(i16vec3, i16vec3);" + "bvec4 greaterThanEqual(i16vec4, i16vec4);" + "bvec2 greaterThanEqual(u16vec2, u16vec2);" + "bvec3 greaterThanEqual(u16vec3, u16vec3);" + "bvec4 greaterThanEqual(u16vec4, u16vec4);" + + "bvec2 equal(i16vec2, i16vec2);" + "bvec3 equal(i16vec3, i16vec3);" + "bvec4 equal(i16vec4, i16vec4);" + "bvec2 equal(u16vec2, u16vec2);" + "bvec3 equal(u16vec3, u16vec3);" + "bvec4 equal(u16vec4, u16vec4);" + + "bvec2 notEqual(i16vec2, i16vec2);" + "bvec3 notEqual(i16vec3, i16vec3);" + "bvec4 notEqual(i16vec4, i16vec4);" + "bvec2 notEqual(u16vec2, u16vec2);" + "bvec3 notEqual(u16vec3, u16vec3);" + "bvec4 notEqual(u16vec4, u16vec4);" + + "\n"); + } #endif //============================================================================ @@ -3844,6 +3993,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c else { addSamplingFunctions(sampler, typeName, version, profile); addGatherFunctions(sampler, typeName, version, profile); + if (spvVersion.vulkan > 0 && sampler.dim == EsdBuffer && sampler.isCombined()) { // Vulkan wants a textureBuffer to allow texelFetch() -- // a sampled image with no sampler. @@ -4349,6 +4499,7 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, in default: break; } + if (sparse) s.append("ARB"); s.append("("); @@ -4388,6 +4539,116 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, in } } } + +#ifdef AMD_EXTENSIONS + if (sampler.dim == EsdRect || sampler.shadow) + return; + + if (profile == EEsProfile || version < 450) + return; + + for (int bias = 0; bias < 2; ++bias) { // loop over presence of bias argument + + for (int lod = 0; lod < 2; ++lod) { // loop over presence of lod argument + + if ((lod && bias) || (lod == 0 && bias == 0)) + continue; + + for (int offset = 0; offset < 3; ++offset) { // loop over three forms of offset in the call name: none, Offset, and Offsets + + for (int comp = 0; comp < 2; ++comp) { // loop over presence of comp argument + + if (comp == 0 && bias) + continue; + + if (offset > 0 && sampler.dim == EsdCube) + continue; + + for (int sparse = 0; sparse <= 1; ++sparse) { // loop over "bool" sparse or not + if (sparse && (profile == EEsProfile || version < 450)) + continue; + + TString s; + + // return type + if (sparse) + s.append("int "); + else { + s.append(prefixes[sampler.type]); + s.append("vec4 "); + } + + // name + if (sparse) + s.append("sparseTextureGather"); + else + s.append("textureGather"); + + if (lod) + s.append("Lod"); + + switch (offset) { + case 1: + s.append("Offset"); + break; + case 2: + s.append("Offsets"); + default: + break; + } + + if (lod) + s.append("AMD"); + else if (sparse) + s.append("ARB"); + + s.append("("); + + // sampler type argument + s.append(typeName); + + // P coordinate argument + s.append(",vec"); + int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0); + s.append(postfixes[totalDims]); + + // lod argument + if (lod) + s.append(",float"); + + // offset argument + if (offset > 0) { + s.append(",ivec2"); + if (offset == 2) + s.append("[4]"); + } + + // texel out (for sparse texture) + if (sparse) { + s.append(",out "); + s.append(prefixes[sampler.type]); + s.append("vec4 "); + } + + // comp argument + if (comp) + s.append(",int"); + + // bias argument + if (bias) + s.append(",float"); + + s.append(");\n"); + if (bias) + stageBuiltins[EShLangFragment].append(s); + else + commonBuiltins.append(s); + } + } + } + } + } +#endif } // @@ -5366,6 +5627,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_BaryCoordSmoothSampleAMD", EbvBaryCoordSmoothSample, symbolTable); BuiltInVariable("gl_BaryCoordPullModelAMD", EbvBaryCoordPullModel, symbolTable); } + + // E_GL_AMD_texture_gather_bias_lod + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("textureGatherLodAMD", 1, &E_GL_AMD_texture_gather_bias_lod); + symbolTable.setFunctionExtensions("textureGatherLodOffsetAMD", 1, &E_GL_AMD_texture_gather_bias_lod); + symbolTable.setFunctionExtensions("textureGatherLodOffsetsAMD", 1, &E_GL_AMD_texture_gather_bias_lod); + symbolTable.setFunctionExtensions("sparseTextureGatherLodAMD", 1, &E_GL_AMD_texture_gather_bias_lod); + symbolTable.setFunctionExtensions("sparseTextureGatherLodOffsetAMD", 1, &E_GL_AMD_texture_gather_bias_lod); + symbolTable.setFunctionExtensions("sparseTextureGatherLodOffsetsAMD", 1, &E_GL_AMD_texture_gather_bias_lod); + } #endif symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth); @@ -5517,6 +5788,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64); symbolTable.relateToOperator("int64BitsToDouble", EOpInt64BitsToDouble); symbolTable.relateToOperator("uint64BitsToDouble", EOpUint64BitsToDouble); +#ifdef AMD_EXTENSIONS + symbolTable.relateToOperator("float16BitsToInt16", EOpFloat16BitsToInt16); + symbolTable.relateToOperator("float16BitsToUint16", EOpFloat16BitsToUint16); + symbolTable.relateToOperator("int16BitsToFloat16", EOpInt16BitsToFloat16); + symbolTable.relateToOperator("uint16BitsToFloat16", EOpUint16BitsToFloat16); +#endif symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16); symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16); @@ -5540,6 +5817,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32); #ifdef AMD_EXTENSIONS + symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16); + symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16); + symbolTable.relateToOperator("packUint2x16", EOpPackUint2x16); + symbolTable.relateToOperator("unpackUint2x16", EOpUnpackUint2x16); + + symbolTable.relateToOperator("packInt4x16", EOpPackInt4x16); + symbolTable.relateToOperator("unpackInt4x16", EOpUnpackInt4x16); + symbolTable.relateToOperator("packUint4x16", EOpPackUint4x16); + symbolTable.relateToOperator("unpackUint4x16", EOpUnpackUint4x16); + symbolTable.relateToOperator("packFloat2x16", EOpPackFloat2x16); symbolTable.relateToOperator("unpackFloat2x16", EOpUnpackFloat2x16); #endif @@ -5752,6 +6039,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("cubeFaceIndexAMD", EOpCubeFaceIndex); symbolTable.relateToOperator("cubeFaceCoordAMD", EOpCubeFaceCoord); symbolTable.relateToOperator("timeAMD", EOpTime); + + symbolTable.relateToOperator("textureGatherLodAMD", EOpTextureGatherLod); + symbolTable.relateToOperator("textureGatherLodOffsetAMD", EOpTextureGatherLodOffset); + symbolTable.relateToOperator("textureGatherLodOffsetsAMD", EOpTextureGatherLodOffsets); + symbolTable.relateToOperator("sparseTextureGatherLodAMD", EOpSparseTextureGatherLod); + symbolTable.relateToOperator("sparseTextureGatherLodOffsetAMD", EOpSparseTextureGatherLodOffset); + symbolTable.relateToOperator("sparseTextureGatherLodOffsetsAMD", EOpSparseTextureGatherLodOffsets); #endif } } diff --git a/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp b/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp index ad9720c09..c07dab9d3 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Intermediate.cpp @@ -308,6 +308,10 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo case EOpConstructUint: newType = EbtUint; break; case EOpConstructInt64: newType = EbtInt64; break; case EOpConstructUint64: newType = EbtUint64; break; +#ifdef AMD_EXTENSIONS + case EOpConstructInt16: newType = EbtInt16; break; + case EOpConstructUint16: newType = EbtUint16; break; +#endif case EOpConstructBool: newType = EbtBool; break; case EOpConstructFloat: newType = EbtFloat; break; case EOpConstructDouble: newType = EbtDouble; break; @@ -336,6 +340,10 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo case EOpConstructUint: case EOpConstructInt64: case EOpConstructUint64: +#ifdef AMD_EXTENSIONS + case EOpConstructInt16: + case EOpConstructUint16: +#endif case EOpConstructBool: case EOpConstructFloat: case EOpConstructDouble: @@ -528,6 +536,14 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpConstructUint64: promoteTo = EbtUint64; break; +#ifdef AMD_EXTENSIONS + case EOpConstructInt16: + promoteTo = EbtInt16; + break; + case EOpConstructUint16: + promoteTo = EbtUint16; + break; +#endif // // List all the binary ops that can implicitly convert one operand to the other's type; @@ -616,10 +632,18 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpRightShiftAssign: if ((type.getBasicType() == EbtInt || type.getBasicType() == EbtUint || +#ifdef AMD_EXTENSIONS + type.getBasicType() == EbtInt16 || + type.getBasicType() == EbtUint16 || +#endif type.getBasicType() == EbtInt64 || type.getBasicType() == EbtUint64) && (node->getType().getBasicType() == EbtInt || node->getType().getBasicType() == EbtUint || +#ifdef AMD_EXTENSIONS + node->getType().getBasicType() == EbtInt16 || + node->getType().getBasicType() == EbtUint16 || +#endif node->getType().getBasicType() == EbtInt64 || node->getType().getBasicType() == EbtUint64)) @@ -663,6 +687,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt #endif case EbtInt64: newOp = EOpConvInt64ToDouble; break; case EbtUint64: newOp = EOpConvUint64ToDouble; break; +#ifdef AMD_EXTENSIONS + case EbtInt16: newOp = EOpConvInt16ToDouble; break; + case EbtUint16: newOp = EOpConvUint16ToDouble; break; +#endif default: return nullptr; } @@ -678,6 +706,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt #endif case EbtInt64: newOp = EOpConvInt64ToFloat; break; case EbtUint64: newOp = EOpConvUint64ToFloat; break; +#ifdef AMD_EXTENSIONS + case EbtInt16: newOp = EOpConvInt16ToFloat; break; + case EbtUint16: newOp = EOpConvUint16ToFloat; break; +#endif default: return nullptr; } @@ -692,6 +724,8 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtDouble: newOp = EOpConvDoubleToFloat16; break; case EbtInt64: newOp = EOpConvInt64ToFloat16; break; case EbtUint64: newOp = EOpConvUint64ToFloat16; break; + case EbtInt16: newOp = EOpConvInt16ToFloat16; break; + case EbtUint16: newOp = EOpConvUint16ToFloat16; break; default: return nullptr; } @@ -708,6 +742,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt #endif case EbtInt64: newOp = EOpConvInt64ToBool; break; case EbtUint64: newOp = EOpConvUint64ToBool; break; +#ifdef AMD_EXTENSIONS + case EbtInt16: newOp = EOpConvInt16ToBool; break; + case EbtUint16: newOp = EOpConvUint16ToBool; break; +#endif default: return nullptr; } @@ -723,6 +761,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt #endif case EbtInt64: newOp = EOpConvInt64ToInt; break; case EbtUint64: newOp = EOpConvUint64ToInt; break; +#ifdef AMD_EXTENSIONS + case EbtInt16: newOp = EOpConvInt16ToInt; break; + case EbtUint16: newOp = EOpConvUint16ToInt; break; +#endif default: return nullptr; } @@ -738,6 +780,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt #endif case EbtInt64: newOp = EOpConvInt64ToUint; break; case EbtUint64: newOp = EOpConvUint64ToUint; break; +#ifdef AMD_EXTENSIONS + case EbtInt16: newOp = EOpConvInt16ToUint; break; + case EbtUint16: newOp = EOpConvUint16ToUint; break; +#endif default: return nullptr; } @@ -753,6 +799,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtFloat16: newOp = EOpConvFloat16ToInt64; break; #endif case EbtUint64: newOp = EOpConvUint64ToInt64; break; +#ifdef AMD_EXTENSIONS + case EbtInt16: newOp = EOpConvInt16ToInt64; break; + case EbtUint16: newOp = EOpConvUint16ToInt64; break; +#endif default: return nullptr; } @@ -768,10 +818,46 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtFloat16: newOp = EOpConvFloat16ToUint64; break; #endif case EbtInt64: newOp = EOpConvInt64ToUint64; break; +#ifdef AMD_EXTENSIONS + case EbtInt16: newOp = EOpConvInt16ToUint64; break; + case EbtUint16: newOp = EOpConvUint16ToUint64; break; +#endif default: return nullptr; } break; +#ifdef AMD_EXTENSIONS + case EbtInt16: + switch (node->getBasicType()) { + case EbtInt: newOp = EOpConvIntToInt16; break; + case EbtUint: newOp = EOpConvUintToInt16; break; + case EbtBool: newOp = EOpConvBoolToInt16; break; + case EbtFloat: newOp = EOpConvFloatToInt16; break; + case EbtDouble: newOp = EOpConvDoubleToInt16; break; + case EbtFloat16: newOp = EOpConvFloat16ToInt16; break; + case EbtInt64: newOp = EOpConvInt64ToInt16; break; + case EbtUint64: newOp = EOpConvUint64ToInt16; break; + case EbtUint16: newOp = EOpConvUint16ToInt16; break; + default: + return nullptr; + } + break; + case EbtUint16: + switch (node->getBasicType()) { + case EbtInt: newOp = EOpConvIntToUint16; break; + case EbtUint: newOp = EOpConvUintToUint16; break; + case EbtBool: newOp = EOpConvBoolToUint16; break; + case EbtFloat: newOp = EOpConvFloatToUint16; break; + case EbtDouble: newOp = EOpConvDoubleToUint16; break; + case EbtFloat16: newOp = EOpConvFloat16ToUint16; break; + case EbtInt64: newOp = EOpConvInt64ToUint16; break; + case EbtUint64: newOp = EOpConvUint64ToUint16; break; + case EbtInt16: newOp = EOpConvInt16ToUint16; break; + default: + return nullptr; + } + break; +#endif default: return nullptr; } @@ -1020,6 +1106,10 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtUint: case EbtInt64: case EbtUint64: +#ifdef AMD_EXTENSIONS + case EbtInt16: + case EbtUint16: +#endif case EbtFloat: case EbtDouble: #ifdef AMD_EXTENSIONS @@ -1033,6 +1123,10 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat switch (from) { case EbtInt: case EbtUint: +#ifdef AMD_EXTENSIONS + case EbtInt16: + case EbtUint16: +#endif case EbtFloat: #ifdef AMD_EXTENSIONS case EbtFloat16: @@ -1048,6 +1142,10 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtInt: return version >= 400 || (source == EShSourceHlsl); case EbtUint: +#ifdef AMD_EXTENSIONS + case EbtInt16: + case EbtUint16: +#endif return true; case EbtBool: return (source == EShSourceHlsl); @@ -1057,6 +1155,9 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtInt: switch (from) { case EbtInt: +#ifdef AMD_EXTENSIONS + case EbtInt16: +#endif return true; case EbtBool: return (source == EShSourceHlsl); @@ -1069,6 +1170,10 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat case EbtUint: case EbtInt64: case EbtUint64: +#ifdef AMD_EXTENSIONS + case EbtInt16: + case EbtUint16: +#endif return true; default: return false; @@ -1077,10 +1182,32 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat switch (from) { case EbtInt: case EbtInt64: +#ifdef AMD_EXTENSIONS + case EbtInt16: +#endif return true; default: return false; } +#ifdef AMD_EXTENSIONS + case EbtFloat16: + switch (from) { + case EbtInt16: + case EbtUint16: + case EbtFloat16: + return true; + default: + return false; + } + case EbtUint16: + switch (from) { + case EbtInt16: + case EbtUint16: + return true; + default: + return false; + } +#endif default: return false; } @@ -1313,6 +1440,26 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const default: break; // some compilers want this } break; +#ifdef AMD_EXTENSIONS + case EbtInt16: + switch(type.getVectorSize()) { + case 1: op = EOpConstructInt16; break; + case 2: op = EOpConstructI16Vec2; break; + case 3: op = EOpConstructI16Vec3; break; + case 4: op = EOpConstructI16Vec4; break; + default: break; // some compilers want this + } + break; + case EbtUint16: + switch(type.getVectorSize()) { + case 1: op = EOpConstructUint16; break; + case 2: op = EOpConstructU16Vec2; break; + case 3: op = EOpConstructU16Vec3; break; + case 4: op = EOpConstructU16Vec4; break; + default: break; // some compilers want this + } + break; +#endif case EbtBool: if (type.getMatrixCols()) { switch (type.getMatrixCols()) { @@ -1620,6 +1767,24 @@ TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned long long u64, co return addConstantUnion(unionArray, TType(EbtUint64, EvqConst), loc, literal); } +#ifdef AMD_EXTENSIONS +TIntermConstantUnion* TIntermediate::addConstantUnion(short i16, const TSourceLoc& loc, bool literal) const +{ + TConstUnionArray unionArray(1); + unionArray[0].setIConst(i16); + + return addConstantUnion(unionArray, TType(EbtInt16, EvqConst), loc, literal); +} + +TIntermConstantUnion* TIntermediate::addConstantUnion(unsigned short u16, const TSourceLoc& loc, bool literal) const +{ + TConstUnionArray unionArray(1); + unionArray[0].setUConst(u16); + + return addConstantUnion(unionArray, TType(EbtUint16, EvqConst), loc, literal); +} +#endif + TIntermConstantUnion* TIntermediate::addConstantUnion(bool b, const TSourceLoc& loc, bool literal) const { TConstUnionArray unionArray(1); @@ -1735,8 +1900,13 @@ TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* init node->setLoc(loc); node->setLoopControl(control); - // make a sequence of the initializer and statement - TIntermAggregate* loopSequence = makeAggregate(initializer, loc); + // make a sequence of the initializer and statement, but try to reuse the + // aggregate already created for whatever is in the initializer, if there is one + TIntermAggregate* loopSequence = (initializer == nullptr || + initializer->getAsAggregate() == nullptr) ? makeAggregate(initializer, loc) + : initializer->getAsAggregate(); + if (loopSequence != nullptr && loopSequence->getOp() == EOpSequence) + loopSequence->setOp(EOpNull); loopSequence = growAggregate(loopSequence, node); loopSequence->setOperator(EOpSequence); @@ -1974,6 +2144,30 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const case EOpConvUintToInt64: case EOpConvUint64ToInt: case EOpConvIntToUint64: +#ifdef AMD_EXTENSIONS + case EOpConvInt16ToBool: + case EOpConvBoolToInt16: + case EOpConvInt16ToInt: + case EOpConvIntToInt16: + case EOpConvInt16ToUint: + case EOpConvUintToInt16: + case EOpConvInt16ToInt64: + case EOpConvInt64ToInt16: + case EOpConvInt16ToUint64: + case EOpConvUint64ToInt16: + case EOpConvUint16ToBool: + case EOpConvBoolToUint16: + case EOpConvUint16ToInt: + case EOpConvIntToUint16: + case EOpConvUint16ToUint: + case EOpConvUintToUint16: + case EOpConvUint16ToInt64: + case EOpConvInt64ToUint16: + case EOpConvUint16ToUint64: + case EOpConvUint64ToUint16: + case EOpConvInt16ToUint16: + case EOpConvUint16ToInt16: +#endif // unary operations case EOpNegative: @@ -2102,6 +2296,10 @@ bool TIntermediate::promoteUnary(TIntermUnary& node) case EOpBitwiseNot: if (operand->getBasicType() != EbtInt && operand->getBasicType() != EbtUint && +#ifdef AMD_EXTENSIONS + operand->getBasicType() != EbtInt16 && + operand->getBasicType() != EbtUint16 && +#endif operand->getBasicType() != EbtInt64 && operand->getBasicType() != EbtUint64) @@ -2116,6 +2314,10 @@ bool TIntermediate::promoteUnary(TIntermUnary& node) operand->getBasicType() != EbtUint && operand->getBasicType() != EbtInt64 && operand->getBasicType() != EbtUint64 && +#ifdef AMD_EXTENSIONS + operand->getBasicType() != EbtInt16 && + operand->getBasicType() != EbtUint16 && +#endif operand->getBasicType() != EbtFloat && #ifdef AMD_EXTENSIONS operand->getBasicType() != EbtFloat16 && @@ -2322,8 +2524,14 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) // Check for integer-only operands. if ((left->getBasicType() != EbtInt && left->getBasicType() != EbtUint && - left->getBasicType() != EbtInt64 && left->getBasicType() != EbtUint64) || +#ifdef AMD_EXTENSIONS + left->getBasicType() != EbtInt16 && left->getBasicType() != EbtUint16 && +#endif + left->getBasicType() != EbtInt64 && left->getBasicType() != EbtUint64) || (right->getBasicType() != EbtInt && right->getBasicType() != EbtUint && +#ifdef AMD_EXTENSIONS + right->getBasicType() != EbtInt16 && right->getBasicType() != EbtUint16 && +#endif right->getBasicType() != EbtInt64 && right->getBasicType() != EbtUint64)) return false; if (left->isMatrix() || right->isMatrix()) diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp index 91b14adff..12dbd1646 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp @@ -51,8 +51,8 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), - contextPragma(true, false), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), statementNestingLevel(0), - inMain(false), postMainReturn(false), currentFunctionType(nullptr), blockName(nullptr), + inMain(false), + blockName(nullptr), limits(resources.limits), atomicUintOffsets(nullptr), anyIndexLimits(false) { @@ -912,7 +912,7 @@ TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc, loopNestingLevel = 0; statementNestingLevel = 0; controlFlowNestingLevel = 0; - postMainReturn = false; + postEntryPointReturn = false; return paramNodes; } @@ -1193,7 +1193,7 @@ void TParseContext::checkLocation(const TSourceLoc& loc, TOperator op) error(loc, "tessellation control barrier() cannot be placed within flow control", "", ""); if (! inMain) error(loc, "tessellation control barrier() must be in main()", "", ""); - else if (postMainReturn) + else if (postEntryPointReturn) error(loc, "tessellation control barrier() cannot be placed after a return from main()", "", ""); } break; @@ -1442,9 +1442,56 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan error(loc, "must be a compile-time constant:", feature, "component argument"); } +#ifdef AMD_EXTENSIONS + bool bias = false; + if (callNode.getOp() == EOpTextureGather) + bias = fnCandidate.getParamCount() > 3; + else if (callNode.getOp() == EOpTextureGatherOffset || + callNode.getOp() == EOpTextureGatherOffsets) + bias = fnCandidate.getParamCount() > 4; + + if (bias) { + TString biasFeatureString = fnCandidate.getName() + "with bias argument"; + const char* feature = biasFeatureString.c_str(); + profileRequires(loc, ~EEsProfile, 450, nullptr, feature); + requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature); + } +#endif + break; } +#ifdef AMD_EXTENSIONS + case EOpSparseTextureGather: + case EOpSparseTextureGatherOffset: + case EOpSparseTextureGatherOffsets: + { + bool bias = false; + if (callNode.getOp() == EOpSparseTextureGather) + bias = fnCandidate.getParamCount() > 4; + else if (callNode.getOp() == EOpSparseTextureGatherOffset || + callNode.getOp() == EOpSparseTextureGatherOffsets) + bias = fnCandidate.getParamCount() > 5; + + if (bias) { + TString featureString = fnCandidate.getName() + "with bias argument"; + const char* feature = featureString.c_str(); + profileRequires(loc, ~EEsProfile, 450, nullptr, feature); + requireExtensions(loc, 1, &E_GL_AMD_texture_gather_bias_lod, feature); + } + + break; + } + + case EOpSparseTextureGatherLod: + case EOpSparseTextureGatherLodOffset: + case EOpSparseTextureGatherLodOffsets: + { + requireExtensions(loc, 1, &E_GL_ARB_sparse_texture2, fnCandidate.getName().c_str()); + break; + } +#endif + case EOpTextureOffset: case EOpTextureFetchOffset: case EOpTextureProjOffset: @@ -2173,6 +2220,10 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructUint: case EOpConstructInt64: case EOpConstructUint64: +#ifdef AMD_EXTENSIONS + case EOpConstructInt16: + case EOpConstructUint16: +#endif case EOpConstructBool: case EOpConstructBVec2: case EOpConstructBVec3: @@ -2189,6 +2240,14 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructU64Vec2: case EOpConstructU64Vec3: case EOpConstructU64Vec4: +#ifdef AMD_EXTENSIONS + case EOpConstructI16Vec2: + case EOpConstructI16Vec3: + case EOpConstructI16Vec4: + case EOpConstructU16Vec2: + case EOpConstructU16Vec3: + case EOpConstructU16Vec4: +#endif // This was the list of valid ones, if they aren't converting from float // and aren't making an array. makeSpecConst = ! floatArgument && ! type.isArray(); @@ -2481,6 +2540,9 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali } if (publicType.basicType == EbtInt || publicType.basicType == EbtUint || +#ifdef AMD_EXTENSIONS + publicType.basicType == EbtInt16 || publicType.basicType == EbtUint16 || +#endif publicType.basicType == EbtInt64 || publicType.basicType == EbtUint64 || publicType.basicType == EbtDouble) profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output"); @@ -2491,6 +2553,9 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (!qualifier.flat) { #endif if (publicType.basicType == EbtInt || publicType.basicType == EbtUint || +#ifdef AMD_EXTENSIONS + publicType.basicType == EbtInt16 || publicType.basicType == EbtUint16 || +#endif publicType.basicType == EbtInt64 || publicType.basicType == EbtUint64 || publicType.basicType == EbtDouble || (publicType.userDef && (publicType.userDef->containsBasicType(EbtInt) || @@ -2911,7 +2976,7 @@ void TParseContext::structArrayCheck(const TSourceLoc& /*loc*/, const TType& typ } } -void TParseContext::arrayUnsizedCheck(const TSourceLoc& loc, const TQualifier& qualifier, const TArraySizes* arraySizes, bool initializer, bool lastMember) +void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qualifier, const TArraySizes* arraySizes, bool initializer, bool lastMember) { assert(arraySizes); @@ -2923,10 +2988,13 @@ void TParseContext::arrayUnsizedCheck(const TSourceLoc& loc, const TQualifier& q if (initializer) return; - // No environment lets any non-outer-dimension that's to be implicitly sized + // No environment allows any non-outer-dimension to be implicitly sized if (arraySizes->isInnerImplicit()) error(loc, "only outermost dimension of an array of arrays can be implicitly sized", "[]", ""); + if (arraySizes->isInnerSpecialization()) + error(loc, "only outermost dimension of an array of arrays can be a specialization constant", "[]", ""); + // desktop always allows outer-dimension-unsized variable arrays, if (profile != EEsProfile) return; @@ -4213,6 +4281,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi if (id.compare(0, 11, "local_size_") == 0) { profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); + if (id.size() == 12 && value == 0) { + error(loc, "must be at least 1", id.c_str(), ""); + return; + } if (id == "local_size_x") { publicType.shaderQualifiers.localSize[0] = value; return; @@ -4263,7 +4335,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi // This is also true for overriding layout-qualifier-names, where one // overrides the other (e.g., row_major vs. column_major); only the last // occurrence has any effect." -// void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifier& src, bool inheritOnly) { if (src.hasMatrix()) @@ -4391,6 +4462,22 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb } } +// "For some blocks declared as arrays, the location can only be applied at the block level: +// When a block is declared as an array where additional locations are needed for each member +// for each block array element, it is a compile-time error to specify locations on the block +// members. That is, when locations would be under specified by applying them on block members, +// they are not allowed on block members. For arrayed interfaces (those generally having an +// extra level of arrayness due to interface expansion), the outer array is stripped before +// applying this rule." +void TParseContext::layoutMemberLocationArrayCheck(const TSourceLoc& loc, bool memberWithLocation, TArraySizes* arraySizes) +{ + if (memberWithLocation && arraySizes != nullptr) { + if (arraySizes->getNumDims() > (currentBlockQualifier.isArrayedIo(language) ? 1 : 0)) + error(loc, "cannot use in a block array where new locations are needed for each block element", + "location", ""); + } +} + // Do layout error checking with respect to a type. void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) { @@ -4536,7 +4623,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) } } } else if (type.isImage() && ! qualifier.writeonly) { - const char *explanation = "image variables declared 'writeonly' without a format layout qualifier"; + const char *explanation = "image variables not declared 'writeonly' and without a format layout qualifier"; requireProfile(loc, ECoreProfile | ECompatibilityProfile, explanation); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation); } @@ -4565,6 +4652,10 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EbtUint: case EbtInt64: case EbtUint64: +#ifdef AMD_EXTENSIONS + case EbtInt16: + case EbtUint16: +#endif case EbtBool: case EbtFloat: case EbtDouble: @@ -4728,12 +4819,8 @@ void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol) if (symbol.getType().isExplicitlySizedArray()) numOffsets *= symbol.getType().getCumulativeArraySize(); else { - // TODO: functionality: implicitly-sized atomic_uint arrays. - // We don't know the full size until later. This might - // be a specification problem, will report to Khronos. For the - // cases that is not true, the rest of the checking would need - // to be done at link time instead of compile time. - warn(loc, "implicitly sized atomic_uint array treated as having one element for tracking the default offset", "atomic_uint", ""); + // "It is a compile-time error to declare an unsized array of atomic_uint." + error(loc, "array must be explicitly sized", "atomic_uint", ""); } } int repeated = intermediate.addUsedOffsets(qualifier.layoutBinding, offset, numOffsets); @@ -5019,7 +5106,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden arrayDimMerge(type, arraySizes); // Check that implicit sizing is only where allowed. - arrayUnsizedCheck(loc, type.getQualifier(), &type.getArraySizes(), initializer != nullptr, false); + arraySizesCheck(loc, type.getQualifier(), &type.getArraySizes(), initializer != nullptr, false); if (! arrayQualifierError(loc, type.getQualifier()) && ! arrayError(loc, type)) declareArray(loc, identifier, type, symbol); @@ -5515,6 +5602,22 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructUint64; break; +#ifdef AMD_EXTENSIONS + case EOpConstructI16Vec2: + case EOpConstructI16Vec3: + case EOpConstructI16Vec4: + case EOpConstructInt16: + basicOp = EOpConstructInt16; + break; + + case EOpConstructU16Vec2: + case EOpConstructU16Vec3: + case EOpConstructU16Vec4: + case EOpConstructUint16: + basicOp = EOpConstructUint16; + break; +#endif + case EOpConstructBVec2: case EOpConstructBVec3: case EOpConstructBVec4: @@ -5571,7 +5674,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con blockStageIoCheck(loc, currentBlockQualifier); blockQualifierCheck(loc, currentBlockQualifier, instanceName != nullptr); if (arraySizes) { - arrayUnsizedCheck(loc, currentBlockQualifier, arraySizes, false, false); + arraySizesCheck(loc, currentBlockQualifier, arraySizes, false, false); arrayDimCheck(loc, arraySizes, 0); if (arraySizes->getNumDims() > 1) requireProfile(loc, ~EEsProfile, "array-of-array of block"); @@ -5589,7 +5692,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary())) error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), ""); if (memberType.isArray()) - arrayUnsizedCheck(memberLoc, currentBlockQualifier, &memberType.getArraySizes(), false, member == typeList.size() - 1); + arraySizesCheck(memberLoc, currentBlockQualifier, &memberType.getArraySizes(), false, member == typeList.size() - 1); if (memberQualifier.hasOffset()) { if (spvVersion.spv == 0) { requireProfile(memberLoc, ~EEsProfile, "offset on block member"); @@ -5693,6 +5796,8 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con memberQualifier = newMemberQualification; } + layoutMemberLocationArrayCheck(loc, memberWithLocation, arraySizes); + // Process the members fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation); fixBlockXfbOffsets(currentBlockQualifier, typeList); @@ -5875,7 +5980,7 @@ void TParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qualifi if (nextLocation >= (int)TQualifier::layoutLocationEnd) error(memberLoc, "location is too large", "location", ""); memberQualifier.layoutLocation = nextLocation; - memberQualifier.layoutComponent = 0; + memberQualifier.layoutComponent = TQualifier::layoutComponentEnd; } nextLocation = memberQualifier.layoutLocation + intermediate.computeTypeLocationSize(*typeList[member].type); } diff --git a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h index dc9dc6a04..4c5045c9b 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h +++ b/3rdparty/glslang/glslang/MachineIndependent/ParseHelper.h @@ -77,6 +77,10 @@ public: TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), symbolTable(symbolTable), + statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), + postEntryPointReturn(false), + contextPragma(true, false), + limits(resources.limits), parsingBuiltins(parsingBuiltins), scanContext(nullptr), ppContext(nullptr), globalUniformBlock(nullptr) { } @@ -133,8 +137,6 @@ public: extensionCallback(line, extension, behavior); } - TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile - // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) virtual void growGlobalUniformBlock(const TSourceLoc&, TType&, const TString& memberName, TTypeList* typeList = nullptr); @@ -143,6 +145,23 @@ public: const char* const scopeMangler = "::"; + // Basic parsing state, easily accessible to the grammar + + TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile + int statementNestingLevel; // 0 if outside all flow control or compound statements + int loopNestingLevel; // 0 if outside all loops + int structNestingLevel; // 0 if outside blocks and structures + int controlFlowNestingLevel; // 0 if outside all flow control + const TType* currentFunctionType; // the return type of the function that's currently being parsed + bool functionReturnsValue; // true if a non-void function has a return + // if inside a function, true if the function is the entry point and this is after a return statement + bool postEntryPointReturn; + // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting + TList switchSequenceStack; + // the statementNestingLevel the current switch statement is at, which must match the level of its case statements + TList switchLevel; + struct TPragma contextPragma; + protected: TParseContextBase(TParseContextBase&); TParseContextBase& operator=(TParseContextBase&); @@ -151,6 +170,8 @@ protected: TVector linkageSymbols; // these need to be transferred to 'linkage', after all editing is done TScanContext* scanContext; TPpContext* ppContext; + TBuiltInResource resources; + TLimits& limits; // These, if set, will be called when a line, pragma ... is preprocessed. // They will be called with any parameters to the original directive. @@ -296,7 +317,7 @@ public: bool arrayError(const TSourceLoc&, const TType&); void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&); void structArrayCheck(const TSourceLoc&, const TType& structure); - void arrayUnsizedCheck(const TSourceLoc&, const TQualifier&, const TArraySizes*, bool initializer, bool lastMember); + void arraySizesCheck(const TSourceLoc&, const TQualifier&, const TArraySizes*, bool initializer, bool lastMember); void arrayOfArrayVersionCheck(const TSourceLoc&); void arrayDimCheck(const TSourceLoc&, const TArraySizes* sizes1, const TArraySizes* sizes2); void arrayDimCheck(const TSourceLoc&, const TType*, const TArraySizes*); @@ -338,6 +359,7 @@ public: void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&, const TIntermTyped*); void mergeObjectLayoutQualifiers(TQualifier& dest, const TQualifier& src, bool inheritOnly); void layoutObjectCheck(const TSourceLoc&, const TSymbol&); + void layoutMemberLocationArrayCheck(const TSourceLoc&, bool memberWithLocation, TArraySizes* arraySizes); void layoutTypeCheck(const TSourceLoc&, const TType&); void layoutQualifierCheck(const TSourceLoc&, const TQualifier&); void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&); @@ -383,17 +405,7 @@ public: // // Current state of parsing - struct TPragma contextPragma; - int loopNestingLevel; // 0 if outside all loops - int structNestingLevel; // 0 if outside blocks and structures - int controlFlowNestingLevel; // 0 if outside all flow control - int statementNestingLevel; // 0 if outside all flow control or compound statements - TList switchSequenceStack; // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting - TList switchLevel; // the statementNestingLevel the current switch statement is at, which must match the level of its case statements bool inMain; // if inside a function, true if the function is main - bool postMainReturn; // if inside a function, true if the function is main and this is after a return statement - const TType* currentFunctionType; // the return type of the function that's currently being parsed - bool functionReturnsValue; // true if a non-void function has a return const TString* blockName; TQualifier currentBlockQualifier; TPrecisionQualifier defaultPrecision[EbtNumTypes]; diff --git a/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp b/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp index f61439f44..3f2f40aaf 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Scan.cpp @@ -464,6 +464,15 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["u64vec4"] = U64VEC4; #ifdef AMD_EXTENSIONS + (*KeywordMap)["int16_t"] = INT16_T; + (*KeywordMap)["uint16_t"] = UINT16_T; + (*KeywordMap)["i16vec2"] = I16VEC2; + (*KeywordMap)["i16vec3"] = I16VEC3; + (*KeywordMap)["i16vec4"] = I16VEC4; + (*KeywordMap)["u16vec2"] = U16VEC2; + (*KeywordMap)["u16vec3"] = U16VEC3; + (*KeywordMap)["u16vec4"] = U16VEC4; + (*KeywordMap)["float16_t"] = FLOAT16_T; (*KeywordMap)["f16vec2"] = F16VEC2; (*KeywordMap)["f16vec3"] = F16VEC3; @@ -709,6 +718,10 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT; case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT; case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT; +#ifdef AMD_EXTENSIONS + case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT; + case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT; +#endif case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT; case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT; #ifdef AMD_EXTENSIONS @@ -973,6 +986,21 @@ int TScanContext::tokenizeIdentifier() return identifierOrType(); #ifdef AMD_EXTENSIONS + case INT16_T: + case UINT16_T: + case I16VEC2: + case I16VEC3: + case I16VEC4: + case U16VEC2: + case U16VEC3: + case U16VEC4: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) && + parseContext.profile != EEsProfile && parseContext.version >= 450)) + return keyword; + return identifierOrType(); + case FLOAT16_T: case F16VEC2: case F16VEC3: diff --git a/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp b/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp index b7485ec19..bb3f4f736 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp @@ -566,41 +566,6 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo } } - // A meta check on the condition of the compiler itself... - switch (version) { - - // ES versions - case 100: - case 300: - // versions are complete - break; - - // Desktop versions - case 110: - case 120: - case 130: - case 140: - case 150: - case 330: - // versions are complete - break; - - case 310: - case 400: - case 410: - case 420: - case 430: - case 440: - case 450: - infoSink.info << "Warning, version " << version << " is not yet complete; most version-specific features are present, but some are missing.\n"; - break; - - default: - infoSink.info << "Warning, version " << version << " is unknown.\n"; - break; - - } - return correct; } diff --git a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp index a59ba6b35..d7f9e1d99 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp @@ -67,6 +67,10 @@ void TType::buildMangledName(TString& mangledName) const case EbtUint: mangledName += 'u'; break; case EbtInt64: mangledName += "i64"; break; case EbtUint64: mangledName += "u64"; break; +#ifdef AMD_EXTENSIONS + case EbtInt16: mangledName += "i16"; break; + case EbtUint16: mangledName += "u16"; break; +#endif case EbtBool: mangledName += 'b'; break; case EbtAtomicUint: mangledName += "au"; break; case EbtSampler: diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp index 528333f46..800956c93 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.cpp @@ -194,6 +194,8 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_AMD_shader_explicit_vertex_parameter] = EBhDisable; extensionBehavior[E_GL_AMD_gcn_shader] = EBhDisable; extensionBehavior[E_GL_AMD_gpu_shader_half_float] = EBhDisable; + extensionBehavior[E_GL_AMD_texture_gather_bias_lod] = EBhDisable; + extensionBehavior[E_GL_AMD_gpu_shader_int16] = EBhDisable; #endif #ifdef NV_EXTENSIONS @@ -316,6 +318,8 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_AMD_shader_explicit_vertex_parameter 1\n" "#define GL_AMD_gcn_shader 1\n" "#define GL_AMD_gpu_shader_half_float 1\n" + "#define GL_AMD_texture_gather_bias_lod 1\n" + "#define GL_AMD_gpu_shader_int16 1\n" #endif #ifdef NV_EXTENSIONS @@ -498,6 +502,11 @@ void TParseVersions::requireNotRemoved(const TSourceLoc& loc, int profileMask, i } } +void TParseVersions::unimplemented(const TSourceLoc& loc, const char* featureDesc) +{ + error(loc, "feature not yet implemented", featureDesc, ""); +} + // Returns true if at least one of the extensions in the extensions parameter is requested. Otherwise, returns false. // Warns appropriately if the requested behavior of an extension is "warn". bool TParseVersions::checkExtensionsRequested(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc) @@ -703,10 +712,21 @@ void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op) } #ifdef AMD_EXTENSIONS -// Call for any operation needing float16 data-type support. +// Call for any operation needing GLSL 16-bit integer data-type support. +void TParseVersions::int16Check(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (! builtIn) { + requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_int16, "shader int16"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); + profileRequires(loc, ECoreProfile, 450, nullptr, op); + profileRequires(loc, ECompatibilityProfile, 450, nullptr, op); + } +} + +// Call for any operation needing GLSL float16 data-type support. void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn) { - if (!builtIn) { + if (! builtIn) { requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_half_float, "shader half float"); requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); profileRequires(loc, ECoreProfile, 450, nullptr, op); diff --git a/3rdparty/glslang/glslang/MachineIndependent/Versions.h b/3rdparty/glslang/glslang/MachineIndependent/Versions.h index 7f5d33d5e..702a5ae58 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/Versions.h +++ b/3rdparty/glslang/glslang/MachineIndependent/Versions.h @@ -146,7 +146,10 @@ const char* const E_GL_AMD_shader_trinary_minmax = "GL_AMD_shader const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter"; const char* const E_GL_AMD_gcn_shader = "GL_AMD_gcn_shader"; const char* const E_GL_AMD_gpu_shader_half_float = "GL_AMD_gpu_shader_half_float"; +const char* const E_GL_AMD_texture_gather_bias_lod = "GL_AMD_texture_gather_bias_lod"; +const char* const E_GL_AMD_gpu_shader_int16 = "GL_AMD_gpu_shader_int16"; #endif + #ifdef NV_EXTENSIONS const char* const E_GL_NV_sample_mask_override_coverage = "GL_NV_sample_mask_override_coverage"; diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang.y b/3rdparty/glslang/glslang/MachineIndependent/glslang.y index 958cd6e80..fd1566fae 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang.y +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang.y @@ -121,7 +121,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %expect 1 // One shift reduce conflict because of if | else %token ATTRIBUTE VARYING -%token CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T FLOAT16_T +%token CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T INT16_T UINT16_T FLOAT16_T %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE %token BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 I64VEC2 I64VEC3 I64VEC4 UVEC2 UVEC3 UVEC4 U64VEC2 U64VEC3 U64VEC4 VEC2 VEC3 VEC4 %token MAT2 MAT3 MAT4 CENTROID IN OUT INOUT @@ -129,6 +129,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY %token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 %token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 +%token I16VEC2 I16VEC3 I16VEC4 U16VEC2 U16VEC3 U16VEC4 %token NOPERSPECTIVE FLAT SMOOTH LAYOUT __EXPLICITINTERPAMD %token MAT2X2 MAT2X3 MAT2X4 @@ -188,7 +189,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token STRUCT VOID WHILE %token IDENTIFIER TYPE_NAME -%token FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT BOOLCONSTANT FLOAT16CONSTANT +%token FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT INT16CONSTANT UINT16CONSTANT BOOLCONSTANT FLOAT16CONSTANT %token LEFT_OP RIGHT_OP %token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN @@ -273,6 +274,18 @@ primary_expression parseContext.int64Check($1.loc, "64-bit unsigned integer literal"); $$ = parseContext.intermediate.addConstantUnion($1.u64, $1.loc, true); } + | INT16CONSTANT { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit integer literal"); + $$ = parseContext.intermediate.addConstantUnion((short)$1.i, $1.loc, true); +#endif + } + | UINT16CONSTANT { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit unsigned integer literal"); + $$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true); +#endif + } | FLOATCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); } @@ -1231,6 +1244,7 @@ storage_qualifier $$.qualifier.storage = EvqBuffer; } | SHARED { + parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); parseContext.requireStage($1.loc, EShLangCompute, "shared"); @@ -1260,25 +1274,25 @@ storage_qualifier | SUBROUTINE { parseContext.spvRemoved($1.loc, "subroutine"); parseContext.globalCheck($1.loc, "subroutine"); + parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); - $$.qualifier.storage = EvqUniform; } | SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN { parseContext.spvRemoved($1.loc, "subroutine"); parseContext.globalCheck($1.loc, "subroutine"); + parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); - $$.qualifier.storage = EvqUniform; - // 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 } ; type_name_list - : TYPE_NAME { - // TODO: 4.0 functionality: subroutine type to list + : IDENTIFIER { + // TODO } - | type_name_list COMMA TYPE_NAME { + | type_name_list COMMA IDENTIFIER { + // 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 } ; @@ -1362,6 +1376,20 @@ type_specifier_nonarray $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint64; } + | INT16_T { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt16; +#endif + } + | UINT16_T { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint16; +#endif + } | BOOL { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBool; @@ -1471,6 +1499,30 @@ type_specifier_nonarray $$.basicType = EbtInt64; $$.setVector(4); } + | I16VEC2 { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt16; + $$.setVector(2); +#endif + } + | I16VEC3 { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt16; + $$.setVector(3); +#endif + } + | I16VEC4 { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt16; + $$.setVector(4); +#endif + } | UVEC2 { parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -1507,6 +1559,30 @@ type_specifier_nonarray $$.basicType = EbtUint64; $$.setVector(4); } + | U16VEC2 { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint16; + $$.setVector(2); +#endif + } + | U16VEC3 { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint16; + $$.setVector(3); +#endif + } + | U16VEC4 { +#ifdef AMD_EXTENSIONS + parseContext.int16Check($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint16; + $$.setVector(4); +#endif + } | MAT2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; @@ -2777,7 +2853,7 @@ jump_statement if (parseContext.currentFunctionType->getBasicType() != EbtVoid) parseContext.error($1.loc, "non-void function must return a value", "return", ""); if (parseContext.inMain) - parseContext.postMainReturn = true; + parseContext.postEntryPointReturn = true; } | RETURN expression SEMICOLON { $$ = parseContext.handleReturnValue($1.loc, $2); diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp index b83e34b63..54a927cc9 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp @@ -132,281 +132,291 @@ extern int yydebug; UINT = 265, INT64_T = 266, UINT64_T = 267, - FLOAT16_T = 268, - BREAK = 269, - CONTINUE = 270, - DO = 271, - ELSE = 272, - FOR = 273, - IF = 274, - DISCARD = 275, - RETURN = 276, - SWITCH = 277, - CASE = 278, - DEFAULT = 279, - SUBROUTINE = 280, - BVEC2 = 281, - BVEC3 = 282, - BVEC4 = 283, - IVEC2 = 284, - IVEC3 = 285, - IVEC4 = 286, - I64VEC2 = 287, - I64VEC3 = 288, - I64VEC4 = 289, - UVEC2 = 290, - UVEC3 = 291, - UVEC4 = 292, - U64VEC2 = 293, - U64VEC3 = 294, - U64VEC4 = 295, - VEC2 = 296, - VEC3 = 297, - VEC4 = 298, - MAT2 = 299, - MAT3 = 300, - MAT4 = 301, - CENTROID = 302, - IN = 303, - OUT = 304, - INOUT = 305, - UNIFORM = 306, - PATCH = 307, - SAMPLE = 308, - BUFFER = 309, - SHARED = 310, - COHERENT = 311, - VOLATILE = 312, - RESTRICT = 313, - READONLY = 314, - WRITEONLY = 315, - DVEC2 = 316, - DVEC3 = 317, - DVEC4 = 318, - DMAT2 = 319, - DMAT3 = 320, - DMAT4 = 321, - F16VEC2 = 322, - F16VEC3 = 323, - F16VEC4 = 324, - F16MAT2 = 325, - F16MAT3 = 326, - F16MAT4 = 327, - NOPERSPECTIVE = 328, - FLAT = 329, - SMOOTH = 330, - LAYOUT = 331, - __EXPLICITINTERPAMD = 332, - MAT2X2 = 333, - MAT2X3 = 334, - MAT2X4 = 335, - MAT3X2 = 336, - MAT3X3 = 337, - MAT3X4 = 338, - MAT4X2 = 339, - MAT4X3 = 340, - MAT4X4 = 341, - DMAT2X2 = 342, - DMAT2X3 = 343, - DMAT2X4 = 344, - DMAT3X2 = 345, - DMAT3X3 = 346, - DMAT3X4 = 347, - DMAT4X2 = 348, - DMAT4X3 = 349, - DMAT4X4 = 350, - F16MAT2X2 = 351, - F16MAT2X3 = 352, - F16MAT2X4 = 353, - F16MAT3X2 = 354, - F16MAT3X3 = 355, - F16MAT3X4 = 356, - F16MAT4X2 = 357, - F16MAT4X3 = 358, - F16MAT4X4 = 359, - ATOMIC_UINT = 360, - SAMPLER1D = 361, - SAMPLER2D = 362, - SAMPLER3D = 363, - SAMPLERCUBE = 364, - SAMPLER1DSHADOW = 365, - SAMPLER2DSHADOW = 366, - SAMPLERCUBESHADOW = 367, - SAMPLER1DARRAY = 368, - SAMPLER2DARRAY = 369, - SAMPLER1DARRAYSHADOW = 370, - SAMPLER2DARRAYSHADOW = 371, - ISAMPLER1D = 372, - ISAMPLER2D = 373, - ISAMPLER3D = 374, - ISAMPLERCUBE = 375, - ISAMPLER1DARRAY = 376, - ISAMPLER2DARRAY = 377, - USAMPLER1D = 378, - USAMPLER2D = 379, - USAMPLER3D = 380, - USAMPLERCUBE = 381, - USAMPLER1DARRAY = 382, - USAMPLER2DARRAY = 383, - SAMPLER2DRECT = 384, - SAMPLER2DRECTSHADOW = 385, - ISAMPLER2DRECT = 386, - USAMPLER2DRECT = 387, - SAMPLERBUFFER = 388, - ISAMPLERBUFFER = 389, - USAMPLERBUFFER = 390, - SAMPLERCUBEARRAY = 391, - SAMPLERCUBEARRAYSHADOW = 392, - ISAMPLERCUBEARRAY = 393, - USAMPLERCUBEARRAY = 394, - SAMPLER2DMS = 395, - ISAMPLER2DMS = 396, - USAMPLER2DMS = 397, - SAMPLER2DMSARRAY = 398, - ISAMPLER2DMSARRAY = 399, - USAMPLER2DMSARRAY = 400, - SAMPLEREXTERNALOES = 401, - SAMPLER = 402, - SAMPLERSHADOW = 403, - TEXTURE1D = 404, - TEXTURE2D = 405, - TEXTURE3D = 406, - TEXTURECUBE = 407, - TEXTURE1DARRAY = 408, - TEXTURE2DARRAY = 409, - ITEXTURE1D = 410, - ITEXTURE2D = 411, - ITEXTURE3D = 412, - ITEXTURECUBE = 413, - ITEXTURE1DARRAY = 414, - ITEXTURE2DARRAY = 415, - UTEXTURE1D = 416, - UTEXTURE2D = 417, - UTEXTURE3D = 418, - UTEXTURECUBE = 419, - UTEXTURE1DARRAY = 420, - UTEXTURE2DARRAY = 421, - TEXTURE2DRECT = 422, - ITEXTURE2DRECT = 423, - UTEXTURE2DRECT = 424, - TEXTUREBUFFER = 425, - ITEXTUREBUFFER = 426, - UTEXTUREBUFFER = 427, - TEXTURECUBEARRAY = 428, - ITEXTURECUBEARRAY = 429, - UTEXTURECUBEARRAY = 430, - TEXTURE2DMS = 431, - ITEXTURE2DMS = 432, - UTEXTURE2DMS = 433, - TEXTURE2DMSARRAY = 434, - ITEXTURE2DMSARRAY = 435, - UTEXTURE2DMSARRAY = 436, - SUBPASSINPUT = 437, - SUBPASSINPUTMS = 438, - ISUBPASSINPUT = 439, - ISUBPASSINPUTMS = 440, - USUBPASSINPUT = 441, - USUBPASSINPUTMS = 442, - IMAGE1D = 443, - IIMAGE1D = 444, - UIMAGE1D = 445, - IMAGE2D = 446, - IIMAGE2D = 447, - UIMAGE2D = 448, - IMAGE3D = 449, - IIMAGE3D = 450, - UIMAGE3D = 451, - IMAGE2DRECT = 452, - IIMAGE2DRECT = 453, - UIMAGE2DRECT = 454, - IMAGECUBE = 455, - IIMAGECUBE = 456, - UIMAGECUBE = 457, - IMAGEBUFFER = 458, - IIMAGEBUFFER = 459, - UIMAGEBUFFER = 460, - IMAGE1DARRAY = 461, - IIMAGE1DARRAY = 462, - UIMAGE1DARRAY = 463, - IMAGE2DARRAY = 464, - IIMAGE2DARRAY = 465, - UIMAGE2DARRAY = 466, - IMAGECUBEARRAY = 467, - IIMAGECUBEARRAY = 468, - UIMAGECUBEARRAY = 469, - IMAGE2DMS = 470, - IIMAGE2DMS = 471, - UIMAGE2DMS = 472, - IMAGE2DMSARRAY = 473, - IIMAGE2DMSARRAY = 474, - UIMAGE2DMSARRAY = 475, - STRUCT = 476, - VOID = 477, - WHILE = 478, - IDENTIFIER = 479, - TYPE_NAME = 480, - FLOATCONSTANT = 481, - DOUBLECONSTANT = 482, - INTCONSTANT = 483, - UINTCONSTANT = 484, - INT64CONSTANT = 485, - UINT64CONSTANT = 486, - BOOLCONSTANT = 487, - FLOAT16CONSTANT = 488, - LEFT_OP = 489, - RIGHT_OP = 490, - INC_OP = 491, - DEC_OP = 492, - LE_OP = 493, - GE_OP = 494, - EQ_OP = 495, - NE_OP = 496, - AND_OP = 497, - OR_OP = 498, - XOR_OP = 499, - MUL_ASSIGN = 500, - DIV_ASSIGN = 501, - ADD_ASSIGN = 502, - MOD_ASSIGN = 503, - LEFT_ASSIGN = 504, - RIGHT_ASSIGN = 505, - AND_ASSIGN = 506, - XOR_ASSIGN = 507, - OR_ASSIGN = 508, - SUB_ASSIGN = 509, - LEFT_PAREN = 510, - RIGHT_PAREN = 511, - LEFT_BRACKET = 512, - RIGHT_BRACKET = 513, - LEFT_BRACE = 514, - RIGHT_BRACE = 515, - DOT = 516, - COMMA = 517, - COLON = 518, - EQUAL = 519, - SEMICOLON = 520, - BANG = 521, - DASH = 522, - TILDE = 523, - PLUS = 524, - STAR = 525, - SLASH = 526, - PERCENT = 527, - LEFT_ANGLE = 528, - RIGHT_ANGLE = 529, - VERTICAL_BAR = 530, - CARET = 531, - AMPERSAND = 532, - QUESTION = 533, - INVARIANT = 534, - PRECISE = 535, - HIGH_PRECISION = 536, - MEDIUM_PRECISION = 537, - LOW_PRECISION = 538, - PRECISION = 539, - PACKED = 540, - RESOURCE = 541, - SUPERP = 542 + INT16_T = 268, + UINT16_T = 269, + FLOAT16_T = 270, + BREAK = 271, + CONTINUE = 272, + DO = 273, + ELSE = 274, + FOR = 275, + IF = 276, + DISCARD = 277, + RETURN = 278, + SWITCH = 279, + CASE = 280, + DEFAULT = 281, + SUBROUTINE = 282, + BVEC2 = 283, + BVEC3 = 284, + BVEC4 = 285, + IVEC2 = 286, + IVEC3 = 287, + IVEC4 = 288, + I64VEC2 = 289, + I64VEC3 = 290, + I64VEC4 = 291, + UVEC2 = 292, + UVEC3 = 293, + UVEC4 = 294, + U64VEC2 = 295, + U64VEC3 = 296, + U64VEC4 = 297, + VEC2 = 298, + VEC3 = 299, + VEC4 = 300, + MAT2 = 301, + MAT3 = 302, + MAT4 = 303, + CENTROID = 304, + IN = 305, + OUT = 306, + INOUT = 307, + UNIFORM = 308, + PATCH = 309, + SAMPLE = 310, + BUFFER = 311, + SHARED = 312, + COHERENT = 313, + VOLATILE = 314, + RESTRICT = 315, + READONLY = 316, + WRITEONLY = 317, + DVEC2 = 318, + DVEC3 = 319, + DVEC4 = 320, + DMAT2 = 321, + DMAT3 = 322, + DMAT4 = 323, + F16VEC2 = 324, + F16VEC3 = 325, + F16VEC4 = 326, + F16MAT2 = 327, + F16MAT3 = 328, + F16MAT4 = 329, + I16VEC2 = 330, + I16VEC3 = 331, + I16VEC4 = 332, + U16VEC2 = 333, + U16VEC3 = 334, + U16VEC4 = 335, + NOPERSPECTIVE = 336, + FLAT = 337, + SMOOTH = 338, + LAYOUT = 339, + __EXPLICITINTERPAMD = 340, + MAT2X2 = 341, + MAT2X3 = 342, + MAT2X4 = 343, + MAT3X2 = 344, + MAT3X3 = 345, + MAT3X4 = 346, + MAT4X2 = 347, + MAT4X3 = 348, + MAT4X4 = 349, + DMAT2X2 = 350, + DMAT2X3 = 351, + DMAT2X4 = 352, + DMAT3X2 = 353, + DMAT3X3 = 354, + DMAT3X4 = 355, + DMAT4X2 = 356, + DMAT4X3 = 357, + DMAT4X4 = 358, + F16MAT2X2 = 359, + F16MAT2X3 = 360, + F16MAT2X4 = 361, + F16MAT3X2 = 362, + F16MAT3X3 = 363, + F16MAT3X4 = 364, + F16MAT4X2 = 365, + F16MAT4X3 = 366, + F16MAT4X4 = 367, + ATOMIC_UINT = 368, + SAMPLER1D = 369, + SAMPLER2D = 370, + SAMPLER3D = 371, + SAMPLERCUBE = 372, + SAMPLER1DSHADOW = 373, + SAMPLER2DSHADOW = 374, + SAMPLERCUBESHADOW = 375, + SAMPLER1DARRAY = 376, + SAMPLER2DARRAY = 377, + SAMPLER1DARRAYSHADOW = 378, + SAMPLER2DARRAYSHADOW = 379, + ISAMPLER1D = 380, + ISAMPLER2D = 381, + ISAMPLER3D = 382, + ISAMPLERCUBE = 383, + ISAMPLER1DARRAY = 384, + ISAMPLER2DARRAY = 385, + USAMPLER1D = 386, + USAMPLER2D = 387, + USAMPLER3D = 388, + USAMPLERCUBE = 389, + USAMPLER1DARRAY = 390, + USAMPLER2DARRAY = 391, + SAMPLER2DRECT = 392, + SAMPLER2DRECTSHADOW = 393, + ISAMPLER2DRECT = 394, + USAMPLER2DRECT = 395, + SAMPLERBUFFER = 396, + ISAMPLERBUFFER = 397, + USAMPLERBUFFER = 398, + SAMPLERCUBEARRAY = 399, + SAMPLERCUBEARRAYSHADOW = 400, + ISAMPLERCUBEARRAY = 401, + USAMPLERCUBEARRAY = 402, + SAMPLER2DMS = 403, + ISAMPLER2DMS = 404, + USAMPLER2DMS = 405, + SAMPLER2DMSARRAY = 406, + ISAMPLER2DMSARRAY = 407, + USAMPLER2DMSARRAY = 408, + SAMPLEREXTERNALOES = 409, + SAMPLER = 410, + SAMPLERSHADOW = 411, + TEXTURE1D = 412, + TEXTURE2D = 413, + TEXTURE3D = 414, + TEXTURECUBE = 415, + TEXTURE1DARRAY = 416, + TEXTURE2DARRAY = 417, + ITEXTURE1D = 418, + ITEXTURE2D = 419, + ITEXTURE3D = 420, + ITEXTURECUBE = 421, + ITEXTURE1DARRAY = 422, + ITEXTURE2DARRAY = 423, + UTEXTURE1D = 424, + UTEXTURE2D = 425, + UTEXTURE3D = 426, + UTEXTURECUBE = 427, + UTEXTURE1DARRAY = 428, + UTEXTURE2DARRAY = 429, + TEXTURE2DRECT = 430, + ITEXTURE2DRECT = 431, + UTEXTURE2DRECT = 432, + TEXTUREBUFFER = 433, + ITEXTUREBUFFER = 434, + UTEXTUREBUFFER = 435, + TEXTURECUBEARRAY = 436, + ITEXTURECUBEARRAY = 437, + UTEXTURECUBEARRAY = 438, + TEXTURE2DMS = 439, + ITEXTURE2DMS = 440, + UTEXTURE2DMS = 441, + TEXTURE2DMSARRAY = 442, + ITEXTURE2DMSARRAY = 443, + UTEXTURE2DMSARRAY = 444, + SUBPASSINPUT = 445, + SUBPASSINPUTMS = 446, + ISUBPASSINPUT = 447, + ISUBPASSINPUTMS = 448, + USUBPASSINPUT = 449, + USUBPASSINPUTMS = 450, + IMAGE1D = 451, + IIMAGE1D = 452, + UIMAGE1D = 453, + IMAGE2D = 454, + IIMAGE2D = 455, + UIMAGE2D = 456, + IMAGE3D = 457, + IIMAGE3D = 458, + UIMAGE3D = 459, + IMAGE2DRECT = 460, + IIMAGE2DRECT = 461, + UIMAGE2DRECT = 462, + IMAGECUBE = 463, + IIMAGECUBE = 464, + UIMAGECUBE = 465, + IMAGEBUFFER = 466, + IIMAGEBUFFER = 467, + UIMAGEBUFFER = 468, + IMAGE1DARRAY = 469, + IIMAGE1DARRAY = 470, + UIMAGE1DARRAY = 471, + IMAGE2DARRAY = 472, + IIMAGE2DARRAY = 473, + UIMAGE2DARRAY = 474, + IMAGECUBEARRAY = 475, + IIMAGECUBEARRAY = 476, + UIMAGECUBEARRAY = 477, + IMAGE2DMS = 478, + IIMAGE2DMS = 479, + UIMAGE2DMS = 480, + IMAGE2DMSARRAY = 481, + IIMAGE2DMSARRAY = 482, + UIMAGE2DMSARRAY = 483, + STRUCT = 484, + VOID = 485, + WHILE = 486, + IDENTIFIER = 487, + TYPE_NAME = 488, + FLOATCONSTANT = 489, + DOUBLECONSTANT = 490, + INTCONSTANT = 491, + UINTCONSTANT = 492, + INT64CONSTANT = 493, + UINT64CONSTANT = 494, + INT16CONSTANT = 495, + UINT16CONSTANT = 496, + BOOLCONSTANT = 497, + FLOAT16CONSTANT = 498, + LEFT_OP = 499, + RIGHT_OP = 500, + INC_OP = 501, + DEC_OP = 502, + LE_OP = 503, + GE_OP = 504, + EQ_OP = 505, + NE_OP = 506, + AND_OP = 507, + OR_OP = 508, + XOR_OP = 509, + MUL_ASSIGN = 510, + DIV_ASSIGN = 511, + ADD_ASSIGN = 512, + MOD_ASSIGN = 513, + LEFT_ASSIGN = 514, + RIGHT_ASSIGN = 515, + AND_ASSIGN = 516, + XOR_ASSIGN = 517, + OR_ASSIGN = 518, + SUB_ASSIGN = 519, + LEFT_PAREN = 520, + RIGHT_PAREN = 521, + LEFT_BRACKET = 522, + RIGHT_BRACKET = 523, + LEFT_BRACE = 524, + RIGHT_BRACE = 525, + DOT = 526, + COMMA = 527, + COLON = 528, + EQUAL = 529, + SEMICOLON = 530, + BANG = 531, + DASH = 532, + TILDE = 533, + PLUS = 534, + STAR = 535, + SLASH = 536, + PERCENT = 537, + LEFT_ANGLE = 538, + RIGHT_ANGLE = 539, + VERTICAL_BAR = 540, + CARET = 541, + AMPERSAND = 542, + QUESTION = 543, + INVARIANT = 544, + PRECISE = 545, + HIGH_PRECISION = 546, + MEDIUM_PRECISION = 547, + LOW_PRECISION = 548, + PRECISION = 549, + PACKED = 550, + RESOURCE = 551, + SUPERP = 552 }; #endif @@ -449,7 +459,7 @@ union YYSTYPE }; } interm; -#line 453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ +#line 463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -480,7 +490,7 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -720,23 +730,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 265 +#define YYFINAL 273 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 6373 +#define YYLAST 6608 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 288 +#define YYNTOKENS 298 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 100 /* YYNRULES -- Number of rules. */ -#define YYNRULES 439 +#define YYNRULES 449 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 571 +#define YYNSTATES 581 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 542 +#define YYMAXUTOK 552 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -799,57 +809,59 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287 + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 252, 252, 258, 261, 264, 268, 272, 276, 279, - 283, 289, 292, 300, 303, 306, 309, 312, 317, 325, - 332, 339, 345, 349, 356, 359, 365, 372, 382, 390, - 395, 425, 431, 435, 439, 459, 460, 461, 462, 468, - 469, 474, 479, 488, 489, 494, 502, 503, 509, 518, - 519, 524, 529, 534, 542, 543, 551, 562, 563, 572, - 573, 582, 583, 592, 593, 601, 602, 610, 611, 619, - 620, 620, 638, 639, 654, 658, 662, 666, 671, 675, - 679, 683, 687, 691, 695, 702, 705, 716, 723, 728, - 733, 741, 745, 749, 753, 758, 763, 772, 772, 783, - 787, 794, 801, 804, 811, 819, 839, 857, 872, 895, - 906, 916, 926, 936, 945, 948, 952, 956, 961, 969, - 974, 979, 984, 989, 998, 1009, 1036, 1045, 1052, 1059, - 1066, 1078, 1084, 1087, 1094, 1098, 1102, 1110, 1119, 1122, - 1133, 1136, 1139, 1143, 1147, 1151, 1158, 1162, 1174, 1188, - 1193, 1199, 1205, 1212, 1218, 1223, 1228, 1233, 1240, 1244, - 1248, 1252, 1256, 1260, 1266, 1278, 1281, 1286, 1290, 1299, - 1304, 1312, 1316, 1326, 1330, 1334, 1339, 1346, 1350, 1355, - 1360, 1365, 1369, 1374, 1379, 1384, 1390, 1396, 1402, 1410, - 1418, 1426, 1431, 1436, 1441, 1446, 1451, 1456, 1462, 1468, - 1474, 1480, 1486, 1492, 1498, 1504, 1510, 1515, 1520, 1525, - 1530, 1535, 1540, 1545, 1550, 1555, 1560, 1565, 1570, 1576, - 1582, 1588, 1594, 1600, 1606, 1612, 1618, 1624, 1630, 1636, - 1642, 1650, 1658, 1666, 1674, 1682, 1690, 1698, 1706, 1714, - 1722, 1730, 1738, 1743, 1748, 1753, 1758, 1763, 1768, 1773, - 1778, 1783, 1788, 1793, 1798, 1803, 1808, 1813, 1818, 1823, - 1828, 1833, 1838, 1843, 1848, 1853, 1858, 1863, 1868, 1873, - 1878, 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1918, 1923, - 1928, 1933, 1938, 1943, 1948, 1953, 1958, 1963, 1968, 1973, - 1978, 1983, 1988, 1993, 1998, 2003, 2008, 2013, 2018, 2023, - 2028, 2033, 2038, 2043, 2048, 2053, 2058, 2063, 2068, 2073, - 2078, 2083, 2088, 2093, 2098, 2103, 2108, 2113, 2118, 2123, - 2128, 2133, 2138, 2143, 2148, 2153, 2158, 2163, 2168, 2173, - 2178, 2183, 2188, 2193, 2198, 2203, 2208, 2213, 2218, 2223, - 2228, 2233, 2238, 2243, 2248, 2253, 2258, 2263, 2268, 2273, - 2278, 2283, 2289, 2295, 2301, 2307, 2313, 2319, 2325, 2330, - 2346, 2351, 2356, 2364, 2364, 2375, 2375, 2385, 2388, 2401, - 2419, 2443, 2447, 2453, 2458, 2469, 2472, 2478, 2487, 2490, - 2496, 2500, 2501, 2507, 2508, 2509, 2510, 2511, 2512, 2513, - 2517, 2518, 2522, 2518, 2534, 2535, 2539, 2539, 2546, 2546, - 2560, 2563, 2571, 2579, 2590, 2591, 2595, 2602, 2606, 2614, - 2618, 2631, 2631, 2651, 2654, 2660, 2672, 2684, 2684, 2699, - 2699, 2715, 2715, 2736, 2739, 2745, 2748, 2754, 2758, 2765, - 2770, 2775, 2782, 2785, 2794, 2798, 2805, 2808, 2814, 2814 + 0, 253, 253, 259, 262, 265, 269, 273, 277, 283, + 289, 292, 296, 302, 305, 313, 316, 319, 322, 325, + 330, 338, 345, 352, 358, 362, 369, 372, 378, 385, + 395, 403, 408, 438, 444, 448, 452, 472, 473, 474, + 475, 481, 482, 487, 492, 501, 502, 507, 515, 516, + 522, 531, 532, 537, 542, 547, 555, 556, 564, 575, + 576, 585, 586, 595, 596, 605, 606, 614, 615, 623, + 624, 632, 633, 633, 651, 652, 667, 671, 675, 679, + 684, 688, 692, 696, 700, 704, 708, 715, 718, 729, + 736, 741, 746, 754, 758, 762, 766, 771, 776, 785, + 785, 796, 800, 807, 814, 817, 824, 832, 852, 870, + 885, 908, 919, 929, 939, 949, 958, 961, 965, 969, + 974, 982, 987, 992, 997, 1002, 1011, 1022, 1049, 1058, + 1065, 1072, 1079, 1091, 1097, 1100, 1107, 1111, 1115, 1123, + 1132, 1135, 1146, 1149, 1152, 1156, 1160, 1164, 1171, 1175, + 1187, 1201, 1206, 1212, 1218, 1225, 1231, 1236, 1241, 1246, + 1254, 1258, 1262, 1266, 1270, 1274, 1280, 1289, 1292, 1300, + 1304, 1313, 1318, 1326, 1330, 1340, 1344, 1348, 1353, 1360, + 1364, 1369, 1374, 1379, 1386, 1393, 1397, 1402, 1407, 1412, + 1418, 1424, 1430, 1438, 1446, 1454, 1459, 1464, 1469, 1474, + 1479, 1484, 1490, 1496, 1502, 1510, 1518, 1526, 1532, 1538, + 1544, 1550, 1556, 1562, 1570, 1578, 1586, 1591, 1596, 1601, + 1606, 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1646, 1652, + 1658, 1664, 1670, 1676, 1682, 1688, 1694, 1700, 1706, 1712, + 1718, 1726, 1734, 1742, 1750, 1758, 1766, 1774, 1782, 1790, + 1798, 1806, 1814, 1819, 1824, 1829, 1834, 1839, 1844, 1849, + 1854, 1859, 1864, 1869, 1874, 1879, 1884, 1889, 1894, 1899, + 1904, 1909, 1914, 1919, 1924, 1929, 1934, 1939, 1944, 1949, + 1954, 1959, 1964, 1969, 1974, 1979, 1984, 1989, 1994, 1999, + 2004, 2009, 2014, 2019, 2024, 2029, 2034, 2039, 2044, 2049, + 2054, 2059, 2064, 2069, 2074, 2079, 2084, 2089, 2094, 2099, + 2104, 2109, 2114, 2119, 2124, 2129, 2134, 2139, 2144, 2149, + 2154, 2159, 2164, 2169, 2174, 2179, 2184, 2189, 2194, 2199, + 2204, 2209, 2214, 2219, 2224, 2229, 2234, 2239, 2244, 2249, + 2254, 2259, 2264, 2269, 2274, 2279, 2284, 2289, 2294, 2299, + 2304, 2309, 2314, 2319, 2324, 2329, 2334, 2339, 2344, 2349, + 2354, 2359, 2365, 2371, 2377, 2383, 2389, 2395, 2401, 2406, + 2422, 2427, 2432, 2440, 2440, 2451, 2451, 2461, 2464, 2477, + 2495, 2519, 2523, 2529, 2534, 2545, 2548, 2554, 2563, 2566, + 2572, 2576, 2577, 2583, 2584, 2585, 2586, 2587, 2588, 2589, + 2593, 2594, 2598, 2594, 2610, 2611, 2615, 2615, 2622, 2622, + 2636, 2639, 2647, 2655, 2666, 2667, 2671, 2678, 2682, 2690, + 2694, 2707, 2707, 2727, 2730, 2736, 2748, 2760, 2760, 2775, + 2775, 2791, 2791, 2812, 2815, 2821, 2824, 2830, 2834, 2841, + 2846, 2851, 2858, 2861, 2870, 2874, 2881, 2884, 2890, 2890 }; #endif @@ -859,34 +871,35 @@ static const yytype_uint16 yyrline[] = static const char *const yytname[] = { "$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "CONST", "BOOL", - "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "FLOAT16_T", - "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", - "SWITCH", "CASE", "DEFAULT", "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4", - "IVEC2", "IVEC3", "IVEC4", "I64VEC2", "I64VEC3", "I64VEC4", "UVEC2", - "UVEC3", "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4", "VEC2", "VEC3", - "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID", "IN", "OUT", "INOUT", - "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED", "COHERENT", "VOLATILE", - "RESTRICT", "READONLY", "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2", - "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", - "F16MAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", - "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", - "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3", "DMAT2X4", - "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", - "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", - "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", "ATOMIC_UINT", - "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW", - "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER1DARRAY", - "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW", - "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", - "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D", - "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY", - "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", - "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", - "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", - "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", - "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", - "SAMPLEREXTERNALOES", "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", - "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY", + "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "INT16_T", + "UINT16_T", "FLOAT16_T", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", + "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "SUBROUTINE", "BVEC2", + "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "I64VEC2", "I64VEC3", + "I64VEC4", "UVEC2", "UVEC3", "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4", + "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID", "IN", "OUT", + "INOUT", "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED", "COHERENT", + "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", "DVEC2", "DVEC3", + "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", + "F16MAT2", "F16MAT3", "F16MAT4", "I16VEC2", "I16VEC3", "I16VEC4", + "U16VEC2", "U16VEC3", "U16VEC4", "NOPERSPECTIVE", "FLAT", "SMOOTH", + "LAYOUT", "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", + "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3", + "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", + "DMAT4X4", "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", + "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", + "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", + "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", + "SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", + "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", + "ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", + "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", + "USAMPLER2DARRAY", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", + "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", + "USAMPLERBUFFER", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", + "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", + "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", + "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLER", "SAMPLERSHADOW", + "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY", "TEXTURE2DARRAY", "ITEXTURE1D", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE1DARRAY", "ITEXTURE2DARRAY", "UTEXTURE1D", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE1DARRAY", @@ -905,20 +918,20 @@ static const char *const yytname[] = "UIMAGE2DMS", "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", "STRUCT", "VOID", "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT", "INTCONSTANT", "UINTCONSTANT", "INT64CONSTANT", - "UINT64CONSTANT", "BOOLCONSTANT", "FLOAT16CONSTANT", "LEFT_OP", - "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", - "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", - "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", - "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", - "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", - "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", - "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", - "AMPERSAND", "QUESTION", "INVARIANT", "PRECISE", "HIGH_PRECISION", - "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", - "SUPERP", "$accept", "variable_identifier", "primary_expression", - "postfix_expression", "integer_expression", "function_call", - "function_call_or_method", "function_call_generic", - "function_call_header_no_parameters", + "UINT64CONSTANT", "INT16CONSTANT", "UINT16CONSTANT", "BOOLCONSTANT", + "FLOAT16CONSTANT", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", + "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", + "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", + "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", + "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", + "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", + "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", + "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION", + "INVARIANT", "PRECISE", "HIGH_PRECISION", "MEDIUM_PRECISION", + "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP", "$accept", + "variable_identifier", "primary_expression", "postfix_expression", + "integer_expression", "function_call", "function_call_or_method", + "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", "multiplicative_expression", "additive_expression", "shift_expression", @@ -985,16 +998,17 @@ static const yytype_uint16 yytoknum[] = 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542 + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552 }; # endif -#define YYPACT_NINF -512 +#define YYPACT_NINF -522 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-512))) + (!!((Yystate) == (-522))) -#define YYTABLE_NINF -397 +#define YYTABLE_NINF -407 #define yytable_value_is_error(Yytable_value) \ 0 @@ -1003,64 +1017,65 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 2538, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -235, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -201, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -203, -512, - -512, -512, -512, -512, -512, -512, -153, -512, -210, -220, - -152, -189, 4119, -160, -512, -128, -512, -512, -512, -512, - 3079, -512, -512, -512, -122, -512, -512, 564, -512, -512, - -72, -46, -105, -512, 6148, -216, -512, -512, -102, -512, - 4119, -512, -512, -512, 4119, -68, -66, -512, -225, -187, - -512, -512, -512, 4606, -98, -512, -512, -512, -179, -512, - -104, -172, -512, -512, 4119, -101, -512, -186, 846, -512, - -512, -512, -512, -122, -233, -512, 4870, -217, -512, -63, - -512, -151, -512, -512, -512, -512, -512, -512, -512, -512, - -512, 5648, 5648, 5648, -512, -512, -512, -512, -512, -512, - -512, -209, -512, -512, -512, -94, -170, 5898, -92, -512, - 5648, -139, -133, -109, -223, -103, -111, -108, -106, -71, - -74, -218, -86, -512, 5134, -512, -52, 5648, -512, -46, - 4119, 4119, -50, 3342, -512, -512, -512, -90, -89, -512, - -78, -76, -85, 5398, -70, 5648, -80, -69, -64, -512, - -512, -184, -512, -512, -150, -512, -220, -67, -512, -512, - -512, -512, 1128, -512, -512, -512, -512, -512, -512, -98, - 4870, -183, 4870, -512, -512, 4870, 4119, -512, -40, -512, - -512, -512, -169, -512, -512, 5648, -35, -512, -512, 5648, - -65, -512, -512, -512, 5648, 5648, 5648, 5648, 5648, 5648, - 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, - 5648, 5648, 5648, -512, -512, -512, -61, -512, -512, -512, - -512, 3601, -50, -122, -144, -512, -512, -512, -512, -512, - 1410, -512, 5648, -512, -512, -142, 5648, -123, -512, -512, - -512, 1410, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, 5648, 5648, -512, -512, -512, -512, 4870, - -512, -226, -512, 3860, -512, -512, -60, -62, -512, -512, - -512, -512, -512, -139, -139, -133, -133, -109, -109, -109, - -109, -223, -223, -103, -111, -108, -106, -71, -74, 5648, - -512, -512, -138, -98, -50, -512, -33, 2256, -168, -512, - -167, -512, 2798, 1410, -512, -512, -512, -512, 4342, -512, - -512, -121, -512, -512, -56, -512, -512, 2798, -58, -512, - -62, -32, 4119, -49, -51, -512, -512, 5648, 5648, -512, - -57, -45, 177, -55, 1974, -512, -47, -44, 1692, -512, - -512, -165, 5648, 1692, -58, -512, -512, 1410, 4870, -512, - -512, -512, -48, -62, -512, -512, 1410, -42, -512, -512, - -512 + 2618, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -224, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -217, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -214, -522, -522, -522, + -522, -522, -522, -522, -261, -522, -215, -213, -184, -182, + 4254, -196, -522, -122, -522, -522, -522, -522, 3177, -522, + -522, -522, -129, -522, -522, 574, -522, -522, -90, -48, + -125, -522, 6375, -232, -522, -522, -117, -522, 4254, -522, + -522, -522, 4254, -75, -74, -522, -240, -183, -522, -522, + -522, 4759, -108, -522, -522, -522, -179, -522, -114, -175, + -522, -522, 4254, -113, -522, -216, 866, -522, -522, -522, + -522, -129, -222, -522, 5033, -193, -522, -71, -522, -158, + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, 5855, 5855, 5855, -522, -522, -522, -522, -522, -522, + -522, -227, -522, -522, -522, -102, -164, 6115, -100, -522, + 5855, -145, -199, -195, -226, -128, -124, -120, -116, -82, + -83, -225, -96, -522, 5307, -522, -59, 5855, -522, -48, + 4254, 4254, -58, 3450, -522, -522, -522, -99, -98, -522, + -87, -86, -95, 5581, -84, 5855, -88, -79, -80, -522, + -522, -191, -522, -522, -156, -522, -213, -78, -522, -522, + -522, -522, 1158, -522, -522, -522, -522, -522, -522, -108, + 5033, -190, 5033, -522, -522, 5033, 4254, -522, -57, -522, + -522, -522, -163, -522, -522, 5855, -41, -522, -522, 5855, + -73, -522, -522, -522, 5855, 5855, 5855, 5855, 5855, 5855, + 5855, 5855, 5855, 5855, 5855, 5855, 5855, 5855, 5855, 5855, + 5855, 5855, 5855, -522, -522, -522, -76, -522, -522, -522, + -522, 3718, -58, -129, -143, -522, -522, -522, -522, -522, + 1450, -522, 5855, -522, -522, -142, 5855, -178, -522, -522, + -522, 1450, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -522, 5855, 5855, -522, -522, -522, -522, 5033, + -522, -131, -522, 3986, -522, -522, -72, -77, -522, -522, + -522, -522, -522, -145, -145, -199, -199, -195, -195, -195, + -195, -226, -226, -128, -124, -120, -116, -82, -83, 5855, + -522, -522, -141, -108, -58, -522, -37, 2326, -161, -522, + -160, -522, 2886, 1450, -522, -522, -522, -522, 4485, -522, + -522, -127, -522, -522, -68, -522, -522, 2886, -70, -522, + -77, -30, 4254, -63, -66, -522, -522, 5855, 5855, -522, + -69, -61, 188, -55, 2034, -522, -54, -64, 1742, -522, + -522, -159, 5855, 1742, -70, -522, -522, 1450, 5033, -522, + -522, -522, -56, -77, -522, -522, 1450, -53, -522, -522, + -522 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1068,94 +1083,95 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 147, 148, 146, 181, 174, 175, 177, 178, 179, - 180, 176, 163, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 182, 183, - 184, 206, 207, 208, 152, 150, 151, 149, 155, 153, - 154, 156, 157, 158, 159, 160, 161, 162, 185, 186, - 187, 218, 219, 220, 188, 189, 190, 230, 231, 232, - 129, 128, 127, 0, 130, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 256, 257, 258, 259, 260, 261, - 263, 264, 265, 266, 267, 268, 270, 271, 272, 273, - 274, 275, 276, 254, 255, 262, 269, 277, 278, 279, - 280, 281, 282, 351, 283, 284, 285, 286, 287, 288, - 289, 290, 292, 293, 294, 295, 296, 297, 299, 300, - 301, 302, 303, 304, 306, 307, 308, 309, 310, 311, - 291, 298, 305, 312, 313, 314, 315, 316, 317, 352, - 353, 354, 355, 356, 357, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 0, 173, - 359, 126, 137, 360, 361, 362, 0, 437, 0, 438, - 0, 103, 102, 0, 114, 119, 144, 143, 141, 145, - 0, 138, 140, 124, 167, 142, 358, 0, 434, 436, - 0, 0, 0, 365, 0, 0, 91, 88, 0, 101, - 0, 110, 104, 112, 0, 113, 0, 89, 120, 0, - 94, 139, 125, 0, 168, 1, 435, 165, 0, 136, - 134, 0, 132, 363, 0, 0, 92, 0, 0, 439, - 105, 109, 111, 107, 115, 106, 0, 121, 97, 0, - 95, 0, 2, 8, 9, 4, 5, 6, 7, 11, - 10, 0, 0, 0, 169, 37, 36, 38, 35, 3, - 13, 31, 15, 20, 21, 0, 0, 25, 0, 39, - 0, 43, 46, 49, 54, 57, 59, 61, 63, 65, - 67, 69, 0, 29, 0, 164, 0, 0, 131, 0, - 0, 0, 0, 0, 367, 90, 93, 0, 0, 419, - 0, 0, 0, 0, 0, 0, 0, 0, 391, 400, - 404, 39, 72, 85, 0, 380, 0, 124, 383, 402, - 382, 381, 0, 384, 385, 386, 387, 388, 389, 108, - 0, 116, 0, 375, 123, 0, 0, 99, 0, 96, - 32, 33, 0, 17, 18, 0, 0, 23, 22, 0, - 173, 26, 28, 34, 0, 0, 0, 0, 0, 0, + 0, 149, 150, 148, 185, 176, 177, 179, 180, 181, + 182, 183, 184, 178, 165, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 207, 208, 209, 210, 211, 212, + 186, 187, 188, 216, 217, 218, 154, 152, 153, 151, + 157, 155, 156, 158, 159, 160, 161, 162, 163, 164, + 189, 190, 191, 228, 229, 230, 192, 193, 194, 240, + 241, 242, 204, 205, 206, 213, 214, 215, 131, 130, + 129, 0, 132, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 266, 267, 268, 269, 270, 271, 273, 274, + 275, 276, 277, 278, 280, 281, 282, 283, 284, 285, + 286, 264, 265, 272, 279, 287, 288, 289, 290, 291, + 292, 361, 293, 294, 295, 296, 297, 298, 299, 300, + 302, 303, 304, 305, 306, 307, 309, 310, 311, 312, + 313, 314, 316, 317, 318, 319, 320, 321, 301, 308, + 315, 322, 323, 324, 325, 326, 327, 362, 363, 364, + 365, 366, 367, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 0, 175, 369, 128, + 139, 370, 371, 372, 0, 447, 0, 448, 0, 105, + 104, 0, 116, 121, 146, 145, 143, 147, 0, 140, + 142, 126, 169, 144, 368, 0, 444, 446, 0, 0, + 0, 375, 0, 0, 93, 90, 0, 103, 0, 112, + 106, 114, 0, 115, 0, 91, 122, 0, 96, 141, + 127, 0, 170, 1, 445, 167, 0, 138, 136, 0, + 134, 373, 0, 0, 94, 0, 0, 449, 107, 111, + 113, 109, 117, 108, 0, 123, 99, 0, 97, 0, + 2, 10, 11, 4, 5, 6, 7, 8, 9, 13, + 12, 0, 0, 0, 171, 39, 38, 40, 37, 3, + 15, 33, 17, 22, 23, 0, 0, 27, 0, 41, + 0, 45, 48, 51, 56, 59, 61, 63, 65, 67, + 69, 71, 0, 31, 0, 166, 0, 0, 133, 0, + 0, 0, 0, 0, 377, 92, 95, 0, 0, 429, + 0, 0, 0, 0, 0, 0, 0, 0, 401, 410, + 414, 41, 74, 87, 0, 390, 0, 126, 393, 412, + 392, 391, 0, 394, 395, 396, 397, 398, 399, 110, + 0, 118, 0, 385, 125, 0, 0, 101, 0, 98, + 34, 35, 0, 19, 20, 0, 0, 25, 24, 0, + 175, 28, 30, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 170, 171, 0, 166, 87, 135, - 133, 0, 0, 373, 0, 371, 366, 368, 430, 429, - 0, 421, 0, 433, 431, 0, 0, 0, 416, 417, - 390, 0, 75, 76, 78, 77, 80, 81, 82, 83, - 84, 79, 74, 0, 0, 405, 401, 403, 118, 0, - 378, 0, 122, 0, 100, 12, 0, 19, 16, 27, - 40, 41, 42, 45, 44, 47, 48, 52, 53, 50, - 51, 55, 56, 58, 60, 62, 64, 66, 68, 0, - 172, 364, 0, 374, 0, 369, 0, 0, 0, 432, - 0, 415, 0, 392, 73, 86, 117, 376, 0, 98, - 14, 0, 370, 372, 0, 424, 423, 426, 398, 411, - 409, 0, 0, 0, 0, 377, 379, 0, 0, 425, - 0, 0, 408, 0, 0, 406, 0, 0, 0, 393, - 71, 0, 427, 0, 398, 397, 399, 413, 0, 395, - 418, 394, 0, 428, 422, 407, 414, 0, 410, 420, - 412 + 0, 0, 0, 72, 172, 173, 0, 168, 89, 137, + 135, 0, 0, 383, 0, 381, 376, 378, 440, 439, + 0, 431, 0, 443, 441, 0, 0, 0, 426, 427, + 400, 0, 77, 78, 80, 79, 82, 83, 84, 85, + 86, 81, 76, 0, 0, 415, 411, 413, 120, 0, + 388, 0, 124, 0, 102, 14, 0, 21, 18, 29, + 42, 43, 44, 47, 46, 49, 50, 54, 55, 52, + 53, 57, 58, 60, 62, 64, 66, 68, 70, 0, + 174, 374, 0, 384, 0, 379, 0, 0, 0, 442, + 0, 425, 0, 402, 75, 88, 119, 386, 0, 100, + 16, 0, 380, 382, 0, 434, 433, 436, 408, 421, + 419, 0, 0, 0, 0, 387, 389, 0, 0, 435, + 0, 0, 418, 0, 0, 416, 0, 0, 0, 403, + 73, 0, 437, 0, 408, 407, 409, 423, 0, 405, + 428, 404, 0, 438, 432, 417, 424, 0, 420, 430, + 422 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -96, -512, -263, -262, -304, -264, -204, -199, - -205, -197, -206, -196, -512, -252, -512, -282, -512, -296, - -512, 3, -512, -512, -512, 6, -512, -512, -512, -29, - -23, -26, -512, -512, -489, -512, -512, -512, -512, -118, - -512, -221, -228, -512, -512, 0, -240, -512, 13, -512, - -512, -512, -328, -330, -200, -271, -363, -512, -273, -364, - -511, -308, -512, -512, -314, -309, -512, -512, -2, -441, - -260, -512, -512, -279, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, 12, -512, -512 + -522, -522, -522, -522, -522, -522, -522, -522, -522, -522, + -522, -522, -103, -522, -267, -266, -296, -270, -211, -210, + -218, -209, -208, -212, -522, -259, -522, -291, -522, -309, + -522, 5, -522, -522, -522, 6, -522, -522, -522, -40, + -34, -36, -522, -522, -498, -522, -522, -522, -522, -118, + -522, -229, -236, -522, -522, 0, -245, -522, 1, -522, + -522, -522, -335, -343, -207, -285, -379, -522, -284, -375, + -521, -321, -522, -522, -329, -328, -522, -522, -16, -447, + -275, -522, -522, -294, -522, -522, -522, -522, -522, -522, + -522, -522, -522, -522, -522, -522, -522, 2, -522, -522 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 309, 310, 311, 476, 312, 313, 314, 315, 316, - 317, 318, 361, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 362, 499, 363, 463, 364, - 429, 365, 218, 386, 291, 366, 220, 221, 222, 251, - 252, 253, 223, 224, 225, 226, 227, 228, 271, 272, - 229, 230, 231, 232, 268, 333, 264, 234, 235, 236, - 340, 274, 343, 344, 434, 435, 384, 471, 368, 369, - 370, 371, 451, 534, 560, 542, 543, 544, 561, 372, - 373, 374, 545, 533, 375, 546, 567, 376, 377, 512, - 440, 507, 527, 540, 541, 378, 237, 238, 239, 248 + -1, 319, 320, 321, 486, 322, 323, 324, 325, 326, + 327, 328, 371, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 372, 509, 373, 473, 374, + 439, 375, 226, 396, 299, 376, 228, 229, 230, 259, + 260, 261, 231, 232, 233, 234, 235, 236, 279, 280, + 237, 238, 239, 240, 276, 343, 272, 242, 243, 244, + 350, 282, 353, 354, 444, 445, 394, 481, 378, 379, + 380, 381, 461, 544, 570, 552, 553, 554, 571, 382, + 383, 384, 555, 543, 385, 556, 577, 386, 387, 522, + 450, 517, 537, 550, 551, 388, 245, 246, 247, 256 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1163,66 +1179,67 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 233, 254, 261, 217, 383, 277, 219, 392, 467, 269, - 513, 332, 431, 437, 245, 411, 412, 468, 287, 470, - 240, 242, 472, 531, 263, 422, 261, 393, 394, 254, - 285, 380, 263, 556, 517, 401, 518, 559, 531, 286, - 334, 263, 559, 379, 381, 247, -30, 385, 395, 276, - 413, 414, 396, 341, 241, 246, 243, 445, 473, 447, - 423, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 334, 288, 250, 334, 289, 506, 335, 290, 346, - 462, 469, 426, 336, 338, 428, 398, 475, 528, 529, - 339, 562, 399, 464, 464, 464, 258, 464, 383, 477, - 383, 437, 256, 383, 249, 257, 516, 487, 488, 489, - 490, 388, 464, 261, 389, 465, 566, 479, 504, 341, - 464, 505, 341, 509, 504, 409, 410, 522, 213, 214, - 215, 404, 405, 406, 407, 263, 408, 415, 416, 464, - 511, 464, 537, 437, 483, 484, 508, 485, 486, 467, - 510, 491, 492, 267, 273, 536, 283, 278, 284, 334, - 337, 387, 397, 402, 345, 341, 417, 319, 418, 419, - 421, 420, 424, 427, 433, 438, 439, 441, 270, 442, - 443, 514, 515, 448, 474, 446, 449, 383, -29, 478, - 524, -24, 547, 503, 554, 568, 450, 500, 520, 538, - 464, -396, 467, 521, 358, 390, 391, 548, 552, 549, - 341, 553, 557, 493, 495, 497, 530, 569, 570, 494, - 558, 430, 255, 496, 403, 281, 498, 280, 282, 244, - 262, 530, 502, 523, 525, 555, 383, 233, 319, 564, - 217, 319, 551, 219, 275, 565, 279, 526, 539, 266, - 255, 0, 341, 0, 255, 550, 563, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 342, 0, 383, 0, 367, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 532, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 261, 0, 532, 0, 480, 481, - 482, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 342, 432, 0, 342, 0, 0, 0, 0, 0, 0, + 241, 262, 269, 393, 402, 225, 227, 477, 285, 277, + 447, 478, 342, 480, 523, 441, 482, 253, 250, 403, + 404, 295, 421, 422, 541, 293, 269, 271, 432, 262, + 221, 222, 223, 566, 294, 271, 411, 569, -32, 541, + 405, 248, 569, 284, 406, 271, 389, 391, 249, 419, + 420, 344, 390, 351, 455, 251, 457, 423, 424, 356, + 254, 483, 255, 433, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 344, 516, 264, 344, 417, 265, + 418, 395, 257, 472, 479, 436, 296, 345, 438, 297, + 258, 348, 298, 346, 474, 521, 487, 349, 447, 393, + 526, 393, 408, 485, 393, 538, 539, 572, 409, 474, + 266, 474, 474, 474, 398, 269, 474, 399, 489, 475, + 576, 351, 425, 426, 351, 497, 498, 499, 500, 514, + 474, 514, 515, 519, 532, 414, 415, 416, 271, 527, + 447, 528, 275, 518, 281, 474, 547, 520, 477, 546, + 493, 494, 286, 495, 496, 501, 502, 291, 292, 344, + 347, 397, 355, 427, 407, 412, 428, 351, 329, 429, + 430, 431, 434, 437, 443, 484, 448, 449, 451, 452, + 453, 456, 524, 525, 278, 458, 459, -31, 393, 578, + 460, 488, 510, -26, 534, 474, 530, 548, 513, -406, + 531, 477, 557, 558, 559, 563, 562, 564, 400, 401, + 568, 505, 351, 540, 368, 567, 503, 580, 504, 579, + 508, 506, 289, 507, 288, 252, 290, 413, 540, 533, + 263, 440, 565, 535, 574, 512, 575, 393, 270, 561, + 287, 329, 536, 549, 329, 241, 0, 274, 0, 0, + 225, 227, 283, 573, 351, 0, 560, 0, 263, 0, + 0, 0, 263, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, + 0, 0, 352, 0, 0, 0, 377, 0, 0, 0, + 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 269, 0, 542, 0, + 0, 490, 491, 492, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, + 352, 442, 0, 352, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 377, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, - 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, + 377, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 342, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, - 0, 0, 367, 367, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, - 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 367, 0, 0, 0, 367, 0, - 0, 0, 0, 367, 0, 0, 0, 367, 0, 0, - 0, 0, 0, 0, 265, 0, 367, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 0, 0, 0, 0, 0, 0, 0, 377, 0, 0, + 0, 0, 377, 377, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 377, 0, 0, + 0, 0, 270, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 377, 0, 0, 0, 377, 0, + 0, 0, 0, 377, 0, 0, 0, 377, 0, 0, + 0, 0, 0, 0, 273, 0, 377, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, @@ -1241,16 +1258,17 @@ static const yytype_int16 yytable[] = 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 0, 0, 210, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 211, 212, 213, 214, 215, 216, 1, + 0, 0, 0, 219, 220, 221, 222, 223, 224, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, - 356, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 12, 13, 357, 358, 359, 0, 360, 361, 362, 363, + 364, 365, 366, 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, @@ -1269,16 +1287,17 @@ static const yytype_int16 yytable[] = 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 357, - 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, - 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 367, 300, 218, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 303, 0, 0, 0, 358, 359, 0, 0, 0, - 0, 360, 305, 306, 307, 308, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 211, 212, 213, 214, 215, - 216, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 347, 348, 349, 0, 350, 351, 352, 353, - 354, 355, 356, 12, 13, 14, 15, 16, 17, 18, + 0, 313, 0, 0, 0, 368, 369, 0, 0, 0, + 0, 370, 315, 316, 317, 318, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 219, 220, 221, 222, 223, + 224, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 357, 358, 359, 0, 360, 361, + 362, 363, 364, 365, 366, 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, @@ -1298,15 +1317,16 @@ static const yytype_int16 yytable[] = 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 357, 292, 210, 293, 294, 295, 296, 297, 298, - 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 367, + 300, 218, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 303, 0, 0, 0, 358, 466, 0, - 0, 0, 0, 360, 305, 306, 307, 308, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 211, 212, 213, - 214, 215, 216, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 347, 348, 349, 0, 350, 351, - 352, 353, 354, 355, 356, 12, 13, 14, 15, 16, + 0, 0, 0, 313, 0, 0, 0, 368, 476, 0, + 0, 0, 0, 370, 315, 316, 317, 318, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 219, 220, 221, + 222, 223, 224, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 357, 358, 359, 0, + 360, 361, 362, 363, 364, 365, 366, 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, @@ -1326,15 +1346,16 @@ static const yytype_int16 yytable[] = 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 357, 292, 210, 293, 294, 295, 296, - 297, 298, 299, 300, 0, 0, 301, 302, 0, 0, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 367, 300, 218, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 303, 0, 0, 0, 358, - 0, 0, 0, 0, 0, 360, 305, 306, 307, 308, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, - 212, 213, 214, 215, 216, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 347, 348, 349, 0, - 350, 351, 352, 353, 354, 355, 356, 12, 13, 14, + 0, 0, 0, 0, 0, 313, 0, 0, 0, 368, + 0, 0, 0, 0, 0, 370, 315, 316, 317, 318, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, + 220, 221, 222, 223, 224, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 357, 358, + 359, 0, 360, 361, 362, 363, 364, 365, 366, 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, @@ -1354,16 +1375,17 @@ static const yytype_int16 yytable[] = 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 357, 292, 210, 293, 294, - 295, 296, 297, 298, 299, 300, 0, 0, 301, 302, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 367, 300, 218, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 303, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 360, 305, 306, - 307, 308, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 211, 212, 213, 214, 215, 216, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 347, 348, - 349, 0, 350, 351, 352, 353, 354, 355, 356, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 0, 0, 0, 0, 0, 0, 0, 313, 0, 0, + 0, 286, 0, 0, 0, 0, 0, 370, 315, 316, + 317, 318, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 219, 220, 221, 222, 223, 224, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, + 366, 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, @@ -1382,16 +1404,17 @@ static const yytype_int16 yytable[] = 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 357, 292, 210, - 293, 294, 295, 296, 297, 298, 299, 300, 0, 0, - 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 360, - 305, 306, 307, 308, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 211, 212, 213, 214, 215, 216, 1, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 367, 300, 218, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 0, 0, + 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, + 315, 316, 317, 318, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 219, 220, 221, 222, 223, 224, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, @@ -1410,16 +1433,17 @@ static const yytype_int16 yytable[] = 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 0, - 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, - 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 0, 300, 218, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 360, 305, 306, 307, 308, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 211, 212, 213, 214, 215, - 216, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, + 0, 313, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 370, 315, 316, 317, 318, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 219, 220, 221, 222, 223, + 224, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, @@ -1439,13 +1463,97 @@ static const yytype_int16 yytable[] = 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 0, 0, 210, 0, 0, 0, 0, 0, 0, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 0, + 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 219, 220, 221, + 222, 223, 224, 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, 0, 300, 218, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 315, 316, 317, 318, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 219, 220, 221, 222, 223, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 267, + 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 0, 0, 0, 0, 0, 211, 212, 213, - 214, 215, 216, 12, 13, 14, 15, 16, 17, 18, + 0, 0, 268, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 219, 220, 221, 222, + 223, 0, 0, 0, 0, 0, 0, 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, 0, 0, 218, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 0, 0, 0, 0, 0, 219, + 220, 221, 222, 223, 0, 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, @@ -1465,21 +1573,97 @@ static const yytype_int16 yytable[] = 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 0, 292, 210, 293, 294, 295, 296, 297, 298, - 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 0, + 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 303, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 305, 306, 307, 308, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 211, 212, 213, - 214, 215, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 511, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 219, 220, 221, + 222, 223, 0, 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, 0, 0, 218, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 529, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 0, 0, 0, 0, 0, 219, 220, 221, 222, 223, + 0, 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, 0, 0, 218, 0, 0, + 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 219, 220, 221, 222, 223, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 0, 0, 0, 0, + 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 0, 300, 218, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 0, 0, 0, 392, 545, 0, 0, 0, 0, + 0, 315, 316, 317, 318, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, + 28, 29, 30, 31, 32, 33, 34, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, @@ -1493,45 +1677,75 @@ static const yytype_int16 yytable[] = 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 0, 259, 210, 0, 0, 0, 0, 0, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 0, 300, 218, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 313, 0, 0, 314, 0, 0, + 0, 0, 0, 0, 0, 315, 316, 317, 318, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 0, 0, 0, 0, 0, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 0, 300, 218, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 0, 0, 311, + 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 313, 0, + 0, 0, 392, 0, 0, 0, 0, 0, 0, 315, + 316, 317, 318, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 260, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 0, 0, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 12, 13, 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, 0, 0, 210, 0, 0, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 0, 0, + 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 0, 300, + 218, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 436, 0, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, - 0, 211, 212, 213, 214, 215, 12, 13, 14, 15, + 0, 0, 313, 0, 0, 435, 0, 0, 0, 0, + 0, 0, 0, 315, 316, 317, 318, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 66, 67, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, @@ -1545,326 +1759,152 @@ static const yytype_int16 yytable[] = 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 0, 0, 210, 0, 0, 0, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 0, 300, 218, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 313, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 454, 315, 316, 317, + 318, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 0, 0, 0, 0, + 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 0, 300, 218, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 315, 316, 317, 318, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 0, 0, 0, 0, + 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 410, 0, 300, 218, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 501, 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, - 211, 212, 213, 214, 215, 12, 13, 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, 0, 0, 210, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 519, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 0, 0, 0, 0, 0, 0, 211, - 212, 213, 214, 215, 12, 13, 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, 0, 0, 210, 0, 0, 0, 4, 5, - 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 211, 212, - 213, 214, 215, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 0, 0, 0, 0, 0, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 0, 292, 210, 293, 294, - 295, 296, 297, 298, 299, 300, 0, 0, 301, 302, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 303, 0, 0, - 0, 382, 535, 0, 0, 0, 0, 0, 305, 306, - 307, 308, 4, 5, 6, 7, 8, 9, 10, 11, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, - 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 0, - 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, - 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 303, 0, 0, 304, 0, 0, 0, 0, 0, - 0, 0, 305, 306, 307, 308, 4, 5, 6, 7, - 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 0, 0, 0, 0, 0, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 0, 292, 210, 293, 294, 295, 296, - 297, 298, 299, 300, 0, 0, 301, 302, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 303, 0, 0, 0, 382, - 0, 0, 0, 0, 0, 0, 305, 306, 307, 308, - 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 0, 0, 0, - 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 0, 292, 210, - 293, 294, 295, 296, 297, 298, 299, 300, 0, 0, - 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, - 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, - 305, 306, 307, 308, 4, 5, 6, 7, 8, 9, - 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 0, 292, 210, 293, 294, 295, 296, 297, 298, - 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, - 10, 11, 0, 444, 305, 306, 307, 308, 0, 0, - 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 0, 292, 210, 293, 294, 295, 296, 297, 298, - 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, - 10, 11, 0, 0, 305, 306, 307, 308, 0, 0, - 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 400, 0, 292, 210, 293, 294, 295, 296, 297, 298, - 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, - 10, 11, 0, 0, 305, 306, 307, 308, 0, 0, - 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 0, 0, 210 + 313, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 315, 316, 317, 318, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 0, 0, 0, 0, + 0, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 0, 0, 218 }; static const yytype_int16 yycheck[] = { - 0, 222, 230, 0, 286, 245, 0, 303, 372, 55, - 451, 263, 340, 343, 224, 238, 239, 380, 258, 382, - 255, 224, 385, 512, 257, 243, 254, 236, 237, 250, - 255, 264, 257, 544, 260, 317, 262, 548, 527, 264, - 257, 257, 553, 283, 284, 265, 255, 264, 257, 265, - 273, 274, 261, 274, 255, 265, 259, 353, 386, 355, - 278, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 257, 259, 262, 257, 262, 440, 256, 265, 265, - 264, 264, 334, 262, 256, 337, 256, 256, 256, 256, - 262, 256, 262, 262, 262, 262, 224, 262, 380, 395, - 382, 431, 262, 385, 256, 265, 469, 411, 412, 413, - 414, 262, 262, 341, 265, 265, 557, 399, 262, 340, - 262, 265, 343, 265, 262, 234, 235, 265, 281, 282, - 283, 270, 271, 272, 267, 257, 269, 240, 241, 262, - 263, 262, 263, 473, 407, 408, 442, 409, 410, 513, - 446, 415, 416, 225, 259, 518, 224, 259, 224, 257, - 264, 224, 256, 255, 265, 386, 277, 263, 276, 275, - 244, 242, 258, 225, 224, 265, 265, 255, 224, 255, - 265, 463, 464, 263, 224, 255, 255, 469, 255, 224, - 223, 256, 224, 433, 17, 558, 260, 258, 258, 255, - 262, 259, 566, 499, 259, 301, 302, 256, 265, 260, - 431, 256, 259, 417, 419, 421, 512, 265, 260, 418, - 264, 339, 222, 420, 320, 254, 422, 250, 254, 216, - 230, 527, 432, 504, 507, 543, 518, 237, 334, 553, - 237, 337, 538, 237, 244, 554, 248, 507, 527, 237, - 250, -1, 473, -1, 254, 537, 552, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 274, -1, 558, -1, 278, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 512, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 532, -1, 527, -1, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 340, 341, -1, 343, -1, -1, -1, -1, -1, -1, + 0, 230, 238, 294, 313, 0, 0, 382, 253, 57, + 353, 390, 271, 392, 461, 350, 395, 232, 232, 246, + 247, 266, 248, 249, 522, 265, 262, 267, 253, 258, + 291, 292, 293, 554, 274, 267, 327, 558, 265, 537, + 267, 265, 563, 275, 271, 267, 291, 292, 265, 244, + 245, 267, 274, 282, 363, 269, 365, 283, 284, 275, + 275, 396, 275, 288, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 267, 450, 272, 267, 277, 275, + 279, 274, 266, 274, 274, 344, 269, 266, 347, 272, + 272, 266, 275, 272, 272, 273, 405, 272, 441, 390, + 479, 392, 266, 266, 395, 266, 266, 266, 272, 272, + 232, 272, 272, 272, 272, 351, 272, 275, 409, 275, + 567, 350, 250, 251, 353, 421, 422, 423, 424, 272, + 272, 272, 275, 275, 275, 280, 281, 282, 267, 270, + 483, 272, 232, 452, 269, 272, 273, 456, 523, 528, + 417, 418, 269, 419, 420, 425, 426, 232, 232, 267, + 274, 232, 275, 287, 266, 265, 286, 396, 271, 285, + 252, 254, 268, 232, 232, 232, 275, 275, 265, 265, + 275, 265, 473, 474, 232, 273, 265, 265, 479, 568, + 270, 232, 268, 266, 231, 272, 268, 265, 443, 269, + 509, 576, 232, 266, 270, 266, 275, 19, 311, 312, + 274, 429, 441, 522, 269, 269, 427, 270, 428, 275, + 432, 430, 262, 431, 258, 224, 262, 330, 537, 514, + 230, 349, 553, 517, 563, 442, 564, 528, 238, 548, + 256, 344, 517, 537, 347, 245, -1, 245, -1, -1, + 245, 245, 252, 562, 483, -1, 547, -1, 258, -1, + -1, -1, 262, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 568, -1, -1, + -1, -1, 282, -1, -1, -1, 286, -1, -1, -1, + -1, -1, -1, 522, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 542, -1, 537, -1, + -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, -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, -1, -1, -1, + 350, 351, -1, 353, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 382, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 396, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 431, -1, -1, -1, -1, -1, -1, -1, -1, - 440, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 441, -1, -1, -1, -1, -1, -1, -1, -1, + 450, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 461, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 473, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 483, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 507, -1, -1, - -1, -1, 512, 513, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 527, -1, -1, - -1, -1, 532, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 544, -1, -1, -1, 548, -1, - -1, -1, -1, 553, -1, -1, -1, 557, -1, -1, - -1, -1, -1, -1, 0, -1, 566, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + -1, -1, -1, -1, -1, -1, -1, 517, -1, -1, + -1, -1, 522, 523, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 537, -1, -1, + -1, -1, 542, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 554, -1, -1, -1, 558, -1, + -1, -1, -1, 563, -1, -1, -1, 567, -1, -1, + -1, -1, -1, -1, 0, -1, 576, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, @@ -1883,15 +1923,16 @@ static const yytype_int16 yycheck[] = 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, -1, -1, 233, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 279, 280, 281, 282, 283, 284, 3, + -1, -1, -1, 289, 290, 291, 292, 293, 294, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, -1, 18, 19, 20, 21, 22, 23, + 14, 15, 16, 17, 18, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, @@ -1913,13 +1954,14 @@ static const yytype_int16 yycheck[] = 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + -1, -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 255, -1, -1, -1, 259, 260, -1, -1, -1, - -1, 265, 266, 267, 268, 269, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, - 284, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, + -1, 265, -1, -1, -1, 269, 270, -1, -1, -1, + -1, 275, 276, 277, 278, 279, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, + 294, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, @@ -1941,13 +1983,14 @@ static const yytype_int16 yycheck[] = 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, -1, -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 255, -1, -1, -1, 259, 260, -1, - -1, -1, -1, 265, 266, 267, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, - 282, 283, 284, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, -1, 18, 19, + -1, -1, -1, 265, -1, -1, -1, 269, 270, -1, + -1, -1, -1, 275, 276, 277, 278, 279, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 289, 290, 291, + 292, 293, 294, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, @@ -1969,14 +2012,15 @@ static const yytype_int16 yycheck[] = 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, -1, -1, 236, 237, -1, -1, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, -1, -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 255, -1, -1, -1, 259, - -1, -1, -1, -1, -1, 265, 266, 267, 268, 269, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, - 280, 281, 282, 283, 284, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + -1, -1, -1, -1, -1, 265, -1, -1, -1, 269, + -1, -1, -1, -1, -1, 275, 276, 277, 278, 279, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 289, + 290, 291, 292, 293, 294, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, @@ -1997,14 +2041,15 @@ static const yytype_int16 yycheck[] = 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, -1, -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 255, -1, -1, - -1, 259, -1, -1, -1, -1, -1, 265, 266, 267, - 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 279, 280, 281, 282, 283, 284, 3, 4, 5, + -1, -1, -1, -1, -1, -1, -1, 265, -1, -1, + -1, 269, -1, -1, -1, -1, -1, 275, 276, 277, + 278, 279, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 289, 290, 291, 292, 293, 294, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, -1, 18, 19, 20, 21, 22, 23, 24, 25, + 16, 17, 18, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, @@ -2025,15 +2070,16 @@ static const yytype_int16 yycheck[] = 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, - 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, -1, -1, + 246, 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 265, - 266, 267, 268, 269, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 279, 280, 281, 282, 283, 284, 3, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, + 276, 277, 278, 279, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 289, 290, 291, 292, 293, 294, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, @@ -2052,16 +2098,17 @@ static const yytype_int16 yycheck[] = 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, -1, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + -1, -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 255, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 265, 266, 267, 268, 269, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, - 284, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, + -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 275, 276, 277, 278, 279, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, + 294, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, @@ -2081,199 +2128,19 @@ static const yytype_int16 yycheck[] = 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, -1, -1, 225, -1, -1, -1, -1, -1, -1, + 222, 223, 224, 225, 226, 227, 228, 229, 230, -1, + -1, 233, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, -1, -1, -1, -1, -1, 279, 280, 281, - 282, 283, 284, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 255, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 266, 267, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, - 282, 283, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, -1, 224, 225, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 265, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, -1, -1, 279, 280, - 281, 282, 283, -1, -1, -1, -1, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, -1, -1, 225, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 260, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, - -1, 279, 280, 281, 282, 283, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, -1, -1, 225, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 260, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, - 279, 280, 281, 282, 283, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, -1, -1, 225, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 260, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, -1, -1, -1, -1, -1, -1, 279, - 280, 281, 282, 283, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, -1, -1, 225, -1, -1, -1, 6, 7, - 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, - 281, 282, 283, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, -1, -1, -1, -1, -1, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, -1, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 255, -1, -1, - -1, 259, 260, -1, -1, -1, -1, -1, 266, 267, - 268, 269, 6, 7, 8, 9, 10, 11, 12, 13, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, -1, -1, -1, -1, -1, 289, 290, 291, + 292, 293, 294, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, - -1, -1, -1, -1, 78, 79, 80, 81, 82, 83, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, @@ -2287,170 +2154,17 @@ static const yytype_int16 yycheck[] = 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, -1, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + -1, -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 255, -1, -1, 258, -1, -1, -1, -1, -1, - -1, -1, 266, 267, 268, 269, 6, 7, 8, 9, - 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, -1, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, -1, -1, 236, 237, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 255, -1, -1, -1, 259, - -1, -1, -1, -1, -1, -1, 266, 267, 268, 269, - 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, -1, -1, -1, - -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, -1, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, - 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, - -1, -1, 258, -1, -1, -1, -1, -1, -1, -1, - 266, 267, 268, 269, 6, 7, 8, 9, 10, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, - 12, 13, -1, 265, 266, 267, 268, 269, -1, -1, - -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, - 12, 13, -1, -1, 266, 267, 268, 269, -1, -1, - -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, - 12, 13, -1, -1, 266, 267, 268, 269, -1, -1, - -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, -1, -1, 225 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 276, 277, 278, 279, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, @@ -2470,115 +2184,466 @@ static const yytype_uint16 yystos[] = 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 225, 279, 280, 281, 282, 283, 284, 319, 320, 323, - 324, 325, 326, 330, 331, 332, 333, 334, 335, 338, - 339, 340, 341, 343, 345, 346, 347, 384, 385, 386, - 255, 255, 224, 259, 346, 224, 265, 265, 387, 256, - 262, 327, 328, 329, 339, 343, 262, 265, 224, 224, - 265, 340, 343, 257, 344, 0, 385, 225, 342, 55, - 224, 336, 337, 259, 349, 343, 265, 344, 259, 366, - 328, 327, 329, 224, 224, 255, 264, 344, 259, 262, - 265, 322, 224, 226, 227, 228, 229, 230, 231, 232, - 233, 236, 237, 255, 258, 266, 267, 268, 269, 289, - 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 343, 257, 256, 262, 264, 256, 262, - 348, 339, 343, 350, 351, 265, 265, 14, 15, 16, - 18, 19, 20, 21, 22, 23, 24, 223, 259, 260, - 265, 300, 313, 315, 317, 319, 323, 343, 356, 357, - 358, 359, 367, 368, 369, 372, 375, 376, 383, 344, - 264, 344, 259, 315, 354, 264, 321, 224, 262, 265, - 300, 300, 317, 236, 237, 257, 261, 256, 256, 262, - 222, 315, 255, 300, 270, 271, 272, 267, 269, 234, - 235, 238, 239, 273, 274, 240, 241, 277, 276, 275, - 242, 244, 243, 278, 258, 258, 313, 225, 313, 318, - 337, 350, 343, 224, 352, 353, 260, 351, 265, 265, - 378, 255, 255, 265, 265, 317, 255, 317, 263, 255, - 260, 360, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 264, 316, 262, 265, 260, 357, 354, 264, - 354, 355, 354, 350, 224, 256, 292, 317, 224, 315, - 300, 300, 300, 302, 302, 303, 303, 304, 304, 304, - 304, 305, 305, 306, 307, 308, 309, 310, 311, 314, - 258, 260, 352, 344, 262, 265, 357, 379, 317, 265, - 317, 263, 377, 367, 315, 315, 354, 260, 262, 260, - 258, 317, 265, 353, 223, 356, 368, 380, 256, 256, - 317, 332, 339, 371, 361, 260, 354, 263, 255, 371, - 381, 382, 363, 364, 365, 370, 373, 224, 256, 260, - 315, 317, 265, 256, 17, 359, 358, 259, 264, 358, - 362, 366, 256, 317, 362, 363, 367, 374, 354, 265, - 260 + 223, 224, 225, 226, 227, 228, 229, 230, -1, 232, + 233, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 275, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 289, 290, 291, 292, + 293, -1, -1, -1, -1, -1, -1, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, -1, -1, 233, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 270, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, -1, -1, -1, -1, -1, 289, + 290, 291, 292, 293, -1, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, -1, + -1, 233, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 270, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, -1, -1, -1, -1, -1, 289, 290, 291, + 292, 293, -1, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, -1, -1, 233, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 270, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + -1, -1, -1, -1, -1, 289, 290, 291, 292, 293, + -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, -1, -1, 233, -1, -1, + -1, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 289, 290, 291, 292, 293, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, + -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, -1, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, -1, + -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 265, -1, -1, -1, 269, 270, -1, -1, -1, -1, + -1, 276, 277, 278, 279, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + -1, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, -1, -1, 246, 247, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 265, -1, -1, 268, -1, -1, + -1, -1, -1, -1, -1, 276, 277, 278, 279, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, -1, -1, -1, -1, -1, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, -1, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, -1, -1, 246, + 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 265, -1, + -1, -1, 269, -1, -1, -1, -1, -1, -1, 276, + 277, 278, 279, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, -1, -1, + -1, -1, -1, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, -1, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, -1, -1, 246, 247, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 265, -1, -1, 268, -1, -1, -1, -1, + -1, -1, -1, 276, 277, 278, 279, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, -1, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, -1, -1, 246, 247, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 265, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 275, 276, 277, 278, + 279, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, + -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, -1, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, -1, + -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 265, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 276, 277, 278, 279, -1, -1, -1, -1, -1, + -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, + -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, -1, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, -1, + -1, 246, 247, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 265, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 276, 277, 278, 279, -1, -1, -1, -1, -1, + -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, -1, -1, -1, -1, + -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, -1, -1, 233 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 233, 289, + 290, 291, 292, 293, 294, 329, 330, 333, 334, 335, + 336, 340, 341, 342, 343, 344, 345, 348, 349, 350, + 351, 353, 355, 356, 357, 394, 395, 396, 265, 265, + 232, 269, 356, 232, 275, 275, 397, 266, 272, 337, + 338, 339, 349, 353, 272, 275, 232, 232, 275, 350, + 353, 267, 354, 0, 395, 232, 352, 57, 232, 346, + 347, 269, 359, 353, 275, 354, 269, 376, 338, 337, + 339, 232, 232, 265, 274, 354, 269, 272, 275, 332, + 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 246, 247, 265, 268, 276, 277, 278, 279, 299, + 300, 301, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 353, 267, 266, 272, 274, 266, 272, + 358, 349, 353, 360, 361, 275, 275, 16, 17, 18, + 20, 21, 22, 23, 24, 25, 26, 231, 269, 270, + 275, 310, 323, 325, 327, 329, 333, 353, 366, 367, + 368, 369, 377, 378, 379, 382, 385, 386, 393, 354, + 274, 354, 269, 325, 364, 274, 331, 232, 272, 275, + 310, 310, 327, 246, 247, 267, 271, 266, 266, 272, + 230, 325, 265, 310, 280, 281, 282, 277, 279, 244, + 245, 248, 249, 283, 284, 250, 251, 287, 286, 285, + 252, 254, 253, 288, 268, 268, 323, 232, 323, 328, + 347, 360, 353, 232, 362, 363, 270, 361, 275, 275, + 388, 265, 265, 275, 275, 327, 265, 327, 273, 265, + 270, 370, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 274, 326, 272, 275, 270, 367, 364, 274, + 364, 365, 364, 360, 232, 266, 302, 327, 232, 325, + 310, 310, 310, 312, 312, 313, 313, 314, 314, 314, + 314, 315, 315, 316, 317, 318, 319, 320, 321, 324, + 268, 270, 362, 354, 272, 275, 367, 389, 327, 275, + 327, 273, 387, 377, 325, 325, 364, 270, 272, 270, + 268, 327, 275, 363, 231, 366, 378, 390, 266, 266, + 327, 342, 349, 381, 371, 270, 364, 273, 265, 381, + 391, 392, 373, 374, 375, 380, 383, 232, 266, 270, + 325, 327, 275, 266, 19, 369, 368, 269, 274, 368, + 372, 376, 266, 327, 372, 373, 377, 384, 364, 275, + 270 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 288, 289, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 291, 291, 291, 291, 291, 291, 292, - 293, 294, 295, 295, 296, 296, 297, 297, 298, 299, - 299, 300, 300, 300, 300, 301, 301, 301, 301, 302, - 302, 302, 302, 303, 303, 303, 304, 304, 304, 305, - 305, 305, 305, 305, 306, 306, 306, 307, 307, 308, - 308, 309, 309, 310, 310, 311, 311, 312, 312, 313, - 314, 313, 315, 315, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 317, 317, 318, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 321, 320, 322, - 322, 323, 324, 324, 325, 325, 326, 327, 327, 328, - 328, 328, 328, 329, 330, 330, 330, 330, 330, 331, - 331, 331, 331, 331, 332, 332, 333, 334, 334, 334, - 334, 335, 336, 336, 337, 337, 337, 338, 339, 339, - 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 342, 342, 343, 343, 344, - 344, 344, 344, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 346, 346, 346, 348, 347, 349, 347, 350, 350, 351, - 351, 352, 352, 353, 353, 354, 354, 354, 355, 355, - 356, 357, 357, 358, 358, 358, 358, 358, 358, 358, - 359, 360, 361, 359, 362, 362, 364, 363, 365, 363, - 366, 366, 367, 367, 368, 368, 369, 370, 370, 371, - 371, 373, 372, 374, 374, 375, 375, 377, 376, 378, - 376, 379, 376, 380, 380, 381, 381, 382, 382, 383, - 383, 383, 383, 383, 384, 384, 385, 385, 387, 386 + 0, 298, 299, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 301, 301, 301, 301, 301, + 301, 302, 303, 304, 305, 305, 306, 306, 307, 307, + 308, 309, 309, 310, 310, 310, 310, 311, 311, 311, + 311, 312, 312, 312, 312, 313, 313, 313, 314, 314, + 314, 315, 315, 315, 315, 315, 316, 316, 316, 317, + 317, 318, 318, 319, 319, 320, 320, 321, 321, 322, + 322, 323, 324, 323, 325, 325, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 327, 327, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 331, + 330, 332, 332, 333, 334, 334, 335, 335, 336, 337, + 337, 338, 338, 338, 338, 339, 340, 340, 340, 340, + 340, 341, 341, 341, 341, 341, 342, 342, 343, 344, + 344, 344, 344, 345, 346, 346, 347, 347, 347, 348, + 349, 349, 350, 350, 350, 350, 350, 350, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 352, 352, 353, + 353, 354, 354, 354, 354, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 356, 356, 356, 358, 357, 359, 357, 360, 360, 361, + 361, 362, 362, 363, 363, 364, 364, 364, 365, 365, + 366, 367, 367, 368, 368, 368, 368, 368, 368, 368, + 369, 370, 371, 369, 372, 372, 374, 373, 375, 373, + 376, 376, 377, 377, 378, 378, 379, 380, 380, 381, + 381, 383, 382, 384, 384, 385, 385, 387, 386, 388, + 386, 389, 386, 390, 390, 391, 391, 392, 392, 393, + 393, 393, 393, 393, 394, 394, 395, 395, 397, 396 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 4, 1, 3, 2, 2, 1, - 1, 1, 2, 2, 2, 1, 2, 3, 2, 1, - 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, - 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, - 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, + 1, 1, 1, 1, 3, 1, 4, 1, 3, 2, + 2, 1, 1, 1, 2, 2, 2, 1, 2, 3, + 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, + 1, 1, 3, 3, 3, 1, 3, 3, 1, 3, + 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 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, 2, - 4, 2, 3, 4, 2, 3, 4, 0, 6, 2, - 3, 2, 1, 1, 2, 3, 3, 2, 3, 2, - 1, 2, 1, 1, 1, 3, 4, 6, 5, 1, - 2, 3, 5, 4, 1, 2, 1, 1, 1, 1, - 1, 4, 1, 3, 1, 3, 1, 1, 1, 2, + 3, 1, 0, 6, 1, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 2, 2, 4, 2, 3, 4, 2, 3, 4, 0, + 6, 2, 3, 2, 1, 1, 2, 3, 3, 2, + 3, 2, 1, 2, 1, 1, 1, 3, 4, 6, + 5, 1, 2, 3, 5, 4, 1, 2, 1, 1, + 1, 1, 1, 4, 1, 3, 1, 3, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 1, 3, 1, + 2, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, 1, 3, 1, 2, 2, - 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -3287,216 +3352,238 @@ yyreduce: switch (yyn) { case 2: -#line 252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 3295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: -#line 258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: -#line 261 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 3311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: -#line 264 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 265 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 3320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: -#line 268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 3329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: -#line 272 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 3338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: -#line 276 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); +#ifdef AMD_EXTENSIONS + parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); +#endif } -#line 3346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: -#line 279 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.int16Check((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); +#endif + } +#line 3425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 10: +#line 289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); + } +#line 3433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 11: +#line 292 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 3355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3442 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 10: -#line 283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 12: +#line 296 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS 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); #endif } -#line 3366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 11: -#line 289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 13: +#line 302 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 3374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 12: -#line 292 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 14: +#line 305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 3384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 13: -#line 300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } -#line 3392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 14: -#line 303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); - } -#line 3400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: -#line 306 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: -#line 309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); + (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 3416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: -#line 312 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); - parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: -#line 317 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); - parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 3436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: #line 325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + 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 3445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: -#line 332 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); - delete (yyvsp[0].interm).function; + 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 3454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: -#line 339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 338 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm) = (yyvsp[0].interm); + parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: #line 345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm) = (yyvsp[-1].interm); - (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); + delete (yyvsp[0].interm).function; } -#line 3471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: -#line 349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm) = (yyvsp[0].interm); + } +#line 3549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 24: +#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 3480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 24: -#line 356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm) = (yyvsp[-1].interm); - } -#line 3488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: -#line 359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 362 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm) = (yyvsp[0].interm); + (yyval.interm) = (yyvsp[-1].interm); + (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 3496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: -#line 365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm) = (yyvsp[-1].interm); + } +#line 3575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 27: +#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm) = (yyvsp[0].interm); + } +#line 3583 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 28: +#line 378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -3504,11 +3591,11 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 3508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 27: -#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 29: +#line 385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -3516,29 +3603,29 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 3520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 28: -#line 382 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 30: +#line 395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 3528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 29: -#line 390 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 31: +#line 403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 3538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 30: -#line 395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 32: +#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -3566,40 +3653,40 @@ yyreduce: (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull); } } -#line 3570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 31: -#line 425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 33: +#line 438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 3581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 32: -#line 431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 34: +#line 444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 3590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 33: -#line 435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 35: +#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 3599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 34: -#line 439 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 36: +#line 452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -3616,179 +3703,179 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 3620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 35: -#line 459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 3626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 36: -#line 460 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 3632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 37: -#line 461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 3638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } +#line 3713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 38: -#line 462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 3645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } +#line 3719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 39: -#line 468 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } +#line 3725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 40: -#line 469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } +#line 3732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 41: +#line 481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 3738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 42: +#line 482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 41: -#line 474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 43: +#line 487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 42: -#line 479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 44: +#line 492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 43: -#line 488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 45: +#line 501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 44: -#line 489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 46: +#line 502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 45: -#line 494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 47: +#line 507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 46: -#line 502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 48: +#line 515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 47: -#line 503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 49: +#line 516 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 48: -#line 509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 50: +#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 49: -#line 518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 51: +#line 531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 50: -#line 519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 52: +#line 532 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 51: -#line 524 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 53: +#line 537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 52: -#line 529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 54: +#line 542 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 53: -#line 534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 55: +#line 547 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 54: -#line 542 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 56: +#line 555 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 55: -#line 543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 57: +#line 556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -3797,11 +3884,11 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 56: -#line 551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 58: +#line 564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -3810,124 +3897,124 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 57: -#line 562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 59: +#line 575 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 58: -#line 563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 60: +#line 576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 59: -#line 572 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 61: +#line 585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 60: -#line 573 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 62: +#line 586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 61: -#line 582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 63: +#line 595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 62: -#line 583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 64: +#line 596 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 3865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 63: -#line 592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 65: +#line 605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 64: -#line 593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 66: +#line 606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 65: -#line 601 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 67: +#line 614 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 66: -#line 602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 68: +#line 615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 67: -#line 610 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 69: +#line 623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3903 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 68: -#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 70: +#line 624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 3913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 69: -#line 619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 70: -#line 620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.controlFlowNestingLevel; - } -#line 3927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: -#line 623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 4006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 72: +#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + ++parseContext.controlFlowNestingLevel; + } +#line 4014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 73: +#line 636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -3940,17 +4027,17 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 3944 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 72: -#line 638 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 74: +#line 651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 73: -#line 639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 75: +#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -3963,119 +4050,119 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 3967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 74: -#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 76: +#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 3976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 75: -#line 658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 77: +#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 3985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 76: -#line 662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 78: +#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 3994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 77: -#line 666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 79: +#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 4004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 78: -#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 80: +#line 684 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 4013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 79: -#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 81: +#line 688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 4022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 80: -#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 82: +#line 692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 4031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 81: -#line 683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 83: +#line 696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 4040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 82: -#line 687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 84: +#line 700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 4049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 83: -#line 691 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 85: +#line 704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 4058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 84: -#line 695 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 86: +#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 4067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 85: -#line 702 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 87: +#line 715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 86: -#line 705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 88: +#line 718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -4084,40 +4171,40 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 87: -#line 716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 89: +#line 729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 88: -#line 723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 90: +#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 4107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 89: -#line 728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 91: +#line 741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 4117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 90: -#line 733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 92: +#line 746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); @@ -4126,75 +4213,75 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 4130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 91: -#line 741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 93: +#line 754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 4139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 92: -#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 94: +#line 758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 4148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 93: -#line 749 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 95: +#line 762 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 4157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 94: -#line 753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 96: +#line 766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 4167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 95: -#line 758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 97: +#line 771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 4177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 96: -#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 98: +#line 776 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 97: -#line 772 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 99: +#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 4194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 98: -#line 772 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 100: +#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.structNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -4204,54 +4291,54 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 4208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 99: -#line 783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 101: +#line 796 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 4217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 100: -#line 787 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 102: +#line 800 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 4226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 101: -#line 794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 103: +#line 807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 102: -#line 801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.function) = (yyvsp[0].interm.function); - } -#line 4243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 103: -#line 804 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.function) = (yyvsp[0].interm.function); - } -#line 4251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 104: -#line 811 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.function) = (yyvsp[0].interm.function); + } +#line 4330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 105: +#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.function) = (yyvsp[0].interm.function); + } +#line 4338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 106: +#line 824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -4260,11 +4347,11 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 4264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 105: -#line 819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 107: +#line 832 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Only first parameter of one-parameter functions can be void @@ -4282,11 +4369,11 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 106: -#line 839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 108: +#line 852 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -4301,11 +4388,11 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 4305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 107: -#line 857 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 109: +#line 870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4321,11 +4408,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 4325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4412 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 108: -#line 872 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 110: +#line 885 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4343,11 +4430,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 4347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 109: -#line 895 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 111: +#line 908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -4359,11 +4446,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 4363 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 110: -#line 906 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 112: +#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -4371,11 +4458,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 4375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 111: -#line 916 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 113: +#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -4386,11 +4473,11 @@ yyreduce: parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 4390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 112: -#line 926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 114: +#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -4398,118 +4485,118 @@ yyreduce: parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 4402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 113: -#line 936 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 115: +#line 949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 4413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 114: -#line 945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 116: +#line 958 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 115: -#line 948 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 117: +#line 961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 4430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 116: -#line 952 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 118: +#line 965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 117: -#line 956 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[-5].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); - } -#line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 118: -#line 961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm).type = (yyvsp[-4].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); - } -#line 4459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 119: #line 969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm).type = (yyvsp[0].interm.type); - (yyval.interm).intermNode = 0; - parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); + (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 4469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 120: #line 974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm).type = (yyvsp[-4].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); + } +#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 121: +#line 982 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm).type = (yyvsp[0].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); + } +#line 4556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 122: +#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 4479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 121: -#line 979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 123: +#line 992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 4489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 122: -#line 984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 124: +#line 997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 4499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 123: -#line 989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 125: +#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 4509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 124: -#line 998 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 126: +#line 1011 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -4521,11 +4608,11 @@ yyreduce: parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 4525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 125: -#line 1009 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 127: +#line 1022 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -4550,22 +4637,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 4554 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 126: -#line 1036 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 128: +#line 1049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 4565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 127: -#line 1045 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 129: +#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -4573,11 +4660,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 4577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 128: -#line 1052 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 130: +#line 1065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -4585,11 +4672,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 4589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 129: -#line 1059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 131: +#line 1072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective"); @@ -4597,11 +4684,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 130: -#line 1066 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 132: +#line 1079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); @@ -4611,84 +4698,84 @@ yyreduce: (yyval.interm.type).qualifier.explicitInterp = true; #endif } -#line 4615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 131: -#line 1078 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[-1].interm.type); - } -#line 4623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 132: -#line 1084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 4631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: -#line 1087 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type) = (yyvsp[-1].interm.type); + } +#line 4710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 134: +#line 1097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 4718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 135: +#line 1100 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 4641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 134: -#line 1094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 136: +#line 1107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 4650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 135: -#line 1098 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 137: +#line 1111 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 4659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 136: -#line 1102 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 138: +#line 1115 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 4669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 137: -#line 1110 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 139: +#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 4680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4767 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 138: -#line 1119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 140: +#line 1132 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 139: -#line 1122 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 141: +#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -4697,72 +4784,72 @@ 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 4701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 140: -#line 1133 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 4709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 141: -#line 1136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 4717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 142: -#line 1139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1146 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 4796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 143: +#line 1149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 144: +#line 1152 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 143: -#line 1143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 4735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 144: -#line 1147 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 4744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 145: -#line 1151 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1156 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 4753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 146: -#line 1158 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1160 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 4831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 147: +#line 1164 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 4840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 148: +#line 1171 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 4762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 147: -#line 1162 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 149: +#line 1175 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -4775,11 +4862,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 4779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 148: -#line 1174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 150: +#line 1187 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -4794,43 +4881,43 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 4798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 149: -#line 1188 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 151: +#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 4808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 150: -#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 152: +#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 4819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 151: -#line 1199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 153: +#line 1212 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 4830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 152: -#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 154: +#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -4838,179 +4925,180 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 4842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 153: -#line 1212 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 155: +#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 4853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 154: -#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 156: +#line 1231 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 4863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 155: -#line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 157: +#line 1236 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 4873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 156: -#line 1228 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 158: +#line 1241 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 4883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 157: -#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 159: +#line 1246 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); parseContext.requireStage((yyvsp[0].lex).loc, EShLangCompute, "shared"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 158: -#line 1240 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 160: +#line 1254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 4904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 159: -#line 1244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 161: +#line 1258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 4913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 160: -#line 1248 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 162: +#line 1262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 4922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 161: -#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 163: +#line 1266 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 4931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 162: -#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 164: +#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 4940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 163: -#line 1260 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 165: +#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); + parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 4951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 164: -#line 1266 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 166: +#line 1280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); + parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); - (yyval.interm.type).qualifier.storage = EvqUniform; + } +#line 5050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 167: +#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // TODO + } +#line 5058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 168: +#line 1292 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 4965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 165: -#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // TODO: 4.0 functionality: subroutine type to list - } -#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 166: -#line 1281 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - } -#line 4980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 167: -#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 169: +#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); } -#line 4989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 168: -#line 1290 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 170: +#line 1304 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayDimCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes, 0); (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 169: -#line 1299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 171: +#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 5010 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 170: -#line 1304 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 172: +#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -5019,20 +5107,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); (yyval.interm).arraySizes->addInnerSize(size); } -#line 5023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 171: -#line 1312 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 173: +#line 1326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 5032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 172: -#line 1316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 174: +#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -5040,39 +5128,39 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); (yyval.interm).arraySizes->addInnerSize(size); } -#line 5044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 173: -#line 1326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 175: +#line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 5053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 174: -#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 176: +#line 1344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 5062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 175: -#line 1334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 177: +#line 1348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 5072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 176: -#line 1339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 178: +#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel()); @@ -5080,148 +5168,172 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; #endif } -#line 5084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 177: -#line 1346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 179: +#line 1360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 5093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 178: -#line 1350 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 180: +#line 1364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 5103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 179: -#line 1355 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 181: +#line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 5113 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 180: -#line 1360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 182: +#line 1374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 5123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 181: -#line 1365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 183: +#line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.int16Check((yyvsp[0].lex).loc, "16-bit integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; +#endif + } +#line 5223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 184: +#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.int16Check((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; +#endif + } +#line 5235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 185: +#line 1393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 5132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 182: -#line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); - } -#line 5142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 183: -#line 1374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); - } -#line 5152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 184: -#line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); - } -#line 5162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 185: -#line 1384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); - } -#line 5173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 186: -#line 1390 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); } -#line 5184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 187: -#line 1396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } +#line 5264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 188: +#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); + } +#line 5274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 189: +#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(4); - } -#line 5195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 188: -#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - parseContext.float16Check((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); -#endif } -#line 5208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 189: -#line 1410 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - parseContext.float16Check((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); -#endif - } -#line 5221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 190: #line 1418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); + } +#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 191: +#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); + } +#line 5307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 192: +#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.float16Check((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); +#endif + } +#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 193: +#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.float16Check((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); +#endif + } +#line 5333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 194: +#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); @@ -5230,565 +5342,526 @@ yyreduce: (yyval.interm.type).setVector(4); #endif } -#line 5234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 191: -#line 1426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(2); - } -#line 5244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 192: -#line 1431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(3); - } -#line 5254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 193: -#line 1436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(4); - } -#line 5264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 194: -#line 1441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); - } -#line 5274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 195: -#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1454 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(2); } -#line 5284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 196: -#line 1451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(3); + } +#line 5366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 197: +#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(4); + } +#line 5376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 198: +#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } +#line 5386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 199: +#line 1474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); + } +#line 5396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 200: +#line 1479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 5294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 197: -#line 1456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(2); - } -#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 198: -#line 1462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(3); - } -#line 5316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 199: -#line 1468 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(4); - } -#line 5327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 200: -#line 1474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(2); - } -#line 5338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 201: -#line 1480 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(2); + } +#line 5417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 202: +#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(3); + } +#line 5428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 203: +#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(4); + } +#line 5439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 204: +#line 1502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.int16Check((yyvsp[0].lex).loc, "16-bit 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); +#endif + } +#line 5452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 205: +#line 1510 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.int16Check((yyvsp[0].lex).loc, "16-bit 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); +#endif + } +#line 5465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 206: +#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.int16Check((yyvsp[0].lex).loc, "16-bit 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); +#endif + } +#line 5478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 207: +#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); + } +#line 5489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 208: +#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 5349 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 202: -#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 209: +#line 1538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 5360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 203: -#line 1492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 210: +#line 1544 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 5371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 204: -#line 1498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 211: +#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 5382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 205: -#line 1504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 212: +#line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 5393 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 206: -#line 1510 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 5403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 207: -#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 5413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 208: -#line 1520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); - } -#line 5423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 209: -#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 5433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 210: -#line 1530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); - } -#line 5443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 211: -#line 1535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); - } -#line 5453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 212: -#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); - } -#line 5463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 213: -#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { +#ifdef AMD_EXTENSIONS + parseContext.int16Check((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 5473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 214: -#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); - } -#line 5483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 215: -#line 1555 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); - } -#line 5493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 216: -#line 1560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 3); - } -#line 5503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 217: -#line 1565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); - } -#line 5513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 218: -#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); - } -#line 5524 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 219: -#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); - } -#line 5535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 220: -#line 1582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); - } -#line 5546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 221: -#line 1588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(2); +#endif } #line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 222: -#line 1594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 214: +#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); +#ifdef AMD_EXTENSIONS + parseContext.int16Check((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 = EbtDouble; + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(3); +#endif + } +#line 5570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 215: +#line 1578 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + parseContext.int16Check((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); +#endif + } +#line 5583 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 216: +#line 1586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 5593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 217: +#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } +#line 5603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 218: +#line 1596 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } +#line 5613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 219: +#line 1601 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 5623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 220: +#line 1606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 5568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 221: +#line 1611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); + } +#line 5643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 222: +#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); + } +#line 5653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 223: -#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1621 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); } -#line 5579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 224: -#line 1606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); + } +#line 5673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 225: +#line 1631 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); + } +#line 5683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 226: +#line 1636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); + } +#line 5693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 227: +#line 1641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } +#line 5703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 228: +#line 1646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).setMatrix(2, 2); } -#line 5590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 225: -#line 1612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 229: +#line 1652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 5601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 226: -#line 1618 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 230: +#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } +#line 5736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 231: +#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } +#line 5747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 232: +#line 1670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); + } +#line 5758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 233: +#line 1676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); + } +#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 234: +#line 1682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); + } +#line 5780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 235: +#line 1688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } +#line 5791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 236: +#line 1694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 227: -#line 1624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 237: +#line 1700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 5623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 228: -#line 1630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 3); - } -#line 5634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 229: -#line 1636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); - } -#line 5645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 230: -#line 1642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - 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); -#endif - } -#line 5658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 231: -#line 1650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - 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); -#endif - } -#line 5671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 232: -#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - 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); -#endif - } -#line 5684 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 233: -#line 1666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - 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); -#endif - } -#line 5697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 234: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - 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); -#endif - } -#line 5710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 235: -#line 1682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - 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); -#endif - } -#line 5723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 236: -#line 1690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - 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); -#endif - } -#line 5736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 237: -#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { -#ifdef AMD_EXTENSIONS - 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); -#endif - } -#line 5749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: #line 1706 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", 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, 4); -#endif + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); } -#line 5762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: -#line 1714 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { -#ifdef AMD_EXTENSIONS - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", 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(4, 2); -#endif + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); } -#line 5775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: -#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).setMatrix(2, 2); #endif } -#line 5788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: -#line 1730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 242: +#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { #ifdef AMD_EXTENSIONS parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); @@ -5797,1188 +5870,1305 @@ yyreduce: (yyval.interm.type).setMatrix(4, 4); #endif } -#line 5801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 242: -#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 243: +#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 244: +#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 245: +#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 246: +#line 1766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 247: +#line 1774 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 248: +#line 1782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 249: +#line 1790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 250: +#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 251: +#line 1806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { +#ifdef AMD_EXTENSIONS + 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); +#endif + } +#line 5991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 252: +#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 5811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 243: -#line 1743 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 253: +#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 5821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 244: -#line 1748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 254: +#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 5831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 245: -#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 255: +#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 5841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 246: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 256: +#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 5851 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 247: -#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 257: +#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 5861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 248: -#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 258: +#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 5871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 249: -#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 259: +#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 5881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 250: -#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 260: +#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 5891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 251: -#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 261: +#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 5901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 252: -#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 262: +#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 5911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 253: -#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 263: +#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 5921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 254: -#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 264: +#line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 5931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 255: -#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 265: +#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 5941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 256: -#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 266: +#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 5951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 257: -#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 267: +#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 5961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 258: -#line 1818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 268: +#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 5971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 259: -#line 1823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 269: +#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 5981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 260: -#line 1828 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 270: +#line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 5991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 261: -#line 1833 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 271: +#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 6001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 262: -#line 1838 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 272: +#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 6011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 263: -#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 273: +#line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 6021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 264: -#line 1848 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 274: +#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 6031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 265: -#line 1853 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 275: +#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 6041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 266: -#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 276: +#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 6051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 267: -#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 277: +#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 6061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 268: -#line 1868 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 278: +#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 6071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 269: -#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 279: +#line 1949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 6081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 270: -#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 280: +#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 6091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 271: -#line 1883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 281: +#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 6101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 272: -#line 1888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 282: +#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 6111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 273: -#line 1893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 283: +#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 6121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 274: -#line 1898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 284: +#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 6131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 275: -#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 285: +#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 6141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 276: -#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 286: +#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 6151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 277: -#line 1913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 287: +#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 6161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 278: -#line 1918 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 288: +#line 1994 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 6171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 279: -#line 1923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 289: +#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 6181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 280: -#line 1928 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 290: +#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 6191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 281: -#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 291: +#line 2009 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 6201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 282: -#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 292: +#line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 6211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 283: -#line 1943 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 293: +#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 6221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 284: -#line 1948 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 294: +#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 6231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 285: -#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 295: +#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 6241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 286: -#line 1958 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 296: +#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 6251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 287: -#line 1963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 297: +#line 2039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 6261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 288: -#line 1968 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 298: +#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 6271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 289: -#line 1973 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 299: +#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 6281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 290: -#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 300: +#line 2054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 6291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 291: -#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 301: +#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 6301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 292: -#line 1988 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 302: +#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 6311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 293: -#line 1993 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 303: +#line 2069 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 6321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 294: -#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 304: +#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 6331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 295: -#line 2003 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 305: +#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 6341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 296: -#line 2008 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 306: +#line 2084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 6351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 297: -#line 2013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 307: +#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 6361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 298: -#line 2018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 308: +#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 6371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 299: -#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 309: +#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 6381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 300: -#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 310: +#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 6391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 301: -#line 2033 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 311: +#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 6401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 302: -#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 312: +#line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 6411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 303: -#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 313: +#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 6421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 304: -#line 2048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 314: +#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 6431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 305: -#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 315: +#line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 306: -#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 316: +#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 6451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 307: -#line 2063 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 317: +#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 6461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 308: -#line 2068 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 318: +#line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 6471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 309: -#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 319: +#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 6481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 310: -#line 2078 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 320: +#line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 6491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 311: -#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 321: +#line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 6501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 312: -#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 322: +#line 2164 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 6511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 313: -#line 2093 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 323: +#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 6521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 314: -#line 2098 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 324: +#line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 6531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 315: -#line 2103 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 325: +#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 6541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 316: -#line 2108 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 326: +#line 2184 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 317: -#line 2113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 327: +#line 2189 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 6561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 318: -#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 328: +#line 2194 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 6571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 319: -#line 2123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 329: +#line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 6581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 320: -#line 2128 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 330: +#line 2204 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 6591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 321: -#line 2133 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 331: +#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 6601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 322: -#line 2138 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 332: +#line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 6611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 323: -#line 2143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 333: +#line 2219 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 6621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 324: -#line 2148 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 334: +#line 2224 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 6631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 325: -#line 2153 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 335: +#line 2229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 6641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 326: -#line 2158 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 336: +#line 2234 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 6651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 327: -#line 2163 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 337: +#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 6661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6851 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 328: -#line 2168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 338: +#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 6671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 329: -#line 2173 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 339: +#line 2249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 6681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 330: -#line 2178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 340: +#line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 6691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 331: -#line 2183 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 341: +#line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 6701 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 332: -#line 2188 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 342: +#line 2264 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 6711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 333: -#line 2193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 343: +#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 6721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 334: -#line 2198 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 344: +#line 2274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 6731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 335: -#line 2203 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 345: +#line 2279 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 6741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 336: -#line 2208 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 346: +#line 2284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 6751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 337: -#line 2213 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 347: +#line 2289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 6761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 338: -#line 2218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 348: +#line 2294 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 6771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 339: -#line 2223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 349: +#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 340: -#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 350: +#line 2304 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 6791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 341: -#line 2233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 351: +#line 2309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 6801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 342: -#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 352: +#line 2314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 6811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 343: -#line 2243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 353: +#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 6821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 344: -#line 2248 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 354: +#line 2324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 6831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 345: -#line 2253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 355: +#line 2329 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 6841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 346: -#line 2258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 356: +#line 2334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 6851 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 347: -#line 2263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 357: +#line 2339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 6861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 348: -#line 2268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 358: +#line 2344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 6871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 349: -#line 2273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 359: +#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 6881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 350: -#line 2278 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 360: +#line 2354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 6891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 351: -#line 2283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 361: +#line 2359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 352: -#line 2289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 362: +#line 2365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 353: -#line 2295 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 363: +#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 6924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 354: -#line 2301 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 364: +#line 2377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 6935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 355: -#line 2307 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 365: +#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 356: -#line 2313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 366: +#line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 357: -#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 367: +#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 6968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 358: -#line 2325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 368: +#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 6978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 359: -#line 2330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 369: +#line 2406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -6992,47 +7182,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 6996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 360: -#line 2346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 370: +#line 2422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 7006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 361: -#line 2351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 371: +#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 7016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 362: -#line 2356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 372: +#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 7026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 363: -#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 373: +#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 7032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 364: -#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 374: +#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -7044,17 +7234,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 7048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 365: -#line 2375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 375: +#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 7054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 366: -#line 2375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 376: +#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -7062,19 +7252,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 7066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 367: -#line 2385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 377: +#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 7074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 368: -#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 378: +#line 2464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -7085,11 +7275,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 7089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 369: -#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 379: +#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -7108,11 +7298,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); } } -#line 7112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 370: -#line 2419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 380: +#line 2495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier); if ((yyvsp[-2].interm.type).arraySizes) { @@ -7134,38 +7324,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); } } -#line 7138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 371: -#line 2443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 381: +#line 2519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 7147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 372: -#line 2447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 382: +#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 7155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 373: -#line 2453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 383: +#line 2529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 7165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 374: -#line 2458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 384: +#line 2534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0); @@ -7174,219 +7364,219 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes); } -#line 7178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 375: -#line 2469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 385: +#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 7186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 376: -#line 2472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 386: +#line 2548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 7197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 377: -#line 2478 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 387: +#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 7208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 378: -#line 2487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); - } -#line 7216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 379: -#line 2490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - } -#line 7224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 380: -#line 2496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 381: -#line 2500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 382: -#line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 383: -#line 2507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 384: -#line 2508 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 385: -#line 2509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 386: -#line 2510 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 387: -#line 2511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 388: -#line 2512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); + } +#line 7406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 389: -#line 2513 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + } +#line 7414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 390: -#line 2517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 7290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2572 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 391: -#line 2518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 392: +#line 2577 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 393: +#line 2583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 394: +#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 395: +#line 2585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 396: +#line 2586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 397: +#line 2587 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 398: +#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 399: +#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 7474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 400: +#line 2593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = 0; } +#line 7480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 401: +#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 7299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 392: -#line 2522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 402: +#line 2598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 7308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 393: -#line 2526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 403: +#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 7318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 394: -#line 2534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 404: +#line 2610 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7514 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 395: -#line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 405: +#line 2611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 396: -#line 2539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 406: +#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 7338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 397: -#line 2542 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 407: +#line 2618 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 398: -#line 2546 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 408: +#line 2622 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 399: -#line 2551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 409: +#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 400: -#line 2560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 410: +#line 2636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 7376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 401: -#line 2563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 411: +#line 2639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 402: -#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 412: +#line 2647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -7395,11 +7585,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 7399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 403: -#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 413: +#line 2655 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -7408,59 +7598,59 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 7412 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 404: -#line 2590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 414: +#line 2666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 7418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 405: -#line 2591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 415: +#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 7424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 406: -#line 2595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 416: +#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 7433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 407: -#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 417: +#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 7442 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 408: -#line 2606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 418: +#line 2682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 7451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 409: -#line 2614 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 419: +#line 2690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 7460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 410: -#line 2618 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 420: +#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -7471,11 +7661,11 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 7475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 411: -#line 2631 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 421: +#line 2707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -7484,11 +7674,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 7488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 412: -#line 2639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 422: +#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -7498,27 +7688,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 413: -#line 2651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 423: +#line 2727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 7510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 414: -#line 2654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 424: +#line 2730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 415: -#line 2660 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 425: +#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -7531,11 +7721,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 7535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 416: -#line 2672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 426: +#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -7545,11 +7735,11 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 7549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 417: -#line 2684 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 427: +#line 2760 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -7558,11 +7748,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 418: -#line 2692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 428: +#line 2768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -7570,21 +7760,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7574 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 419: -#line 2699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 429: +#line 2775 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 420: -#line 2704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 430: +#line 2780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -7596,22 +7786,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 421: -#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 431: +#line 2791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 422: -#line 2721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 432: +#line 2797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -7624,153 +7814,153 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 423: -#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 433: +#line 2812 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 424: -#line 2739 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 434: +#line 2815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 425: -#line 2745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 435: +#line 2821 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 7652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 426: -#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 436: +#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = 0; } -#line 7660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 427: -#line 2754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 437: +#line 2830 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 7669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 428: -#line 2758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 438: +#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 429: -#line 2765 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 439: +#line 2841 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 7688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 430: -#line 2770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 440: +#line 2846 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 7698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 431: -#line 2775 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 441: +#line 2851 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", ""); if (parseContext.inMain) - parseContext.postMainReturn = true; + parseContext.postEntryPointReturn = true; } -#line 7710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 432: -#line 2782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 442: +#line 2858 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 7718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 433: -#line 2785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 443: +#line 2861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 7727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 434: -#line 2794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 444: +#line 2870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 7736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 435: -#line 2798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 445: +#line 2874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 7745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 436: -#line 2805 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 446: +#line 2881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 437: -#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 447: +#line 2884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 7761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 438: -#line 2814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 448: +#line 2890 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); } -#line 7770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 439: -#line 2818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 449: +#line 2894 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -7786,11 +7976,11 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 7790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 7794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -8018,5 +8208,5 @@ yyreturn: #endif return yyresult; } -#line 2835 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 2911 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h index bf59a037d..b8e78d6c9 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/3rdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h @@ -55,281 +55,291 @@ extern int yydebug; UINT = 265, INT64_T = 266, UINT64_T = 267, - FLOAT16_T = 268, - BREAK = 269, - CONTINUE = 270, - DO = 271, - ELSE = 272, - FOR = 273, - IF = 274, - DISCARD = 275, - RETURN = 276, - SWITCH = 277, - CASE = 278, - DEFAULT = 279, - SUBROUTINE = 280, - BVEC2 = 281, - BVEC3 = 282, - BVEC4 = 283, - IVEC2 = 284, - IVEC3 = 285, - IVEC4 = 286, - I64VEC2 = 287, - I64VEC3 = 288, - I64VEC4 = 289, - UVEC2 = 290, - UVEC3 = 291, - UVEC4 = 292, - U64VEC2 = 293, - U64VEC3 = 294, - U64VEC4 = 295, - VEC2 = 296, - VEC3 = 297, - VEC4 = 298, - MAT2 = 299, - MAT3 = 300, - MAT4 = 301, - CENTROID = 302, - IN = 303, - OUT = 304, - INOUT = 305, - UNIFORM = 306, - PATCH = 307, - SAMPLE = 308, - BUFFER = 309, - SHARED = 310, - COHERENT = 311, - VOLATILE = 312, - RESTRICT = 313, - READONLY = 314, - WRITEONLY = 315, - DVEC2 = 316, - DVEC3 = 317, - DVEC4 = 318, - DMAT2 = 319, - DMAT3 = 320, - DMAT4 = 321, - F16VEC2 = 322, - F16VEC3 = 323, - F16VEC4 = 324, - F16MAT2 = 325, - F16MAT3 = 326, - F16MAT4 = 327, - NOPERSPECTIVE = 328, - FLAT = 329, - SMOOTH = 330, - LAYOUT = 331, - __EXPLICITINTERPAMD = 332, - MAT2X2 = 333, - MAT2X3 = 334, - MAT2X4 = 335, - MAT3X2 = 336, - MAT3X3 = 337, - MAT3X4 = 338, - MAT4X2 = 339, - MAT4X3 = 340, - MAT4X4 = 341, - DMAT2X2 = 342, - DMAT2X3 = 343, - DMAT2X4 = 344, - DMAT3X2 = 345, - DMAT3X3 = 346, - DMAT3X4 = 347, - DMAT4X2 = 348, - DMAT4X3 = 349, - DMAT4X4 = 350, - F16MAT2X2 = 351, - F16MAT2X3 = 352, - F16MAT2X4 = 353, - F16MAT3X2 = 354, - F16MAT3X3 = 355, - F16MAT3X4 = 356, - F16MAT4X2 = 357, - F16MAT4X3 = 358, - F16MAT4X4 = 359, - ATOMIC_UINT = 360, - SAMPLER1D = 361, - SAMPLER2D = 362, - SAMPLER3D = 363, - SAMPLERCUBE = 364, - SAMPLER1DSHADOW = 365, - SAMPLER2DSHADOW = 366, - SAMPLERCUBESHADOW = 367, - SAMPLER1DARRAY = 368, - SAMPLER2DARRAY = 369, - SAMPLER1DARRAYSHADOW = 370, - SAMPLER2DARRAYSHADOW = 371, - ISAMPLER1D = 372, - ISAMPLER2D = 373, - ISAMPLER3D = 374, - ISAMPLERCUBE = 375, - ISAMPLER1DARRAY = 376, - ISAMPLER2DARRAY = 377, - USAMPLER1D = 378, - USAMPLER2D = 379, - USAMPLER3D = 380, - USAMPLERCUBE = 381, - USAMPLER1DARRAY = 382, - USAMPLER2DARRAY = 383, - SAMPLER2DRECT = 384, - SAMPLER2DRECTSHADOW = 385, - ISAMPLER2DRECT = 386, - USAMPLER2DRECT = 387, - SAMPLERBUFFER = 388, - ISAMPLERBUFFER = 389, - USAMPLERBUFFER = 390, - SAMPLERCUBEARRAY = 391, - SAMPLERCUBEARRAYSHADOW = 392, - ISAMPLERCUBEARRAY = 393, - USAMPLERCUBEARRAY = 394, - SAMPLER2DMS = 395, - ISAMPLER2DMS = 396, - USAMPLER2DMS = 397, - SAMPLER2DMSARRAY = 398, - ISAMPLER2DMSARRAY = 399, - USAMPLER2DMSARRAY = 400, - SAMPLEREXTERNALOES = 401, - SAMPLER = 402, - SAMPLERSHADOW = 403, - TEXTURE1D = 404, - TEXTURE2D = 405, - TEXTURE3D = 406, - TEXTURECUBE = 407, - TEXTURE1DARRAY = 408, - TEXTURE2DARRAY = 409, - ITEXTURE1D = 410, - ITEXTURE2D = 411, - ITEXTURE3D = 412, - ITEXTURECUBE = 413, - ITEXTURE1DARRAY = 414, - ITEXTURE2DARRAY = 415, - UTEXTURE1D = 416, - UTEXTURE2D = 417, - UTEXTURE3D = 418, - UTEXTURECUBE = 419, - UTEXTURE1DARRAY = 420, - UTEXTURE2DARRAY = 421, - TEXTURE2DRECT = 422, - ITEXTURE2DRECT = 423, - UTEXTURE2DRECT = 424, - TEXTUREBUFFER = 425, - ITEXTUREBUFFER = 426, - UTEXTUREBUFFER = 427, - TEXTURECUBEARRAY = 428, - ITEXTURECUBEARRAY = 429, - UTEXTURECUBEARRAY = 430, - TEXTURE2DMS = 431, - ITEXTURE2DMS = 432, - UTEXTURE2DMS = 433, - TEXTURE2DMSARRAY = 434, - ITEXTURE2DMSARRAY = 435, - UTEXTURE2DMSARRAY = 436, - SUBPASSINPUT = 437, - SUBPASSINPUTMS = 438, - ISUBPASSINPUT = 439, - ISUBPASSINPUTMS = 440, - USUBPASSINPUT = 441, - USUBPASSINPUTMS = 442, - IMAGE1D = 443, - IIMAGE1D = 444, - UIMAGE1D = 445, - IMAGE2D = 446, - IIMAGE2D = 447, - UIMAGE2D = 448, - IMAGE3D = 449, - IIMAGE3D = 450, - UIMAGE3D = 451, - IMAGE2DRECT = 452, - IIMAGE2DRECT = 453, - UIMAGE2DRECT = 454, - IMAGECUBE = 455, - IIMAGECUBE = 456, - UIMAGECUBE = 457, - IMAGEBUFFER = 458, - IIMAGEBUFFER = 459, - UIMAGEBUFFER = 460, - IMAGE1DARRAY = 461, - IIMAGE1DARRAY = 462, - UIMAGE1DARRAY = 463, - IMAGE2DARRAY = 464, - IIMAGE2DARRAY = 465, - UIMAGE2DARRAY = 466, - IMAGECUBEARRAY = 467, - IIMAGECUBEARRAY = 468, - UIMAGECUBEARRAY = 469, - IMAGE2DMS = 470, - IIMAGE2DMS = 471, - UIMAGE2DMS = 472, - IMAGE2DMSARRAY = 473, - IIMAGE2DMSARRAY = 474, - UIMAGE2DMSARRAY = 475, - STRUCT = 476, - VOID = 477, - WHILE = 478, - IDENTIFIER = 479, - TYPE_NAME = 480, - FLOATCONSTANT = 481, - DOUBLECONSTANT = 482, - INTCONSTANT = 483, - UINTCONSTANT = 484, - INT64CONSTANT = 485, - UINT64CONSTANT = 486, - BOOLCONSTANT = 487, - FLOAT16CONSTANT = 488, - LEFT_OP = 489, - RIGHT_OP = 490, - INC_OP = 491, - DEC_OP = 492, - LE_OP = 493, - GE_OP = 494, - EQ_OP = 495, - NE_OP = 496, - AND_OP = 497, - OR_OP = 498, - XOR_OP = 499, - MUL_ASSIGN = 500, - DIV_ASSIGN = 501, - ADD_ASSIGN = 502, - MOD_ASSIGN = 503, - LEFT_ASSIGN = 504, - RIGHT_ASSIGN = 505, - AND_ASSIGN = 506, - XOR_ASSIGN = 507, - OR_ASSIGN = 508, - SUB_ASSIGN = 509, - LEFT_PAREN = 510, - RIGHT_PAREN = 511, - LEFT_BRACKET = 512, - RIGHT_BRACKET = 513, - LEFT_BRACE = 514, - RIGHT_BRACE = 515, - DOT = 516, - COMMA = 517, - COLON = 518, - EQUAL = 519, - SEMICOLON = 520, - BANG = 521, - DASH = 522, - TILDE = 523, - PLUS = 524, - STAR = 525, - SLASH = 526, - PERCENT = 527, - LEFT_ANGLE = 528, - RIGHT_ANGLE = 529, - VERTICAL_BAR = 530, - CARET = 531, - AMPERSAND = 532, - QUESTION = 533, - INVARIANT = 534, - PRECISE = 535, - HIGH_PRECISION = 536, - MEDIUM_PRECISION = 537, - LOW_PRECISION = 538, - PRECISION = 539, - PACKED = 540, - RESOURCE = 541, - SUPERP = 542 + INT16_T = 268, + UINT16_T = 269, + FLOAT16_T = 270, + BREAK = 271, + CONTINUE = 272, + DO = 273, + ELSE = 274, + FOR = 275, + IF = 276, + DISCARD = 277, + RETURN = 278, + SWITCH = 279, + CASE = 280, + DEFAULT = 281, + SUBROUTINE = 282, + BVEC2 = 283, + BVEC3 = 284, + BVEC4 = 285, + IVEC2 = 286, + IVEC3 = 287, + IVEC4 = 288, + I64VEC2 = 289, + I64VEC3 = 290, + I64VEC4 = 291, + UVEC2 = 292, + UVEC3 = 293, + UVEC4 = 294, + U64VEC2 = 295, + U64VEC3 = 296, + U64VEC4 = 297, + VEC2 = 298, + VEC3 = 299, + VEC4 = 300, + MAT2 = 301, + MAT3 = 302, + MAT4 = 303, + CENTROID = 304, + IN = 305, + OUT = 306, + INOUT = 307, + UNIFORM = 308, + PATCH = 309, + SAMPLE = 310, + BUFFER = 311, + SHARED = 312, + COHERENT = 313, + VOLATILE = 314, + RESTRICT = 315, + READONLY = 316, + WRITEONLY = 317, + DVEC2 = 318, + DVEC3 = 319, + DVEC4 = 320, + DMAT2 = 321, + DMAT3 = 322, + DMAT4 = 323, + F16VEC2 = 324, + F16VEC3 = 325, + F16VEC4 = 326, + F16MAT2 = 327, + F16MAT3 = 328, + F16MAT4 = 329, + I16VEC2 = 330, + I16VEC3 = 331, + I16VEC4 = 332, + U16VEC2 = 333, + U16VEC3 = 334, + U16VEC4 = 335, + NOPERSPECTIVE = 336, + FLAT = 337, + SMOOTH = 338, + LAYOUT = 339, + __EXPLICITINTERPAMD = 340, + MAT2X2 = 341, + MAT2X3 = 342, + MAT2X4 = 343, + MAT3X2 = 344, + MAT3X3 = 345, + MAT3X4 = 346, + MAT4X2 = 347, + MAT4X3 = 348, + MAT4X4 = 349, + DMAT2X2 = 350, + DMAT2X3 = 351, + DMAT2X4 = 352, + DMAT3X2 = 353, + DMAT3X3 = 354, + DMAT3X4 = 355, + DMAT4X2 = 356, + DMAT4X3 = 357, + DMAT4X4 = 358, + F16MAT2X2 = 359, + F16MAT2X3 = 360, + F16MAT2X4 = 361, + F16MAT3X2 = 362, + F16MAT3X3 = 363, + F16MAT3X4 = 364, + F16MAT4X2 = 365, + F16MAT4X3 = 366, + F16MAT4X4 = 367, + ATOMIC_UINT = 368, + SAMPLER1D = 369, + SAMPLER2D = 370, + SAMPLER3D = 371, + SAMPLERCUBE = 372, + SAMPLER1DSHADOW = 373, + SAMPLER2DSHADOW = 374, + SAMPLERCUBESHADOW = 375, + SAMPLER1DARRAY = 376, + SAMPLER2DARRAY = 377, + SAMPLER1DARRAYSHADOW = 378, + SAMPLER2DARRAYSHADOW = 379, + ISAMPLER1D = 380, + ISAMPLER2D = 381, + ISAMPLER3D = 382, + ISAMPLERCUBE = 383, + ISAMPLER1DARRAY = 384, + ISAMPLER2DARRAY = 385, + USAMPLER1D = 386, + USAMPLER2D = 387, + USAMPLER3D = 388, + USAMPLERCUBE = 389, + USAMPLER1DARRAY = 390, + USAMPLER2DARRAY = 391, + SAMPLER2DRECT = 392, + SAMPLER2DRECTSHADOW = 393, + ISAMPLER2DRECT = 394, + USAMPLER2DRECT = 395, + SAMPLERBUFFER = 396, + ISAMPLERBUFFER = 397, + USAMPLERBUFFER = 398, + SAMPLERCUBEARRAY = 399, + SAMPLERCUBEARRAYSHADOW = 400, + ISAMPLERCUBEARRAY = 401, + USAMPLERCUBEARRAY = 402, + SAMPLER2DMS = 403, + ISAMPLER2DMS = 404, + USAMPLER2DMS = 405, + SAMPLER2DMSARRAY = 406, + ISAMPLER2DMSARRAY = 407, + USAMPLER2DMSARRAY = 408, + SAMPLEREXTERNALOES = 409, + SAMPLER = 410, + SAMPLERSHADOW = 411, + TEXTURE1D = 412, + TEXTURE2D = 413, + TEXTURE3D = 414, + TEXTURECUBE = 415, + TEXTURE1DARRAY = 416, + TEXTURE2DARRAY = 417, + ITEXTURE1D = 418, + ITEXTURE2D = 419, + ITEXTURE3D = 420, + ITEXTURECUBE = 421, + ITEXTURE1DARRAY = 422, + ITEXTURE2DARRAY = 423, + UTEXTURE1D = 424, + UTEXTURE2D = 425, + UTEXTURE3D = 426, + UTEXTURECUBE = 427, + UTEXTURE1DARRAY = 428, + UTEXTURE2DARRAY = 429, + TEXTURE2DRECT = 430, + ITEXTURE2DRECT = 431, + UTEXTURE2DRECT = 432, + TEXTUREBUFFER = 433, + ITEXTUREBUFFER = 434, + UTEXTUREBUFFER = 435, + TEXTURECUBEARRAY = 436, + ITEXTURECUBEARRAY = 437, + UTEXTURECUBEARRAY = 438, + TEXTURE2DMS = 439, + ITEXTURE2DMS = 440, + UTEXTURE2DMS = 441, + TEXTURE2DMSARRAY = 442, + ITEXTURE2DMSARRAY = 443, + UTEXTURE2DMSARRAY = 444, + SUBPASSINPUT = 445, + SUBPASSINPUTMS = 446, + ISUBPASSINPUT = 447, + ISUBPASSINPUTMS = 448, + USUBPASSINPUT = 449, + USUBPASSINPUTMS = 450, + IMAGE1D = 451, + IIMAGE1D = 452, + UIMAGE1D = 453, + IMAGE2D = 454, + IIMAGE2D = 455, + UIMAGE2D = 456, + IMAGE3D = 457, + IIMAGE3D = 458, + UIMAGE3D = 459, + IMAGE2DRECT = 460, + IIMAGE2DRECT = 461, + UIMAGE2DRECT = 462, + IMAGECUBE = 463, + IIMAGECUBE = 464, + UIMAGECUBE = 465, + IMAGEBUFFER = 466, + IIMAGEBUFFER = 467, + UIMAGEBUFFER = 468, + IMAGE1DARRAY = 469, + IIMAGE1DARRAY = 470, + UIMAGE1DARRAY = 471, + IMAGE2DARRAY = 472, + IIMAGE2DARRAY = 473, + UIMAGE2DARRAY = 474, + IMAGECUBEARRAY = 475, + IIMAGECUBEARRAY = 476, + UIMAGECUBEARRAY = 477, + IMAGE2DMS = 478, + IIMAGE2DMS = 479, + UIMAGE2DMS = 480, + IMAGE2DMSARRAY = 481, + IIMAGE2DMSARRAY = 482, + UIMAGE2DMSARRAY = 483, + STRUCT = 484, + VOID = 485, + WHILE = 486, + IDENTIFIER = 487, + TYPE_NAME = 488, + FLOATCONSTANT = 489, + DOUBLECONSTANT = 490, + INTCONSTANT = 491, + UINTCONSTANT = 492, + INT64CONSTANT = 493, + UINT64CONSTANT = 494, + INT16CONSTANT = 495, + UINT16CONSTANT = 496, + BOOLCONSTANT = 497, + FLOAT16CONSTANT = 498, + LEFT_OP = 499, + RIGHT_OP = 500, + INC_OP = 501, + DEC_OP = 502, + LE_OP = 503, + GE_OP = 504, + EQ_OP = 505, + NE_OP = 506, + AND_OP = 507, + OR_OP = 508, + XOR_OP = 509, + MUL_ASSIGN = 510, + DIV_ASSIGN = 511, + ADD_ASSIGN = 512, + MOD_ASSIGN = 513, + LEFT_ASSIGN = 514, + RIGHT_ASSIGN = 515, + AND_ASSIGN = 516, + XOR_ASSIGN = 517, + OR_ASSIGN = 518, + SUB_ASSIGN = 519, + LEFT_PAREN = 520, + RIGHT_PAREN = 521, + LEFT_BRACKET = 522, + RIGHT_BRACKET = 523, + LEFT_BRACE = 524, + RIGHT_BRACE = 525, + DOT = 526, + COMMA = 527, + COLON = 528, + EQUAL = 529, + SEMICOLON = 530, + BANG = 531, + DASH = 532, + TILDE = 533, + PLUS = 534, + STAR = 535, + SLASH = 536, + PERCENT = 537, + LEFT_ANGLE = 538, + RIGHT_ANGLE = 539, + VERTICAL_BAR = 540, + CARET = 541, + AMPERSAND = 542, + QUESTION = 543, + INVARIANT = 544, + PRECISE = 545, + HIGH_PRECISION = 546, + MEDIUM_PRECISION = 547, + LOW_PRECISION = 548, + PRECISION = 549, + PACKED = 550, + RESOURCE = 551, + SUPERP = 552 }; #endif @@ -372,7 +382,7 @@ union YYSTYPE }; } interm; -#line 376 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ +#line 386 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp b/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp index 31f599c47..7d0f1554a 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/intermOut.cpp @@ -308,6 +308,13 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpDoubleBitsToUint64: out.debug << "doubleBitsToUint64"; break; case EOpInt64BitsToDouble: out.debug << "int64BitsToDouble"; break; case EOpUint64BitsToDouble: out.debug << "uint64BitsToDouble"; break; +#ifdef AMD_EXTENSIONS + case EOpFloat16BitsToInt16: out.debug << "float16BitsToInt16"; break; + case EOpFloat16BitsToUint16: out.debug << "float16BitsToUint16"; break; + case EOpInt16BitsToFloat16: out.debug << "int16BitsToFloat16"; break; + case EOpUint16BitsToFloat16: out.debug << "uint16BitsToFloat16"; break; +#endif + case EOpPackSnorm2x16: out.debug << "packSnorm2x16"; break; case EOpUnpackSnorm2x16:out.debug << "unpackSnorm2x16"; break; case EOpPackUnorm2x16: out.debug << "packUnorm2x16"; break; @@ -328,6 +335,16 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpUnpackUint2x32: out.debug << "unpackUint2x32"; break; #ifdef AMD_EXTENSIONS + case EOpPackInt2x16: out.debug << "packInt2x16"; break; + case EOpUnpackInt2x16: out.debug << "unpackInt2x16"; break; + case EOpPackUint2x16: out.debug << "packUint2x16"; break; + case EOpUnpackUint2x16: out.debug << "unpackUint2x16"; break; + + case EOpPackInt4x16: out.debug << "packInt4x16"; break; + case EOpUnpackInt4x16: out.debug << "unpackInt4x16"; break; + case EOpPackUint4x16: out.debug << "packUint4x16"; break; + case EOpUnpackUint4x16: out.debug << "unpackUint4x16"; break; + case EOpPackFloat2x16: out.debug << "packFloat2x16"; break; case EOpUnpackFloat2x16: out.debug << "unpackFloat2x16"; break; #endif @@ -390,6 +407,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpRcp: out.debug << "rcp"; break; case EOpSaturate: out.debug << "saturate"; break; + case EOpSparseTexelsResident: out.debug << "sparseTexelsResident"; break; + #ifdef AMD_EXTENSIONS case EOpMinInvocations: out.debug << "minInvocations"; break; case EOpMaxInvocations: out.debug << "maxInvocations"; break; @@ -431,6 +450,42 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpConvFloat16ToDouble: out.debug << "Convert float16 to double"; break; case EOpConvFloat16ToInt64: out.debug << "Convert float16 to int64"; break; case EOpConvFloat16ToUint64: out.debug << "Convert float16 to uint64"; break; + + case EOpConvBoolToInt16: out.debug << "Convert bool to int16"; break; + case EOpConvIntToInt16: out.debug << "Convert int to int16"; break; + case EOpConvUintToInt16: out.debug << "Convert uint to int16"; break; + case EOpConvFloatToInt16: out.debug << "Convert float to int16"; break; + case EOpConvDoubleToInt16: out.debug << "Convert double to int16"; break; + case EOpConvFloat16ToInt16: out.debug << "Convert float16 to int16"; break; + case EOpConvInt64ToInt16: out.debug << "Convert int64 to int16"; break; + case EOpConvUint64ToInt16: out.debug << "Convert uint64 to int16"; break; + case EOpConvUint16ToInt16: out.debug << "Convert uint16 to int16"; break; + case EOpConvInt16ToBool: out.debug << "Convert int16 to bool"; break; + case EOpConvInt16ToInt: out.debug << "Convert int16 to int"; break; + case EOpConvInt16ToUint: out.debug << "Convert int16 to uint"; break; + case EOpConvInt16ToFloat: out.debug << "Convert int16 to float"; break; + case EOpConvInt16ToDouble: out.debug << "Convert int16 to double"; break; + case EOpConvInt16ToFloat16: out.debug << "Convert int16 to float16"; break; + case EOpConvInt16ToInt64: out.debug << "Convert int16 to int64"; break; + case EOpConvInt16ToUint64: out.debug << "Convert int16 to uint64"; break; + + case EOpConvBoolToUint16: out.debug << "Convert bool to uint16"; break; + case EOpConvIntToUint16: out.debug << "Convert int to uint16"; break; + case EOpConvUintToUint16: out.debug << "Convert uint to uint16"; break; + case EOpConvFloatToUint16: out.debug << "Convert float to uint16"; break; + case EOpConvDoubleToUint16: out.debug << "Convert double to uint16"; break; + case EOpConvFloat16ToUint16: out.debug << "Convert float16 to uint16"; break; + case EOpConvInt64ToUint16: out.debug << "Convert int64 to uint16"; break; + case EOpConvUint64ToUint16: out.debug << "Convert uint64 to uint16"; break; + case EOpConvInt16ToUint16: out.debug << "Convert int16 to uint16"; break; + case EOpConvUint16ToBool: out.debug << "Convert uint16 to bool"; break; + case EOpConvUint16ToInt: out.debug << "Convert uint16 to int"; break; + case EOpConvUint16ToUint: out.debug << "Convert uint16 to uint"; break; + case EOpConvUint16ToFloat: out.debug << "Convert uint16 to float"; break; + case EOpConvUint16ToDouble: out.debug << "Convert uint16 to double"; break; + case EOpConvUint16ToFloat16: out.debug << "Convert uint16 to float16"; break; + case EOpConvUint16ToInt64: out.debug << "Convert uint16 to int64"; break; + case EOpConvUint16ToUint64: out.debug << "Convert uint16 to uint64"; break; #endif default: out.debug.message(EPrefixError, "Bad unary op"); @@ -464,9 +519,13 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructFloat: out.debug << "Construct float"; break; case EOpConstructDouble:out.debug << "Construct double"; break; + case EOpConstructVec2: out.debug << "Construct vec2"; break; case EOpConstructVec3: out.debug << "Construct vec3"; break; case EOpConstructVec4: out.debug << "Construct vec4"; break; + case EOpConstructDVec2: out.debug << "Construct dvec2"; break; + case EOpConstructDVec3: out.debug << "Construct dvec3"; break; + case EOpConstructDVec4: out.debug << "Construct dvec4"; break; case EOpConstructBool: out.debug << "Construct bool"; break; case EOpConstructBVec2: out.debug << "Construct bvec2"; break; case EOpConstructBVec3: out.debug << "Construct bvec3"; break; @@ -487,6 +546,16 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructU64Vec2: out.debug << "Construct u64vec2"; break; case EOpConstructU64Vec3: out.debug << "Construct u64vec3"; break; case EOpConstructU64Vec4: out.debug << "Construct u64vec4"; break; +#ifdef AMD_EXTENSIONS + case EOpConstructInt16: out.debug << "Construct int16_t"; break; + case EOpConstructI16Vec2: out.debug << "Construct i16vec2"; break; + case EOpConstructI16Vec3: out.debug << "Construct i16vec3"; break; + case EOpConstructI16Vec4: out.debug << "Construct i16vec4"; break; + case EOpConstructUint16: out.debug << "Construct uint16_t"; break; + case EOpConstructU16Vec2: out.debug << "Construct u16vec2"; break; + case EOpConstructU16Vec3: out.debug << "Construct u16vec3"; break; + case EOpConstructU16Vec4: out.debug << "Construct u16vec4"; break; +#endif case EOpConstructMat2x2: out.debug << "Construct mat2"; break; case EOpConstructMat2x3: out.debug << "Construct mat2x3"; break; case EOpConstructMat2x4: out.debug << "Construct mat2x4"; break; @@ -647,6 +716,37 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpTextureGather: out.debug << "textureGather"; break; case EOpTextureGatherOffset: out.debug << "textureGatherOffset"; break; case EOpTextureGatherOffsets: out.debug << "textureGatherOffsets"; break; + case EOpTextureClamp: out.debug << "textureClamp"; break; + case EOpTextureOffsetClamp: out.debug << "textureOffsetClamp"; break; + case EOpTextureGradClamp: out.debug << "textureGradClamp"; break; + case EOpTextureGradOffsetClamp: out.debug << "textureGradOffsetClamp"; break; +#ifdef AMD_EXTENSIONS + case EOpTextureGatherLod: out.debug << "textureGatherLod"; break; + case EOpTextureGatherLodOffset: out.debug << "textureGatherLodOffset"; break; + case EOpTextureGatherLodOffsets: out.debug << "textureGatherLodOffsets"; break; +#endif + + case EOpSparseTexture: out.debug << "sparseTexture"; break; + case EOpSparseTextureOffset: out.debug << "sparseTextureOffset"; break; + case EOpSparseTextureLod: out.debug << "sparseTextureLod"; break; + case EOpSparseTextureLodOffset: out.debug << "sparseTextureLodOffset"; break; + case EOpSparseTextureFetch: out.debug << "sparseTexelFetch"; break; + case EOpSparseTextureFetchOffset: out.debug << "sparseTexelFetchOffset"; break; + case EOpSparseTextureGrad: out.debug << "sparseTextureGrad"; break; + case EOpSparseTextureGradOffset: out.debug << "sparseTextureGradOffset"; break; + case EOpSparseTextureGather: out.debug << "sparseTextureGather"; break; + case EOpSparseTextureGatherOffset: out.debug << "sparseTextureGatherOffset"; break; + case EOpSparseTextureGatherOffsets: out.debug << "sparseTextureGatherOffsets"; break; + case EOpSparseImageLoad: out.debug << "sparseImageLoad"; break; + case EOpSparseTextureClamp: out.debug << "sparseTextureClamp"; break; + case EOpSparseTextureOffsetClamp: out.debug << "sparseTextureOffsetClamp"; break; + case EOpSparseTextureGradClamp: out.debug << "sparseTextureGradClamp"; break; + case EOpSparseTextureGradOffsetClamp: out.debug << "sparseTextureGradOffsetClam"; break; +#ifdef AMD_EXTENSIONS + case EOpSparseTextureGatherLod: out.debug << "sparseTextureGatherLod"; break; + case EOpSparseTextureGatherLodOffset: out.debug << "sparseTextureGatherLodOffset"; break; + case EOpSparseTextureGatherLodOffsets: out.debug << "sparseTextureGatherLodOffsets"; break; +#endif case EOpAddCarry: out.debug << "addCarry"; break; case EOpSubBorrow: out.debug << "subBorrow"; break; @@ -794,6 +894,26 @@ static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const out.debug << buf << "\n"; } break; +#ifdef AMD_EXTENSIONS + case EbtInt16: + { + const int maxSize = 300; + char buf[maxSize]; + snprintf(buf, maxSize, "%d (%s)", constUnion[i].getIConst(), "const int16_t"); + + out.debug << buf << "\n"; + } + break; + case EbtUint16: + { + const int maxSize = 300; + char buf[maxSize]; + snprintf(buf, maxSize, "%u (%s)", constUnion[i].getUConst(), "const uint16_t"); + + out.debug << buf << "\n"; + } + break; +#endif default: out.info.message(EPrefixInternalError, "Unknown constant", node->getLoc()); break; diff --git a/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp b/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp index e5991ffb1..40a0e4168 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/iomapper.cpp @@ -471,7 +471,7 @@ protected: */ struct TDefaultIoResolver : public TDefaultIoResolverBase { - bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override + bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& /*type*/, bool /*is_live*/) override { return true; } @@ -573,7 +573,7 @@ b – for constant buffer views (CBV) ********************************************************************************/ struct TDefaultHlslIoResolver : public TDefaultIoResolverBase { - bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override + bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& /*type*/, bool /*is_live*/) override { return true; } diff --git a/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp b/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp index 02dde9efc..4a91a252d 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/linkValidate.cpp @@ -1057,6 +1057,8 @@ int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size) case EbtUint64: case EbtDouble: size = 8; return 8; #ifdef AMD_EXTENSIONS + case EbtInt16: + case EbtUint16: case EbtFloat16: size = 2; return 2; #endif default: size = 4; return 4; diff --git a/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h b/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h index 56319dc69..f93182b75 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h +++ b/3rdparty/glslang/glslang/MachineIndependent/localintermediate.h @@ -285,6 +285,11 @@ public: TIntermConstantUnion* addConstantUnion(unsigned int, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(long long, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(unsigned long long, const TSourceLoc&, bool literal = false) const; +#ifdef AMD_EXTENSIONS + TIntermConstantUnion* addConstantUnion(short, const TSourceLoc&, bool literal = false) const; + TIntermConstantUnion* addConstantUnion(unsigned short, const TSourceLoc&, bool literal = false) const; + +#endif TIntermConstantUnion* addConstantUnion(bool, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(double, TBasicType, const TSourceLoc&, bool literal = false) const; TIntermConstantUnion* addConstantUnion(const TString*, const TSourceLoc&, bool literal = false) const; diff --git a/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h b/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h index 0c85f8a19..5f26b4371 100755 --- a/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h +++ b/3rdparty/glslang/glslang/MachineIndependent/parseVersions.h @@ -68,6 +68,7 @@ public: virtual void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc); virtual void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc); virtual void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc); + virtual void unimplemented(const TSourceLoc&, const char* featureDesc); virtual void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); virtual TExtensionBehavior getExtensionBehavior(const char*); @@ -77,6 +78,7 @@ public: virtual void fullIntegerCheck(const TSourceLoc&, const char* op); virtual void doubleCheck(const TSourceLoc&, const char* op); #ifdef AMD_EXTENSIONS + virtual void int16Check(const TSourceLoc& loc, const char* op, bool builtIn = false); virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false); #endif virtual void int64Check(const TSourceLoc&, const char* op, bool builtIn = false); diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp index da432bd54..92423507e 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -393,6 +393,14 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo TSourceLoc loc = ppToken->loc; // because we sometimes read the newline before reporting the error if (token == PpAtomIdentifier) { if (strcmp("defined", ppToken->name) == 0) { + if (! parseContext.isReadingHLSL() && isMacroInput()) { + if (parseContext.relaxedErrors()) + parseContext.ppWarn(ppToken->loc, "nonportable when expanded from macros for preprocessor expression", + "defined", ""); + else + parseContext.ppError(ppToken->loc, "cannot use in preprocessor expression when expanded from macros", + "defined", ""); + } bool needclose = 0; token = scanToken(ppToken); if (token == '(') { @@ -716,6 +724,7 @@ int TPpContext::CPPerror(TPpToken* ppToken) if (token == PpAtomConstInt || token == PpAtomConstUint || token == PpAtomConstInt64 || token == PpAtomConstUint64 || #ifdef AMD_EXTENSIONS + token == PpAtomConstInt16 || token == PpAtomConstUint16 || token == PpAtomConstFloat16 || #endif token == PpAtomConstFloat || token == PpAtomConstDouble) { @@ -750,6 +759,10 @@ int TPpContext::CPPpragma(TPpToken* ppToken) case PpAtomConstUint: case PpAtomConstInt64: case PpAtomConstUint64: +#ifdef AMD_EXTENSIONS + case PpAtomConstInt16: + case PpAtomConstUint16: +#endif case PpAtomConstFloat: case PpAtomConstDouble: #ifdef AMD_EXTENSIONS diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h index a459d9a2a..de48e2794 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpContext.h @@ -200,6 +200,7 @@ public: virtual void ungetch() = 0; virtual bool peekPasting() { return false; } // true when about to see ## virtual bool endOfReplacementList() { return false; } // true when at the end of a macro replacement list (RHS of #define) + virtual bool isMacroInput() { return false; } // Will be called when we start reading tokens from this instance virtual void notifyActivated() {} @@ -306,6 +307,7 @@ protected: void ungetChar() { inputStack.back()->ungetch(); } bool peekPasting() { return !inputStack.empty() && inputStack.back()->peekPasting(); } bool endOfReplacementList() { return inputStack.empty() || inputStack.back()->endOfReplacementList(); } + bool isMacroInput() { return inputStack.size() > 0 && inputStack.back()->isMacroInput(); } static const int maxIfNesting = 64; @@ -329,6 +331,7 @@ protected: virtual void ungetch() override { assert(0); } bool peekPasting() override { return prepaste; } bool endOfReplacementList() override { return mac->body.atEnd(); } + bool isMacroInput() override { return true; } MacroSymbol *mac; TVector args; diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpMemory.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpMemory.cpp deleted file mode 100644 index e30db7f6d..000000000 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpMemory.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -// Copyright (C) 2013 LunarG, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// Neither the name of 3Dlabs Inc. Ltd. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -/****************************************************************************\ -Copyright (c) 2002, NVIDIA Corporation. - -NVIDIA Corporation("NVIDIA") supplies this software to you in -consideration of your agreement to the following terms, and your use, -installation, modification or redistribution of this NVIDIA software -constitutes acceptance of these terms. If you do not agree with these -terms, please do not use, install, modify or redistribute this NVIDIA -software. - -In consideration of your agreement to abide by the following terms, and -subject to these terms, NVIDIA grants you a personal, non-exclusive -license, under NVIDIA's copyrights in this original NVIDIA software (the -"NVIDIA Software"), to use, reproduce, modify and redistribute the -NVIDIA Software, with or without modifications, in source and/or binary -forms; provided that if you redistribute the NVIDIA Software, you must -retain the copyright notice of NVIDIA, this notice and the following -text and disclaimers in all such redistributions of the NVIDIA Software. -Neither the name, trademarks, service marks nor logos of NVIDIA -Corporation may be used to endorse or promote products derived from the -NVIDIA Software without specific prior written permission from NVIDIA. -Except as expressly stated in this notice, no other rights or licenses -express or implied, are granted by NVIDIA herein, including but not -limited to any patent rights that may be infringed by your derivative -works or by other works in which the NVIDIA Software may be -incorporated. No hardware is licensed hereunder. - -THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT -WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, -INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR -ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER -PRODUCTS. - -IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, -INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY -OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE -NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, -TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF -NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -\****************************************************************************/ - -namespace glslang { - -} // end namespace glslang diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp index cee45ce74..fa01549df 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -334,6 +334,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) int ii = 0; unsigned long long ival = 0; bool enableInt64 = pp->parseContext.version >= 450 && pp->parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64); +#ifdef AMD_EXTENSIONS + bool enableInt16 = pp->parseContext.version >= 450 && pp->parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16); +#endif bool acceptHalf = pp->parseContext.intermediate.getSource() == EShSourceHlsl; #ifdef AMD_EXTENSIONS if (pp->parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float)) @@ -406,6 +409,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) bool isUnsigned = false; bool isInt64 = false; +#ifdef AMD_EXTENSIONS + bool isInt16 = false; +#endif ppToken->name[len++] = (char)ch; ch = getch(); if ((ch >= '0' && ch <= '9') || @@ -414,7 +420,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ival = 0; do { - if (ival <= 0x0fffffff || (enableInt64 && ival <= 0x0fffffffffffffffull)) { + if (ival <= 0x0fffffffu || (enableInt64 && ival <= 0x0fffffffffffffffull)) { ppToken->name[len++] = (char)ch; if (ch >= '0' && ch <= '9') { ii = ch - '0'; @@ -453,11 +459,28 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) } else ungetch(); } - } - else if (enableInt64 && (ch == 'l' || ch == 'L')) { + +#ifdef AMD_EXTENSIONS + if (enableInt16) { + int nextCh = getch(); + if ((ch == 'u' && nextCh == 's') || (ch == 'U' && nextCh == 'S')) { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)nextCh; + isInt16 = true; + } else + ungetch(); + } +#endif + } else if (enableInt64 && (ch == 'l' || ch == 'L')) { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; +#ifdef AMD_EXTENSIONS + } else if (enableInt16 && (ch == 's' || ch == 'S')) { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)ch; + isInt16 = true; +#endif } else ungetch(); ppToken->name[len] = '\0'; @@ -465,6 +488,11 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) if (isInt64) { ppToken->i64val = ival; return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64; +#ifdef AMD_EXTENSIONS + } else if (isInt16) { + ppToken->ival = (int)ival; + return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16; +#endif } else { ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint : PpAtomConstInt; @@ -474,6 +502,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) bool isUnsigned = false; bool isInt64 = false; +#ifdef AMD_EXTENSIONS + bool isInt16 = false; +#endif bool octalOverflow = false; bool nonOctal = false; ival = 0; @@ -486,7 +517,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) pp->parseContext.ppError(ppToken->loc, "numeric literal too long", "", ""); AlreadyComplained = 1; } - if (ival <= 0x1fffffff || (enableInt64 && ival <= 0x1fffffffffffffffull)) { + if (ival <= 0x1fffffffu || (enableInt64 && ival <= 0x1fffffffffffffffull)) { ii = ch - '0'; ival = (ival << 3) | ii; } else @@ -528,11 +559,28 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) } else ungetch(); } - } - else if (enableInt64 && (ch == 'l' || ch == 'L')) { + +#ifdef AMD_EXTENSIONS + if (enableInt16) { + int nextCh = getch(); + if ((ch == 'u' && nextCh == 's') || (ch == 'U' && nextCh == 'S')) { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)nextCh; + isInt16 = true; + } else + ungetch(); + } +#endif + } else if (enableInt64 && (ch == 'l' || ch == 'L')) { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; +#ifdef AMD_EXTENSIONS + } else if (enableInt16 && (ch == 's' || ch == 'S')) { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)ch; + isInt16 = true; +#endif } else ungetch(); ppToken->name[len] = '\0'; @@ -543,6 +591,11 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) if (isInt64) { ppToken->i64val = ival; return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64; +#ifdef AMD_EXTENSIONS + } else if (isInt16) { + ppToken->ival = (int)ival; + return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16; +#endif } else { ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint : PpAtomConstInt; @@ -569,6 +622,9 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) int numericLen = len; bool isUnsigned = false; bool isInt64 = false; +#ifdef AMD_EXTENSIONS + bool isInt16 = false; +#endif if (ch == 'u' || ch == 'U') { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; @@ -583,10 +639,28 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) } else ungetch(); } + +#ifdef AMD_EXTENSIONS + if (enableInt16) { + int nextCh = getch(); + if ((ch == 'u' && nextCh == 's') || (ch == 'U' && nextCh == 'S')) { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)nextCh; + isInt16 = true; + } else + ungetch(); + } +#endif } else if (enableInt64 && (ch == 'l' || ch == 'L')) { if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt64 = true; +#ifdef AMD_EXTENSIONS + } else if (enableInt16 && (ch == 's' || ch == 'S')) { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)ch; + isInt16 = true; +#endif } else ungetch(); @@ -596,10 +670,22 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) const unsigned remainderMaxInt = 0xFFFFFFFFu - 10 * oneTenthMaxInt; const unsigned long long oneTenthMaxInt64 = 0xFFFFFFFFFFFFFFFFull / 10; const unsigned long long remainderMaxInt64 = 0xFFFFFFFFFFFFFFFFull - 10 * oneTenthMaxInt64; +#ifdef AMD_EXTENSIONS + const unsigned short oneTenthMaxInt16 = 0xFFFFu / 10; + const unsigned short remainderMaxInt16 = 0xFFFFu - 10 * oneTenthMaxInt16; +#endif for (int i = 0; i < numericLen; i++) { ch = ppToken->name[i] - '0'; - if ((enableInt64 == false && ((ival > oneTenthMaxInt) || (ival == oneTenthMaxInt && (unsigned)ch > remainderMaxInt))) || - (enableInt64 && ((ival > oneTenthMaxInt64) || (ival == oneTenthMaxInt64 && (unsigned long long)ch > remainderMaxInt64)))) { + bool overflow = false; + if (isInt64) + overflow = (ival > oneTenthMaxInt64 || (ival == oneTenthMaxInt64 && (unsigned long long)ch > remainderMaxInt64)); +#ifdef AMD_EXTENSIONS + else if (isInt16) + overflow = (ival > oneTenthMaxInt16 || (ival == oneTenthMaxInt16 && (unsigned short)ch > remainderMaxInt16)); +#endif + else + overflow = (ival > oneTenthMaxInt || (ival == oneTenthMaxInt && (unsigned)ch > remainderMaxInt)); + if (overflow) { pp->parseContext.ppError(ppToken->loc, "numeric literal too big", "", ""); ival = 0xFFFFFFFFFFFFFFFFull; break; @@ -610,6 +696,11 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) if (isInt64) { ppToken->i64val = ival; return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64; +#ifdef AMD_EXTENSIONS + } else if (isInt16) { + ppToken->ival = (int)ival; + return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16; +#endif } else { ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint : PpAtomConstInt; @@ -859,6 +950,10 @@ int TPpContext::tokenize(TPpToken& ppToken) case PpAtomConstFloat: case PpAtomConstInt64: case PpAtomConstUint64: +#ifdef AMD_EXTENSIONS + case PpAtomConstInt16: + case PpAtomConstUint16: +#endif case PpAtomConstDouble: #ifdef AMD_EXTENSIONS case PpAtomConstFloat16: diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpSymbols.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpSymbols.cpp deleted file mode 100644 index 700d82e2f..000000000 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpSymbols.cpp +++ /dev/null @@ -1,77 +0,0 @@ -// -// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -// Copyright (C) 2013 LunarG, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// Neither the name of 3Dlabs Inc. Ltd. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -/****************************************************************************\ -Copyright (c) 2002, NVIDIA Corporation. - -NVIDIA Corporation("NVIDIA") supplies this software to you in -consideration of your agreement to the following terms, and your use, -installation, modification or redistribution of this NVIDIA software -constitutes acceptance of these terms. If you do not agree with these -terms, please do not use, install, modify or redistribute this NVIDIA -software. - -In consideration of your agreement to abide by the following terms, and -subject to these terms, NVIDIA grants you a personal, non-exclusive -license, under NVIDIA's copyrights in this original NVIDIA software (the -"NVIDIA Software"), to use, reproduce, modify and redistribute the -NVIDIA Software, with or without modifications, in source and/or binary -forms; provided that if you redistribute the NVIDIA Software, you must -retain the copyright notice of NVIDIA, this notice and the following -text and disclaimers in all such redistributions of the NVIDIA Software. -Neither the name, trademarks, service marks nor logos of NVIDIA -Corporation may be used to endorse or promote products derived from the -NVIDIA Software without specific prior written permission from NVIDIA. -Except as expressly stated in this notice, no other rights or licenses -express or implied, are granted by NVIDIA herein, including but not -limited to any patent rights that may be infringed by your derivative -works or by other works in which the NVIDIA Software may be -incorporated. No hardware is licensed hereunder. - -THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT -WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, -INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR -ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER -PRODUCTS. - -IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, -INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY -OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE -NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, -TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF -NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -\****************************************************************************/ diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 4baf99e01..bc145e251 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -141,6 +141,10 @@ void TPpContext::TokenStream::putToken(int token, TPpToken* ppToken) case PpAtomConstUint: case PpAtomConstInt64: case PpAtomConstUint64: +#ifdef AMD_EXTENSIONS + case PpAtomConstInt16: + case PpAtomConstUint16: +#endif case PpAtomConstFloat: case PpAtomConstDouble: #ifdef AMD_EXTENSIONS @@ -190,6 +194,10 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken case PpAtomConstUint: case PpAtomConstInt64: case PpAtomConstUint64: +#ifdef AMD_EXTENSIONS + case PpAtomConstInt16: + case PpAtomConstUint16: +#endif len = 0; ch = getSubtoken(); while (ch != 0 && ch != EndOfInput) { @@ -217,6 +225,9 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken ppToken->dval = atof(ppToken->name); break; case PpAtomConstInt: +#ifdef AMD_EXTENSIONS + case PpAtomConstInt16: +#endif if (len > 0 && ppToken->name[0] == '0') { if (len > 1 && (ppToken->name[1] == 'x' || ppToken->name[1] == 'X')) ppToken->ival = (int)strtol(ppToken->name, 0, 16); @@ -226,6 +237,9 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken ppToken->ival = atoi(ppToken->name); break; case PpAtomConstUint: +#ifdef AMD_EXTENSIONS + case PpAtomConstUint16: +#endif if (len > 0 && ppToken->name[0] == '0') { if (len > 1 && (ppToken->name[1] == 'x' || ppToken->name[1] == 'X')) ppToken->ival = (int)strtoul(ppToken->name, 0, 16); diff --git a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h index ee442d68e..d56df5765 100644 --- a/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h +++ b/3rdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h @@ -127,6 +127,10 @@ enum EFixedAtoms { PpAtomConstUint, PpAtomConstInt64, PpAtomConstUint64, +#ifdef AMD_EXTENSIONS + PpAtomConstInt16, + PpAtomConstUint16, +#endif PpAtomConstFloat, PpAtomConstDouble, PpAtomConstFloat16, diff --git a/3rdparty/glslang/gtests/Hlsl.FromFile.cpp b/3rdparty/glslang/gtests/Hlsl.FromFile.cpp index 9edc51af7..51f9d49e3 100644 --- a/3rdparty/glslang/gtests/Hlsl.FromFile.cpp +++ b/3rdparty/glslang/gtests/Hlsl.FromFile.cpp @@ -200,6 +200,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.params.default.frag", "main"}, {"hlsl.params.default.negative.frag", "main"}, {"hlsl.partialInit.frag", "PixelShaderFunction"}, + {"hlsl.pp.vert", "main"}, {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, {"hlsl.promote.atomic.frag", "main"}, @@ -273,6 +274,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.structin.vert", "main"}, {"hlsl.structIoFourWay.frag", "main"}, {"hlsl.structStructName.frag", "main"}, + {"hlsl.texture.subvec4.frag", "main"}, {"hlsl.this.frag", "main"}, {"hlsl.intrinsics.vert", "VertexShaderFunction"}, {"hlsl.intrinsic.frexp.vert", "VertexShaderFunction"}, diff --git a/3rdparty/glslang/gtests/Spv.FromFile.cpp b/3rdparty/glslang/gtests/Spv.FromFile.cpp index 1552b9523..dc91486e8 100644 --- a/3rdparty/glslang/gtests/Spv.FromFile.cpp +++ b/3rdparty/glslang/gtests/Spv.FromFile.cpp @@ -396,7 +396,9 @@ INSTANTIATE_TEST_CASE_P( Glsl, CompileVulkanToSpirvTestAMD, ::testing::ValuesIn(std::vector({ "spv.float16.frag", - "spv.shaderBallotAMD.comp" + "spv.int16.frag", + "spv.shaderBallotAMD.comp", + "spv.textureGatherBiasLod.frag" })), FileNameAsCustomTestSuffix ); diff --git a/3rdparty/glslang/hlsl/hlslGrammar.cpp b/3rdparty/glslang/hlsl/hlslGrammar.cpp index 69155850a..0918d13ba 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.cpp +++ b/3rdparty/glslang/hlsl/hlslGrammar.cpp @@ -111,6 +111,22 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken) switch (peek()) { case EHTokSample: idString = NewPoolTString("sample"); break; case EHTokHalf: idString = NewPoolTString("half"); break; + case EHTokHalf1x1: idString = NewPoolTString("half1x1"); break; + case EHTokHalf1x2: idString = NewPoolTString("half1x2"); break; + case EHTokHalf1x3: idString = NewPoolTString("half1x3"); break; + case EHTokHalf1x4: idString = NewPoolTString("half1x4"); break; + case EHTokHalf2x1: idString = NewPoolTString("half2x1"); break; + case EHTokHalf2x2: idString = NewPoolTString("half2x2"); break; + case EHTokHalf2x3: idString = NewPoolTString("half2x3"); break; + case EHTokHalf2x4: idString = NewPoolTString("half2x4"); break; + case EHTokHalf3x1: idString = NewPoolTString("half3x1"); break; + case EHTokHalf3x2: idString = NewPoolTString("half3x2"); break; + case EHTokHalf3x3: idString = NewPoolTString("half3x3"); break; + case EHTokHalf3x4: idString = NewPoolTString("half3x4"); break; + case EHTokHalf4x1: idString = NewPoolTString("half4x1"); break; + case EHTokHalf4x2: idString = NewPoolTString("half4x2"); break; + case EHTokHalf4x3: idString = NewPoolTString("half4x3"); break; + case EHTokHalf4x4: idString = NewPoolTString("half4x4"); break; case EHTokBool: idString = NewPoolTString("bool"); break; case EHTokFloat: idString = NewPoolTString("float"); break; case EHTokDouble: idString = NewPoolTString("double"); break; @@ -1479,20 +1495,20 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList) break; case EHTokHalf: - new(&type) TType(half_bt, EvqTemporary, EpqMedium); + new(&type) TType(half_bt, EvqTemporary); break; case EHTokHalf1: - new(&type) TType(half_bt, EvqTemporary, EpqMedium); + new(&type) TType(half_bt, EvqTemporary); type.makeVector(); break; case EHTokHalf2: - new(&type) TType(half_bt, EvqTemporary, EpqMedium, 2); + new(&type) TType(half_bt, EvqTemporary, 2); break; case EHTokHalf3: - new(&type) TType(half_bt, EvqTemporary, EpqMedium, 3); + new(&type) TType(half_bt, EvqTemporary, 3); break; case EHTokHalf4: - new(&type) TType(half_bt, EvqTemporary, EpqMedium, 4); + new(&type) TType(half_bt, EvqTemporary, 4); break; case EHTokMin16float: @@ -1776,6 +1792,55 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList) new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 4); break; + case EHTokHalf1x1: + new(&type) TType(half_bt, EvqTemporary, 0, 1, 1); + break; + case EHTokHalf1x2: + new(&type) TType(half_bt, EvqTemporary, 0, 1, 2); + break; + case EHTokHalf1x3: + new(&type) TType(half_bt, EvqTemporary, 0, 1, 3); + break; + case EHTokHalf1x4: + new(&type) TType(half_bt, EvqTemporary, 0, 1, 4); + break; + case EHTokHalf2x1: + new(&type) TType(half_bt, EvqTemporary, 0, 2, 1); + break; + case EHTokHalf2x2: + new(&type) TType(half_bt, EvqTemporary, 0, 2, 2); + break; + case EHTokHalf2x3: + new(&type) TType(half_bt, EvqTemporary, 0, 2, 3); + break; + case EHTokHalf2x4: + new(&type) TType(half_bt, EvqTemporary, 0, 2, 4); + break; + case EHTokHalf3x1: + new(&type) TType(half_bt, EvqTemporary, 0, 3, 1); + break; + case EHTokHalf3x2: + new(&type) TType(half_bt, EvqTemporary, 0, 3, 2); + break; + case EHTokHalf3x3: + new(&type) TType(half_bt, EvqTemporary, 0, 3, 3); + break; + case EHTokHalf3x4: + new(&type) TType(half_bt, EvqTemporary, 0, 3, 4); + break; + case EHTokHalf4x1: + new(&type) TType(half_bt, EvqTemporary, 0, 4, 1); + break; + case EHTokHalf4x2: + new(&type) TType(half_bt, EvqTemporary, 0, 4, 2); + break; + case EHTokHalf4x3: + new(&type) TType(half_bt, EvqTemporary, 0, 4, 3); + break; + case EHTokHalf4x4: + new(&type) TType(half_bt, EvqTemporary, 0, 4, 4); + break; + case EHTokDouble1x1: new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 1); break; @@ -2594,6 +2659,8 @@ bool HlslGrammar::acceptConditionalExpression(TIntermTyped*& node) if (node == nullptr) return false; + ++parseContext.controlFlowNestingLevel; // this only needs to work right if no errors + TIntermTyped* trueNode = nullptr; if (! acceptExpression(trueNode)) { expected("expression after ?"); @@ -2612,6 +2679,8 @@ bool HlslGrammar::acceptConditionalExpression(TIntermTyped*& node) return false; } + --parseContext.controlFlowNestingLevel; + node = intermediate.addSelection(node, trueNode, falseNode, loc); return true; @@ -3039,6 +3108,37 @@ bool HlslGrammar::acceptLiteral(TIntermTyped*& node) return true; } +// simple_statement +// : SEMICOLON +// | declaration_statement +// | expression SEMICOLON +// +bool HlslGrammar::acceptSimpleStatement(TIntermNode*& statement) +{ + // SEMICOLON + if (acceptTokenClass(EHTokSemicolon)) + return true; + + // declaration + if (acceptDeclaration(statement)) + return true; + + // expression + TIntermTyped* node; + if (acceptExpression(node)) + statement = node; + else + return false; + + // SEMICOLON (following an expression) + if (acceptTokenClass(EHTokSemicolon)) + return true; + else { + expected(";"); + return false; + } +} + // compound_statement // : LEFT_CURLY statement statement ... RIGHT_CURLY // @@ -3096,12 +3196,11 @@ bool HlslGrammar::acceptScopedCompoundStatement(TIntermNode*& statement) // // attributed_statement // : compound_statement -// | SEMICOLON -// | expression SEMICOLON -// | declaration_statement +// | simple_statement // | selection_statement // | switch_statement // | case_label +// | default_label // | iteration_statement // | jump_statement // @@ -3140,33 +3239,13 @@ bool HlslGrammar::acceptStatement(TIntermNode*& statement) case EHTokDefault: return acceptDefaultLabel(statement); - case EHTokSemicolon: - return acceptTokenClass(EHTokSemicolon); - case EHTokRightBrace: // Performance: not strictly necessary, but stops a bunch of hunting early, // and is how sequences of statements end. return false; default: - { - // declaration - if (acceptDeclaration(statement)) - return true; - - // expression - TIntermTyped* node; - if (acceptExpression(node)) - statement = node; - else - return false; - - // SEMICOLON (following an expression) - if (! acceptTokenClass(EHTokSemicolon)) { - expected(";"); - return false; - } - } + return acceptSimpleStatement(statement); } return true; @@ -3278,6 +3357,8 @@ bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement) // create the child statements TIntermNodePair thenElse = { nullptr, nullptr }; + ++parseContext.controlFlowNestingLevel; // this only needs to work right if no errors + // then statement if (! acceptScopedStatement(thenElse.node1)) { expected("then statement"); @@ -3296,6 +3377,7 @@ bool HlslGrammar::acceptSelectionStatement(TIntermNode*& statement) // Put the pieces together statement = intermediate.addSelection(condition, thenElse, loc); parseContext.popScope(); + --parseContext.controlFlowNestingLevel; return true; } @@ -3320,7 +3402,11 @@ bool HlslGrammar::acceptSwitchStatement(TIntermNode*& statement) // compound_statement parseContext.pushSwitchSequence(new TIntermSequence); + + ++parseContext.controlFlowNestingLevel; bool statementOkay = acceptCompoundStatement(statement); + --parseContext.controlFlowNestingLevel; + if (statementOkay) statement = parseContext.addSwitch(loc, switchExpression, statement ? statement->getAsAggregate() : nullptr); @@ -3353,8 +3439,9 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement, const TAttri case EHTokWhile: // so that something declared in the condition is scoped to the lifetime // of the while sub-statement - parseContext.pushScope(); + parseContext.pushScope(); // this only needs to work right if no errors parseContext.nestLooping(); + ++parseContext.controlFlowNestingLevel; // LEFT_PAREN condition RIGHT_PAREN if (! acceptParenExpression(condition)) @@ -3371,13 +3458,15 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement, const TAttri parseContext.unnestLooping(); parseContext.popScope(); + --parseContext.controlFlowNestingLevel; statement = intermediate.addLoop(statement, condition, nullptr, true, loc, control); return true; case EHTokDo: - parseContext.nestLooping(); + parseContext.nestLooping(); // this only needs to work right if no errors + ++parseContext.controlFlowNestingLevel; // statement if (! acceptScopedStatement(statement)) { @@ -3403,6 +3492,7 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement, const TAttri expected(";"); parseContext.unnestLooping(); + --parseContext.controlFlowNestingLevel; statement = intermediate.addLoop(statement, condition, 0, false, loc, control); @@ -3420,16 +3510,11 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement, const TAttri // initializer TIntermNode* initNode = nullptr; - if (! acceptControlDeclaration(initNode)) { - TIntermTyped* initExpr = nullptr; - acceptExpression(initExpr); - initNode = initExpr; - } - // SEMI_COLON - if (! acceptTokenClass(EHTokSemicolon)) - expected(";"); + if (! acceptSimpleStatement(initNode)) + expected("for-loop initializer statement"); - parseContext.nestLooping(); + parseContext.nestLooping(); // this only needs to work right if no errors + ++parseContext.controlFlowNestingLevel; // condition SEMI_COLON acceptExpression(condition); @@ -3457,6 +3542,7 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement, const TAttri parseContext.popScope(); parseContext.unnestLooping(); + --parseContext.controlFlowNestingLevel; return true; } diff --git a/3rdparty/glslang/hlsl/hlslGrammar.h b/3rdparty/glslang/hlsl/hlslGrammar.h index 07c88787e..135fd6c32 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.h +++ b/3rdparty/glslang/hlsl/hlslGrammar.h @@ -108,10 +108,11 @@ namespace glslang { bool acceptFunctionCall(const TSourceLoc&, TString& name, TIntermTyped*&, TIntermTyped* objectBase); bool acceptArguments(TFunction*, TIntermTyped*&); bool acceptLiteral(TIntermTyped*&); + bool acceptSimpleStatement(TIntermNode*&); bool acceptCompoundStatement(TIntermNode*&); - bool acceptStatement(TIntermNode*&); bool acceptScopedStatement(TIntermNode*&); bool acceptScopedCompoundStatement(TIntermNode*&); + bool acceptStatement(TIntermNode*&); bool acceptNestedStatement(TIntermNode*&); void acceptAttributes(TAttributeMap&); bool acceptSelectionStatement(TIntermNode*&); diff --git a/3rdparty/glslang/hlsl/hlslParseHelper.cpp b/3rdparty/glslang/hlsl/hlslParseHelper.cpp index 16a82c41f..53b438229 100755 --- a/3rdparty/glslang/hlsl/hlslParseHelper.cpp +++ b/3rdparty/glslang/hlsl/hlslParseHelper.cpp @@ -57,10 +57,7 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int const TString sourceEntryPointName, bool forwardCompatible, EShMessages messages) : TParseContextBase(symbolTable, interm, parsingBuiltins, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), - contextPragma(true, false), - loopNestingLevel(0), annotationNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), - postEntryPointReturn(false), - limits(resources.limits), + annotationNestingLevel(0), inputPatch(nullptr), builtInIoIndex(nullptr), builtInIoBase(nullptr), @@ -520,6 +517,9 @@ TIntermTyped* HlslParseContext::handleSamplerLvalue(const TSourceLoc& loc, const return node; } + if (controlFlowNestingLevel > 0) + warn(loc, "sampler or image aliased under control flow; consumption must be in same path", op, ""); + // Best is if we are aliasing a flattened struct member "S.s1 = s2", // in which case we want to update the flattening information with the alias, // making everything else work seamlessly. @@ -6974,8 +6974,15 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TStr // Deal with initializer TIntermNode* initNode = nullptr; if (symbol && initializer) { -// if (flattenVar) -// error(loc, "flattened array with initializer list unsupported", identifier.c_str(), ""); +/* + * BK - + * uniform SamplerState s_texNormalSampler : register(s1); + * uniform Texture2D s_texNormalTexture : register(t1); + * static BgfxSampler2D s_texNormal = { s_texNormalSampler, s_texNormalTexture }; + * + if (flattenVar) + error(loc, "flattened array with initializer list unsupported", identifier.c_str(), ""); +*/ TVariable* variable = symbol->getAsVariable(); if (! variable) { diff --git a/3rdparty/glslang/hlsl/hlslParseHelper.h b/3rdparty/glslang/hlsl/hlslParseHelper.h index 9a9896423..9e772d166 100755 --- a/3rdparty/glslang/hlsl/hlslParseHelper.h +++ b/3rdparty/glslang/hlsl/hlslParseHelper.h @@ -314,17 +314,7 @@ protected: TIntermSymbol* findLinkageSymbol(TBuiltInVariable biType) const; // Current state of parsing - struct TPragma contextPragma; - int loopNestingLevel; // 0 if outside all loops int annotationNestingLevel; // 0 if outside all annotations - int structNestingLevel; // 0 if outside blocks and structures - int controlFlowNestingLevel; // 0 if outside all flow control - TList switchSequenceStack; // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting - bool postEntryPointReturn; // if inside a function, true if the function is the entry point and this is after a return statement - const TType* currentFunctionType; // the return type of the function that's currently being parsed - bool functionReturnsValue; // true if a non-void function has a return - TBuiltInResource resources; - TLimits& limits; HlslParseContext(HlslParseContext&); HlslParseContext& operator=(HlslParseContext&); diff --git a/3rdparty/glslang/hlsl/hlslScanContext.cpp b/3rdparty/glslang/hlsl/hlslScanContext.cpp index 0eb5bf571..34f7b4659 100755 --- a/3rdparty/glslang/hlsl/hlslScanContext.cpp +++ b/3rdparty/glslang/hlsl/hlslScanContext.cpp @@ -279,6 +279,22 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["float4x2"] = EHTokFloat4x2; (*KeywordMap)["float4x3"] = EHTokFloat4x3; (*KeywordMap)["float4x4"] = EHTokFloat4x4; + (*KeywordMap)["half1x1"] = EHTokHalf1x1; + (*KeywordMap)["half1x2"] = EHTokHalf1x2; + (*KeywordMap)["half1x3"] = EHTokHalf1x3; + (*KeywordMap)["half1x4"] = EHTokHalf1x4; + (*KeywordMap)["half2x1"] = EHTokHalf2x1; + (*KeywordMap)["half2x2"] = EHTokHalf2x2; + (*KeywordMap)["half2x3"] = EHTokHalf2x3; + (*KeywordMap)["half2x4"] = EHTokHalf2x4; + (*KeywordMap)["half3x1"] = EHTokHalf3x1; + (*KeywordMap)["half3x2"] = EHTokHalf3x2; + (*KeywordMap)["half3x3"] = EHTokHalf3x3; + (*KeywordMap)["half3x4"] = EHTokHalf3x4; + (*KeywordMap)["half4x1"] = EHTokHalf4x1; + (*KeywordMap)["half4x2"] = EHTokHalf4x2; + (*KeywordMap)["half4x3"] = EHTokHalf4x3; + (*KeywordMap)["half4x4"] = EHTokHalf4x4; (*KeywordMap)["double1x1"] = EHTokDouble1x1; (*KeywordMap)["double1x2"] = EHTokDouble1x2; (*KeywordMap)["double1x3"] = EHTokDouble1x3; @@ -773,6 +789,22 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokFloat4x2: case EHTokFloat4x3: case EHTokFloat4x4: + case EHTokHalf1x1: + case EHTokHalf1x2: + case EHTokHalf1x3: + case EHTokHalf1x4: + case EHTokHalf2x1: + case EHTokHalf2x2: + case EHTokHalf2x3: + case EHTokHalf2x4: + case EHTokHalf3x1: + case EHTokHalf3x2: + case EHTokHalf3x3: + case EHTokHalf3x4: + case EHTokHalf4x1: + case EHTokHalf4x2: + case EHTokHalf4x3: + case EHTokHalf4x4: case EHTokDouble1x1: case EHTokDouble1x2: case EHTokDouble1x3: diff --git a/3rdparty/glslang/hlsl/hlslTokens.h b/3rdparty/glslang/hlsl/hlslTokens.h index f6a2c969a..15de63ab1 100755 --- a/3rdparty/glslang/hlsl/hlslTokens.h +++ b/3rdparty/glslang/hlsl/hlslTokens.h @@ -216,6 +216,22 @@ enum EHlslTokenClass { EHTokFloat4x2, EHTokFloat4x3, EHTokFloat4x4, + EHTokHalf1x1, + EHTokHalf1x2, + EHTokHalf1x3, + EHTokHalf1x4, + EHTokHalf2x1, + EHTokHalf2x2, + EHTokHalf2x3, + EHTokHalf2x4, + EHTokHalf3x1, + EHTokHalf3x2, + EHTokHalf3x3, + EHTokHalf3x4, + EHTokHalf4x1, + EHTokHalf4x2, + EHTokHalf4x3, + EHTokHalf4x4, EHTokDouble1x1, EHTokDouble1x2, EHTokDouble1x3,